The simplest way of improving our skills is to practice. You learn something by doing it. Reading books gives you theoretical knowledge. But where to practice being a Software Architect? You probably do not have many opportunities to design a system from scratch.
“So how are we supposed to get great architects, if they only get the chance to architect fewer than a half-dozen times in their career?” –Ted Neward
You probably heard about Code Kata which helps programmers to improve their skills through practice and repetition. Ted Neward came up with Architectural Katas. These katas are exercises for software architects. I recently attended an Architectural Kata held in my company. Here is my story.
From a large group of Architecture Owners we created a few smaller groups of people. Each group received a description of a system to design. Description consisted of both functional and non-functional requirements. One person acted as a moderator of the Kata and in the same time as a customer of all systems. We established some rules like for example:
- Laptops are not needed.
- Make sure you’re sitting a little distance from any other project team.
- Co-workers may not be in a group together.
- Use only existing technologies in your architectures.
In the next step each team started designing their systems using just whiteboards. We were allowed to ask our “customer” for explanations if something was unclear. We also had to make some assumptions like for example the number of requests our system should handle per second.
Here is the example of one of the systems we should design. Generated randomly from here.
Tales Of A Fourth Grade
Company wants to offer an elementary school system comprehensive student management system as a service
Users: faculty, staff and student parents
- track absences, tardies and excuses (entered by parents, faculty or staff)
- generate reports on student activities
- be accessible from the playground
- track student grades and assignments (completed and due)
- parent-teacher forums
- run as an SaaS system from a hosting center
- Additional Context:
- company plans to undertake an aggressive national sales campaign
- current competitor damaged by data breach
- new CIO
- main marketing pitch is around is flexibility, configurability, and (recently added) security
After certain amount of time, each team started presentation of their design in front of all groups. This was the most valuable part. The presenting team could get the instant feedback concerning created solution and could answer questions from other groups. We could learn from other more experienced Architects and test our skills.
I really appreciated that time and I recommend this kind of practice. When you are doing it on your own, you are lacking the feedback from the others and you do not know if you are going in the good direction with your solution.
If you want to perform Architectural Katas among your teams check this out: