Death by Interfaces?

Death by Interfaces?

This might be an unpopular opinion, but we might be doing more harm than good with interfaces in object-oriented programming languages. Let me explain ... Read More
Untangle Spaghetti Code with Context Objects

Untangle Spaghetti Code with Context Objects

In this article we'll explore using context objects to address some of the worst symptoms of spaghetti code ... Read More
Monitoring Application Quality with Raygun

Monitoring Application Quality with Raygun

Let's build a .NET Core and Angular single page application and web service, then use Raygun Error Tracking to catch client or server-side defects quickly ... Read More
My Top 5 Ways to Improve Software Quality from 2019

My Top 5 Ways to Improve Software Quality from 2019

A .NET and TypeScript development manager's top 5 practices for improving software quality from 2019, in no particular order ... Read More
Rise of the Reducer

Rise of the Reducer

In recent years I've observed a strong trend towards using reducers in software architectures. This recent rise to prominence offers benefits to software quality worth ... Read More
Technical Debt as Risk

Technical Debt as Risk

Development leadership must partner with the business and manage technical debt as risk in order for it to be fully understood and respected ... Read More
Defining Technical Debt

Defining Technical Debt

In this article we'll define technical debt, its impacts, and causes and highlight some metaphors that are helpful when discussing technical debt ... Read More
God Objects: How to Summon Codethulhu

God Objects: How to Summon Codethulhu

So you've chosen to infect your codebase with God objects and enough complexity to generate hours of job security (AKA "Codethulhu"). Here's how to succeed ... Read More
Agile Git Integration with GitWorkflows

Agile Git Integration with GitWorkflows

In this article we'll explore the use of feature branches based off of GitWorkflow to integrate features and fixes only when they are fully ready ... Read More
Monitoring Quality with Error Tracking

Monitoring Quality with Error Tracking

In this article we'll look at the importance of error tracking solutions, their role in software quality, and how to use them effectively ... Read More
The True Cost of Technical Debt

The True Cost of Technical Debt

In this article we'll take a look at a fictitious piece of technical debt from inception to resolution and examine the true cost of technical ... Read More
Tracking .NET Code Quality with NDepend

Tracking .NET Code Quality with NDepend

Let me introduce you to my go-to code visualization and analysis tool for .NET: NDepend. NDepend lets me see dependencies, issues, and quality over time ... Read More
Less Code == More Quality

Less Code == More Quality

Less is more. We've all heard it, but when it comes to software quality, it's definitely true. Less code means more quality ... Read More
Functional Debt: The Price of "Yes"

Functional Debt: The Price of “Yes”

Functional Debt is the direct result of previous business decisions that causes a degraded ability to address current or future business goals ... Read More
Addressing Tech Debt without Killing Quality

Addressing Tech Debt without Killing Quality

So you’re going to start fixing some of your technical debt? Great! Just remember the one cardinal rule: Don’t break the application. Think about it — when ... Read More
Strategies for Paying Off Technical Debt

Strategies for Paying Off Technical Debt

Technical debt: We all have it and every developer worth their salt wants to pay it down, but how do we actually manage this process? ... Read More
Communicating Tech Debt

Communicating Tech Debt

Many developers feel that product management and executive leadership don’t “get it” when we talk about technical debt. At the same time, if you ask ... Read More
Fun with Feature Flags

Fun with Feature Flags

Feature flags are a simple technique that let you toggle whether a new piece of functionality is available in your software or some aspect of ... Read More
Facades should not have Working Plumbing

Facades should not have Working Plumbing

In this short article we discuss the role of facades in application architecture and some common problems and solutions. A facade is a user-facing entry ... Read More
Making Defects Impossible

Making Defects Impossible

Certainly we can’t eliminate all types of issues, but the types of issues we can strategically address at the design or language level is growing ... Read More
Pay down Tech Debt Plank by Plank

Pay down Tech Debt Plank by Plank

A year ago I learned of the thought experiment “The Ship of Theseus” and, particularly, how it might apply to software development. In a nutshell, ... Read More