You have 1 article left to read this month before you need to register a free LeadDev.com account.
Estimated reading time: 5 minutes
Rod Garcia, VP of Engineering, Platform at Slack, shares his food for thought on cultivating a team of software engineers.
Pizza dough is incredibly volatile. The smallest variations in temperature, cooking time, or humidity can result in a gooey or burnt crust. But with the right recipe and variables, you get a perfect pie every time.
Software engineering is a lot like cooking, says Garcia. You experiment with recipes, discover different flavors, and learn from trial and error. Then, once you know what’s on the menu, you quickly serve it up – hopefully with delicious results.
It takes the right recipe to support an engineering process from development to production. Engineering leaders should encourage continuous learning about new architectural patterns and techniques to advance teams through every phase of the software development cycle (SDLC).
Through a combination of de-siloing teams, inner-sourcing knowledge, dogfooding tools, and the occasional book club, Garcia is actively encouraging continuous learning within Slack’s super collaborative culture.
Remove silos
Removing silos is the first and foremost ingredient for enabling continuous learning, Garcia says. Seeing where the conversation is happening and getting transparency into who is building what feature is crucial for high-performance engineering teams.
At Slack, de-siloing happens through public Slack channels, which act as a central hub for open conversations across the company. Engineers can freely access discussions, share technical specifications, and collaborate in real-time. This approach improves transparency and makes it easy for teams to see what others are working on, fostering cross-team collaboration.
Particular Slack channels automate the creation and sharing of technical specifications and allow others to comment. The workflow then adds that information to a spreadsheet to track documentation and post a message to the team’s primary working channel, tagging reviewers. This sort of public sharing of specs also means everything is retained and easily searchable, aiding the review process and cutting down on instances of tribal knowledge, says Garcia.
More like this
Share frequently
Developers continually post to these “public” internal channels to share tips and prototypes, or to request feedback in the early phases of developing a new feature. “It’s like testing a recipe,” Garcia says. Someone may say it needs more pepper, but in this context, the right ingredient might be a CI/CD pipeline configuration, deployment optimization tool, or a microservices architecture adjustment.
Sharing frequently and getting feedback early on can help validate new ideas and polish the recipe. These insights can benefit engineering managers, too, says Garcia, providing the information they need to take a step back and envision the entire SDLC. Once the core primitives are in place, it’s that much easier to see the architecture, scalability, and end customer outcomes, he says.
Build cross-functional knowledge
From Caesar salad to potato chips, some of the best recipes arise from happy accidents or sudden inspiration. Similarly, it’s easy to get so lost in the weeds of a hyper-specialized field like software engineering that you forget to improvise.
Garcia encourages leaders to invest in interdisciplinary knowledge in a field they find curious, whether it’s ecology, physics, sociology, or even cooking. This broadens one’s ability to solve challenges with new perspectives. “When you face a challenge in your career, this offers a new opportunity through a lattice of mental models,” he says.
This approach has helped Garcia spot communication gaps and build team morale at work. For instance, he recounts that a long time ago, he was sensing friction with team dynamics in a previous organization. So, they did what every high-stress work environment does — they started a book club.
He credits setting a low bar of only requiring teammates to read two chapters as kickstarting things. After that, the team was hooked and ended up reading ten or so books together, spanning verticals from communications, teamwork, SDLC, leadership, and more. It was a fun experiment at first, but it ignited a real feeling of long-lasting, continuous improvement, he says. “Our brain is not keen to change, but once the wheels start turning, it’s easy.”
Have empathy
“We all want to do our best and have a positive impact,” Garcia says. “Part of continuous learning and continuous improvement is empathy and curiosity.” Part of this is supporting ambitions at the individual contributor level. “See the world through their eyes and understand their career goals,” he says.
Understanding an engineer’s objectives or dream role is a great way to set tailored learning opportunities that help them pick up the skills required to reach their goals. For instance, Garcia has found writing and sharing articles to be a great way to get the wheels turning and understanding new technologies or skills.
Get the flavor right
Just as a recipe is a mix of ingredients, software development is a unique blend of programming languages, design decisions, frameworks, human collaboration, and more. Continuous learning is aimed at supporting this development process, says Garcia, helping teams discover and test different approaches.
But how can engineering leaders measure the results of active learning? What signs should they look for? Garcia recommends following signals around how features are performing, as well as attributes like overall quality, the length of development timelines, and the degree of collaboration taking place. Ideally, the growth of the organization and business execution should be positively impacted as well. “Continuous learning is difficult to put a metric to, but is a key point of the flywheel.”
Experiment and execute
Continuous learning isn’t just about career development. It’s about exploring new techniques and patterns to evolve the engineering process itself. Whether experimenting with new architectural frameworks or testing emerging tools, it’s about keeping an open mind and remaining in sync with industry innovations.
Much of this boils down to providing developers with the tools they need to experiment and grow their skills, and discovering the right recipe for production. But once the experimenting is out of the way, it’s time to serve.
Where development time has much room for variation, production time shouldn’t vary, says Garcia. With the recipe in place, it should remain consistent.
Just like baking the perfect pie, continuous learning is all about finding that recipe and executing it time and time again.