Responsibly mid-size: What Matters, Suffers

Questioning what is gained from "clean code" in actual, production environments.

Pablo Meier
10 min readbeginner
--
View Original

Overview

The article discusses the challenges and strategies of managing a mid-sized company, particularly focusing on the inevitability of 'bad code' and the importance of maintaining team cohesion. It emphasizes that as companies grow, they must adapt their processes and attitudes while recognizing the complexities of codebases that evolve over time.

What You'll Learn

1

How to recognize and manage 'bad code' in a mid-sized company

2

Why maintaining team cohesion is critical in mid-sized companies

3

When to accept the limitations of legacy code

Key Questions Answered

What does it mean to manage a mid-sized company responsibly?
Managing a mid-sized company responsibly involves adapting processes and attitudes that differ from those in smaller startups. It requires recognizing the complexities of codebases and maintaining team cohesion to prevent internal issues that can lead to failure.
Why is 'bad code' considered inevitable?
'Bad code' is considered inevitable because as codebases grow, they accumulate complexities and legacy issues that are often necessary for functionality. This phenomenon is common across successful projects, indicating that such challenges are a normal part of software development.
How should engineers approach legacy code?
Engineers should approach legacy code with an understanding that it has been tested and used over time. While it may seem messy, it often contains fixes for various bugs and issues that have arisen, making it valuable despite its appearance.
What is the impact of team dynamics on software quality?
Team dynamics significantly impact software quality, especially in mid-sized companies where communication can break down. Poor collaboration can lead to misunderstandings and frustrations, ultimately affecting the product's success and the company's health.

Key Actionable Insights

1
Recognize that 'bad code' is often a necessary part of legacy systems and should not be dismissed outright.
Understanding that legacy code has evolved through real-world usage can help engineers appreciate its value and focus on maintaining functionality rather than striving for perfection.
2
Foster open communication within teams to prevent misunderstandings and promote collaboration.
Encouraging a culture of transparency and dialogue can help mitigate the risks associated with team dynamics, ensuring that everyone is aligned and working towards common goals.
3
Evaluate the churn and complexity of code to identify potential problem areas.
By analyzing codebases for files that are both frequently changed and complex, teams can prioritize refactoring efforts on the most critical components, improving overall code health.

Common Pitfalls

1
Allowing negative feelings towards a codebase to influence work can lead to poor engineering practices.
When engineers let frustrations fester, it can result in a toxic work environment and hinder productivity. It's important to address these feelings constructively and focus on delivering value.