AgileByExample: Software Craftsmanship

AgileByExample: Software Craftsmanship After over ten years since the Agile summit, software projects are still failing and developers are still behaving and being treated as factory workers. The software development industry is still very amateur when compared to other professions. How can we change this?...


Test Deafness

A few months ago I was talking to a musician friend of mine. He is also Brazilian, same age as me, and moved to the UK on the same year I did. As we were talking about music, I mentioned I like punk rock. He...


My birthday wish list

Today is my birthday. Yay! And since today is all about me, I will choose what I want as a present. As a developer, here's what I want: I want developers to be empowered to do whatever they need to do to satisfy the real...


4 Rules of Simple Design

4 Rules of Simple Design Quoting @jbrains, “A design is simple to the extent that it: Passes its tests Minimizes duplication Maximizes clarity Has fewer elements" Object-oriented principles can only get you so far in simplifying your design. Starting with a clean yet completely imperative...


Functional Programming is cool, but do you know OO?

Functional Programming is cool, but do you know OO? Functional programming is becoming more and more popular, and for good reasons, but now a big number of developers are bashing Object Oriented Programming. However, how much do we really know about Object Oriented Programming? Inheritance,...


Project Documentation

Our project has a number of places where we keep documentation. To name but a few we have a Wiki, Sharepoint Site, Jira etc. When I want to know something that is specific to my project the first place I look is my e-mail archive...


Spring Integration based Dispatcher-Worker with Worker Queues

In the back-office world the central concept in most of the systems is one of a Trade. A Trade has many events (e.g. Inception, Amend, Novation, Termination). Generally events from different trades can be processed in parallel because they have no interdependencies, however, events from...


Screencast: Testing and Refactoring Legacy Code

In this screencast I take a small piece of legacy Java code that contains the most common problems found in much larger legacy code bases. The objective is to first write tests to understand what the code does and then refactor it to make it...


Testing and Refactoring Legacy Code

Testing and Refactoring Legacy Code In this video, we take a piece of crappy Java code with no tests. Our objective is to write tests for it and then refactor to make it better. The code has the most common problems that much larger legacy...


The Wrong Notion of Time

No one wakes up in the morning and say "Today I'm gonna screw up. Today I'm gonna piss my boss and all my team mates off writing the worst code I could possibly write". Well, there are always exceptions but normally no one does that....


Latest Tweets