Why do we tolerate incompetence and willful ignorance?

The Decline of Software Engineering and Development and other professional fields.

Daniel Andrews
respiciens ad veterum
5 min readSep 18, 2023

--

We as humans make mistakes, but we are supposed to learn from mistakes. That’s a part of the processes of almost every human system we interact with and are a part of from evolutionary systems (how we survive) to educational systems (how we learn). Mistakes happen and we need to tolerate mistakes to a certain degree. Systemic failure from a mistake can have catastrophic consequences and these need to be minimized, but most mistakes are correctable. However, we have reached a tipping point where incompetence and willful ignorance are allowed to be tolerated as mistakes.

If you listen closely enough you will notice it all around you and it usually stems from the software you use, the person who is always using “I can’t”, “I don’t know”, or “I wasn’t taught/trained”. What you are really hearing and tolerating is “I didn’t try and I don’t want to know because I don’t want to do it or use it”. At it’s core this is incompetence, an inability to learn and grow because of a lack of skills and abilities which are needed first. Even worse it is most often willful ignorance though which is really just another form of incompetence. So why do we tolerate it? It begins mostly with the software we use everyday.

We as a society rely on software everyday almost every minute of the day. The software which works is mostly legacy software. Why is this? That’s the software which had time to mature and used sound engineering and development principles when it was made. I’ll just use a couple of everyday examples that are relatable to most. Microsoft Windows and Microsoft Office, Windows XP (2001) and Office 2003 (2003) were Microsoft’s hardest legacy systems to kill, XP and Office 2003 still survive if don’t need to use the activation server. By the time Microsoft hacked off XP support it was a mature and reliable operating system, it still had security flaws, but it was performant. Microsoft wants everyone to upgrade software every 2–3 years, they can’t make money if customers aren’t buying new software. This was not the problem though, it was what happened to get to that point. In 1999 the Agile Manifesto was published, by 2007–2008 Agile had started to infect Microsoft and by 2011 Microsoft was fully committed to Agile and Scrumm. Why did this happen? The failures of Windows Vista and 8/8.1 is the why, when Microsoft got itself out in front of the hardware to support running those operating systems. Also, these projects were massive “upgrades” and undertakings with major changes that weren’t usually undertaken in previous Microsoft upgrades. The same happened with Office 2007, Microsoft kept pushing to their .docx and .xlsx formats, but the 2007 version of Office was manageable compared to Office 2010. Microsoft had to change, they chose the Agile way.

Why? Microsoft wanted to show it was customer focused by constantly adding new features and being more responsive. This requires a responsive iterative design methodology. Get the feature out, keep redesigning and fixing the feature. This mindset becomes “first to market” instead of “best to market”. Usually, best to market in overall performance and value wins assuming it is not too late. You find this in the software produced today from the giants in the industry, except for one, Apple. So what has happened? Google, Facebook, and others became Agile and keep releasing newer features and products and they are not ready and never become mature enough over time that performance degrades.

Want to know why Google Sheets or Docs seems fast one week and slow the next two to three weeks? It’s not your internet speed, although that may be part of it, it’s a server side and client side problem, the problem is the server side may be slowed with a new feature, but also create a slower client with the new javascript code it’s transmitting to your browser, because it’s hard to test at scale outside of production. So something changed and tested thoroughly in alpha, beta, and staging environments may not scale well in production, because the focus is not on performance or that it works as the users would want it to work, but that it was deployed fast. Once performance degrades with software especially cloud based software it increases costs and since it is cloud based it’s end users suffer because of performance degradation and when end users suffer so do the businesses they work for and their personal lives. The cascading effects just don’t stop at the end user, they have a direct effect on support personnel to the end user as well who are also probably end users. Make no mistake, this happens everywhere with almost all software except the software that is deliberately and thoughtfully designed to perform and with value.

Over time, the end users become frustrated depending on their skill level, and depending on their skill level they may take things into their own hands and find ways to work around the problems they encounter to stay productive. However, most of the time, end users typical use the performance problems with software as an excuse to remain less productive and then try to pass the buck onto support personnel who point out what the user can do differently or what others have done differently that have remained productive. To often, this throwing up our hands and saying we will do it tomorrow is the iterative process the end user uses. Seeing that work, they continue to proceed on similar iterative processes. You know these types of people, when a website is down or working sub-optimally they throw their hands in the air and say “the internet is down today” or “the internet slow” followed by something similar “I guess I don’t have to do that” or “I guess we can try again tomorrow”. This is willful ignorance or incompetence. Just because you relied on something from a company that is willfully ignorant or incompetent, doesn’t mean you get to be as well. There is other software, there are other means, and if you didn’t spend time trying to find solutions then you will repeat that process over and over staying ignorant or incompetent.

Soon the world will be Apple/*nix and ARM/RISC-V based CPUs. There is a reason Apple left the Intel x86 world. They knew they could make an ARM CPU than any x86–64 CPU and they did. Why? Deliberate, Thoughtful Design!!! Performance and value increase productivity and user experience. Apple also doesn’t tolerate incompetence or wilful ignorance. You can be neither of those when using a *nix based system. So let’s stop allowing wilful ignorance and incompetence in the workplace. Find do’ers, people willing to get the job done. We are all complainers and we all make mistakes, but do’ers do and those that don’t usually fit into either willfully ignorant or incompetent and make no mistake misapplied Agile and LEAN methods have infected almost every workplace.

--

--