When you look at some very small companies or lean startups, it is amazing to see how quickly software can be developed. Why can’t all companies and developers be so pragmatic?
Working for a startup myself, I can appreciate the challenges of keeping a team efficient and laser-focused to what matters most, and producing results quickly for the business.
I consider myself very pragmatic now, I rarely spend time on unnecessary tasks, but I haven’t always been this way.
Like the majority of software developers I’ve met in the past 14 years, for a long time I prioritised well engineered and beautifully crafted code at the expenses of deadlines and cost control.
I was curious to discover exactly when my attitude changed and why. I still love beautifully crafted code, but I love successful & profitable projects even more.
I think I can pin-point the period in which the change started: It was in 2008 while I was running my first business - a software development agency in northern Italy.
As a developer turned entrepreneur I was, for the first time, forced to attach a hard monetary value to the code I was producing.
I had to give quotes to my customers, provide competitive prices and make sure the projects were profitable.
Suddenly, the hours spent “improving that open source component”, “updating dependencies” or “changing CSS framework” were no longer justified in light of the money I could ask customers to pay.
This does not mean that all of those activities weren’t done, but they were put under heavy scrutiny before being done.
I’ve come up with a rule of thumb to decide if something is worth doing or not:
- Estimate how long a task would take
- Give myself a quote
- Ask myself if you would pay that much money to have that task done
If the answer is yes, then it’s still worth doing.
if the answer is no, I’m probably wasting time or blowing a small task out of proportion.
The cool thing is that you can apply this technique to anything, for example meetings:
Imagine you call a meeting with 6 people to decide how to redesign a certain section of the website:
- Time estimate: 2h meeting with 6 people = 12 hours
- Quote: 12h by avg cost of €30/hour (example) = €360
- Would you pay someone €360 to give you the outcome of the meeting?
Comparing the desired outcome with his potential cost allows you to decide if the task is actually worth doing.
It is a very simplistic approach, but it quickly brings you back to reality whenever you let your inner dreaming software architect loose.
I hope you find this tip useful!