Mark Richards
Northern Virginia Software Symposium
Reston · April 25 - 27, 2014

Independent Software Architect, Author of Fundamentals of Software Architecture
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
Architectural Thinking
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.
Architecture Patterns
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.
Software Architecture AntiPatterns
In the past I have presented quite a few fun sessions about software development anti-patterns - things we repeatedly do while developing code that produce negative results. In this session, I will use the same “pattern” as with my other anti-pattern talks and introduce and discuss many of the common software architecture anti-patterns. These are perhaps more significant than the development anti-patterns because they are harder to refactor. Therefore, knowing these anti-patterns ahead of time will save you time, trouble, and perhaps even your job!
JMS 2.0: Java Messaging At It's Best
Since writing the second edition of the O'Reilly JMS 1.1 book I've spent a lot of time speaking and writing about AMQP (Advanced Message Queuing Protocol). While I'm still excited about AMQP, I'm also excited about another area of messaging - the recently released JMS 2.0 specification. I'll begin this live coding session with a high-level summary of what has changed with the JMS 2.0 specification release. Then, through live coding I will provide you through a first-hand look at the new simplified API and the new features of the latest JMS specification that not only make it easier to develop messaging applications, but also make it more suitable for enterprise-level messaging. There is a lot happening in the messaging space right now - climb on board this session to see what all the buzz is about!
The Art of Problem Solving
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.
SOA as an Architecture Pattern
Service-Oriented Architecture (SOA) has become an ugly word in the industry. Not only is everyone more confused than ever about what SOA is, but the tooling and products surrounding SOA has made it into a ubiquitous buzzword that has little or no meaning these days. That said, SOA as an architecture pattern is still very much alive and solves many issues within a service-based architecture approach. So what is SOA from an architecture standpoint? In this product-free session we will take a detailed look at SOA from an architecture pattern point of view, understand how abstraction plays a part in SOA, and also understand the implementation aspects of the pattern. At the end of this session we will look at a few service bus considerations, including dealing with single point of failure scenarios, performance bottleneck issues, and service bus roles and responsibilities.