Curiosity is at the core of Foci’s culture. Our superpower is that our team is constantly learning and becoming stronger software engineers, product leaders, designers, platform architects, and executives. Training is the thing that we do and high quality software is the thing that we produce.
The first thing we did when we created Foci was starting up an internal R&D project for the purpose of training and learning. We did this on instinct and over the years have learned some important lessons on why it works so well and how we can keep improving the way our folks learn.
Team-based Learning is Proven
Learning as a team is not a new concept. There’s a wealth of research from the education sector that Team-based Learning is highly effective and institutions all over the world have been trying to incorporate more and more of it into their curriculums. Respected universities like Yale and Harvard have some wonderful resources on the concept. We’ve certainly seen this in practice, whereby individuals on a team will not just learn technical skills, but also each others’ approaches to problem solving and other skills required to work together—you don’t just learn a new proficiency, you become a better problem solver.
Solving Real Problems
Building products to solve real-world needs is a much more effective training strategy than working through pre-canned labs or self-guided exercises. The challenge with most labs and exercises is that the problems they present are fictional and individual-based, which doesn’t create any emotional response in the person doing the learning—you don’t really care about the lab or the exercise, and, therefore, you’re not really committed to solving it beyond what’s necessary to progress to the next step.
Real problems drive real emotional investment in finding the solution—you get excited about creating a solution that will make someone’s life better or at least a little bit easier. That emotional commitment ensures that the experience of solving the problem (and the training received to get there) is deeply imprinted in your memory.
Reinforcing Team Dynamics
We at Foci see building high quality software as a human challenge rather than a technical one. Poor software delivery can typically be traced to poor team dynamics (e.g., poor leadership, unclear communications, personality issues, expectation setting, etc.) rather than technical issues. When we learn as a team, we are forced to address and develop all the behavioral aspects of teamwork and incorporate them into our learning.
There are many things that are critical to the success of a highly efficient team, but cannot be learned in an individual setting. For example:
- Understanding each others’ strengths and weaknesses
- Communicating expectations
- Providing good and respectful feedback
- Learning and respecting each others’ social styles
- Constructively resolving differences in opinion.
Integrating Teaching Opportunities
Delivering presentations is an integral part of our formal schooling. Learning something and then teaching it to others in our own words forces us to synthesize and internalize the knowledge. It reinforces learning and commits it to our long-term memory. The wonderful thing about learning in a team is that everyone learns differently and at a different pace. This presents opportunities for individuals who are more advanced in one concept or skill to help their teammates by teaching it back. The constant sharing of knowledge doesn’t have to be in the form of presentations, but will happen naturally during collaboration activities such as code reviews, joint design sessions, testing feedback, pair programming, and retros.
High performing software organizations must constantly adapt to new technologies and new ways of doing things. This can only happen if the people in those organizations are constantly learning. If you want to build a team that is ever evolving and getting better at what they do, then you should have them learn as a team as well.