Coding the architecture

sm-logo-black-mangaI’ve been invited to London by Skills Matter to follow their 2 days workshop called : Coding the architecture. This workshop has been created by Simon Brown and Kevin Seal. The workshop was given by Simon. Actually, that’s one thing I really like with Skills Matter : they spot the people who are knowledgeable about one topic and help them to setup a course or a workshop. These people own the copyright of the material and then teach the courses for Skills Matter. It’s quite clever. Simon Brown is a very talented hands-on architect who spent years working with Java in London and is now back in Jersey where he does .Net. So he knows both worlds pretty well. You can go and check the Coding the arcthicture website.

This workshop is completly different from what you are used to where you are sent by your company to be trained. You don’t arrive, sit down, listen and leave the room being an architect. Instead you only go through 50 slides in two days, and spend your time working in small groups and interacting with the others. At the end you leave the workshop with your head full of ideas.

what-is-architecture-1-r56The workshop first starts to define what is an architecture. Each group has to come up with a definition. Funny to see that each one has its own definition. To summarize, an architecture is a mean to deliver the functional and non-functional requirements of your project using blueprints, best practices, structure and design. But what is design ? How is design different from architecture ? To quote Grady Booch, all architecture is design, but not all design is architecture. Architecture represents the significant decisions (measured by cost and changed). So architecture is expensive to change, not design.

Then comes the definition of an architect and its role. Again we worked in groups and everybody came our with their own definition. The result is that there is no right answer. Depending on the team, its size, individual skills, the architect could lead the team, develop, mentor, check the quality of code… and any combination of other skills that you might think of.

Then we looked at where the architecture is involved in the software development lifecycle. Again, depending if you are using waterfall, RUP or agile methodology, the archiecture could be defined at the very begining before development starts or at each iteration. In an agile development the architect is the one who has the technical vision and makes sure the team leads to this vision throughout the interations. And because Simon is an hands-on architect, he stressed out that the architect should be involved in all phases of the project not just analysis and design (which means in the phases of prototyping, coding, testing…).

role-1

We looked at what drives the architecture. As I said, the architect must keep the functional and non-functional requirements in head. But he has to take into account a set of constraints : costs, skills in the team, time, technical strategy of the company, existing systems, company politics, past failures, legal topics (licensing for open source software for example).

Then Simon gave us functional and non-functional requirements for a case study. We had half a day to work on it in small groups and each one had to come out with an architecture and present it to the others. That was really interesting. Because this workshop is technology agnostic, people came up with different solutions. An intersting aspect was the notation that people used. It was a bit of everything, from boxes and arrows, to more structured UML diagrams or text. It goes to show that everybody knows how to model classes, interaction between classes of even state, but modeling an architecture is not as simple and straight forward.

Coding the architectureAs a whole, I have to say that I really liked this workshop. As I said, we didn’t come out thinking “great, I’m an architect now and these are the things I will apply on all my projects”. No, it was more a set of ideas to keep in mind, checklist of things to look at when defining an architecture, and most importantly, use all these hints and adapt the role of the architect depending on the team.

And of course, it’s always a pleasure to go back to London, my second home, meet my friends, have some beers in British pubs, and enjoy Indian curries.

3 thoughts on “Coding the architecture

  1. Instead of trying to keep it all in their head, it is useful if the architect can write down what they are thinking. That way other people can see the architecture and requirements, and they might even be able to suggest improvements. The best architects I’ve worked under were also fantastic writers who would blog about their ideas to an internal blog. Even if their ideas ended up being wrong, everyone was able to see the progression and learn from the decisions.

Leave a Reply