I am this weird kind of software engineer with a morbid fascination with management, while not eager to get anywhere near it myself. Also, I’m keenly interested in the history of computing, and I find the accounts of important projects of the past which involved software to some degree absolutely fascinating – from Colossus through Apollo to the global TCP/IP network, both the brilliant successes as well as the utter failures. Over the years, the stories of how those projects have been run, as well as my own experience seem to have crystalized in my mind along an axis between two poles, that I’ve only recently dared to name; let me call them East and West.

Lukashenko scolding an official

Have you ever seen a video of Putin or Lukashenko scolding officials on public TV for inadequacies of the public administration? It’s an odd thing to see for a person born outside of the (post-)Soviet sphere of influence, but this is what passes for acceptable governance in those parts of the world. The point is to shift blame away from the Dear Leader and his clique, and to be perceived as being in control. The systemic causes or indeed actually solving the problem is not that important. People will eat it up, or at least pretend to, because they don’t really have a choice. After several generations have lived and died in such circumstances, it’s hard to even imagine a world where things could be different. Oh, East is East, and West is West, and never the twain shall meet. 😉

The East

This is admittedly kind of a grim introduction into a discussion of the relatively cushy world of modern IT, but it helps me to paint a picture of (the extreme variant of) the Eastern mindset. Within that mindset:

  1. Power is absolute, and you yield to it or you die. When you posess power, you expect absolute obedience and feel the need for total control, and losing that control is what you fear the most.
  2. Despite the outward appearance of collectivism and unity, collaboration is limited. Every domain is divided into walled fiefdoms, and information does not flow freely, leading to waste and duplicated effort. If you share knowledge, you lose respect instead of gaining it.
  3. The responsibility is diffused, you will get punished if you screw up badly, but overall since everybody is stealing and not doing too great a job, then it’s easy to blend into the background and just do the bare minimum.
  4. The effectiveness of actions and the quality of the end results are not of the greatest importance. Of course, it is good if you manage to produce something decent, but a significant degree of waste, corruption and incompetence is expected in this system. Much more important are outward appearances, posturing and chest-beating.

The West

All well and good, but what does all of this have to do with IT? I think a lot of people entered the industry inspired with the stories of how software allowed humanity to achieve great things like land on the Moon, give everybody access to a personal computer with an easy to use graphical user interface, and later connect the whole world with a fast, global communications network. This is the kind of project that everybody would loved to have been a part of. Yet, when I stop and think of the mindset that is necessary to make a project like that a reality, it stands in stark contrast to that Eastern mindset I was just describing. When I try to come up with a list of qualities of an equivalent (also extreme) Western mindset, it is basically the opposite:

  1. The power is more evenly distributed. There is a boss, but they employ knowledgeable people, and those people are given the power to accomplish what they have been assigned. No need to consult the boss on every tiny detail.
  2. There is more free communication, and deeper collaboration. Factions do not need to vie for power and keep secrets from each other out of fear of becoming irrelevant and eradicated. Components for multiple vendors are used which need to interoperate, and communication is crucial to that.
  3. The individual’s creativity is not hampered, but encouraged. Responsibility is less diffuse. You will pay for your mistakes, but you will also receive credit and prestige for your contributions.
  4. What is most important is the end goal. Nobody cares whom you know, or the amount of noise you make, if your stuff doesn’t work then you either need to fix it, or make room for somebody competent.

Of course, the real world does not operate on the basis of such neat dichotomies, and I realize that no organization operates at this perfect intersection of enlightened management and pure meritocracy; I’m not sure it would even be practical. Of course there was office politics and racism at NASA in the 60s. Of course Bill Gates ran Microsoft in the 90s with an iron fist. There probably was more than one self-important, well-connected asshole trying to extinguish the idea of TCP/IP out of pettiness and spite. These are relatively new ideas that have only begun popping up in the 20th century when the manufacturing industry started looking for more effective modes of operation. Since then, they have been slowly trickling down to management graduates and organizations, but will probably never be universally adopted, just because people are people. And sometimes when big money and greed enter the picture, suddenly all the enlightened ideas seem to go out the window, people start stabbing each other in the back at the very top and it propagates towards the bottom, eventually turning the organization into a husk of its former self.

However, the very fact that these ideas emerged and that we have them as something to aspire to is extraordinary in my opinion, because it runs completely against the natural instincts of humans. For an individual in power to recognize that that absoulte power and control is forming a stranglehold preventing the organization (country, company, etc.) from achieving its goals, and then being willing to give up some of that power in exchange for better results is just something that does not happen naturally. I do believe there is a reason why these ideas emerged in what we call the West, and that it’s acceptable to generalize Coway’s law onto countries and even continents. I don’t think the Internet could ever have happened in the Soviet Union. They reportedly have tried and failed, but as dictated by Conway, their design reflected their modes of thinking. It was a hierarchy-driven, overcomplicated and overcontroled behemoth that was designed by comittee and aimed at improving industrial output of factories and it never got off the ground. What, give computers to universities? An open hardware standard and protocol that anybody can implement? A decentralized structure with no super-Soviet node in the middle? Surely you must be joking, Comrade!

Well then, are we all living fine and dandy, breathing in the free air of the West as we clickety-click away on our keyboards? I’m afraid not. I believe the Western values and mindset are in peril. A sort of a decline, if you will. 😉 Let me explain why I think that.

Reduced expectations on software quality

Enigneers are known to consider anything other than perfections as complete and utter garbage. It’s a real problem for management, because you need to tell your employees to stop perfecting the design and release a product onto the market in order to make money. However, it feels like ever since Microsoft got away with firing its QA department in 2014, software companies seem to be stuck in a cycle of one-upping each other with how much you can skimp on quality and still get away with it.

We have become accustomed to modern software, from games to operating systems being underbaked, riddled with security problems and often barely working at all. The customer has become the manufacturer’s QA and they accept it because there is no alternative - everybody’s doing it. We are happy to get a patch a couple years after we purchased the software. Indeed, if you are a software company and you decide to put extra work in to release a better product, you will probably lose out to competitors who were the first to market.

Accepting canned dog food in place of the prime rib you paid for, and not having a choice because it’s the same everywhere is so evocative of living under an oppressive regime (of software) that I don’t think I need to elaborate.

Agile as an excuse for lack of planning

Originally created as an attempt to make large companies competetive with smaller, more innovative ones, Agile software development instead managed to make things even more chaotic and cumbersome. Why bother designing anything or making technical decisions, when they are going to be obsolete in a few weeks? – thus goes the lazy excuse for not doing proper research and requirement analysis. Instead, let’s continue throwing stuff against the wall and doing something, anything in the hope we stumble onto a solution that kind of works. This is the typical Eastern pattern of not bothering to understand the causes, while throwing resources stupidly against a problem, failing to recognize its nature and come up with an actual solution because that would require independent thought and (gasp!) initiative.

From a certain point of view, it looks like people are trying to apply development and release processes that are used for web development essentially everywhere. When you are working on a web application which needs to change every day and is being instantly consumed, you need a development model to enable fast turnaround, as well as an CI/CD arrangement to push out the changes to production in real time. But it does not carry over well to low-level/backend systems with complex but otherwise comprehensible requirements, which should be carefully designed and methodically implemented. And even a web application needs a solid foundation to carry the weight of all the cruft that will accumulate over it during the course of agile development. And then probably a solid refactor every year or two.

Agile enthusiasts will inevitably reply that you should not use it that way, going agile does not mean abandoning planning or design, or that you can deliver broken software. It’s just meant to plug feedback earlier into the process, improve communication and put features into the hands of the users faster… yada yada. You know that when MBA management hears that talk, all they will be able to comprehend is “faster”, and use that to justify having devs skip the time-consuming bits. When coming up with a system for organizing the way people work, you should consider how it’s going to play with the, you know, people factor. And if your system is being misused, obviously you as the designer did not communicate the ideas clearly enough, or the system was trash in the first place. Coincidentally, whenever Communism is criticized, apologists come crawling out the woodwork, saying things like “well, that was not the original intent, this is not true Communism”, in a lame-ass no true Scotsman defense. Neither does it for me, sorry.

Overemployment and the bullshit jobs

Of all the horrible mutations that the Agile manifesto spawned, Scrum has to be the worst. It is essentially a dopey cult, where adult people are dragged into meetings and forced to take part in stupid, kindergarten-level games of assigning points and stars, dancing around a pole and singing songs by a person with no knowledge of the project, and basically nothing to contribute other than ask us what we did yesterday, what we will be doing today and if anything is blocking us once per day. Really, we need a dedicated person to do that?

There are other “interesting” jobs such as Happiness Manager, Code Ninja or Smoke Jumper, which usually hide the fact that the person has no specific responsibilities, and just kind of hangs around, but I don’t think those are the worst. What is much worse is when thousands of developers are thrown against a relatively simple problem for a year, which could have been solved by one or two smart people in two weeks. The result will be a barely usable mess that everybody on the team needed to leave a mark on regardless if it was needed or not, lacking any overarching cohesive vision (if there was even any in the first place), because just try to control and review code from so many people. Again, Eastern methodology of “full frontal assault with small groups of 1-2 million” in the hope some will get through and produce usable results rears its ugly head.

MBA-fication and the return of micromanagement

Despite Mythical Man-Month being published in 1975, and its lessons seemingly being assimilated by the industry, I think we are observing a regression, where most of the people in leadership positions in IT have not heard of it. In time of crisis, upper management will descend screaming and flailing around, go over the middle manager’s heads and interfere directly with grunt developers in hope of making things “better”. No you will not, you have no idea what needs to be done, adding more “resources” from a “low cost center” of dubious quality will not make it faster, you are just in the way. But an Eastern-style governor can not be seen as “doing nothing” by their superiors, so they will make a lot of noise and move things around uselessly in the hope of being able to avert blame and responsibility. This is exactly the way how management problems are dealt with in the East, in the picture I showed you before.

Everything as a service

Moving everything out to the cloud was supposed to be a liberating experience, and a cost-cutting measure to boot. No need to host your own IT infrastructure, or employ an IT department, everything can be ran from a remote datacenter where the cloud operator also provides building blocks (compute, storage, security…) to build your application out of. But this just turned out to be a way to take control away from the users of these services, and enable the cloud companies to charge ever-increasing fees for an equivalent of an HTTP/FTP server. Even trial/development accounts tend to run you into the thousands of $$$ per month, and if you decide to build your infrastructure out of the components provided, then you are locked in for life, and they can keep charging you for life. It’s fine if the decision to run with it is taken with full knowledge of the consequences, but most of the time it’s not (the MBA managers will decide to use the spiffy shiny cloud thing without consulting anyone), and ultimately this trend is just an attempt to centralize, control and exploit application traffic by a small group of industry Big Brothers.

The rise of dumb, authoritarian CEOs

From Zuckerberg to Musk, from Bezos to Bankman-Fried, these individuals have grabbed the public imagination and grown their own personality cults. Now granted, there were always the Tramiels and Jobs in the industry, people who ruled with an iron fist, accepted no dissent or criticism. But at least they were not completely stupid, and what we see today is in a different league. These people range from robots masquerading as human beings through rambling idiots to straigt-up fraudsters, yet still many believe them to be geniuses, simply because they made a lot of money in tech. Their platforms are actively disseminating foreign government misinformation and propaganda, they are involved in election manipulation scandals, pedophiles use them to get easy access to their cheese pizza, yet somehow these companies thrive and the CEOs are admired and venerated, true Dear Leaders of today’s IT landscape.

Conclusion

I am not trying to say we are living in a dystopian, totalitarian world. Neither do I consider Musk and Zuckerberg to be genocidal dictators. What I am saying is that software development as an engineering discipline has turned away from the values and principles which enabled great achievements in the past, and instead launched into a petty, close-minded, authoritarian, paper-pushing, buzzword-inflated, ego-centered affair which leads to gradual overall decline in product quality, satisfaction for both users and developers and ultimately will cause its downfall, or at least a major reorganization.

So, will the industry be able to step back, reflect, and embrace again the modes of operation which eleveted it to current heights in days of yore? Nah, I don’t think so. There is too much money involved, and the companies are raking it in without needing to improve their game, so why bother? If anything, it will become much worse before it gets better.

Will it ever get better? Perhaps. But for that to happen, software development would need to become dethroned, commodified, no longer the cash cow and wet dream of investment bankers. Kind of like steel production: optimized through centuries of industry experience, ubiquitous, predictable – boring. That might be good for the industry, but would it be good to us as developers? Probably not, but the world does not revolve around us, even though it might currently seem that way to some. Maybe the further development of AI will lead us to that situation? Perhaps the current recession will force a refocus on long term planning, strategy and profitability, eliminate the bullshit jobs and cause the service model to collapse. A guy can dream, can’t he?