This article was originally published in my blog smartpuffin.com.
Not so long ago I hired a team of freelancers to work on a project of mine.
Eve...
For further actions, you may consider blocking this person and/or reporting abuse
Interesting read. It's easy to fall under the impression that the problems we face as software developers are only encountered by developers if you don't have experience outside the industry. Because I get most of my informations from programming sources, it's always the same stories about bad software, wrong estimates, poor management. Sometimes, I ended up thinking: What is wrong with us? Can't we just be reasonable, responsible professionals like anybody else?
Well, apparently, we are very much like everybody else. Still trying to figure out what the hell we are doing, and how to do it.
Yes, we're just like everybody else! And also I think that when we developers view ourselves as unique professionals in a first-of-a-kind industry, we can't relate to other industries and learn on their example.
Isn't this pretty common in the contracting sphere? If you hired a company that always deliver on time. Then it would be on time. But would cost big $$$. Now the article I would love to read is how to fix this, maybe part 2? Great article tho. Brave to highlight obvious defects in society like this, that no one talks about.
Well, technically, I hired a company, but they were still late, but cost a lot. Sigh.
Part 2 is definitely coming! Can't promise the solution, but will definitely list reasons why this is happening.
This isn't just down to humanity. Those contractors were just terrible at estimating.
There's a large difference between software and such rennovations. The reason software is so difficult to estimate is because it's a unique project virtually every time. We're never faced with the same circumstances, same requirements, same anything.
This is not true in other domains. In home renovations you aren't facing an infinite number of requirements or eventualities. There are a lot more standards, and a lot more common things. Sure, there will be differences but it's simply not in the same degree as with software.
There are similar domains in software. Consider a standard corporate identity website. These have no new challenges and can be estimated very well.
If somebody provides an estimate then they should be able to meet it. Failing to do so is simply bad service. If an estimate is not possible, as there is too much unique work to be done, then a contractor (in any field) should be upfront about that and give possibilities and options. In software the smartest approach here is to have release deadlines without a fixed feature set.
All this aligns with my experience as well. Uniqueness and changing requirements definitely play a big role. But I think that's not all the reasons. I'll write a second article soon with more comprehensive analysis about the reasons.
Project management is hard. I wish more software engineers were required to learn more about it. People assume if you have a dedicated project manager that everything will be okay, but it requires at least one dedicated project manager and that all of the engineers working on it to know how project management works.
I highly recommend this book about how to measure anything: amazon.com/How-Measure-Anything-In...
Reading up on project management models like the Kano model is also useful: foldingburritos.com/kano-model/
I've seen OKRs used effectively in many places as well: amazon.com/Objectives-Key-Results-...
My thesis advisor told me that everything takes pi times more time than you think it will. That's not far off from 3.
Absolutely! It sounds pretty fun and maybe a bit ridiculous, but it works.
I taught several product owners to multiply all developers' estimations by Pi, and they told me it helped them a lot.
...now, I'm starting to wonder if their managers multiplied the product owners' estimates by Pi again.
Interesting article with a nice twist! :)
I love this!