I learned a lot about software design in my 15 years of software development. Communicating what I learned is more difficult than I expected. I try to explain things here.

I love Legacy Code!


This is how I started my Wildcard Talk at XP Days Hamburg 2012. It was really fun doing the kata on legacy code techniques in front of a great audience, and many asked me if I wrote about these techniques somewhere. Well, I just had! (If you just want to see the video, scroll down, I just added it).

So, let’s start with the basics. What is legacy code?

Refactoring Keeps Functionality Intact


The development team gathers to find a solution to cut technical debt. “We cannot finish this feature in time. We need to change too much code to do it”. Joe, the technical lead, was always direct and honest. “What would help?” Bill, the manager, was not happy, but he trusts Joe. If he told him that’s a big problem, he’s certainly right. “We need to...

Don’t let your methods look like this!


I drew this picture with Corey Haines at the Krakow April 2011 Code Retreat. I started with the overall silhouette of the method, and Corey added the eye and the comment. In the end, I think we got an excellent motivational poster. So, developers, don’t let your methods look like this! The right bottom corner is about another thing you should remember: at least know the name of your pair...

Does TDD Really Work?


Since TDD gained exposure in the industry, lots of people ask: Does TDD really work? This is a perfectly valid question and many TDD-ers I know tend to avoid it, probably because they don’t know or because they fear the answer. TDD is wonderful at personal level; it makes you feel very good about yourself because of the continuous reward system that’s ingrained in the practice...

Unit Testing, Automatic Testing, TDD – Pros and Cons


I had a lot of recurrent conversations over why we should use automatic testing, unit testing or TDD. Through these conversations, I’ve heard a lot of arguments pro and con to these techniques, so I decided to summarize them. To be honest, I am very passionate about TDD. I believe this technique is a must know for every developer who’s serious about his or her craft. Despite my... Reflections on design, craft and software

A new home for merging ideas about design

It is my strong belief that software design can learn a lot from other design disciplines. I wrote blog posts, a book and did talks on this topic, and it was time to group them all together. These ideas have now a new home: My plan is to add more blog posts there, and to involve other people doing work in this area.

Read My Book “Usable Software Design”

How UX techniques can be applied to software design to develop software better (given that the developer is the user of software design).