Pointed out that dismissing programmers and replacing them with new personnel can be fatal to software



It is known that the IT industry has a high turnover of human resources, and talented developers move around in various teams in search of favorable treatment, and companies also actively reduce personnel during recessions. However, Baldur Bjarnason, who has several books on managing software development teams, argues that ``dismissing programmers and replacing them with new personnel can be fatal to software.''

Theory-building and why employee churn is lethal to software companies – Baldur Bjarnason

https://www.baldurbjarnason.com/2022/theory-building/

Bjarnason compares software programmers to gardeners and says, 'Software is a temporary garden, and its fate is closely related to the gardener.' Bjarnason believes that programmers, like gardeners who know the ecosystem of their garden, have a sense of how the different parts of the software connect, how the parts affect each other, and what benefits or detracts from the whole. claim.

Many companies and project managers consider programmers participating in development as substitutes, and replace personnel like Lego blocks. But what really keeps software alive is the programmer, who has an accurate 'mental model' of what the software is for, how it was built, and how it actually works. It cannot be substituted for

According to Bjarnason, programmers and code are closely related in software, the insight and knowledge in the mind of the programmer influences the change and growth of the software, and the code plays a role of dialogue with the real world. claim. The degree of understanding of software also affects the value of code produced by programmers, and if too much code is written by programmers who do not have a mental model, it may eventually cause a catastrophe.

Of course, in software development projects, documentation about the software is created so that developers who join in the middle can take over development and maintenance. However, Bjarnason points out that documenting the inside of complex software in a way that anyone can understand is an advanced skill, and many programmers do not have that skill. As such, most code documentation is not very useful before the programmer has developed a mental model of the internals of the software, but rather after the mental model has been built.



One of the problems that the increase in programmers with undeveloped mental models brings to software is ``degradation of software''. Even if the software itself remains unchanged, platform and dependency updates can affect the software, requiring programmers to make modifications to maintain its functionality. However, in software that integrates complex code, programmers who do not have a mental model may not be aware of the effects of various updates on the software and may not be able to find the part to be fixed.

The easiest way to build a mental model about software is to work on the project while the software is actually growing. Bjarnason calls this type of 'first-generation programmer,' and first-generation programmers learn how best to change the interactions and specifics of various components, how to minimize software degradation, how to actually has a good understanding of unused code, etc.

On the other hand, Mr. Bjarnason calls programmers working with first-generation programmers 'second-generation programmers.' When second-generation programmers encounter code that doesn't make sense, first-generation programmers explain it, and second-generation programmers develop their mental models. As time passes, the second generation programmer becomes the center of software development, and when the code written during tenure becomes the majority, the second generation programmer will become the de facto first generation programmer Thing.

Bjarnason says that team stability is essential in software development, and that each team should have a majority of first-generation programmers, but also some second-generation programmers. If there are too few first-generation programmers, second-generation programmers with insufficient mental models will have more work to do, which will delay software development. Also, if there are too few second-generation programmers, the update of new functions will be delayed this time, and even if any developer leaves the team, it can be damaging to software development.



Bjarnason said, ``When you replace too many programmers, their mental models become disconnected from the reality of the code and the code dies. You can do it, ”he argues that software development programmers are not easily substitutable.

Many software development teams are constantly fixing something in their code not because the team has found a better way to approach the problem, but because no one on the team has an accurate mental model and the code is That's because they don't understand how it works and how it interacts with other parts. Bjarnason said that to solve these problems, managers need to manage teams with a good understanding of the fundamental nature of software development.



in Note, Posted by log1h_ik