Search code examples
testingproject-managementagile-project-management

Are there team leading problems at Google or other popular companies?


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?


Solution

  • 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.

    Quality Metrics

    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:

    • Calculate the time spent fixing bugs. Highlight that this time could be better spent on developing new functionality.
    • Show the relationship between when a bug is discovered and how long it takes to fix. This highlights how important it is to fix bugs earlier rather than later.
    • Show the impact of poor design and architecture. Give examples of how a simple coding task was made harder by the poor code base.
    • Highlight technical debt and the cost of not fixing it

    Education

    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:

    • External coaches can help
    • Buy good development books and circulate them around the technical and management team
    • Form communities of practice and encourage discussion about standards and development approach
    • Circulate links to good articles and blog posts about development practices

    Management Buy-in

    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.