You Want IT When?

Practical methods for successful software management.
Subscribe

Good Design is Important

August 25, 2008 By: Bill Miller Category: Design No Comments →

I just stumbled upon a blog posting by Chad Myers titled “Good Design is not Subjective.”  It’s hard for me to believe, but apparently this is a controversial subject in the software community today.   The thrust of his position is that a good design is characterised by its ability to easily maintain and enhance while a bad design is characterised by its difficulty to maintain and enhance.  A bad design exhibits characteristics of rigidity, fragility, and immobility.  It’s an interesting article, and it is reminiscent of many of the themes advocated on this blog.  A good design is the essence of agility.   A good developer knows it when he sees it.  Read the article.  I’m sure you’ll like it.  The comment thread is interesting as well.

Don’t Code Yourself into a Corner

August 05, 2008 By: Bill Miller Category: Analysis, Design 2 Comments →

freecell

I enjoy playing FreeCell.  It’s a form of stress release for me, sort of like smoking is to some.  Whenever I need a quick break or I’m looking to take my mind off of something, I’ll often play a game of FreeCell.  

FreeCell is a puzzle, requiring analysis and strategy to win.  They say every game is winnable, and I believe that it’s likely to be true.   Whenever I lose a game and I’m determined to win, I eventually win after repeated retries of the same game.

Recently, when playing FreeCell to take my mind off an essay I was writing, a thought occurred to me: FreeCell illustrates the value of upfront analysis and design.  On a number of essays on yuwantitwhen.com, I’ve advocated that doing proper upfront analysis and design on our software projects is the best way to secure success for our projects and to shorten schedules.  Similarly, in FreeCell I’ve won more games on the first try when I devoted more time to upfront analysis and developing a strategy.

(more…)

Simple by Design

April 14, 2008 By: Bill Miller Category: Design 8 Comments →

Achieving Agile goals of delivering faster and responding to change quickly is best achieved by designing an architecture that leverages those goals, I reasoned in an essay titled “Agile Isn’t a Process“.  Being agile is about leveraging the entire organization and business partners to deliver solutions to your customers. Agility is best achieved when solutions require less IT involvement, not more. 

While having a good development process is important and necessary, the Agile process is not well suited to developing agile architectures; an emergent, iterative approach does not offer much when the requirements for solving the problem require an investment in up-front analysis and design. Some would call the investment big, but I would call it proper.  In this essay, I’d like to offer a real world example to support that original thesis.

(more…)