I'm working as a software engineer for a company that is not very big, about 120 employers. I was head hunted and since the company was quite popular, I started working here. We offer coupons and discounts online and run our site in three different countries.
When I first came here, I was shocked. The codebase was so bad and no unittests were written at all. There were half working acceptance tests that were also poorly designed and covered about 5 percent of all features. Not so long ago, the project was divided into pseudo microservices. The communication between them is not isolated; every service knows business processes of the others. We have our production sites down at least once a week. When I tell the team lead or CTO that we need to introduce at least 90 percent test coverage, they always answer that there is no time for that now. Hell.
Are there such problems in your company? Did you overcome them and if so, how? What steps should our managers and developers take in order to change the situation?
I have worked for over a dozen development organisations, both large and small. Sadly poor code quality and bad development process is very common, even in the larger organisations.
There are some key factors in improving the situation.
When the effects of poor quality are not visible there is little incentive to improve.
A good way to make things better is to introduce some metrics that highlight the cost of poor quality. Some examples:
A lot of good development practices are counter-intuitive to non-technical managers. It is not unusual for managers to see unit testing, continuous integration and pair programming as a 'luxury'.
When the management team does not understand the benefits of good development practices then they may resist them.
The argument of "we don't have enough time" is very common. It is important to demonstrate how improving quality will save time rather and result in the delivery of more business value.
Education is critical. There are many approaches that can be taken to improve understanding of the development process:
A key factor is management buy-in. Once the management team sees quality as vital to success they will encourage and nurture it.
Metrics and education as discussed above can really help to convince the management team of the importance of quality.