19 December, 2024

What are Technical Debt and Refactoring?


In this video, I answer two questions: what is technical debt, and what is refactoring (code refactoring)?

This video is safe for viewing in the workplace.

This is learning, so, sit back and enjoy

Technical debt

Technical debt is a concept in software development.

It refers to the future cost of reworking a solution when compromises have been made. Typical compromises are shortcuts to deliver a solution quickly rather than the best or cleanest way.

Technical debt is like a loan you take out when developing a technology solution. When you’re building it, you might make decisions that prioritize speed over perfection. These decisions lead to shortcuts or quick fixes that get the job done for now but might cause problems later on.

Example of Technical Debt

Imagine you build a shed, but you use cheap materials or poor techniques to get it done quickly. Yes, it gets your shed built faster, but down the line, you might face issues like leaks or a poorly fitting door.

As a result, software becomes harder to maintain, update, or expand over time. This can slow down future development because the rushed work needs to be fixed similar to the way the poorly made parts of the shed would need repairs later.

Managing Technical Debt

Managing technical debt is about balancing speed with quality. Sometimes, taking on technical debt is acceptable to get a product to market faster, but if ignored for too long, it can lead to larger issues like bugs, security vulnerabilities, or project delays.

Paying off technical debt means revisiting and improving earlier shortcuts to make the code more efficient and maintainable. This is called refactoring the code.

Refactoring (or Code Refactoring)

Code refactoring is the process of improving the internal structure of existing code without changing its external behavior or functionality. Think of it like reorganizing the contents of your shed: all your tools still work the same way, but the shed becomes tidier, more efficient, and easier to find things in.

In software development, code can become messy or inefficient over time, especially when developers add features quickly or the code is written by multiple engineers. Refactoring helps developers make the code simpler, easier to read, and maintain. For example, they might break up large, complex functions into smaller, more manageable pieces or rename variables to make their purpose clearer.

The Goal of Code Refactoring

The goal of refactoring is not to add new features, but to better-organize the code and:

  • Make it more efficient
  • Help prevent bugs a
  • Make future updates or changes easier

Refactoring is an important part of keeping software healthy and sustainable over time.

Carefully curated video recommendations for you:


What Kit does a Project Manager Need?

I asked Project Managers in a couple of forums what material things you need to have, to do your job as a Project Manager. They responded magnificently. I compiled their answers into a Kit list. I added my own. 

Check out the Kit a Project Manager needs

Note that the links are affiliated.

Learn Still More

For more great Project Management videos, please subscribe to the OnlinePMCourses YouTube channel.

If you want basic Management Courses – free training hosted on YouTube, with 2 new management lessons a week, check out our sister channel, Management Courses.

For more of our Project Management videos in themed collections, join our Free Academy of Project Management.

For more of our videos in themed collections, join our Free Academy of Project Management

Never miss an article or video!

Get notified of every new article or video we publish, when we publish it.

Mike Clayton

About the Author...

Dr Mike Clayton is one of the most successful and in-demand project management trainers in the UK. He is author of 14 best-selling books, including four about project management. He is also a prolific blogger and contributor to ProjectManager.com and Project, the journal of the Association for Project Management. Between 1990 and 2002, Mike was a successful project manager, leading large project teams and delivering complex projects. In 2016, Mike launched OnlinePMCourses.
{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Never miss an article or video!

 Get notified of every new article or video we publish, when we publish it.

>