Member-only story
How To Build Engineering Teams Using System Design Concepts
Most engineering leaders are already familiar with the concepts and principles of System Design. Usually, these are applied to services, applications, and databases. However, I think we’re underutilizing these concepts! Let’s take a look at how we can apply those same concepts to running engineering teams.
1. Scaling.
There are two main ways of handling scale. Vertical and horizontal. You can scale your team vertically by offering more money + perks and in return getting more output. Just like in real servers, there’s a limit to this strategy. Horizontally scaling teams means hiring enough developers to share the load. There are several ways to do this. You could even have a “serverless” approach that could involve having a bench of engineers that are ready and waiting to help a project scale up as needed.
2. Redundancy.
What happens if your lead engineer quits today? Is your team fault-tolerant enough to handle that? If not, let’s start cross-training!
3. Caching.
Lots of extra communication ( DB hits / HTTP calls in our metaphor ) can be reduced by creating and maintaining good documentation. Having commonly asked questions, architecture diagrams, and strong README.md files can go a long way in reducing excess communication. This increases…