The Value of Support Work
On the footsteps of the mythical Colle delle Fenestre, in the Italian alps, a rider, with the support of his team, would put on a masterful performance. He would put on a performance so daring, that the world of cycling would be left in disbelief. Riding on unpaved roads, as the last mounds of snow melt and spring transitions to summer, the rider, Chris Froome, on the verge of losing everything, would push beyond his limits, over a grueling 80 kilometer mountain time-trial, in one of the toughest races in cycling.
This did not happen by accident. The gods of cycling did not show up on this specific day to grant this specific rider super powers, … though that would have been majestic!
Rather, it was the culmination of three factors:
💰 investment in performant gear, equipment and tools for optimal training and racing
👨🔧 maintenance in the form of a tailored nutrition plan, hours of physical therapy and structured recovery protocols after intense training
🙆 support, ranging from the team principal, to the team mechanic to help the rider achieve his objectives
Support work at Heetch
Just as a world-class cyclist relies on his support team to attain peak performance, so do the engineers in our product development teams.
At Heetch, the Developer Care team plays a support role for engineers in our product development teams. We make sure they have the right tools for the job.
Given that each product development team consists of product managers, product designers, and product engineers, and by design, each product development team is capable of handling the full life cycle of a product feature, the Developer Care team supports product development teams by providing a solid technical foundation on which they can build.
- By designing fundamental architecture and libraries.
- By taking ownership of, and solving problems that impact all product development teams.
- By establishing idioms, common patterns and good practices.
- By providing tooling and standards for metrics, monitoring, caching and logging.
By supporting product development teams through a Residency program, where a Developer Care engineer is embedded in a product development team. During the Residency program, the Developer Care engineer becomes the main reference for discussing core engineering projects. Given her strong knowledge of the product development team’s context, she becomes their advocate.
In a recent chat with a colleague on the types of activities pursued in the Residency program, we described the types of work performed in the product development team as:
- investment work: where we pair with engineers to write new functionality, tools and libraries for engineers.
- maintenance work: where we pair with engineers to maintain foundation libraries and tools.
- support work: where we bridge technical gaps such as helping with technology migration, reducing boilerplate code, etc.
Upon reflection, the colleague suggested we capture metrics on the types of activities planned through the Residency program, reasoning that by quantifying how much time is spent on each type of activity, we would ensure that we focused more on investment work, rather than support work.
😢 This suggestion implied that support work is low value.
The goal of this post is to highlight the value of support work and to demonstrate how it aligns with, and in some cases, elevates the value of the investment work that we do.
Investment work, such as writing new tools and libraries has a clear value because it allows engineers to build on top of these tools and libraries by providing a common framework.
Maintenance work, such as taking ownership of the common libraries and tools, allows engineers to focus on building products without having to worry about maintaining, documenting or updating these components. These are essential, unavoidable tasks that can sometimes put a drag on the momentum of the product team.
Support work, such as directly answering questions from engineers about the code we create, or pairing with them to help in problem solving and design, absorbs technical debt from the product development teams.
🔧 When we support engineers, we identify their needs and find ways to fulfill those needs definitively. We achieve this through documentation, libraries, recorded workshops, etc. This support work helps us understand the problems and needs of the product development teams and allows us to reflect on, and anticipate what they might need in the future.
Further, by being proactive on the problems and needs of the product development teams, we foster an opportunity for learning, leading to a win-win for both the engineers in the product development teams and the Developer Care engineer. The engineers gain by seeing how we approach problems, how we use the tools in our toolbox, and importantly, how we work towards a definitive solution by knowing when to change bandages, and when to plan for surgery.
Concurrently, the Developer Care engineer gains insight and understanding about the processes applied by engineers on product teams, within the scope of their work.
This is an enriching experience for engineers on product development teams and the Developer Care engineer as both parties now have a better insight into the problem domain (functional and technical), and the possible solution space, thanks to this shared context. Everyone comes out of the experience stronger.
This is clearly an investment.
The engineers on product development teams are better equipped to address problems that arise during product development, while the Developer Care engineer discovers which technical gaps to bridge so that the product development team can focus on building products.
Support work when done right, drives investment work.
Support work helps identify and anticipate the needs of product development teams. This allows us to invest in new functionality, tools and libraries that meet these needs. We then commit to maintaining these newly invested tools and libraries so that product engineers can channel their focus and energy on building products, rather than bridging technical gaps or reducing technical debt.
🎯 Meeting product objectives on time is like riding a bike uphill. The more momentum you gain, the easier it is to propel yourself further as you overcome the forces of gravity and rolling friction. This is especially true for a startup in a hyper-competitive market.
Support work is noble. Just as there are no cycling gods to bestow superpowers on a rider, there are no tech gods to bestow superpowers on product development teams either.
Rather, support work fosters a positive feedback loop that allows us to go beyond meeting the needs of our product development teams. It’s about giving them the tools and resources they need to reach peak performance. It’s not a miracle and that’s why it works!
Are you an engineer who loves building tools and writing libraries for other engineers? Do you enjoy programming in Go? Then join our Developer Care team at Heetch.