Software Architecture Fundamentals Workshop

The job "Software Architect" was rated as the number one job by a recent CNN survey. Yet no clear path exists for moving from developer to architect. Why? Because software architecture is massive multidisciplinary subject with no clear definition or job description, making it difficult to chart a course for undertaking all of the learning required to become an effective software architect. 

This intensive hands-on 3-day training course taught by Mark Richards through NFJS is designed to provide you with the knowledge, skills, and roadmap necessary to become an effective software architect. Being a software architect is much more than just drawing boxes and lines. It's about thinking like an architect, being a leader, and understanding the architectural elements, patterns, and styles necessary to create effective software architectures. Through interactive course materials and architecture exercises, this course will teach you both the technical aspects of software architecture as well as the soft skills of architecture. 

Knowing what architecture pattern best fit your situation is critical to the success of your architecture. In this course you will gain an in-depth understanding of many different architecture styles and patterns, including event-driven, microkernel, space-based, microservices, and service-based architectures. You will learn how each pattern works, the major characteristics of each pattern, and how to use each architecture style to create an effective software architecture that matches your business needs and requirements.  

From an architecture soft skills perspective you will learn how important leadership, communication, facilitation, and negotiation skills are to a software architect, as well as some of the techniques for acquiring these skills. You will also learn many other soft skills techniques, such as how to think like an architect, make effective architecture decisions, and how to make development teams effective. 

Whether you are on the path of developer to architect or already an architect, this course will provide you with the necessary practical hands-on real-world technical and soft-skills knowledge to quickly become an effective software architect.

Course Agenda


  • Agenda and course logistics
  • Attendee introductions
  • Expectations of a software architect

Architectural Thinking

  • Managing architecture knowledge
  • Architecture vs. design
  • Balancing hands-on coding and architecture
  • Identifying architecture characteristics
  • Architecture katas (exercises)

Component-Based Thinking

  • Component responsibility models
  • Identifying components and services
  • Component granularity
  • Component coupling
  • Component cohesion
  • Architecture katas (exercises)

Architecture Patterns

  • Microservices architecture pattern
  • Service-based architecture pattern
  • Layered architecture pattern
  • Event-driven architecture pattern
  • Microkernel architecture pattern
  • Pipeline architecture
  • Space-based architecture pattern
  • Architecture Katas (exercises)

Diagramming Architecture

  • Diagramming software architecture
  • Presenting software architecture
  • Architecture Katas (exercises)

Documenting Architecture

  • Making architecture decisions
  • Architecture decision records
  • Architecture Katas (exercises)

Analyzing Architecture

  • Analyzing software architecture
  • Architecture risk analysis
  • Architecture katas (exercises)

Architecture Refactoring

  • Architecture refactoring techniques
  • Refactoring Patterns

Architecture Soft Skills

  • Making teams effective
  • Negotiation skills
  • Negotiation katas
  • Leadership skills

Summary and Wrap-up

  • Architecture certification discussion
  • Developing your career path
  • Next steps

© Mark Richards 2017