Cloud is ephemeral

The Cloud is just someone else’s servers, or a portion thereof. Use the cloud because you want to scale quickly, only pay for what you use, and put someone else, with a global team, on the hook for recovering from outages. You’d also like a safety net, somewhere out there with the data you cannot … More Cloud is ephemeral

Killing legacy code

Michael C. Feathers defines legacy code as code without tests. I find it’s also likely, as a consequence, to be heavily coupled, with deep tendrils interconnecting multiple components. Indeed, many of the patterns in his Working Effectively With Legacy Code are about how to sever those tendrils safely in order to test the components individually. … More Killing legacy code

How to grok a new domain

One of the under appreciated aspects of software development is the number of different domains many of us work in over our careers, especially those working in consultancy. Software, generally, is straightforward, especially for the majority writing text boxes over databases. Not necessarily easy, but if you’re able to understand logical thought, and decomposition, picking … More How to grok a new domain

Usable APIs follow-up

Following the Usable APIs guided conversation at CodeCraftConf, I wanted to capture some of the thoughts that came out. Starting an API (as a user or a developer) Does the API documentation include examples of usage (i.e. have they thought about the client) How mature is the API? How well maintained is it? How long … More Usable APIs follow-up

Event Horizon : When sharpening the code means missing bug zero.

A great programmer sees software as a craft, honing a perfect solution from a sea of binary logic. Good software is beautiful outside and in, and even on a large scale is simple enough that there are no obvious bugs. They produce software that is precise and clean down to the last detail, continually improving … More Event Horizon : When sharpening the code means missing bug zero.