|New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About| |
Keywords: Title: Software Architect Bootcamp Authors: Raphael Malveau and Thomas J. Mowbray Publisher: Prentice Hall PTR ISBN: 0131412272 Media: Book Verdict: Interesting at times, but occasionally sloppy on the technical side |
Perched atop the software development hierarchy sits the software architect, gazing down with the accumulated wisdom of age and experience at the massed ranks of team leaders, analysts, senior and not-so senior developers down to the lowest junior programmer. Those below this exulted station, but who harbour aspirations of greatness, might be attracted to 'Software Architect Bootcamp'.
On the face of it there is a lot that this book seems to offer. Across eleven chapters it covers several different technologies (including object and component-oriented technology), UML, different approaches to process (including model-driven processes), the differences between software architecture and programming or project management and more. It's a wide scope that touches on most aspects of software development at the macro level.
Unfortunately appearances are deceptive in this case. The material is rarely covered to any great depth, added to which there is a degree of repetition that is unwarranted for text presented at a very high level. While repetition is fine as an aid to consolidating complex information, in this case the information barely touches the surface and repeating it merely irritates the reader.
Also irritating is the military metaphor adopted by the authors. They take the 'bootcamp' idea and run with it. With chapters entitled 'Basic Training', 'Drill School', 'Going To War' and so on, the militaristic tone is at once silly and irksome. However it doesn't come across as a jokey metaphor to organise the book around. Hierarchy and chains of command are clearly very important to the authors' idea of what a software architect is.
Reading this book it's as if the ideas of agile software development, with the egalitarian streak that runs through it, have never arisen. The emphasis is clearly on establishing the role of software architect as the master strategist, the technical leader with the vision and the will to lead the troops into battle. Of course one suspects that the authors view themselves as successful examples of the breed.
This would be fine if the book didn't betray a certain sloppiness of thinking. For example at one point they discuss Java and mention that the JVM compiles the source code, which it can then run. Sorry, but I thought you need a compiler for the source code which the JVM can execute. The same mistake is repeated with .NET, though in this case it's the CLR which compiles and runs the code. It's no great error in the grand scheme of things, but attention to detail and technical excellence are cited as key qualities possessed by the software architect.
The book is also profusely illustrated with diagrams and schematics which very often look impressive but do not actually say very much. They give the impression of a depth that sorely is lacking. The plethora of buzz-words has the same effect.
All of this is a shame as there is such a thing as 'software architecture'. It's not programming, it's not project management, it's not even software design. It sits above all of these. It provides the context and the environment in which design and development take place. It creates a grand vision of how all the pieces in a software portfolio work together. And, with Microsoft launching a new journal directed at software architects, it is clear that this is going to become a key battleground in the platform wars.
Struggling under the verbiage and the diagrams and the stating of the obvious, the authors do have something to say about software architecture. The mistake they make is to attempt to cover architecture and architecting. This is clearly too much of a task for a single volume. If the focus had been less on the technologies and more on the idea of software architecture as a discipline this would have been a much more useful and interesting book. Some of this material is discussed in the book, particularly in the later chapters, and when it is the difference is immediately apparent in that the text is more readable, has more depth and is altogether more interesting to read.