Software craftsmanship is the movement that saved me from becoming a developer angry at managers, customers and colleagues. It gave me a direction and it helped me learn much more than I ever expected.
Software craftsmanship is a complex phenomenon, mixing social learning (communities), technical practices, the idea of continuous learning and improvement as a professional (either alone or with the help of others) and the attitude towards managers, customers and colleagues. It’s under development, and will probably continue to be for many years.

I was part of the movement very early and I have some strong opinions about it that I try to document here.

A Programmer Story


Last couple of weeks, a few things happened that made me think. First, I started building a prototype for a Java application in Grails using Eclipse. Second, I wrote some small tools for Mozaic Works in python using Eclipse or vim. Third, I am involved in a startup that uses PHP to develop a great game. Fourth, I had my first TDD in C++ workshop in Stockholm. And, not to forget, my laptop runs...

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...

How I Deal with “The New Technology” syndrom


Did this situation ever happen to you? Customer / Product Owner / Manager / Fellow Developer comes to you with an article about “The New Best Thing” that “Solves All Problems that You Never Knew You Had” and praises that technology until you are forced to take it into account for the current or future projects. I found in such situations that the praised technology is...

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... 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).

Read My Book “Coderetreat Hosting And Facilitating”

Learn how to facilitate and host a coderetreat from two of the most experienced coderetreat facilitators.