Mark Richards

Independent Software Architect, Author of Fundamentals of Software Architecture

Mark Richards

Mark Richards is an experienced, hands-on software architect involved in the architecture, design, and implementation of microservices architectures, service-oriented architectures, and distributed systems. He has been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. Mark is the founder of DeveloperToArchitect.com, a website devoted to helping developers in the journey to software architect. He is the author of numerous technical books and videos, including the recently published Fundamentals of Software Architecture, Microservices AntiPatterns and Pitfalls, Microservices vs. SOA, the Software Architecture Fundamentals video series, The Enterprise Messaging video series, Java Message Service, 2nd Edition, and contributing author to 97 Things Every Software Architect Should Know. Mark has a master’s degree in computer science and is a regular conference speaker at the No Fluff Just Stuff (NFJS) Symposium Series. He has spoken at hundreds of conferences and user groups around the world on a variety of enterprise-related technical topics.

Presentations

Software Architecture Fundamentals

Monday, 9:00 AM EST

The job Software Architect places in the top ten of most annual surveys of best jobs, yet no clear path exists from Developer to Architect. Why aren’t there more books and training materials to fill this demand? First, software architecture is a massive multidisciplinary subject, covering many roles and responsibilities, making it difficult to teach because so much context is required for the interesting subjects. Second, it’s a fast moving discipline, where entire suites of best practices become obsolete overnight. This workshop provides the fundamentals to transition from developer to architect, or to help “accidental” architects.

Part 1 of this workshop focuses on the many elements required to make the journey from developer to architect, covering process topics like the impact of Continuous Delivery on architecture, technical subjects like application, integration, and enterprise architecture, and soft skills. While we can’t make you an architect overnight, we can start you on the journey with a map and a good compass.
Part 1, From Developer to Architect, covers:

  • Soft skills
  • Continuous Delivery
  • Understanding large codebases
  • Architecture patterns
  • Architecture anti-patterns
  • Integration architecture overview
  • Introduction to enterprise architecture

Part two of this workshop takes a deeper dive in application, integration, and enterprise architecture topics, including evaluating architectures via Agile ATAM, the impacts of continuous delivery on architecture, comparing architectures, SOA, SOAP, and REST, integration hubs, and enterprise architecture approaches and strategies.

Part 2, Deeper Dive, covers:

  • Continuous Delivery for architects
  • Applying abstraction
  • Comparing architectures
  • SOAP vs REST/ WS vs Messaging
  • Integration hubs
  • Enterprise architecture approaches and strategies
  • Comparing service-based architectures

To fully leverage knowledge, you need application. The last part of this workshop uses the public domain Architectural Katas exercise to apply learnings from the first two parts.

Architectural Modularity

Tuesday, 8:30 AM EST

It seems like all we talk about these days is making our architectures more modular. Buy why? In this session I will discuss the drivers and reasons why it is essential to move towards a level of modularity in our architectures. I will discuss and show real-world use cases of distributed modular architectures (specifically microservices and service-based architecture), and then discuss in detail the core differences between microservices and service-based architecture and when you should consider each. I'll end the talk by discussing the most effective way of migrating to modular distributed architectures.

Agenda:

  • Drivers for modularity
  • Modular distributed architectures
  • Microservices vs. service-based architecture
  • The move towards modularity

Architectural Thinking

Tuesday, 10:30 AM EST

Many of you may have an architect title, take on the role of an architect, or even aspire to be an architect, but are you thinking like an architect? Architectural thinking is learning to look at a problem or task from an architect's point of view. In this session we will look at many facets of architectural thinking, including how requirements shape the architecture, component-based thinking, how to make architecture decisions, and what feasibility and vitality means to an architect.

Agenda:

  • expectations of an architect
  • technical breadth vs. depth
  • how requirements shape the architecture
  • making architecture decisions
  • component-based thinking

Architecture Patterns

Tuesday, 5:00 PM EST

Just as developers use design patterns in software development, architects use well-defined architecture patterns to get a head start on defining the characteristics and shape of the architecture for a system. In this session we will explore some of the more common architecture patterns and use concrete real-world examples to demonstrate how the patterns work. I will also go over the pros and cons of each pattern and discuss how requirements and operational aspects can drive which patterns to use. Using the right architecture pattern for your system is critical, because as we all know, once in place the architecture is very hard to change.

Agenda:

  • Why use architecture patterns?
  • Layered Architecture Patten
  • Event Driven Architecture Pattern
  • Microkernel Architecture Pattern
  • Space-based Architecture Pattern

The Art of Problem Solving

Tuesday, 8:00 PM EST

As Tech Leaders, we are presented with problems and work to find a way to solve them, usually through technology. In my opinion this is what makes this industry so much fun. Let's face it - we all love challenges. Sometimes, however, the problems we have to solve are hard - really hard. So how do you go about solving really hard problems? That's what this session is about - Heuristics, the art of problem solving. In this session you will learn how to approach problems and also learn techniques for solving them effectively. So put on your thinking cap and get ready to solve some easy, fun, and hard problems.

Agenda:

  • the checklist
  • visual representations
  • you know what happens when you assume…
  • you gotta start somewhere
  • the world is flat
  • hey! keep it clean!
  • perception can be reality

The Soft Skills of Architecture Part 1

Wednesday, 9:00 AM EST

Being a software architect is a tough job. Not only do you have to have significant technical depth and breadth, but you also need to understand the business domain you are working in. While these aspects are important, there is another perhaps more vital aspect of being an architect - the soft skills. Too many architects fail to realize the importance of soft skills, and as a result do not achieve success in their career as an architect. In this two-part session I will focus on the soft skills of architecture. In part one I will cover skills related to techniques such as architecture decisions, architecture refactoring, and communicating your software architecture through diagrams, documentation, and presentation.

Agenda:

  • Architecture decisions
  • Architecture refactoring techniques
  • Communicating your architecture

The Soft Skills of Architecture Part 2

Wednesday, 11:00 AM EST

Being a software architect is a tough job. Not only do you have to have significant technical depth and breadth, but you also need to understand the business domain you are working in. While these aspects are important, there is another perhaps more vital aspect of being an architect - the soft skills. Too many architects fail to realize the importance of soft skills, and as a result do not achieve success in their career as an architect. In this two-part session I will focus on the soft skills of architecture. In part two I will cover the people skills side of architecture, including working in architecture teams, making implementation teams effective, negotiation techniques, and leadership skills.

Agenda:

  • Working in architecture teams
  • Making implementation teams effective
  • Negotiation skills
  • Leadership skills

Books

Java Message Service: Creating Distributed Enterprise Applications

by Mark Richards, Richard Monson-Haefel, and David A Chappell

  • Java Message Service, Second Edition, is a thorough introduction to the standard API that supports "messaging" -- the software-to-software exchange of crucial data among network computers. You'll learn how JMS can help you solve many architectural challenges, such as integrating dissimilar systems and applications, increasing scalability, eliminating system bottlenecks, supporting concurrent processing, and promoting flexibility and agility.

    Updated for JMS 1.1, this second edition also explains how this vendor-agnostic specification will help you write messaging-based applications using IBM's MQ, Progress Software's SonicMQ, ActiveMQ, and many other proprietary messaging services.

    With Java Message Service, you will:

    • Build applications using point-to-point and publish-and-subscribe messaging models
    • Use features such as transactions and durable subscriptions to make an application reliable
    • Implement messaging within Enterprise JavaBeans (EJB) using message-driven beans
    • Use JMS with RESTful applications and with the Spring application framework

    Messaging is a powerful paradigm that makes it easier to uncouple different parts of an enterprise application. Java Message Service, Second Edition, will quickly teach you how to use the key technology that lies behind it.


97 Things Every Software Architect Should Know: Collective Wisdom from the Experts

by

  • In this truly unique technical book, today's leading software architects present valuable principles on key development issues that go way beyond technology. More than four dozen architects -- including Neal Ford, Michael Nygard, and Bill de hOra -- offer advice for communicating with stakeholders, eliminating complexity, empowering developers, and many more practical lessons they've learned from years of experience. Among the 97 principles in this book, you'll find useful advice such as:

    • Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar)
    • Chances Are, Your Biggest Problem Isn't Technical (Mark Ramm)
    • Communication Is King; Clarity and Leadership, Its Humble Servants (Mark Richards)
    • Simplicity Before Generality, Use Before Reuse (Kevlin Henney)
    • For the End User, the Interface Is the System (Vinayak Hegde)
    • It's Never Too Early to Think About Performance (Rebecca Parsons)

    To be successful as a software architect, you need to master both business and technology. This book tells you what top software architects think is important and how they approach a project. If you want to enhance your career, 97 Things Every Software Architect Should Know is essential reading.


No Fluff, Just Stuff Anthology: The 2007 Edition

by Neal Ford

  • Twenty-seven weekends a year, the No Fluff, Just Stuff conference rolls into another town, featuring the world's best technical speakers and writers. Up until now, you had to go to one of the shows to soak up their collective wisdom. Now, you can hold it in the palm of your hand. The No Fluff, Just Stuff Anthology represents topics presented on the tour, written by the speakers who created it. This book allows the authors the chance to go more in depth on the subjects for which they are passionate. It is guaranteed to surprise, enlighten, and broaden your understanding of the technical world in which you live.

    The No Fluff, Just Stuff Symposium Series is a traveling conference series for software developers visiting 27 cities a year. No Fluff has put on over 75 symposia throughout the U.S. and Canada, with more than 12,000 attendees so far. Its success has been a result of focusing on high quality technical presentations, great speakers, and no marketing hype. Now this world-class material is available to you in print for the first time.


Java Transaction Design Strategies

by Mark Richards

  • Understanding how transaction management works in Java and developing an effective transaction design strategy can help to avoid data integrity problems in your applications and databases and ease the pain of inevitable system failures. This book is about how to design an effective transaction management strategy using the transaction models provided by Java-based frameworks such as EJB and Spring. Techniques, best practices, and pitfalls with each transaction model will be described. In addition, transaction design patterns will bring all these concepts and techniques together and describe how to use these models to effectively manage transactions within your EJB or Spring-based Java applications. The book covers: - The local transaction model - The programmatic transaction model - The declarative transaction model - XA Transaction Processing - Transaction Design Patterns