Would you believe me if I told you I was doing Learning Hour before I knew it?
I've always found it essential to share our knowledge, build on our predecessors' work, and establish common ground to be effective and improve as a team. This is why, at one point in my career, I came up with the idea of implementing learning sessions inspired by the problems experienced by developers daily. The aim was not only to improve the quality of the code produced but also the quality of life of the team members. Let's face it: working on poorly structured code is never very motivating. At the time, as I was also a developer on the team, I not only had the opportunity to experience these pains myself but also the chance to inspire change and consolidate the learnings from these sessions into our everyday projects. Little did I know that these learning sessions had a name: Learning Hour.
When I met Emily Bache at a training course where she presented the Samman method, I had a feeling of déjà vu. Her way of working with development teams was eerily similar to what I was intuitively doing: an hour of guided activity followed by immersion in the team's day-to-day life. That's how I became familiar with the Technical Coach and Learning Hour.
When I arrived at Nexapp, Learning Hour was one of the first initiatives I submitted to our VP of Engineering. He encouraged me to implement this method and other complementary activities like coding dojos. In this blog post, let's demystify what a Learning Hour is, how it can benefit development teams, and what the future holds for Learning Hour at Nexapp.
What is Learning Hour?
According to Emily Bache's book Technical Agile Coaching with the Samman Method, Learning Hours are short training sessions during which participants practice their programming skills and learn new techniques. During the Learning Hour, the coach uses exercises and dynamic learning techniques to teach the theory and practice of new skills such as test-driven development (TDD), refactoring, and identifying code smells.
Ideally, Learning Hour is combined with ensemble working (e.g. mob programming) in sessions where the whole team collaborates with the coach to apply the same techniques and skills in their everyday codebase.
Why hold a Learning Hour?
The ultimate goal is to improve the way we design software! But according to Emily Bache, the benefits are manifold:
- Learning new skills and improving at your job will make you more productive and happier.
- Small gains in productivity add up and quickly pay off, more than offsetting the time you spend on learning sessions.
- Good technical practices enable the organization to create new functionalities in shorter timescales and with better quality.
- Collaboration and communication between team members is improved, and the environment is psychologically safer.
These are all elements in line with Nexapp's values and mission. What's more, an essential aspect of change management is to take things one step at a time, in small, constantly repeated increments, demonstrating the benefits of the new practices implemented.
People aren't going to start working differently overnight, but we can show methodologies and present the benefits and situations in which they apply to plant seeds in developers' minds.
It's a long-term job: you must keep repeating the same discourse and vision to move toward change. The Learning Hour is the best vehicle for achieving this since it enables me to bring in a continuous stream of learning that leads to much shorter development cycles. And there are so many things to learn and master that dedicating an hour to training pays off!
Learning Hour at Nexapp
At Nexapp, Learning Hour takes place every week in a time slot open to all employees. Sometimes the topics are aimed more at developers, but often everyone can benefit. Employees themselves select the topics according to their interests and areas of expertise. The original Learning Hour formula included 20 minutes of theory, 25 minutes of practical exercises and 15 minutes of retrospection. This approach has evolved to better adapt to the different topics covered. Nowadays, we generally devote a full hour to theory, while encouraging the sharing of ideas and questioning among participants.
This time slot allows me to reach more developers than my immediate team. It gives me a playground to introduce a more global development vision and arouse curiosity and desire to learn while having fun.
Improvement is like a quest for the Grail:
- It's not always easy
- It's like an adventure
- There are many worlds to discover
- You need a guide
- You need to accumulate experience and powers
There are many paths and many ways of learning
At Nexapp, several other continuous learning initiatives complement the Learning Hour. For example, our infra and test guilds step in to dig deeper into a topic and set up a hands-on workshop. Moreover, any team member can host a Lunch & Learn for their colleagues to present a discovery they've made in the preceding days. In the case of Learning Hour, we're looking for a common thread and a vision, and I make sure to align the learning with our objectives.
The general plan is to review the fundamentals (e.g., smells, refactoring, testing, infra fundamentals) and move on to more advanced techniques that will enable us to have a shorter development cycle. For example, TDD, continuous deployment, better work slicing, evolutionary architecture, and "shift left" are all techniques and principles that will help Nexapp deliver quality quickly and maintain this momentum over time despite the complexity.
Although the general plan is well established, I leave room for flexibility to respond to team priority issues while inserting notions of TDD, refactoring and smell recognition into the topics people ask me to cover.
After just a few iterations of the initiative, I already see positive repercussions within the team. Several developers have shared with me that they have implemented Learning Hour learning in their projects. Others have simply come to understand the mistakes they made in the past or the "pains" they felt in their day-to-day work simply by connecting with the best practices suggested by the Learning Hour.
It's normal to keep making mistakes: the aim of Learning Hour isn't to become perfect and rigid. It's about exposing developers to the problems they might experience, giving them a foundation to build on to understand why they should work differently, and then letting them experiment and make mistakes. The aim is to share solutions to avoid making the same mistake twice and to stimulate their critical thinking. In this sense, Learning Hour is already sowing the seeds of continuous improvement.
The future of Learning Hour at Nexapp
As a first step, I'd like to get developers to think more regularly about their actions: why are they doing it? What do they want to achieve? What parameters need to be defined? One of the techniques I recommend to encourage us to ask these questions continually is TDD! Identify the next small increment to deliver, write a test for our hypothesis, make the most straightforward implementation, stop and improve it... Then, start the cycle again. It forces us to slow down to reflect and realign constantly.
By reviewing the basics (e.g. code smells, refactoring, design patterns, test writing), I aim to open up the discussion around practices and start putting together the puzzle pieces towards effective TDD. I expect to spend several more Learning Hour sessions on these topics because to recognize and fix smells, you need to see many of them, read code and discuss them with other developers.
One of the following topics I will cover during the Learning Hour will be less about the developer's work techniques and more about synergy with the business side, designers and quality assurance: how to encourage continuous collaboration instead of working in silos!
Did you know about Learning Hour? Have you implemented similar practices in your teams? I'm curious to hear what you have to say on the subject!
Continuous improvement at Nexapp
The Learning Hour is part of various activities offered to our developers to help them raise the bar for quality in their technological projects. Here are just a few examples:
- Learning Hour | Takes place every week for one hour to consolidate fundamentals and best practices.
- Coding dojo | This is a continuation of the Learning Hour, twice a week, to do more exercises or practice on a concrete case from a current project.
- Guilds | Made up of volunteer members who want to explore a subject in greater depth and share their knowledge with colleagues.
- Lunch & learn | Organized at the request of colleagues to learn more about a technology or tool.
- Show & tell | Each week, we share initiatives underway or completed with the whole company, aiming to highlight best practices, results, and lessons learned.
- Continued learning | Our developers have access to an annual training budget and can, if necessary, update themselves when they arrive on a project.
- Slack channels | Various channels for sharing knowledge, articles, references, books, quotes, etc. We also have a developer cooperation channel.
Would you like to be part of our development team? Visit our career section or contact us for more information!
Les articles en vedette
Technical Coaching: To Better Equip Software Development Teams
Cultivating the Growth Mindset: the key to success in software engineering
Pair And Mob Programming For Psychological Safety
Soyez les premiers au courant des derniers articles publiés
Abonnez-vous à l’infolettre pour ne jamais rater une nouvelle publication de notre blogue et toutes nos nouvelles.