A problem many freelancers face is estimating time and scope when dealing with a new project. Countless books have been written on time management, project estimation, and the next generation planning system but it is a spot where I found myself in the deep and drowning.

Some clients are plain pushy, and will gladly test what they can get away with. And as much as I hate the stereotype; a lot of techies are losing hands down in a confrontation with a savvy sales rep.

Experience is the best remedy here, but untill then, if you feel pressed here are 3 truths a developer should hold to be self evident.

1) Building Quality Software is an Art

Software Outsourcing is proof of this. Since its inception many companies have tried this ‘cheap’ alternative and ultimately decided to move back.

Any fool can write code that a computer can understand.  Good programmers write code that humans can understand. - Martin Fowler

It is the attention to detail: performance wise, visually and in usability. Good software is standing on the shoulders of giants, and not reinventing the wheel. And yes, this costs time and money. A lot of beginning freelancers, good developers, find it hard to deal with asking high prices for their services – or asking for more additional time to perform an analysis. Shed these false feelings of shame and start taking pride in the fact that it takes you longer to solve a problem than the average code monkey. Consider it an investment that compounds over time, and reflects on you, your portfolio and ultimate customer satisfaction. See why japanese engineers have built a culture around the concept of kaizen.

In software you get what you pay for and good software is not cheap! If you are still unconvinced, you would be wise next time you have a project specification to call a large software house and get an estimate; their prices are extremely high and (fortunately for us) completely unrealistic for a small to medium enterprise.

If you take pleasure in development, and have a good ethic, then there should be no shame in taking the time to deliver a great product to your client.

2) Never Estimate on the Spot

Never estimate how long a project might take – or even worse, stick a price on it – before having given yourself 24 hours from receiving the project details. From a pure ‘showmanship’ standpoint, telling a client you will review, make an analysis and get back to him tomorrow is perceived as a 100 times more professional. From a successful ‘analysts’ standpoint it is just common sense.

Give yourself time to analyze all the points discussed and then come up with a concept,

  • decide if you want to work fixed price with sprints – or on an hourly fee.
  • are you doing it alone, or will you need to employ more people.
  • is the customer really clear on what he wants, or do you need to draft some sort of functionality contract
  • are there frameworks available / which technology?

There are so many variables at play, and robbing yourself of the time to asses these things fully is a huge mistake.

Finally it becomes much harder for the client to press you and catch you off guard when you meet him, the second day, fully prepared.

3) Wear one hat at a time

As a freelancer you are the salesman / analyst / developer and tester all rolled into one. And whilst this broad view is often an advantage, making you a more versatile person, it can be a common hindrance during negotiation. Sometimes you need to try and subdue certain elements of your skill set.

  • A good analysis is the process of abstracting real world data without any technical bias. Try to leave the programmer out of this, you should be thinking functionally and in terms of a data model – no further just yet

  • A good salesman is an optimist, unafraid to consider taking on projects that are bigger than anticipated or in different fields. Sales reps for large software houses have the advantage of not knowing how difficult some technical solutions may be. Emulate this advantage by avoiding your programmer urge to immediately work out solutions and verbalize that they may be difficult or impossible to the client.

If you have any tidbits of information that helped you as a freelancer, please post them in the comments.

blog comments powered by Disqus