Tag: Software Engineering

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 we get to take on technical debt the business paying an opportunity cost for us to refactor code instead of making new features or even […]

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 developers about factors vital to the long-term success of a project, paying down technical debt is high on the list. So, how can we communicate […]

Learning to Succeed Through 96 Failures

I have no idea how many different hobbyist software projects I’ve started and abandoned over the course of my life. Let’s just take an average guess and say I’ve worked on 3 side projects each year since 1987 when I started programming for fun. That’d put the number at 96 […]

Discriminated Unions in C# using OneOf

Ever wish you could act on different types of variables — effectively switching by object type and taking different action depending on which class is present? Discriminated Unions from functional programming languages offer an answer to this. In this article I explore the good and bad of Discriminated Unions in C# and […]

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 how it behaves. In this article, I’ll discuss why this isn’t as crazy of an idea as it sounds, how you can implement a simple […]

Debugging Slide Decks

Ever have a presentation get off on the wrong foot or an intended point completely miss the mark? I sure have. Let’s backtrack a few months and look at how I failed and 6 steps I now follow to keep getting better. I was giving a monthly training presentation to […]

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 point holding many internal components Like fake buildings on a movie set, facades in software are a nice exterior representation of something complex. In terms […]

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, the Ship of Theseus refers to an old wooden sailing ship sailed by Theseus. Over the course of its voyage, every piece of the ship […]

Code Review and Your Team

Let’s say you’re on a small software development team — either within a department or in a smaller organization. You may or may not be doing code reviews, and you may or may not think they’re important (hint: they are). As a software engineer and software engineering manager, I think that code […]