As Navan’s vice president of site reliability engineering and productivity, it’s my job to create an environment that helps Navan’s engineers do their best work. I sometimes joke that developer productivity is like public transit; everyone has ideas for improving it, but achieving real greatness is tough. And there’s more than a grain of truth in the analogy.
For instance, stellar public transit systems have several common attributes, according to McKinsey:
These same five elements form the bedrock of the system we designed to optimize our developers’ productivity and safely move new features into Navan’s software:
Together, these five elements go a long way to establishing a smooth, reliable system that meets most people’s needs most of the time. But again, achieving real greatness is tough.
For example, Paris has one of the most sophisticated public transit systems in the world — the Metro alone moves 4.2 million people daily with few problems. Yet it is ranked relatively low by riders, who cite issues with cleanliness, crowding, and poor accessibility for people with disabilities. Paris proves that even a system that scores well and compares favorably against other cities on almost every objective measure can still fail to meet every user’s needs.
Similarly, even when developers’ overall experience is good, persistent gaps can ultimately hamper productivity. It’s my team’s job to pre-empt these gaps and to implement creative, proactive solutions.
Here are some potential issues and how we avoid them:
A subset of developers who want to try out a new language or technology feels restricted by the system.
FIX: Keep up with emergent trends in the industry. Make room for developers to experiment and for the system to evolve. Establish processes to integrate new technologies into the pipeline without introducing compliance or security weaknesses.
Systems that are optimized for daily tasks can struggle with tasks that only happen occasionally. (See: Taking public transit to the office vs. traveling to an out-of-town IKEA.)
FIX: Automate infrequent but necessary tasks so people don’t have to relearn how to do them or rely on out-of-date documentation.
DORA-style metrics are a reliable way of assessing a team’s performance, but they don’t paint a full picture. For example, fast build times are irrelevant if the change failure rate is high.
FIX: Learn to recognize when a solution is “good enough.” Focus on the weakest link in the chain and don’t waste time and resources perfecting elements that don’t influence the big picture.
People’s expectations evolve with their experience. That 10-minute monolith build may become old hat next quarter. (See: “Sure, the bus comes every five minutes, but what are you going to do about these uncomfortable seats?”)
FIX: Regularly reassess the pain points and channel efforts there.
Neglecting communication can hurt adoption, compliance, engagement, and satisfaction.
FIX: Train and retrain at every opportunity. Communicate openly and often about the behind-the-scenes work of the productivity team, so users can appreciate the complexity of our task and see that we are dedicated to their success. Solicit qualitative feedback via a “Developer Experience” survey and publish the results.
Even a “perfect” system will fall short for some users, because each of us values different things. Ignoring developers’ requests breeds resentment and can lead them to seek “shadow solutions” that may cause compliance or quality issues.
FIX: Frame feedback as a gift. Recognize each comment or request as an opportunity to build rapport with the developers we serve and to learn something new.
Optimizing developer productivity is a complex challenge that touches many aspects of the development process. Productivity teams must think like transport planners as they pay attention to the challenges outlined above and ensure their solutions work in concert. Ultimately, that’s how we transform a system from a Paris Metro (one that works but is grudgingly used) into a Singapore Mass Rapid Transit — one that is the first choice of developers because it solves the problems they care about.