I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation.
- Fred Brooks - No Silver Bullet
Now that essay is in what I think of as the entrance exam to a job in software, if you haven't read it you really shouldn't be working in computing.
I thought it was worth bringing up again as there have been some bits recently around SOA v BPM which have been misunderstood as me bashing BPM. This isn't the case at all, what I'm saying is that you need to think first before implementing BPM and that SOA represents the best way to create the conceptual construct for BPM, and that BPM is about the labour of representing that construct.
The key here is that the important piece is the thought and planning of that initial piece, not the implementation of the ideas. It is much more valuable and powerful to have the correct conceptual framework before you start on the implementation.
This is why I say that BPM screws up SOA because BPM does not create a conceptual framework, it creates an implementation approach which is a set of steps linked together. There are people who practice true Business Process engineering who create the conceptual framework for process, and to me that looks much like the Business Service approach I try and do in that it considers the parts of the business and their boundaries before worrying about any simple issue of steps.
Hell don't stop at Fred though, Adam Smith apparently has some good ideas as well.
"A journey of a thousand miles begins with a single step" is another famous saying, of course its not actually true, the first thing to work out is exactly where you are going and how to get there otherwise you could spend 40 years just wandering across a pretty small desert.
SOA is about thought, and thought makes better action.
Addition: It appears to be a bigger meme today than normal, someone else is bigging up the book