How did we end up with this mess?
I have more than 20 years of experience in IT. I remember asking Ken in 1996 to tell me some pro secrets and useful hints. I will cite Ken: "IT is about 0s and 1s, all the rest is just working with people!". For the young version of myself that was almost an insult. What is this answer, I was expecting an enlightening answer. Wrong! Having expectations is wrong in IT, having expectations to not to have expectations is even worse.
Ken was right, IT is deceivingly simple but the endeavour makes it complicated. The natural tendency for chaos and disorder makes IT complex and most of the time an impossibility. I can say that the most of IT projects have a propensity to fail rather than to be a simple, straight forward implementation.
So, how we end up with this mess? What makes it so difficult to get simple things done in IT? Why is the 2nd law of thermodynamics, concerning the increase of entropy, so evident in this field? Although more that 90% of IT professionals do not understand what this is about. I met all sort of impossible combinations which will be considered as unacceptable in other fields, but in IT, because the chronic lack of workers, everything, and I mean absolutely everything, is acceptable and possible. Therefore, one possible answer is the lack of qualified personnel - so anyone who wants to get onboard the project is more than welcome. Imagine that in the near future it will be the case for brain surgeons - would you accept to be operated on the brain by anyone who happens to be around with a sharp knife.
This overheating of IT field created an economic bubble - high demand of workforce induced an increase in salaries, followed by lowering the entry barrier in IT and attracting more and more unqualified people. Even people that openly admit that they have nothing to do with IT and they are making a good living in this field and it will be silly to throw away such an opportunity. Some requalified people are in IT just for money, sometimes they are only for their toxic personality and sometimes for their sociopathic behaviour. Now, imagine what you will find in an IT team ... a sort of magic, in the sense of twisted magic. What can you achieve with this team? Is it like working for Google, Netflix, Microsoft, Amazon or some other big company? What does it mean that you are in a good IT team?
Most good IT teams are small, 3-5, maximum 10 people, more means managers and then everything falls apart. IT managers are one of the most toxic, incompetent people in this field. Once you team is infected there is no vaccine - simply leave and start over in another place.
What type of projects you can implement with such a "small" team. Basically sky is the limit. I will always cite single person projects: linux, javascript, unix, gnu etc that rule the planet now. All big IT companies started with a small team and they achieved greatness in a short time just because of lack of incompetent managers - and that is why big teams with big budgets will never succeed.
What about growth? How to handle a growing company? What control structure you should put in place? I recommend to study ABB and Netflix and maybe you will find your answer. There is no magic recipe, you just have to know your people, they are the key to your success. Run away from people that talk only money, business plans and ROI - money will never produce code, an innovative product or change the way people interact with technology. You team will drive the change, will implement it and will make it happen, sometimes for free.
But, a big company pays well, what should I choose? Choose life, do not sell you time for something that kills you from inside. Do not sell your soul for money. Your life, your creativity, your future is not how much money you make. Yes you need money to play the big Monopoly game (rent, kids school, medicine, bank credit etc) but this will not buy you a life, especially a professional life. Most of the people that I know choose to sell out. I am not saying that this is wrong, it is just not real life. I can tell you that when I talk to them is like being in a zombie movie, except that this is in real life.
So, how did we end up with this mess? Well, in the beginning we had the mathematicians that imagined machines capable to make complex computations (Turing, Church, Von Neumann) in a simple way, this was too complicated for regularly mortals. Then they shared this secret with technicians, particularly electronics engineers, who builds the machines. It was still a bunch of people that were able to interact with those machines. Then the terminal was invented so that all mortals can dump their code into the machine like trash and garbage. Somewhere on this path, Excel was created, and we all had a "professional" way to produce more trash and garbage. Every mouse clicker and Excel sheet-er (person that creates more than one Excel sheet and pretends that this is enterprise solution) become an opinionated IT person. Now, this is the situation: the people with the budget hardly understand what IT means and stands for, the IT experts are not able to explain what it is all about, so solve this! Basically we end up with endless Excel like software that is overpriced and over engineered. And that is the mess we are in!
Instead of conclusion - I do not foresee in the near future (next 10-20 years) that human based software production will ever improve, on the contrary, quality will constantly decrease. Eventually, if we arrive to produce AI smart enough to write decent code on our behalf the we may eventually end up to be saved by machines. But do not count on that since the programmers that will write the AI are not there yet.