Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Freelance and Pricing

by bmhm (Beadle)
on Mar 19, 2001 at 09:38 UTC ( #65366=perlmeditation: print w/replies, xml ) Need Help??

After much deliberation I have finally concluded that this topic should be posted here, in Meditations. This is a subject that we all will or have faced at sometime. What is it you ask? It is the all powerful word --- FREELANCE ---. A friend, co-worker, acquaintance or a nut from the office next door approaches you and asks you to make a program for them: perhaps it is a program for their own use at home, or a CGI-script for their website. You find yourself saying yes to their proposal and the next thing you know, they are throwing strings of words at you. Some of which you hear and some of which can't remember, but between their excitement and your ears you stop functioning after they say those five little words . . . How much will it cost? Frozen in place you contemplate the time it would take you to make the program, the complexity of the program and the time frame in which you have to produce a live and running final product. As these thoughts and estimated price figures bounce around in your head, you find yourself shrugging your shoulders and voicing out loud, "I don't know." And so I turn the question to my fellow monks, how would one go about pricing a cgi-script for a website?

If at first you don't succeed, use PERL.

Replies are listed 'Best First'.
(crazyinsomniac: my experience) Re: Freelance and Pricing
by crazyinsomniac (Prior) on Mar 19, 2001 at 12:11 UTC
    Good question.

    Recently I got such a job for a company that's currently expanding and is in a state of distress, and I honestly didn't know what to charge, seeing how this was my 4th job ever, and my first real programming job, that is where i was hired to program, and not ended up doing some.

    Anyway, it was also my first contract position. I had no clue where to start in even considering what to charge, so I asked my Java teacher(yes job was Java too) who has been in the business for over 25 years. This guy really had some rap sheet. He did everything from writing monitoring software for cores at nuclear power plants, here(US) and in Japan, to writing database packages ...

    So I ask him, "You know what I did it's a simple servlet to query a database and spit back some info in a nice html template. What do you think I should charge? I figure since this is going through the college, I'd knock off 10% off market price. So what do you think?"

    So he says, "Oh $50.00/H, just charge $50.00, that's what I'd charge if I were you."

    I was very pleased, and then he says "Next time, charge a $100.00/h."

      <lh>So here is what you need to keep in mind(I did):</lh>
    • First take into consideration what it'll take you to do it.
    • What does it exactly entail, make sure you get a good spec, and most of the time, you will be telling them what that needs to include.
    • Think about how much time it will take you to hash it out.
    • Don't forget how much 'research' will you have to do to complete this job, like if you're not familiar with some packages that will be essential to completing this.
    • Don't forget about all the time you spent getting the spec and talking to these people, as well as installing the thing.
    • Don't forget to not guarantee anything working unless you yourself install it, you won't beleive the amount of incompetent boobs the company will have
    • Documentation, documentation, documentation. Don't worry about your code being too readable(reasonably readable is ok) and make sure it's commented well. Self describing variablenames and comments are always a must. Also don't forget about providing some kind of readme file describing what they need to do to keep your program working nicely.
    • Don't forget the timetable they're giving you. The shorter the time, the higher the damage($$)
    So after you thought about all that, tally up the number of hours you think it'd take you to do what you need to do, and then tack on an extra hour(or two) for each task. Charge $50/h(or more ;-) for all the time you actually do programming, and about $30 for all the time you spent talking, negotiating, and installing the thing. Add up all the numbers, and then tack on an extra 1-4 hours for those just in case situations(at $50.00/h ofcourse), cause something will always go wrong, and let that be your price for the job.

    They'll get a reasonable price, you'll be compensated nicely(if you do your job right), and everybody will be happy.

    Keep in mind ofcourse, that it took me about 10 hours to write the sucker, plus about 2 hours of research, and 2 hours of documenting time. My just in case time came to about 3 hours, and they'll be rehauling their servers soon, so i tacked on an extra hour on that. They thought they got their moneys worth, and so did I.

    Disclaimer: Don't blame. It came from inside the void

    perl -e "$q=$_;map({chr unpack qq;H*;,$_}split(q;;,q*H*));print;$q/$q;"

      The last sentence is what I consider the main key of doing business.

      Both sides must consider the deal they made a good deal.

      This of course means for anybody considering a deal, that you should not do it if it is clear that the customer can't be content with what you deliver because of bad specs, general uselessness of the product or plain overengineering of a process that already works well without computers.

      Creating a win-win situation should always be the goal in negotiations; if your partner feels like he's got the bad end of the deal, he'll have to try to press you harder later in the project to get out the moneys worth without paying more.

Re: Freelance and Pricing
by dws (Chancellor) on Mar 19, 2001 at 11:00 UTC
    Anyone who considers a future (or part of one) in consulting or contracting owes it to themselves to find a copy of Gerald Weinberg's Secrets of Consulting: A Guide to Giving and Getting Advice Successfuly. Jerry has been coaching consultants for decades, and has some solid advice on how to establish a price for your time, and how to approach negotiations with clients. (Hint: there's a lot more to the negotiation than settling on a rate.)

    Establishing a rate (or a family of rates) can be hard. Some of us weren't raised to think in terms of our time having negotiable value. There are a couple of rules of thumb. One is pretty straightforward: If your (rate x estimate) is higher than what it would cost them to do it in-house, you probably won't get the job.

    To figure out their in-house cost, you'll need to know the typical "fully burdened" cost of their engineers. (Fully burdened is salary + the company's portion on benefits + the cost of equipment + the cost of the floor space and furniture). The rules of thumb for this change depending on a number of factors, but a good starting estimate is that burdened cost = 2 * salary. So if you're "competing" against an in-house developer who makes, say, 50K a year, assume that their burdened cost is 100K, or (100K/2000 hours) = $50/hour. If your assignment will be a short one, it's common to charge slighly higher rate. If you have specific expertise that they don't, and that isn't in great supply in the market, you can set higher rates.

    Ask around for the area specific region you're in. Rates vary widely. Even with CGI work, rates will vary depending on the degree of back-end SQL skills needed.

Re: Freelance and Pricing
by dmitri (Priest) on Mar 19, 2001 at 09:59 UTC
    Of the top of my head, several points:
    • Do tiny little scripts for free, but then do not agree to do it again;
    • Price medium projects hourly. Give an estimate and a plus/minus. Hourly charge is what you say it is. :)
    • Large projects: do not undertake them. You have a life, after all, right? RIGHT?
    Of course, if you're in love with the person who asks you to write that CGI, you do it all for free and buy her flowers afterwards.
Re: Freelance and Pricing
by mothra (Hermit) on Mar 19, 2001 at 19:56 UTC
    We have what I consider to be a fairly good way of handling the situation of determining a price that will make both parties happy.

    1. Bill hourly for the analysis/design phase. This way the time you take to figure out what user's really want (a never ending problem in the life cycle of a project) is easier to deal with, and might increase the user's awareness of the importance of carefully thinking about what is necessary. Keep in mind, small/medium company's rates usually start around $50 - $60/hr so if you charge a little less (like $30 - $40), you'll give yourself an edge.

    2. Once the requirements have been gathered, estimate a price for what the project will cost you to get done. Time is money, of course. Again, keeping in mind a competitive rate of $30 - $40/hr, estimate how long you think it will take, and then double it, at least. Take this number, multiply by $40/hr, sign on the dotted line, and start coding. :)

    3. Bill hourly for maintenance!

    4. Make some phone calls. If you're really not sure what to estimate as even a ballpark figure, don't be afraid to phone other web design/security consulting/<your specialty here> companies and pretend to be your client.

    Of course, it goes without saying that you shouldn't fear intuition when it comes to how you bill the client. For example, one client I'm currently working with has good potential for leading to a fair amount more business, so I'm giving him a really good rate to produce a fairly simple but still high-quality shopping cartish site, and I didn't bill him for the analysis/design.

    Our company also believes in free software, and helping the client by giving them the source code so they can work with it themselves or hire whomever they choose after that to maintain it. Try doing the same, and you'll be amazed at the competitive advantage that truly helping the client can bring. :)

Re: Freelance and Pricing
by coreolyn (Parson) on Mar 19, 2001 at 18:43 UTC

    There is no custom job (I don't care if it's fixing a washing machine) that makes a profit at under 100/hr), by the time your done monkeying around and handling the tax forms you've chewed up 3 hrs per 1 hour job anyway.

    Also I've found that making my best time estimate and multipling it by 2.5 seems to set expectations right for both parties

Re: Freelance and Pricing
by InfiniteSilence (Curate) on Mar 19, 2001 at 20:46 UTC
    Quick Note regarding pricing: you have to know a litle about the target company. I almost got a contract with Montogomery Ward here in Chicago and they just went Chapter 13 a few weeks ago! Boy, am I glad I went with my gut feeling, but I really should have checked up on the company. Had I done so, I would have known that they almost went belly up several years ago and were on rocky ground. Second point: you must determine your consulting rate based off of your financial needs. A base price for consulting is what you could earn as an employee doing the same thing. From the base, you must add on marketing, equipment, utilities, travel, and a mark-up for profit. You must not ignore the fixed costs between the base price and profits in order to 'break even'. You can fluctuate the profit based on market availability, specialization, or whatever factors make sense to the customer.

    Celebrate Intellectual Diversity

Re: Freelance and Pricing
by lhoward (Vicar) on Mar 19, 2001 at 20:34 UTC
    Another good book is The Computer Consultant's Guide - second edition - Real-Life Strategies for Building a Successful Consulting Career by Janet Ruhl. Originally written in the early 90s, it was updated in 1997 to the 2nd edition with updated information. Though it still shows its age a bit when talking about technical matter, I consider the advice and information contained in it to be invaluable. It has lots of great information about setting rates, contracts, etc..
Re: Freelance and Pricing
by one4k4 (Hermit) on Mar 19, 2001 at 20:09 UTC
    And most definitally, never try and have a package-deal of sorts. Especially with scripting / freelance web work. I've found that trying to have 'packaged' scripts/pages/what-not is just like walking into trouble.

    More often than not, you get into situations where the client asks for something different, or slightly changed. And unless you've established an hourly rate, or stuffed the package deal down the throat of the client, you'll end up with a headache.
    Just my $.02

    _14k4 - (

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://65366]
Approved by root
[afoken]: http://floating- ?
[haukex]: What Every Computer Scientist Should Know About Floating-Point Arithmetic?
[Discipulus]: the winner is..
[Discipulus]: Mr haukex from Germany! thanks a lot to the other parteciapant our dear Mr afoken.. ;=)
[Discipulus]: no, seriously thanks both, i missed 'scientist' and 'floating point' and the resarche was imposible..
Discipulus go to his cell to bookmark this
[haukex]: Well to be honest I just did a super search for "every should know floating" ;-)

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2017-06-26 20:51 GMT
Find Nodes?
    Voting Booth?
    How many monitors do you use while coding?

    Results (594 votes). Check out past polls.