No matter how hard we try, there will be mistakes and issues. true, most mistakes can be traced to a person. Passing blame to the person at that moment changes nothing. There are many reasons people make mistakes, not paying attention or not working hard are NOT majority of reasons. Lack of training and knowledge could be a reason. More often root cause is general lack of standardized processes and procedures. Standardization on the level of company is not enough. In English - most of companies are disorganized and mismanaged. Most managers, even IT managers are just that - managers of general type, no IT experience whatsoever except managing IT somewhere else in the past.. Going up the hierarchy, incompetency grows exponentially. And yet, no one in the chain is at fault. I am serious. we all, employees and managers alike, work in a system that is, mildly put, disorganized.
Lack of knowledge and understanding of basic data and or software generation principles is all around us. When schools, universities and training centers teach would be programmers, mostly they teach syntax of the language of choice. How to do IFs and While loops, create user defined functions, classes or methods. That is good. But it stops there. No-one teaches how to understand the problem we are solving, business needs and how to translate those in the design of a system that is supposed to support/solve stated business need. need. No-one teaches how to use those IFs and loops and classes to solve common business problems. One example of made up business does not count - it is just that - an example.
I am old school civil engineer, in European sense of he word. It took 5 years of study 40 subjects/courses, after hard qualifying exam in math and physics. 40 subjects included programming, back thein Fortran 77. Beside learning syntax, we learned how to conceptualize the problem, prepare algorithm which at the end is converted into code. Most of the examples were from our area of expertise - structural analysis, concrete or steel structures, project management, water resources, road and railway design and building et cetera. It is much easier to understand whats and whys of programming, or a IT system to support business we are involved at. I learned mathematical logic and sets in Grade 9. a decade later sets and elements of logic were moved to elementary school. Grade 2 or 3 begins with sets, later they get basics of logic and Boolean algebra. Today, logic or set theory is not even taught in most places to would be IT experts. We do not need sets and mathematical logic exclusively for relational databases, we need it taught early to learn how to think. What kind of mathematics or physics we teach our kids (USA, Canada, UK)? Next to none. So kids with next to none knowledge of mathematics and physics are sent to IT courses. What can you teach them when there is no fundament? And that is NOT kids' fault. Someone else organized educational system and decided on curriculum. Kids just follow the rules of the system. So much about effect of lack of knowledge on making mistakes.
Evan the best educated and knowledgeable students will fail if the company is not organized well. Are there documented procedures o follow when performing IT tasks (code templates, shared code repository, object templates for forms, reports, web pages, switch boards, naming conventions, code reviews, documenting rules, solving common problems in the same way so developers can continue each other's work, etc. ) That is about organizing. It is possible if manager is an IT person, former or current developer preferred for programming shops. In my engineering days, three levels of management above were all engineers. Immediate supervisor engineer of the same domain water resources, further up not my specialization but still engineers, civil or mechanical. There were design and building codes we had to adhere to. Whoever did the work had to sign it, management sign on employees work, higher management signed for lower management. Managers signature was on the document saying "I have supervised and checked the work and i confirm that all was done by the code". His manager would say "I confirm that people who worked on the project are qualified and licensed properly. The final signature was "My company is licensed for this kind of work". If something goes wrong at least we know from where to start looking.
Once IT achieves similar level of organization, standardization and control, we can expect more quality and less mistakes. And yes, managers have to be IT persons too. Engineering industry was not that organized at time of James Watt, even Henry Ford time. It took about 200 years to achieve today's level. It would be bad that IT businesses wait 200 years to get organized.
Zidar's Theorem: The best code is no code at all...