I'm now a *Certified* Software Architect!


Early this spring I was looking for suitable classes to further my knowledge in systems architecture when a colleague recommended the Sundblad & Sundblad's Architect program (their material is in English although their page is in Swedish; classroom days are also in Swedish at present).

Having a background as a Developer, taking on responsibilities as a Lead Developer and then Technical Systems Architect (or "technical designer"), I found the program's first 5 weeks to be both interesting and digestible. During these weeks, I got introduced to the state of software development, its relation to business expectations and the misalignment between the two. The course then moved on to explain various Agile approaches, highlighting that Agile projects tend to deliver better results than their waterfall counterparts, although there is still room for improvement. Next up, was requirements processing, starting off with a detailed discussion of why we need requirements, that requirements should be based on business value and how to formulate different forms of requirements - using both use-cases and user stories/features/epics, identifying various kinds of actors and looking at use-cases from a business perspective. How to prioritize between different business requirements and how to extract the often-elusive non-functional requirements were next, giving tips on how to efficiently use UI mock-ups to reason about business requirements. How do we build up an architecture while adhering to agile principles? What kind of architectures have proven useful to address common business scenarios? Those are some of the topics that ended the first chunk of the course.

Weeks 6 through 8, I found, had some tougher sections, including a section on Partitioning the Information Model, which was followed by week 9, that I found really challenging! Luckily for me, there were classroom events around this time, where I had supportive classmates who ensured me that things would be better soon ;-). So if you're taking the program and feel that you're getting stuck here - have faith! You'll soon be out of the jungle ;-). In this part of the course, I was introduced to extracting data contracts (produced from required business features) into conceptual information models, what to deliver for implementation, a neat discussion about database types (both in the aspect of relational vs. document databases and in the relation of application vs. subject vs. information databases) and a walkthrough of the concept of infrastructure of shareable information, how it relates to information services and strategies of integrating with legacy systems. This section culminated in a discussion of existing architectural frameworks, both on an enterprise level and on a software level.

Once, I had passed the 9th week, things started to get down to an easily digestible level again, addressing things like how and what level of detail to present to different stakeholders in a software project (Enterprise, Business, Software, Technical and Implementation Viewpoints); i.e. how to write minimal amount of documentation that is still valuable for the organization.

Week 12 through 14 discussed different service composition patterns, discussed CQRS and deployment strategies - both on-premise and in Azure - for the different composition patterns.

The final three weeks, 15 through 17, discussed the HTTP & SOAP protocols, the REST and RPC architectural styles, how to utilize WCF to design HTTP services and how to utilize ASP.NET Web API to design REST and RPC based services.

Readers interested in this program that have a similar background as me, might find it interesting to see my study velocity during the program to project where they can expect to end up.


The Y-axis is the sections (weeks) and the X-axis is the date of completion in year-month-day format.

Having gone through the program, I can wholeheartedly say that I recommend it for both experienced developers interested in taking the leap to systems architecture, existing systems architects (there's always more to learn!) and also - I would guess - business developers wanting to get a better understanding of their IT-counterparts. The program is offered as a self-study online-course (featuring text, graphics and videos) and optional classroom days, where attendees are lead through discussions and exercises to really take in the material.

Comments

Popular posts from this blog

Auto Mapper and Record Types - will they blend?

Unit testing your Azure functions - part 2: Queues and Blobs

Testing WCF services with user credentials and binary endpoints