A Discussion of Good Technical Debt with Jon Thornton
Release Date: 12/14/2020
SimpleLeadership Podcast
What are the challenges that accompany being a woman leader in technology? How can you be an ally for women in your workplace? How do you overcome imposter syndrome? These are just a few of the questions Christine Awad—the Director of Engineering at Facebook—so kindly answers in this episode of Simple Leadership.
info_outlineSimpleLeadership Podcast
How do you build an engineering team of A-players? What does a well-rounded high-performing team look like? Why is engineering for impact more important than solving hard problems? In a world where engineers are looking to pad their resume and solve cutting-edge problems, Ashish Aggarwal shares the one thing that is far more important: solving your customer’s problems. In this episode of Simple Leadership, he walks through building high-performing teams, solving customer problems, and the best way to maintain technical excellence. Do not miss this one. Ashish Aggarwal is the Co-Founder...
info_outlineSimpleLeadership Podcast
Jon Thornton worked at some small companies in NYC before he ended up at Squarespace. He’s been able to build a new product and new team—their email marketing product. He launched that and has since been supporting other products. Throughout his career, he’s learned how to manage technical debt. What is the difference between technical debt and good technical debt? What is a framework for using technical debt? Listen to this episode of Simple Leadership for Jon’s advice on managing technical debt. Jon has been solving problems with software for over 20 years and leading...
info_outlineSimpleLeadership Podcast
Being in a management position in any industry can often leave you overwhelmed. Striking a balance between your work and personal life is already difficult. So how does a manager take parental leave? Matt Newkirk—the engineering lead for Etsy’s International Customer Experience initiative—has worked out some of the kinks. I’m the father of three girls. During their birth, I was fully involved in startups and was never able to take parental leave. Not only did I miss out, but as a manager I feel I can’t help my team plan a successful leave because I never experienced it. So in...
info_outlineSimpleLeadership Podcast
If you’re an engineer in a leadership role where you’re dealt with the task of developing teams, the hiring process can be daunting. Do you hire junior engineers that you can shape and mold? Or senior engineers who are experienced, but come with baggage? And how do you throw boot camp graduates into the mix? Johnny Ray Austin joins me to lend his thoughts on the hiring process, including what he looks for in an engineer. Don’t miss it! Johnny is an experienced engineering executive and international public speaker. Johnny claims he got into leadership by sheer luck—but he ended up...
info_outlineSimpleLeadership Podcast
Today’s guest—Emad Georgy—is passionate about technology leadership. He’s a CTO Consultant and the Founder and CTO of Georgy Technology Leadership. Emad has been in the tech industry for over 25 years. His hybrid approach to technology management—focusing on both the practical and cultural elements of leadership—makes Emad a trusted and valued partner helping both domestic startups and global enterprises scale and grow. In this episode of Simple Leadership, we chat about what cultivating leaders looks like. Sometimes, it involves making difficult decisions for your team. You...
info_outlineSimpleLeadership Podcast
Transitioning an engineering leadership position to a work-from-home model can be a challenge. For some engineers, working remotely is the norm. For others, such as those working for Shopify, being forced to work from home because of the Coronavirus is a whole new ballgame. In this episode of Simple Leadership, Farhan Thawar joins me to chat about his transition into working from home and how Shopify has made the process manageable. We talk about the benefits of coding in pairs, whether or not managers should still code, and what he looks for when hiring engineering leaders. Farhan...
info_outlineSimpleLeadership Podcast
If you’re in a leadership position in the engineering industry and have suddenly been thrust into working remotely, it may feel like your world has been turned upside down. In this episode of Simple Leadership, Dana Lawson and I discuss a few tips to help you manage remote teams. You want your team to thrive and be successful during a time of great uncertainty. Dana describes herself as an atypical engineer. She wanted to attend college to be an artist but soon realized the ‘starving artist’ lifestyle wasn’t going to cut it. She took the ASVAB test when she joined the military and...
info_outlineSimpleLeadership Podcast
A management role in software development can be difficult to navigate. You need to keep a high-level perspective on projects while making sure they go smoothly. Eric Elliott, today’s guest on the show, believes that you need to implement coding quality practices such as test-driven development. In this episode, we talk about why software development processes such test-driven development makes an impact and why it’s important to remove bugs. We’ll also talk about how to train developers and keep them happy—and why it’s inherently important not to rush the process. Eric Elliott has...
info_outlineSimpleLeadership Podcast
If you are transitioning into an executive or leadership role in an organization, you can find yourself dealing with incredible loneliness. You also deal with a change in power dynamics, gaps in information, and a lack of support systems. It is difficult to prepare for the change from “getting work done” to being an “influencer”. As a former COO, today’s guest, Suzan Bond, understands the struggle of the transition. She joins me today to share some ways you can combat loneliness and ease the transition. Suzan is an executive coach and organizational strategist who has...
info_outlineJon Thornton worked at some small companies in NYC before he ended up at Squarespace. He’s been able to build a new product and new team—their email marketing product. He launched that and has since been supporting other products. Throughout his career, he’s learned how to manage technical debt. What is the difference between technical debt and good technical debt? What is a framework for using technical debt? Listen to this episode of Simple Leadership for Jon’s advice on managing technical debt.
Jon has been solving problems with software for over 20 years and leading engineering teams for 10. Along the way, he's parked millions of cars, improved textbooks with AI, reduced the price of prescription medication, and sent billions of emails. Currently, he's an engineering director at Squarespace in New York City. Though Jon's day job is mostly meetings and documents, he still gets his coding kicks in by maintaining a mildly popular jQuery plugin in his free time.
Outline of This Episode
- [1:26] Jon’s history in programming
- [4:43] Mistakes Jon made early on
- [6:22] What would he have done differently?
- [7:32] Teamwork isn’t about individual output
- [8:25] Financial debt and technical debt
- [10:53] Why time is currency
- [14:32] Good technical debt is intentional
- [17:14] A framework for using technical debt
- [21:24] Why building trust with your team is important
- [22:37] Jon’s book + podcast recommendations
- [24:54] How to connect with Jon
How technical debt compares to financial debt
The common definition of technical debt is that it’s code that you don’t like and you’ll need to fix or change later. But Jon applies a more narrow definition: It’s work that he expects to have to do in the future. It’s not necessarily code that he doesn’t like.
Jon points out that financial debt is a commonly accepted occurrence. Someone that takes out a mortgage to buy a house and is congratulated. It’s a “responsible” use of debt. You can use technical debt to get value now and then you can pay it down over time. It’s a tool. It allows you to reorder when they value and the payment happens—you just have to use it responsibly.
People want to have perfect code from the moment of conception, but it isn’t always worthwhile from an ROI standpoint. If it doesn’t make more money or provide more value, it can be shelved for later.
How to manage technical debt
When you think about starting a new engineering project, it starts with estimates: “How much is this project going to cost us?” It typically refers to man-hours or engineering week. The cost of the project is how long the team will spend building it. If you’re following the financial debt analogy, you are taking out a tech debt mortgage. You’re borrowing time that will be paid back later. You’re doing it in a way that creates more value now.
The main reason engineers exist is to provide value—to shareholders, your company, and the users of your product. If a manager takes over a team from another company, they’re immediately taking on technical debt or risk that has accumulated. How do you walk through that? How do you evaluate that?
According to Jon, you can talk to people or read commit history to understand how you ended up with the system you have. The next step is to assess the kind of technical debt you’re dealing with. What technical debt is actively accruing interest? Are you spending time on it with bug fixes? Is it growing larger?
There may be an API with design issues. If you keep building on top of it, it will be harder to evolve later. Other kinds of debt may be a scaling issue where performance is okay now, but your database can’t support it later. You have more time to put that technical debt aside and address it later. Assess and establish urgency.
Good technical debt is intentional
During his initial Squarespace project, Jon used an access control list where only certain people had access to certain features. The right way to build it is to have a database table and management UI that makes it easy to add people. But the list didn’t change frequently. It would be easier to have a hard-coded list of IDs in their code-base. To give someone access, they’d make a new commit and deploy it. It was fine for the first two years of the project. They’d instead spend their time on things that immediately impacted the project they were working on. They could go in and make the list more dynamic down the road.
Jon recommends that you do the riskiest parts of your project first. Reordering the way you build things enables you to tackle risk first. With any project, there's usually going to be some problems that you have to solve that are going to make or break the success of that project. You want to figure out those things as soon as possible so you have time to deal with any consequences. Managing a list wasn’t going to make or break their project. But the email editor they were building was going to make or break it, so they spent time on that first.
A framework for using technical debt
Jon’s techniques for managing technical debt (scaffolding, hard-coding, edge cases, etc.) are all based around the idea of accepting that it’s okay to build something twice. That can help you reorder the way in which you build things. Scaffolding is inspired by physical buildings. Sometimes while you’re building one structure, you need to build a temporary structure (scaffolding) to support what you’re building. You’ll eventually take it down and replace it with something more permanent.
They knew they needed the capability to send billions of emails, but they didn’t need that capability to test the email editor that they were building. They needed to build the editor before building the sending capabilities. There was less innovation to solve there. So they built something unscalable that allowed them to test the editor first. They knew they would build the delivery pipeline twice. It had value.
How do you show that technical debt is deliberate? How do you get stakeholders on board with the technical debt? Why is trust so important? Listen to the whole episode for the whole story on technical debt.
Resources & People Mentioned
- BOOK: Nonviolent Communication
- BOOK: Borrow Your Way to Wealth
- BLOG: https://noidea.dog/
- BLOG: https://blog.danielna.com/
Connect with Jon Thornton
Connect With Christian McCarrick and SimpleLeadership
- http://simpleleadership.io/
- Christian on LinkedIn
- Christian on Twitter: @CMcCarrick
Subscribe to SIMPLELEADERHIP on
Apple Podcasts, Google Podcasts, Spotify, Player FM, TuneIn, iHeart Radio