About 15 years ago, a role-based learning program aimed primarily at software architects was established. In the early days, we had extensive discussions to what extent to build on existing materials available outside of the company or to "grow our own" learning program. Due to the nature of our businesses, especially having many complex and cyber-physical systems with a strong focus on quality attributes, we established our own program. This architect-based learning program, knownas the "Software Curriculum" has evolved over time and continues to be a key part of our company's learning landscape. Especially as systems today and in future get more and more complex, the importance of learning, and especially in the software architecture area, has never been higher.
This article will share key lessons learned in such a way that readers, especially those who identify as industrial practitioners, can apply them to their own learning endeavors.Today's world is changing quickly in multiple dimensions technology is becoming a key part of our world, systems are becoming increasingly complex, and the environment is becoming more volatile and uncertain. At the same time the quality attributes (also known as the "non-functional requirements") are growingboth attributes of the system like safety, security, availability, performance, but also development attributes such as maintainability and testability. Software professionals working on creating such systems, face not only these challenges, but also must be able to grasp and apply new concepts quickly. This includes also new technological approaches, processes, and business models such as continuous delivery and DevOps, ecosystems, microservices, machine learning etc., but also how to apply these to the business situation, domain, and in the context of long-living systems.Especially with so many things changing, we find it important to have a strong focus on the architecture of the system and, consequently, the education and training of the architects. Because architecture is such a cross-cutting concern, this allows us to have the most business impactavoiding the biggest potential problems and enabling, where feasible, a fast pace-of-change. The architecture focus is also because design and architecture are known as "wicked problems" [1] which implies that there is no single right solution, but one must consider different stakeholder perspectives and evaluate tradeoffs. As a consequence, establishing a way of thinking about problems and learning to consider the alternatives and tradeoffs is an extremely useful approach, especially in the area of architecture.Many of the large complex systems that are developed today are developed by teams including software engineers, product managers, and many further roles. Long past are the days of an individual developer focused almost exclusively on technology aspects. Alistair Cockburn in his book "Agile Software Development -The Cooperative Game" [2] and Kevlin Henney in his work "What Do You Mean?" [3] state clearly how very import...