Arnon Rotem-Gal-Oz's Cirrus Minor
"Making IT work" - Musings of a Holistict Architect
Navigation for Arnon Rotem-Gal-Oz's Cirrus Minor - The .NET/Java architect training program
Content
Sidebar
Footer
September 29, 2007
@ 01:09 AM
Comments [0]
The .NET/Java architect training program
A side effect of my decision
not to become an independent consultant at this time
means that I have to shelve some of the projects I was considering. One of these projects was to create a training program for software architects which I was discussing with a couple of training centers here in Israel.
Since It seems I am not going to promote it, I thought I'd share what I think a training program for .NET/Java architects should look like in the hope that someone would find it useful and do promote it (or parts of it)
Soft Skills
The way I see it architects needs a bunch of soft skills to be able to perform their roles.
Here is the list
I identified in the past
(by the way, I began a series of posts on each of these skills and never got to finish it - maybe it is time that I will :) )
Leadership. Influencing others to accomplish tasks and following your guidance
System thinking. Understand decisions and constrains in the
wide scope pertaining to whole of the solution at hand. This includes
the ability to abstract problems.
Strategic thinking. Understanding decisions and constrains and their alighments to the overall business of the company.
Organizational politics. Understand the environment you operate in and how it influences you.
Communications. Making sure you get your point across.
Human relations. Understand the "people" aspects or human
factors and dynamics. This includes things like negotiation, pragmatism
etc
I am not sure if you can teach all of them, but few courses that can help (in my opinion) include:
Negotiation/Persuation - Anything based on "
Getting to yes
","
Getting past no
" and "
The power of a positive no
" should be fine.
Presentation Skills - While getting the architecture and technology right is what matters, if you can't explain it to the different stakeholders you're toast.
Strategic Planning - This has to do with the vision thing I expect architects to manifest. Note that having a vision should not be confused with future-proofing a solution. future-proof means excess work not needed. Having a vision is knowing where you want to end - it can still be perfectly valid to completely re-write your applications along the way
Project Management
While the architect is not the project manager (mostly anyway), I think understanding the constraints coming from the project management point of view is very important. Since most environments call for a mix of agile and formal disciplines (hey, you've got to be pragmatic). I would train architect both in SCRUM and RUP (or some other formal methodology)
Also while not all environments needs this I would give an 2 days overview of important standards. The first would be IEEE 1471, which defines a standard for documenting software architectures. I would also teach ISO 90003 and CMMI.
It should be noted that the ISO 90003 is much better than the previous incarnation (ISO 9003) as it basically lets you define what you want to do to cover the different areas. The standard just helps you make sure you think about the various parts of project management (requirements, environment etc.). For instance I demonstrated how key areas of 90003 can be mapped to SCRUM to get it approved on my last project.
Languages, Design and Patterns
I would want the .Net/Java architect training program to include at least 2 of the following languages:
Ruby
,
Scala
,
Erlang
,
F#
,
Python
,
Groovy
,
OCaml
The reason for this is that these languages have different design goals than .NET and Java so learning them gives you additional perspectives and broaden your horizons for other ways of thinking (even if you don't use them in your project directly). You might have noticed that there's no .NET or Java training here. The reason for that is that's a prerequisite as far as I am concerned. You should master at least one
Object Oriented principles - hopefully aspiring architects already know this. However, I often see people who discovered some of the principles by themselves but haven't heard about all of them.
I am talking about principles such as Liskov Substitution Principle , Open Closed Principle, Single Responsibility Principle , IoC containers, Don't Repeat Yourself and YAGNI (I summarized my opinion on most of them in
this paper
)
The next step is to cover some design issues like
Domain Driven Design
, UI Design, Database modeling, Database alternatives l(after all the
database is dead
, right? )
Advanced design patterns - When most people hear the term design patterns they think about the GoF patterns. There are however literally hundreds of design patterns. Some of them are even worth learning :) . For instance there are patterns for
concurrent and parallel systems
like Proactor, Reactor Half-sync/Half-Async etc;
Workflow patterns
like Cancelling partial Join, Recovery Action etc;
SOA patterns
(ok, so I am still working on that :) )
Architecture Workshops
Another important part of the training, in my opinion, is to do some workshops and actually try to apply some of the material covered.
Architecture Evaluation - workshop 2-3 days - It is probably worthwhile to delve a little on scenario based evaluation techniques such as LAAAM and ATAM. While I prefer evaluating architecture in code, the scenario based thinking is very valuable for eliciting architectural requirements
Distributed Systems Architectures workshop - I'll expand on this in the next post
Lastly, there are also a few miscellaneous subjects like
architect 101
,
the SPAMMED architecture framework
, Agile architecture,
Behavior Driven Design
, common frameworks (though hopefully this would not be needed ) like Spring/Spring.Net, Hibernate/NHibernate, iBatis etc.
PS
Note that there are a few architect training programs available out there
One is offered by the Software Engineering Institute (SEI)
and includes a 6 courses. SEI program seems to be focuses on formal sides of architecture as it includes courses on documenting software architecture and ATAM (You can see an old presentation I have on ATAM here)
Dana Bredemeyer also offer architect training.
Dana offers several workshops
that cover the software architecture profession.
TOGAF (which is more of an enterprise architecture framework) offers both
a certification and courses
Lastly, IASA is considering creating a software architect program and
has a few courses in development
If you know any others I'd be happy to hear about them
Tags:
.NET
|
Agile
|
Design
|
Everything
|
Java
|
OO
|
Software Architecture
Related posts:
Evolving Architectures – Part I What’s Software Architecture
Keep the BIT – check system liveliness
More on WCF oddities
SOA – There could be only one…
Windows Trick-or-treat Foundation
SOA Patterns presentation on E-VAN (recording)
« Warning ! Technology mapping has implica...
|
Home
|
Architecture vs. Architecture Style vs. ... »
Comments are closed.
Navigation
Home
Papers, Articles & Presentations
SPAMMED Architecture Framework
SOA Patterns
About Me
Featured Presentations & Papers
REST introduction (ppt)
SOA Pattern Presentation (pdf)
Fallacies of Distributed Computing (pdf)
Getting SPAMMED for architecture (pdf)
OO Primer (ppt)
Use Case Methodology for large systems (pdf)
Software Architecture (ppt)
Service Oriented Architecture - Intro (ppt)
What is SOA anyway? (pdf)
(New) SOA Patterns Presentation (pdf)
More...
SOA Patterns Book
Published Patterns
Edge Component (pdf)
Gridable Service (pdf)
Service Firewall (html @ InfoQ)
Saga (pdf)
The Knot Antipattern (pdf)
Blogjecting Watchdog (pdf)
Reservation (pdf)
What I am reading
Subscribe to RSS headline updates from:
Tag Cloud
.NET (80)
A&D2007 (6)
Agile (26)
BI (2)
Cloud Computing (3)
dasBlog (1)
data (6)
Design (26)
ESB (2)
Everything (200)
Functional Languages (1)
General (66)
Google (1)
iPhone (1)
Java (9)
Mobile (3)
Mono (1)
new (4)
OO (15)
PaperLnx (6)
Papers (4)
Programming (1)
Project Management (11)
Q&A (2)
refactoring (1)
Requirements (2)
REST (21)
RIA (4)
ruby (8)
scalability (6)
SCRUM (2)
SOA (103)
SOA Patterns (49)
Software Architecture (197)
SPAMMED Process (33)
TDD (7)
Trends (4)
Trends (9)
WCF (8)
xsights (7)
Archives
January, 2010 (2)
December, 2009 (1)
November, 2009 (3)
October, 2009 (3)
September, 2009 (5)
August, 2009 (3)
July, 2009 (1)
June, 2009 (3)
May, 2009 (4)
April, 2009 (2)
March, 2009 (3)
February, 2009 (3)
January, 2009 (5)
December, 2008 (8)
November, 2008 (6)
October, 2008 (4)
September, 2008 (4)
August, 2008 (8)
July, 2008 (6)
June, 2008 (5)
May, 2008 (4)
April, 2008 (4)
March, 2008 (6)
February, 2008 (3)
January, 2008 (5)
December, 2007 (9)
November, 2007 (6)
October, 2007 (11)
September, 2007 (11)
August, 2007 (10)
July, 2007 (9)
June, 2007 (9)
May, 2007 (9)
April, 2007 (6)
March, 2007 (4)
February, 2007 (2)
January, 2007 (5)
December, 2006 (4)
November, 2006 (3)
October, 2006 (4)
September, 2006 (2)
August, 2006 (4)
July, 2006 (3)
June, 2006 (4)
May, 2006 (10)
April, 2006 (8)
March, 2006 (8)
February, 2006 (6)
January, 2006 (6)
December, 2005 (3)
November, 2005 (5)
October, 2005 (6)
September, 2005 (10)
August, 2005 (5)
July, 2005 (15)
June, 2005 (16)
All dates
All Posts
Contact the Author
Contact Arnon
Affiliations
Admin
Sign In