Alec Cargin - Big Nerd Ranch Wed, 16 Nov 2022 21:44:27 +0000 en-US hourly 1 https://wordpress.org/?v=6.5.5 Types of Tech Debt https://bignerdranch.com/blog/types-of-tech-debt/ https://bignerdranch.com/blog/types-of-tech-debt/#respond Mon, 26 Jul 2021 15:57:31 +0000 https://bignerdranch.com/?p=7650 There are endless ways for tech debt to escape from its gloomy abyss of jumbled code and enter into your project. So it’s not surprising that there are potentially even more ways that companies and individuals refer to, categorize, and label tech debt. And sorting through these endless definitions and analogies trying to get a […]

The post Types of Tech Debt appeared first on Big Nerd Ranch.

]]>
There are endless ways for tech debt to escape from its gloomy abyss of jumbled code and enter into your project. So it’s not surprising that there are potentially even more ways that companies and individuals refer to, categorize, and label tech debt. And sorting through these endless definitions and analogies trying to get a grasp over what you or your team may be dealing with, and potentially solve it, can get pretty grueling. So we’re here to make that process simpler. 

Breaking Debt Down by Awareness 

What’s the most crucial step in beginning to solve any problem you may face? Maybe you believe it’s learning from an expert. Better yet, you could argue that it’s necessary to jot down all the relevant information. Or you could simply break the issue down into smaller parts, unveiling the root of the issue. These all seem like pretty reasonable approaches, right? Not so fast. 

The first critical step in handling any problem is to recognize the existence of the problem itself, and that will begin to help you understand and solve for the 4 main types of tech debt. 

  • Intentional (or Deliberate) Tech Debt
  • Unintentional Tech Debt
  • Happened-upon Tech Debt
  • Bit Rot

The Good, the Bad, and the Ugly

It’s no different when it comes to solving your tech debt. The first necessary step is identifying your debts, and likewise, the interest to be paid. When it comes to identifying tech debt, we begin with two broad categories: intentional and unintentional. 

Intentional (or Deliberate) Tech Debt 

Up to this point, tech debt has established itself as the problem child within the world of software development. Well it seems tech debt may actually have another trick up its sleeve, because wouldn’t you know, it’s got a good side too. Enter intentional tech debt. 

Often referred to as deliberate debt, intentional debt is incurred based on considered decisions. Typically, this debt is accrued with the understanding that it will allow your app to get to market faster. The important thing to remember is that it’s vital to monitor the debt as it collects and to keep in mind the potential consequences.  

Here are a few important considerations for your team prior to deciding to take on debt.

  • What potential impacts on reliability are there going to be by reaching the market faster? Will this hinder the user experience of the product?
  • Will development be slowed in the future because of this debt? 
  • Will your team have the bandwidth to deal with existing debt in the future?
  • Are all stakeholders aware and okay with the decision to accrue debt?
  • Do you have a plan in place to deliberately track debt?

 Unintentional Tech Debt

Now if there’s intentional debt, then logically there must also be unintentional debt. This debt is not nearly as friendly and often much less in your control. Unintentional tech debt has a few notable forms. 

 Happened-upon Tech Debt 

Happened-upon tech debt is essentially intentional debt’s evil twin. This debt was created in the past but unveils itself in the present. Happened-upon debt is unknown to the development team and usually exists under the umbrella of a few circumstances. 

Maybe you’ve been hired to improve an app, taken on the code of a developer who has left your team, or you’ve brought in outsourced code from a third party. In any of the cases, happened-upon tech debt can then arise in the form of bugs as you try to create features over the suboptimal codebase you inherited or as runtime errors when you attempt to merge your code into these codebases. This debt is dangerous because you can’t account for it while determining the scope of your project. 

You can limit happened-upon debt by writing or merging with repeatable, simple, and readable code. It’s also good practice to include code audits during your discovery process to reduce the likelihood of happened-upon tech debt. Similarly, keep design thinking at the forefront of your development process.  

 Bit By Bit, Little by Little (Bit Rot)

Bit Rot tech debt refers to the progressive devolution of software into extremely complex and hard to manage systems. Through many small changes and lots of hands working on the same code independently, bit rot tech debt can internally hinder the usability of code altogether. Combat bit rot tech debt with frequent refactoring and a deep level of understanding regarding design by all parties prior to coding.  

A cousin to bit rot is lack of skill. Tying into your dev team’s level of understanding, lack of skill tech debt is a reckless and inadvertent form of debt attributed to poor logic and coding practices. 

Let Your Debt Be a Thing of The Past 

Your team’s next steps are crucial. You know tech debt is there, you know its potential, and maybe you even have a plan for handling it in the future. But maybe not. Maybe now you’re concerned if your team will be able to pay off the interest on your tech debt. At Big Nerd Ranch, we can work with you in whatever stage of development necessary to clear you of all debts, technical and design alike. Whether it’s bringing your idea to life through our immense digital product development process, leveling up your team’s skills through corporate training, or working alongside our embedded experts, we’ll make sure tech debt is out of the picture every step of the way. Make sure to reach out to let the Nerds help steer you towards a debt-free path.

The post Types of Tech Debt appeared first on Big Nerd Ranch.

]]>
https://bignerdranch.com/blog/types-of-tech-debt/feed/ 0
What is Tech Debt and How Can You Solve for It? https://bignerdranch.com/blog/what-is-tech-debt-and-how-can-you-solve-for-it/ https://bignerdranch.com/blog/what-is-tech-debt-and-how-can-you-solve-for-it/#respond Wed, 07 Jul 2021 19:52:18 +0000 https://bignerdranch.com/?p=7607 Tech debt (or technical debt) is a concept in software development where there is a build-up of refactoring work necessary in the future because of choices prioritizing quick delivery speed in the short term over ideal code quality.

The post What is Tech Debt and How Can You Solve for It? appeared first on Big Nerd Ranch.

]]>
As much as we hate to admit it, we’ve all had to deal with the ever-increasing laundry pile. You rush through your day, from work to dinner to being just flat out too tired to deal with it. Pretty soon, the pile is a mountain and you need an outfit. 

You have two choices: the quick and easy one where you just grab some of the cleanest clothes you can find and spritz them with some Febreeze or the longer option of actually washing, drying, and folding the entire pile. 

One will save you time but isn’t sustainable for the long run while the other takes longer but sets you up for future success (at least in the sartorial sense). Now, imagine that dirty pile of laundry is your codebase and you’re pretty close to understanding the term technical debt, or tech debt. 

So, what exactly is Tech Debt?

Tech debt (or code debt) refers to the amount of refactoring work you’ll need to do in the future because of the corners that were cut in the name of speed over quality. Don’t confuse the word debt to think it has to do with financial debt or monetary debt. The technical debt metaphor simply means when a workload is created, this debt load is then referred to as tech debt.  

Though tech debt is often accumulated with the best of intentions—think the pressure of meeting a strict deadline—these shortcuts will often create problems in the future and restrain your progress when it comes time to implement new features and enhance functionality.

Tech debt can come about in a number of ways. 

Not all tech debt is created equally and it’s sometimes necessary to accrue some debt to keep projects moving. More often than not, technical debt grows as a result of choices made by the development team such as:

Development without established design

This is considered a “bad up-front definition.” While coding before the design stage is complete will get you started earlier, much of this work will be refactored later to match designs and requirements. That’s why Design Thinking is critical in your development process and can be used to help avoid any tech or design debt.  

Manual testing instead of automated testing 

Tech debt can show its ugly head as countless hours are spent testing your code manually. Combat this with automated testing, instead, which ensures your existing code is functioning properly without having to spend all your time running through every possible case. 

Merging different branches of code that were developed separately 

Parallel development will ultimately require a merger into a single codebase. Every change made in one area will add to the work needed to merge branches. 

Consequences of Tech Debt

Tech debt can plague a business and its goals in a few ways. The first is time. Just like the youngest child of any family, tech debt loves itself some attention. And since all code changes add to the existing debt, the more changes and implementations you make, the more time your devs will have to spend on breaking it down. All this is time that your team could spend on advancing the project. 

Technical debt also preys on businesses financially. Let’s look at an example of a project with more debt than there is time to handle it. At this point, you really only have two options. 

Option one, you get everything running smoothly at a high level, but the extra time you spent handling the debt caused you to miss your deadline. Now you have an upset client or missed your window to launch. 

Option two? Release the code with its persistent bugs and defects and deal with unhappy users, system outages, and a draining of your resources.  

Neither option is fit for good business. But since you’re here, you’re on track to handle your company’s tech debt before you’re ever faced with this decision. 

Unfortunately, the only “real” way to solve for tech debt is to, well, solve for it. Usually a tiresome process with plenty of code refactoring, there’s really no way around existing tech debt other than coding again and doing it better than before.

But, if you’re starting a project, how can you best avoid it, to begin with? 

How to Avoid Tech Debt 

Avoiding or managing technical debt is important for each business. Tech debt does a lot of things to a business, but one thing it doesn’t do is discriminate. Whether you’re a startup eager to reach the market and acquire users or a giant in the industry trying to add new features to old code, tech debt will be looming behind every decision you make.

A company would rarely ever need to completely pay off all tech debt, but you do need a plan in place to prevent it from getting to damaging levels. From avoiding bad code to evaluating code quality to managing technical debt, there are ways to avoid significant technical debt.

Here’s how: 

Evaluate the current scope of your sprints.

Factor in the current debt, if it already exists, and decide if the velocity of each sprint should be pulled back to allow more time to chip away at existing debt, handle new debt, or some combination of the two. Depending on what works best for your team, either set aside some portion of each sprint to handle that sprint’s debt or devote an entire sprint to handling tech debt.

Establish a clear definition of “done” for your work and a baseline for code quality.

When evaluating code quality, several methods can be implemented including peer coding reviews, documentation rules, debugger tools, and automated tests. If you’re interested in improving code quality and could use some help, check out our blogs on How We Make Sure Our Code Meets Our High Standards and Why ‘Good Enough’ Isn’t Good Enough for Our Clients.   

Consider implementing code audits.

At Big Nerd Ranch, we often partner with companies to assist with digital product development. At times, we are expected to enter seamlessly into the flow of an ongoing project, and we can’t let technical debt prevent us from progressing. 

We achieve this seamless transition through code audits, which serve as our “tech debt dogs,” dedicated to sniffing out pre-existing issues. Code audits are a detailed and comprehensive breakdown of source code usually following a three-step process moving from a front-end code review to the backend and finally reviewing the infrastructure. They unveil bugs and bad code while also familiarizing our team with all logic and documentation, saving an estimated 33 hours of work per every hour spent in an audit. 

Technical debt can be harmful to the efficiency of your team and the quality of your product. Like other problems, though, there is always a solution. Start incorporating technical debt into your sprint planning and implementing code audits to get a grip on tech debt before you have to sacrifice any more unnecessary work or money on tech debt throughout your development processes. 

The Nerds Can Squash Your Tech Debt  

Need some help getting ahead of your project’s technical debt? Here at the ranch, we provide detailed code audits, excellent developers, experienced project strategists, and the highest quality code to ensure your project is never hindered by technical debt. We’d love to help you get out in front of your debt as soon as possible. Reach out today and you can kiss your project’s tech debt goodbye.

The post What is Tech Debt and How Can You Solve for It? appeared first on Big Nerd Ranch.

]]>
https://bignerdranch.com/blog/what-is-tech-debt-and-how-can-you-solve-for-it/feed/ 0