Stephan Schmidt

Engineering Cultures of Technical Debt

Some engineering cultures drive tech debt"

Part of my CTO Coaching

I haven’t met a team without technical debt. And while there are some drivers behind technical debt (I wrote about it in “Reasons for Technical Debt”), there are engineering and product development cultures that breed technical debt.

Without changing the culture, all actions you’re taking as CTO will result in failure and technical debt will not go away.

Examples of cultures that breed technical debt:

  • Culture of sloppiness
  • Non professionals
  • Unskilled is ok
  • Give in to pressure
  • Not finishing projects and migrations
  • New tech all the time, jump on every hype train\
  • Lack of Accountability
  • Hero culture
  • No vision

How do these cultures contribute to technical debt?

Culture of sloppiness - People are just sloppy. They don’t care about craftmanship, they don’t write tests, they don’t check edge cases or if their code runs in different browsers. So they create lots of duplicated and bad structured code. For this to change, instill a sense of craftmanship into the team, make them again proud of their work.

Non professionals - Engineers do not think of themselves as professionals, like lawyers or accountants. Accountants know what it means to be a professional. For this to change, engineers need to think of themselves as professionals. As people who do the right thing because it is the professional way of doing things. If they want to be called engineers, they need to act as engineers.

Unskilled is ok - Sometimes everyone is ok with being unskilled. And while being unskilled is ok, staying happily unskilled and not wanting to grow and learn, leads to technical debt. For this to change, create a culture of growth and perspective and skill everyone up.

No vision - There is no technical vision or tech strategy. People don’t know where things are going. People run in circles doing their best but create technical debt instead For this to change, create a tech vision and tech strategy. Show leadership by leading people to the golden future - and the way is through excellent engineering

Give in to pressure - Engineering managers and developers give in to pressure. They know how to do the right thing, they know how long things take, but with some outside pressure, they give in. Often this coincides with channeling pressure through. Engineering managers get pressure and apply that pressure to their direct reports, instead of giving pushback. For this to change, managers need to make judgments when it is the right time to exercise pressure, and when to give pushback, when the pressure is not warranted.

Not finishing projects and migrations - Sometimes organizations start lots of new projects, to show activity. There soon is something more important, everyone switches tracks, and a new project is started. A new migration is started. I see engineering departments with half-implemented features. I see engineering departments where there are half done migrations of databases, half done migrations of frameworks, stuck rewrites, redesigns and relaunches. For this to change, create a culture of finishing what you start. Think hard about what you start, when started, finish the migration or project - even when it is inconvenient and no longer the shiny new thing.

Jump on every hype train - Because they are eager to start new things, engineers jump on every hype train. Sadly, the next new thing is coming. There is always something newer. Always something better. Always something shinier. This leads to a scattered landscape of tech ruins. Every part of the application is written with a different tech stack. There are more frameworks than developers. And lots of technical debt. For this to change, create a culture to appreciate but resist new shiny things. If the new shiny thing really helps, go for it. Otherwise wait for the next thing. You don’t have to ride every wave.

Lack of Accountability - Engineers don’t feel responsible or have a sense of ownership. No one is accountable or feels accountable. This feature adds technical debt? “Im not responsible for that!” For this to change, hold people accountable for what they have committed to and make them responsible for their work and it’s effects. This is a challenge but can be done. Give them authority to change things. When someone asks you “What should I do?” Answer “What would you do?”.

Doesn’t Matter - A culture of apathy. Leave.

Hero culture - The company depends on and values heroes. It’s not about teams or sustainable results, it’s about creating an ongoing crisis and heroes that safe the day. Management loves heroes! This hero culture creates a trail of technical debt. For this to change, focus on teams, team effort, team results. Embrace great people and praise them. But make it clear that software development is a team effort.

I call the right engineering culture automatic management. Engineers do the right thing, without you telling them how to do things. Before fixing technical debt, get rid of the culture that creates it.

More in my Upcoming Book

Amazing CTO Book Cover

Technical Debt

The essential guide

Everyone has technical debt. Eveyone wants to get out of technical debt.

Join CTO Newsletter

Join more than 2700 CTOs and Engineering Managers

More Stuff from Stephan

Other interesting articles for CTOs

Best books for CTOThe CTO BookExperienced CTO CoachCTO CoachingConsulting and Workshops to Save you TimeCTO MentorCTO MentoringCTO NewsletterHow many developers do you need?Postgres for Everything Product Roadmaps for CTOsHow to become a CTO in a company - a career path

Other Articles

Too Many Developers Get Refactoring Wrong

Let New Hires Write A Todo App

Keyboard with Display for Developers - Kwumsy K3

Dear Paul Graham, there is no cookie banner law

The 🪀Yo-Yo Effect of Developer Productivity