I’ve been working on a talk on ways to make unit testing easier. I has not been going well; I’d come up with an approach I liked, do most of the slides for it, come back to it, and be unhappy with what I had written. This happened – and I am not exaggerating –…

Welcome back to You Suck at TDD. Today’s code will show up in the Improvements-Phase-3 branch if you would like to follow along. In our last episode, we concentrated mostly on the Employee fetching and filtering. Things are better, but we still have a problem… Well, actually, we have a number of problems, but we’ll start…

In the last post, I talked about some of the analysis used in lean. Now, let’s see how we can apply the same principles to the software world. I will start by trying to create a value-stream map. But where to start? There are three levels at which we can do the mapping: The entire organization,…

I’ve been spending some time over the past few months exploring the lean side of the house and looking for things I can adapt into the agile side of the house. The most interesting thing I found was the theory of constraints. After spending some time writing this, I realized that I need to split…

(I was recently involved in a discussion about pairing, and I think what I wrote will be of more general interest.) Many teams evaluate pairing from a simple mathematical perspective. Total work done = # of team members * amount of time spent working If you want to increase the amount of total work done, then…

All changes from this post are in the Improvements Phase 2 repo… Commits that start with “R:” are done through Reshaper. I’ll cluster them together this time. R: Start of Phase 2 Last time, I created the EmployeeFilter abstraction and populated it with code from the GetEmployees() method. That was a pretty typical refactoring to…

Welcome to the first post on improving the yucky code. I have a few points I’d like to cover briefly, and then we’ll dive into the code. First off, I’m going to end up refactoring to a specific endpoint, but that is not necessarily the only endpoint or even the best endpoint. Not only are…

It is now time for me to turn the tables on you, to present you with some homework. If you take a trip to my Github account, you will find the following lovingly crafted repo. In it, you will find some yucky code. It’s not terrible code – in fact, it’s pretty average code from my…

I have been spending some time looking at how to apply some of the lessons of lean to software development team, and part of that has been catching up on some reading. One of the classics is “The Goal” by Eliyahu Goldratt. In this book, he introduces his theory of constraints and bottlenecks, which is…

When dealing with many external dependencies, the Port/Adapter/Simulator pattern works great. But what about dependencies that are read-only – such as consuming an information feed from another system – or write-only – such as sending a notification to a user? Can we use P/A/S in those scenarios? The answer is a qualified "yes" – we…