If you are a beginner developer or if you have some experience finishing projects, you might have noticed how difficult a task it is to come up with the right amount of dollar as your compensation for the efforts you have made. Sometimes the price is right for you but not for your client or vice versa.

In this article I am going to share some of my own experiences & lessons I have learned both personally & studying other professionals. You should of course take everything that is mentioned here with a grain of salt & always do what feels right for your situation.

Estimations are lies

Throughout the years, programming for other companies/agencies & working as an independent professional, I have never faced an estimation that was accurate or even with 15% error rate. The main reason is that all of these estimations are about an imaginary idea because you can't pinpoint a software that hasn't been written & previewed yet let alone estimate it precisely.

There are some exceptions such as a very simple website or an exact copy of another software but even in those situations there are so many things that might change once the code is live or even in preview mode for the client. Usually companies who are experienced enough charge a little extra or simple “overestimate” the costs because they know that there are always unexpected events waiting to be discovered.

So if estimation is not the best method, what should you do? Let's get to the next topic & by the end of the article you will see the method for yourself.

Hourly rates are misleading

Let's assume we have a senior developer who can perform a project 2 or 3 times faster than a junior one. Isn't it logical if we assume that such developer should charge 2 or 3 times more per hour than the junior one? Yes but …. Unfortunately the vast majority of clients just don't see it that way. The reason could be related to the fact that IT is not their main focus in life or maybe they don't mind waiting a little longer & get away with a lower overall cost.

Let's also imagine another scenario. As developers we know that bugs & mistakes in our codes are just inevitable. Their numbers might vary but they are there. Who should pay for the fact that you spent one hour looking for the reason that your program wasn't running just to find out you missed a semi colon? You can add to the list the requests that the client ask you which will eventually break your previous code or using & maintaining third party libraries & things of this nature.

We we lived in a perfect world where clients could understand that they do not only pay more for faster project completion but in fact for much bigger reasons that will save their time & bring a better experience for their customers, I would always go with a reasonably high hourly rate but sadly that's not our world. So what's next?

Focus on long term

My whole experience of doing projects changed once I decided to consider committing to a longer time frame to the project than the one the client had asked. Clients always approach developers with the famous line : “I want something simple…” & before you know it, you are building something that has nothing in common with “simple”. I had seen many project managers, designers & developers who were frustrated anytime the client asked them for a change. They were frustrated because it didn't fit their expectation based on their estimation. The insanity was that this kept repeating but they never decided to change their ways. I decided instead to embrace the challenge so here's what I did :

A) I asked the client to provide me a with a maximum budget that I shouldn't cross

B) I refused to give a price estimation on the project to the client however I always provided a time estimation that in 90% of the cases turned out to be sooner than promised.

C) I assured the client that they can ask for limitless changes to the software before going live. Usually professionals are very fussy in this regard.

The experience was not always great & some clients always bargained or pushed me to provide a breakdown of the time estimation. I ended up not doing some projects however, the ones that I did were just a great experience for everybody involved. The clients were so satisfied that they kept coming back for more work because instead of getting frustrated with their requests, I provided a safe & friendly space for them to be creative & focus on what matters to them. They referred me to their friends & I ended up getting more projects.

You are a professional not a machine

It's your job to handle the risk not the client. Some clients might still want to be involved in every process which is their choice however, the high quality clients that I have been working with were primarily interested in their idea, business & the expression they were looking for instead of micro-managing everybody who works for them. You are not a machine because you can perform 2x, 3 or even 5x when you are working under the right conditions. The moment you decide to work under an hourly rate, you pre-program your mind to think you are a machine which will force you to perform in the most bland way possible. You may choose to take that path & there is nothing with that but if you want to enjoy your work & if you want to get better, please consider your work as a craft.

Conclusion

At the end of the day it's you & your clients who dictate the terms of which the works must be done. If I could leave you with one point it's this, you should own your work & every aspect of it. If you are following somebody's style or methods but you are not satisfied with the result, change it or figure it out for yourself. There are no divine laws or certain rules which guarantee the best result for everyone except for our own experience.