A 10xer or cowboy developer works alone on a project. This developer might be part of a large team in a big corporation or the sole architect of a small team. Regardless of how, the person writing the code holds the reins of the code base.
The 10xer is a lone star.🤠
Code silos occur on teams where individual developers are working alone instead of together. A common side effect of code silo teams is the emergence of a dominant "10x Developer".
I use this term not to sow division.
But to merely illustrate the different approach to designing software.
The Cycle of Sloppy Fast Code🤬
Within code silos, the development style of a "10x Developer" often follows a distinct cycle. It starts with writing fast, sloppy code. This is followed by constant large-scale refactoring as the 10x Developer seeks to improve the codebase. Finally, this cycle leads to the isolation of modules, where one developer essentially becomes responsible for the entire codebase.
The "10x Developer" typically exhibits a pattern of pushing commits that overwrite smaller changes made by other team members. This behavior is often driven by the absence of proper version control and code review processes within the team.
As the codebase grows it is going to reach certain pain points.
The 10x Developer style of We enjoy typing fast, sloppy code has started to slow down further development.
There’s no one step process to test the problem output.
A game of whack a mole begins. Code rot 🤬starts to blossom.
Resulting in regressions and unresolved bugs, leading to project delays📉.
📈Restructuring the code is a great time saving strategy.
As these pain points arise, be bold in resolving them.
In the Trenches of Code Silos🤐
Most of us professional software developers work in teams. We do not code alone.
We do not develop software in isolation. When working in a team it is important to practice effective communication and collaboration.
💡Thriving as an engineer within a code silo environment requires a strategic approach.
1. Restructure Code 🏗️
To maintain code quality, it's crucial to organize and layer the code meaningfully. Familiar patterns like the Model-View-Controller (MVC) pattern, Singleton pattern, or abstractions toward higher concepts are invaluable.
These patterns provide structure and encourage "structure" in the codebase.
While traditions and preferences in coding patterns exist:
💡 MVC for C# developers, IoC for Android developers, or no specific pattern for PHP developer
What matters most is what has been tested and proven effective.
Building structure in code involves rigorous testing and validation.
2. Continuous Testing 🏛️
"As I write, I test, and as I test, I write" .
A mantra I repeat to myself helps me ensure that each line of code is vetted before it's considered complete.
With a well thought out structure in place, it should be easy to isolate portions of the code for quick execution and thorough evaluation.
This is a time saving strategy I use to reduce time spent clicking through the product to validate functionality.
As module isolation progresses, the breakdown of code silos becomes evident.
With surface-level dependencies being extracted and deeper-rooted dependencies
Code silos begin to collapse as module isolation continues. Surface level dependencies can be extracted. Allowing for more deeply rooted dependencies to be scrutinized more closely.
3. Production Readiness and Future Maintenance 📈
In code silos, where one developer serves as gatekeeper it's critical to consider the long-term aspects of the project. Relying on a single developer to handle future maintenance, develop new features, and ensure the app's production readiness is not a sustainable approach for long-term software development success.
Developing software in code silos does not foster teamwork.
But it does emphasize the significance of maintaining a well-organized codebase.
This presents both challenges and opportunities within the constraints of code silos.
Employing strategies like: Adopting coding patterns, implementing continuous testing prioritizing production readiness.
💡 Implementation of these strategies can empower developers to succeed even when dealing with the limitations of code silos.
Thank you for reading 😀