Navan Tech Blog
What Dev Productivity Teams and Transport Planners Have in Common

What Dev Productivity Teams and Transport Planners Have in Common

Chris Cholette

15 Sep 2022
4 minute read
What Dev Productivity Teams and Transport Planners Have in Common
Both optimize shared public infrastructure and strive to make users’ journey from A to B frictionless and enjoyable.

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:

  • Safety: Transportation options are safe before, during, and after each trip.
  • Efficiency: The system has sufficient capacity (infrastructure, fleet, staff) to maintain good service, even at peak times.
  • Convenience: The system is predictable; transportation options arrive, run, and depart on time, and there is clear communication when delays occur.
  • Affordability: The cost of the system is onerous to neither government nor passengers.
  • Availability: Everyone within the service area can access a reasonable transportation option, which is easy to find, understand, and use.

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:

  • Safety: Guardrails prevent developers’ changes from breaking critical parts of the code.
  • Efficiency: The system flexes to accommodate “rush hour” periods, when many people submit changes at once.
  • Convenience: The system is predictable; a reliable production timeline means developers know when their changes will go live.
  • Affordability: The system is “low cost” across the board — easy to use, easy for new hires to pick up, and easy to manage with a small and nimble team.
  • Availability: When a developer wants to do something different than 99% of others, there is almost always an existing solution that can easily be adapted to fit their requirement.

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:

1. Underserved population

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.

2. Infrequent processes

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.

3. Overemphasizing metrics

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.

4. Evolving Expectations

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.

5. Communication

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.

6. Inflexibility/Hubris

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.

Return to blog

More content you might like