What makes a low tier software engineering culture? 

In my conceptualization a low tier software engineering culture is one where engineers have low wages, low accountability, little responsibility and little control over the software development lifecycle. In my experience this is typically due to economic reasons more so than ineptitude. 

One example is specification work for hardware integration projects. This article talks about how a culture of spec work killed the Japanese software industry for decades https://www.disruptingjapan.com/the-forgotten-mistake-that-killed-japans-software-industry/. These kinds of projects have inflexible deadlines, clear feature requirements and no customer flexibility. Customer’s can’t shop around for toaster software. The result is that engineers have little freedom or control over the software product. And since the software is merely a cost factor, little compensation is available for the developers. 

Another example is the internet service provider industry. Companies like Comcast, Cox, Charter Communications hold regional monopolies over consumers. The software they build on isn’t the product and customers typically have no alternative source for internet. As a result around the 1990s most of these big cable companies outsourced their information technology departments. 

These types of companies typically have little competitive pressures around the software they produce. The software just needs to work on average. You can’t shop around for a different operating system for your sedan. As long as the car works on average the software is good enough. 

The problem is that these kinds of software culture provide very bad worst case scenarios. Take a look at this article on security vulnerabilities in automobiles https://samcurry.net/web-hackers-vs-the-auto-industry. Automobiles manufacturers as an industry seem to produce very bad outcomes in software. 

The kinds of software engineering cultures that produce software that ‘merely works’ seem to produce software that is insecure, buggy and doesn’t ‘delight’ customers. But this is driven by business dynamics more so than teams or methodologies. Kia has no competitors in the market of software for Kia cars. You have no alternative to the software that operates your smart fridge. 

Funnily enough there is a solution to this problem. Toasters, fridges and cars are all powered by general purpose computers. The same kinds of computers that we all use everyday. Just change the automobile into a platform that accepts an operating system. Just like any personal computer can be converted to any operating system you chose. Is that going to be easy? Probably not, but structurally there is little difference between your PC and the PC that runs your automobile. 

Low tier engineering cultures are hard to fix. Due to the way the business works there is little money or freedom available to give to the engineering team. As a result skilled members of the team can easily move elsewhere and get paid significantly more. It is very hard to avoid a dead sea effect across the entire company and you end up with massive security issues like the automotive industry.