The biggest problem in software is ego
Something I’ve been thinking about a lot recently: what is the common root cause of mistakes that I’ve made and mistakes that I’ve seen made in software?
I come from an enterprise app consulting background and have recently branched out into software development in the enterprise space. I’ve worked on delivery projects ranging from $1,000s to $10,000,000s in size and I feel like I’ve seen it all. I’m sure I’ll laugh at that statement in 10 years time, but it’s fair to say that I’ve seen a lot of failure in my career in IT.
To qualify that, it means I’ve seen many individual failures and I’ve seen the failure of major business programmes and everything in between.
I could write a book on why projects fail (or at least an article, which is actually in the works) but there’s one small thing that causes huge problems and leads to critical failures in the design and deliver of software. It’s the most common root cause of failure in software. Ego.
To qualify, I do think ego can be useful in many situations and it is very important for people to believe in themselves, in their abilities, and in their ideas. Confidence is healthy when applied properly.
Something I’ve consistently seen throughout my IT career, is ego being the dominant force during decision making. What this leads to is an irrational attachment to ideas you’ve personally thought of with an unwillingness to accept those ideas originating from and propagated by others.
I fully admit to doing this myself many times. I very often believe that my ideas are best and part of that is just because I thought of them. I’ll cling to an idea because I’ve put faith in it even though a rational, logical analysis demonstrates that an colleague’s alternative is better.
I’ve started trying to be better in this regard by actually approaching things more rationally and logically, which in fairness is very natural to me as thinking that way is core to my nature.
This approach actually leads to a much better result in software products and is much less stressful than trying to sustain bad ideas. It’s ultimately very liberating to say “actually this other idea is better than mine and let’s go with it”.
I do have some way to go and a couple of situations this week have sent my ego into overdrive, which did actually get me to produce some brilliant work but that’s because I want to show off. Optimally though, it’s much better to be coöperative and collaborative as these behaviours lead to a better result.
One really negative thing that I see often in IT is that displaying egoistic behaviours very often leads to an escalating arms race of ego between team members and between customer and vendor. This squanders goodwill and the opportunity to produce the best results through the blending of good ideas and the dismissal or evolution of bad ideas.
My call to action is simply: recognise that you have an ego, calibrate it, use it as a tool for good. Don’t let it get out of control and introduce bad design into your product because you can see outside your own personality. That’s the simple method to succeed in producing the best product and not failing to deliver.