This post comes out of a discussion I had a while back with some other Thoughtworkers in my home city, Brisbane, and must credit both Vladimir Sneblic and James Webster for bringing this up. Since they are not frequent bloggers, I thought that this little gem was still worthwhile sharing.
Anyone who has ever dealt with software would have heard the term spaghetti code. It’s a great term used to describe software that is difficult to maintain or change because parts of the system are intricately entwined, and a change to one part can adversely affect another. After reflecting on a system that was developed using techniques found more so in agilest development teams such as Test Driven Development (TDD) and dependency injection, they observed that the parts of the system were more loosely coupled and more easily interchangeable, good indicators that it would be a better system to maintain. The code is better described as ravioli code instead of that of its more common pasta brethren.
This analogy has really stuck with me since because of the number of parallels it draws. Take one such example – the reason that ravioli is typically more expensive than spaghetti, even though they are both made from the same fundamental ingredients, is that making good ravioli takes a lot more skill than it does spaghetti. This idea is,of course, not new, and can be taken to extremes (see Wikipedia’s entry) but I know which one is is my favourite.