Things Every Software Architect Should Know
97-things.near-time.net
97-things.near-time.net
As such, this is perhaps useful as a list of advice to software architects (basically senior senior developers, in my experience), but only with a huge disclaimer that you must figure out for yourself which bits to apply in your current circumstances.
Why is that disclaimer always missing from list of best practices, even when those lists (like this one) contain self-contradictory examples?
The key is to avoid slavishly following a rule. You should not shy away from breaking a rule, provided you have good reasons for the violation. First learn what the good rules are (as applicable in majority of cases) and then learn when to break them. The best practices are not supposed to be carried over verbatim into every development project.
Therefore, I personally do not believe in 'software architects'. And this book supports me in this! I went carefully through the list, diving inside some specific topics and it seems that all of them (or overwhelming majority) lie in the field of responsibility of someone who could be described by job title other than architect. "#12 There is no one-size-fits-all solution" -- fine, development issue. "#17 Business Drives" -- fine, management issue. And the the brightest gem of all: "#80 Dont Be a Problem Solver".
I thought this philosophy was proven flawed!
If you're building a web start-up, forget specifications. Write code. There is no way to have the slightest clue what you need to specify anyway. Write something that does something useful and put it in front of some users. Go from there. In different circumstances, of course (e.g. while building the software for a major Stock Exchange), this is the absolute worst thing you can do.
If you're building your start-up, it's almost always too early to think about performance. You need to have some vague awareness of whether it will be possible to optimise your code later and keep it clean and simple so that it remains possible, but ultimately I've found that it pays to optimise at the last minute - i.e. optimise when there are performance problems, not before. On the other hand, going back to the major stock exchange example, performance there is likely to be one of your major challenges, so you need someone on the team who is performance-minded and has built a stock exchange before, so that they know where the bottlenecks will be and can ensure those are avoided.
That difference is due to scale - the architect has to think about the application holistically where a developer needs to think atomically.
According to Amazon (http://www.amazon.com/isbn/dp/059652269X) the book was to be released Feb 13. I put it in my Amz shopping cart so I can let the reviews thereon tell me whether it's at least worth skimming it at Barnes & Noble (all that's available to me locally).
Rule two: Follow the rules.
The challenge is to know which rules to follow and what "works" means.