Learning Hours: Reduce Crippling Technical Debt While Having Fun
- 5 minutes read - 1023 wordsWhat’s a technical coach?
Two years ago, I attended an open space session at an online conference called MenderCon. The session was hosted by a technical coach who was offering to help people improve their tests.
I had heard of a technical coach before, but this time it really stood out to me. The experience I had with him changed my career trajectory completely.
A technical coach guides teams toward technical excellence which helps them reach their full potential.
“Continuous attention to technical excellence and good design enhances agility”
The 9th principle of the Agile Manifesto
Some of these technical practices are:
- refactoring
- test driven development (TDD)
- continuous integration and continuous delivery (CI/CD)
- clean code
- evolutionary design
- pairing/mobbing
From Average to High-Performing
Over time, I came to learn techniques like Samman Coaching, ensemble working, and learning hours. I brought this newfound knowledge to my team, whom at the time, was struggling to pair program and apply TDD to their codebase.
Once a week, our team gathered for a structured session called a Learning Hour to learn and practice new programming habits together. After six months, we were deploying frequently with almost no defects, working faster, delivering high-quality software on schedule, and making our customers happy.
In this post, we will explore how learning hours and deliberate practice can transform the modern software agile team.
Software Developers Don’t Practice
Being a software developer requires lifelong learning. Our industry evolves quickly with new tools, libraries, and programming languages emerging daily. But where should developers focus their learning efforts?
I’ve given up chasing the new shiny toy and have focused my attention on learning the topics in the software industry that stand the test of time.
But when do developers actually practice and deeply learn programming concepts that improve the quality of their work and make their tasks easier?
How other industries approach practice?
Professional athletes practice almost every day. They repeat drills until the motions become automatic. They study film so they understand their opponents inside and out. They also get constant feedback from various coaches that help them level up their skills.
Naval pilots dedicate extensive time to study and practice. Even after completing their intense 2-year training, they must continue flying and testing various aircraft to maintain proficiency. They drill emergency situations and receive real-time feedback from expert-level pilots sitting right next to them.
“We don’t rise to the level of our expectations, we fall to the level of our training.”
Both of these fields utilize deliberate practice. Deliberate practice is a focused and structured type of practice aimed at improvement. This is the type of practice utilized in Learning Hours.
Tackling Technical Debt with Learning Hours
A Learning Hour is a designated period during which a team of developers focuses on acquiring new knowledge, understanding concepts, and collectively practicing skills to enhance their capabilities and effectiveness.
You can browse the Samman Coaching Learning Hours or craft your own.
4C Learning Model
Learning Hours are structured using the 4C Learning Model from Training from the Back of the Room by Sharon Bowman. They are designed to last about an hour. It’s crucial to avoid overwhelming content and concentrate on mastering one micro skill at a time.
Let’s break down one of the learning hours called Vocabulary for Refactoring. This focuses on learning about the refactoring: extract method.
Learning Goals
The session begins by stating the learning goals for the hour. This provides a sense of direction, alignment, and a measurement of progress.
Example: Vocabulary for Refactoring
- Remember the name of the refactoring “Extract Function” aka “Extract Method”
- Identify a situation when you can successfully apply “Extract Function” or “Extract Method”
Connect (5-10 min)
In the Connect part, the group discusses what they already know about the topic. This helps get everyone ready to learn and lets the coach determine what areas to focus more time on during the session.
Example: Names of Refactorings
Have people note down names of refactorings that they know already. For example, suggest they already know “Rename variable”.
Concept (15-20 min)
In the Concept part, the coach introduces the main idea. They explain it briefly using stories, visuals, or examples. The Samman Coaching learning hours provide facilitators with everything they need to lead a session effectively.
For our example there are several steps:
- coach explains the definition of refactoring
- group examines code to identify areas for refactoring
- discussion on common code issues or refactorings
- coach demonstrates how to extract a function from a lengthy method.
Concrete (20-30 min)
In the Concrete part, the group practices the concept together. They often do coding exercises in pairs or as an ensemble to achieve the session’s goal.
Example: Do refactoring
Have them do what you just showed them. If they have time, they can carry on and refactor away more code smells.
Conclusion (5-10 min)
In the Conclusion part, learners take a moment to reflect on what they’ve learned and done during the session. This reflection helps reinforce the ideas discussed, making them more memorable and actionable.
Example: Define Refactoring
How would you define ‘refactoring’? Write a definition on a sticky note and take it with you to put next to your screen.
Continuous Improvement for Agile Teams
I’ve found that Learning Hours are often the missing ingredient for teams striving to produce high-quality software. These dedicated sessions provide a structured time and space for practicing technical skills, resulting in more maintainable software. Additionally, they have a positive impact on team morale, as participants find these activities enjoyable and engaging.
Here’s what some participants have shared about their experience with Learning Hours I’ve facilitated:
How often should Learning Hours occur?
On my teams, we have one 2-hour learning hour weekly. That’s what works best for us! The more you can meet regularly the better. If you can manage to do a learning hour daily this will yield the most positive results.
Introduce Learning Hours to your team today!
Starting Learning Hours is simple and doesn’t require much time, typically just 30-60 minutes. However, if you’re unsure where to begin, I recommend exploring Guided Learning Hours by Emily Bache, a respected technical coach.