From time to time I am going to post a few thoughts that come up which are longer than a tweet but shorter than a post.
Software Architecture books
I recently got a question from Jon :
I am wanting to make the leap from senior engineer/team lead to software architect, can you recommend any good books or resources?
Well, my current top 5 books for architects are
- Software system architecture – Nick Rozanski and Eoin Woods.The book I wish I’ve written :) covers view and viewpoints very well
- Software architecture in practice – Len Bass, Rick Kasman and Paul Clements – A good solid introduction to software architecture from the people at SEI
- The art of system archieteting – Mark W. Maier & Eberhardt Rechtin. The best book on using heuristics with software architecture (there’s now a 3rd edition but I haven’t read it)
- Enterprise Integration patterns - Gregor Hohpe & Bobby Woolf – Best architectural patterns catalog.
- Patterns of Enterprise Application Architecture – Martin Fowler et al – 2nd best architectural patterns catalog.
Another good source which is not a book is the IASA content repository carrying papers written by a lot of smart guys and gals (somehow I managed to sneak a paper there as well).
Lastly there are the 10 papers every software architect should read
.NET and innovation
Jeremy Miller posted an interesting post “A train of thoughts: Innovation .NET edition“. I didn’t write any .NET OSS (my bad) so I can’t comment on the OSS side of the post but I can comment on Innovation.
The way I see this innovation grows from pain – something that bothers us. That usually happens at the fringes not at the mainstream (that doesn’t mean that if something is great it won’t become mainstream – but it isn’t born there). This has been the case with Java – where the mainstream was painful J2EE so a lot of new stuff sprang all over the place to fix that. These days there’s still innovation on the JVM but it usually not happening in Java. .Net is very much the same, or even worse, in the sense that it came in after Java so a. its comfort zone was wider and b. it had a lot of Java innovation to copy over (NUnit, NHibernate N..). Obviously other, less mainsteam environments (like Ruby et al) will see more innovation these days.
Bye bye iPhone
I’ve been using an iPhone 3GS for about a year now. I have to say that, for me, the platform was nice, but unusable unless Jailbroken. Even now with iOS4 copied the functionality of many of the jailbroken add-ons I used there are still quite a few reasons to Jailbreak (like Lockinfo, Grooveshark, playing flash video etc.). There’s already a jailbreak for v.4 but I am getting tired of the way Apple handles all this and other aspects of Apples tyranny (e.g. in regards to apps approval).
Apropos innovation mentioned above, I wonder if Apple will ever understand that the jailbreak community is where the iphone platform innovation happens (starting with getting application to the iphone in the first generation…). We can see that is a common pattern for enterprises to see successful or promising innovative things and subsume them. We can see it with Jailbroken features getting into the iOS, we can see it with Twitter cannibalizing their ecosystem (making iphone client, introducing t.co as a url shortener), Microsoft with ASP MVC and (trying to) reinvent ORM etc.
Anyway, I’ve decided to replace my (i)phone with an Android handset (most probably a Samsung Galaxy S), I wonder how that will go :)
Illustration by esc.ape(d)