In order to be a successful Software Architect in today's business environment, you must be able to employ generally accepted best practices to complete an efficient, flexible, and appropriate object-oriented design and then communicate that design to developers in a way that ensures the product can be built and delivered in stages and ultimately meets the customer needs. You must fully understand the business environment that has given rise to the need to the software system and how your design will satisfy that need, both now and in the future. Communication, project management, and general people skills are very important characteristics of a successful Software Architect.
Assuming you enjoy working with others and have the soft-skills, what materials can be studied to gain the hard-skills that are needed? Once I master the materials listed below and get a chance to fine-tune their use, then maybe I will be comfortable calling myself a Software Architect.
I mentioned my study plans at a recent meeting of other developers and I was surprised by how eager the other developers were to know exactly what I was studying. So here it is:
- Head First Design Patterns as an easy-to-digest explanation of common design patterns that have been proven to resolve common issues in object-oriented designs.
- Head First Object-Oriented Analysis and Design for a clearer understanding of how to translate designs into properly interacting objects.
- Design Patterns: Elements of Reusable Object-Oriented Software. The original book on software design patterns by the authors known as the Gang of Four. This is a must.
- Refactoring: Improving the Design of Existing Code as a guide for proven rules that improve the quality of existing code without changing its meaning or functionality.
- UML Distilled: A Brief Guide to the Standard Object Modeling Language for a straightforward understanding of the proper use of the UML throughout the software life cycle.
- Writing Effective Use Cases (The Agile Software Development Series) for a targeted focus on writing the best possible Use Cases for requirements specification.
- The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP since I see a lot of job postings listing "a modified verision of RUP" as their methodology.
- Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries for specific instructions on how to code high-quality .Net classes and libraries.
- Enterprise Architect 7.0 Professional as a high-quality affordable tool for preparing UML 2.1 diagrams with a familiar Visual Studio interface. Great tutorial materials on the web site.
- Design Pattern Framework 2.0 as an excellent resource to understanding and implementing design patterns in terms of C# and VB.Net code. As a bonus, it includes the .Net code for the Head First Design Patterns book above since that book shows the examples only in the Java language. Great tutorial materials on the web site.
- Microsoft Enterprise Library as a collection of pre-written libraries that are easily incorporated into your system. Completed and full-tested code is even better than design patterns and can eliminate coding for one or more modules of your system. Enterprise Library includes application blocks for caching, cryptography, data access, exception handling, logging, policy injection, security, and validation.
- .Net Rocks as a view of what is hot and happening in the .Net developer world.
- ARCast as a great overview of the concepts, trends, and people involved in .Net architecture.
Disclaimer: I gathered input from some very smart people including experienced Software Architects when preparing this list. That said, this list is of my own making and does not guarantee results of any kind and comes with no warranty.
Hope that helps!
Okemos, MI USA