Thursday 26 February 2009

97 Things Every Software Architect Should Know

One of the things that prompted me to start this blog was the inclusion in the book "97 Things Every Software Architect Should Know". Now, this may seem like a shameless plug, but it's not! Reason being, I'm not a "Thought Leader", "Technical Visionary", "Agile Skywalker" or whatever else, I'm pretty much just an ordinary, working software guy. This is the reason that makes this book so different.

Book for sale:

Wiki with original axoims:

The book has been compiled from the open source community after a call was made to submit 97 different axioms offering general advice on real world software architecture. This is not the kind of detail you read in "Architecture For Dummies", it's actual working advice that may dig you out of a hole some day. Of course, none of the contributors get paid (it's open source) but I didn't contribute for financial gain.

For this book, O'Reilly have published it and Richard Monson-Haefel is the editor, these roles are essential to get something into print (and both have done an excellent job)! Asides from that important investment, the book is open source. I'm not sure if it's the first, but it could be the start of an important series of technical books.  I think it's great to see a publication with the kind of deep advice you get from a one on one talk with a real expert. Sometimes it's difficult to gather this information together because it covers such wide ground. I think  a book like this is excellent for those times when you are sitting back at design time/between releases thinking about potential holes in your system. 

Well done to Richard and all the other contributors!

Thursday 5 February 2009

Software factory - good or bad?

The term software factory has been around for a while now. I've heard it used both in a visionary and derogatory sense. I suppose it depends on who you talk to.


So, just to throw it out there, could a software factory actually produce high quality software to spec? Remember a lot of the Lean stuff came from the Toyota Production System, which looks at innovation, minimal waste and high quality.


What kind of comparison can we draw between a traditional software factory and a lean, agile, buzzword spouting coding shop? Both would admit targets of high quality and waste elimination. But is the atmosphere any different in a traditional software factory. A traditional software factory in my mind would be pushing teams through waterfall, have heavy process and leave little room for innovation.


Obviously the lean software shop would be doing XP/Scrum, 40 hour weeks and be a fun place to work! It sounds like both are at opposite ends of the spectrum, but could both describe themselves as software factories?


Maybe a true comparison would be between a Toyota factory and an old-style sweatshop factory. I don't think the term software factory is a derogatory term, but it's an ambiguous term.

So, that leads to the main question of the post - would you like to work in a software factory?

There are a few clarifications to consider before answering:
  1. Is it a Lean factory or a harder, not smarter factory?
  2. Are you the architect or the coder?
  3. Who are you coding for? Yourself, your boss or the customer?

Point 1 is covered. Point 2 is interesting in the sense that it's cool to be dreaming up improvements and architectures for the team to be doing, but is it any fun being a coder in a team where you have no say in the direction? Well, that all depends on how open the architect is. If the architect is pretty open, he/she will listen to the team and involve them in such things. Share the "fun" work of design and improvements.

Point 3 is off the wall. That's personal preference, I suppose. But there are a few coders that lose sight of the fact that this is a job and sometimes you have to use an uncool technology or something that you don't personally like. That's a whole different subject...

So, software factories - good or bad? Like any company, it depends both on the goals and how they are achieved.

the quick intro

Hi there, just a quick hello.
I don't intend to be super regular on this, but I want to have a place to post the odd thought on software. I've been thinking about starting this for a while, but the 97-architects book (http://www.amazon.com/dp/059652269X) has spurred me on.

This may well be the first and last post. We'll see. I've been reading enough of this guff recently, so it'll be interesting to see what kind of garbage I come out with.

BTW, I'm gonna try and stick to software here and cool the ranting. File under boring, nerdy stuff!

G'luck,
Dave.