Introduction
Working in tech means a constant state of learning and growth. The rapid evolution of technology, coupled with varying levels of experience, makes continuous improvement a necessity. However, many developers don’t know how to learn effectively, and organizational efforts are often superficial. By understanding the foundations of learning and applying effective strategies, you and your department can transform the way teams grow and evolve.
My favorite resource to introduce some of the underlying science and ideas here is “Making Badass Developers“, which I recommend watching, although I’ll outline the relevant points as well.
Foundations of Learning
Practice Makes Permanent
The adage "practice makes perfect" is misleading. In reality, practice makes permanent. Developers who are exposed to bad habits will find them difficult to unlearn.
Half a Skill Beats a Half-Assed Skill
When learning a new skill, slow and steady improvements are far more effective than haphazard multitasking. Learning something halfway makes it more difficult to learn the next thing - your foundation is shaky. Instead, mastering a subset of that skill enables you to focus on the next new thing.
The Science of Expertise
High-quality examples are key to developing expertise. People learn best through exposure to many high quality examples and strategic practice just beyond their current abilities. Additionally, the brain needs downtime to process and internalize new information, come up with new ideas, and fully grok what they just learned.
Strategies for Leveling Up
Keep Code Quality High
Developers mirror the quality of the codebase they work on. The "broken windows theory" applies to software development: if the codebase is full of hacks and band-aids, developers will continue to write similar code.
Maintaining a high-quality codebase ensures that developers have excellent examples to learn from. Short feedback loops, easy-to-run tests, and clear debugging processes are essential. Reducing the need for hacks and quick fixes means developers can focus on learning and improving.
"High-quality codebases lead to high-quality developers."
Encourage Planning & Prototyping
Planning and prototyping should be an integral part of your team’s workflow. It’s much easier to discuss and adjust an approach before it’s fully built. Early discussions allow for quicker feedback and safer experimentation. When developers understand the importance of prototyping, they become better at evaluating trade-offs and seeking feedback proactively.
Quick Feedback Loops
Rapid feedback is essential to growth. Long feedback cycles can lead to snowballs of errors, making it difficult for developers to course-correct. By encouraging quick prototyping and iterative improvements, you minimize the risk of misaligned work and allow developers to learn from their mistakes in real-time.
Challenge Developers Just Enough
Assign tasks that challenge developers without overwhelming them. The best tasks stretch their abilities slightly but remain within their reach. If a task feels insurmountable, developers can become demotivated. Conversely, tasks that are too easy won’t help them grow. Striking the right balance keeps developers engaged and learning.
Assign Defined Problems to Solve
Ownership of defined problems encourages developers to take responsibility for their work. By assigning well-scoped tasks, you allow developers to practice critical thinking, evaluate multiple solutions, and gain a deeper understanding of the business domain.
This approach also helps bridge the gap between technical and business teams, creating more well-rounded engineers.
Enable Focus
Developers need continuous, meaningful time to level up their skills. Task switching and constant interruptions hinder this process. Prioritize end-to-end tasks, reduce unnecessary context-switching, and ensure rapid feedback cycles.
Providing high-quality examples and regular check-ins can keep developers focused and on track.
Help Developers Become 'Go-To' Experts
Encourage each team member to choose a specific area to focus on. Over time, they can become the ‘go-to’ person for that skill or domain within the organization. This not only builds confidence but also improves the overall knowledge-sharing culture of your team.
When developers see a clear path to expertise, they are more likely to invest in their learning journey.
Leverage Peer Code Reviews
Peer code reviews are an excellent way to foster learning within the team. Have junior and mid-level developers review each other’s code before a senior review. This allows them to practice critical thinking, learn from each other, and build confidence in their own code quality.
Peer reviews also distribute knowledge more evenly across the team, reducing reliance on a few senior developers.
Conclusion
Creating an environment designed for structured learning and high-quality examples is the best way to ensure your developers grow quickly and sustainably.
As an engineering leader, your role is crucial in setting the tone for learning. Focus on maintaining code quality, providing clear feedback loops, and fostering ownership within your team. By implementing these strategies, you can accelerate developer growth, improve team performance, and create a culture of continuous improvement.
Call to Action
Take a moment to evaluate your team’s current approach to teaching and learning. Are you providing the right environment for your developers to thrive? Start with one or two strategies from this post and observe the impact on your team’s growth over the next few months.