Jul 8th, 2009
by Andrew Sacamano.
Building software is both an art and a science, as many people have said. One might argue that when building business applications it is better to leave the art behind, and focus on the science. Business software needs to be reliable, scalable, and built on time and budget, after all. And it is true that when the conditions are right, achieving these goals is a science.
Those conditions are:
Continue reading →
Posted in: Skillfulness, Software Is Hard, Software Process.
Jul 2nd, 2009
by Andrew Sacamano.
Lately both Pawel Brodzinski and Martin Fowler have been letting people know that architecture and agile are not incompatible. I wholeheartedly agree, and actually am I a bit surprised at the extent to which people seem to think these two approaches are mutually exclusive – they seem pretty compatible to me. At is root, I think this is a case of fixed mind. The architects get stuck in a mind of designing up front, and the agilists get stuck in the idea of always being flexible.
Continue reading →
Posted in: Architecture, Skillfulness, Software Process, Teams.
Jul 1st, 2009
by Andrew Sacamano.
Last year I posted about some helpful advice I found on JSF performance. Sadly, those slides are no longer available. So I’m putting the details that I remember in this post.
Continue reading →
Posted in: Coding, Java.
Jun 17th, 2009
by Andrew Sacamano.
I just saw Martin Fowler’s little note about the vocabulary of unit testing, and I thought it was so clear and helpful that I had to share it.
Just seeing the words and the definitions listed side by side clarifies several approaches to what is proabably the hardest part of unit testing – keeping your tests from invoking the entire system.
Posted in: Skillfulness, Testing, Worth Reading.
Jun 9th, 2009
by Andrew Sacamano.
Udi Dahan has just fired off a great post about the pitfals of trying to reuse code – that we make big problems for ourselves by trying to re-use domain-specific code into ways it wasn’t designed to be used. Successful re-use comes about when the code being used is generic enough to actually work in more than one context, and has been designed with this re-use in mind.
In other words skillful re-use is not about grabbing at something that looks close to what you need and trying to make it work, but instead deciding if what you’re doing makes sense to re-use, and if so thinking about how others will re-use it.
Posted in: Architecture, Coding, Skillfulness, Software Design, Worth Reading.