Speakers
- Craig Walls
- Venkat Subramaniam
- Matt Stine
- Brian Sletten
- Ken Sipe
- Nathaniel Schutta
- Mark Richards
- Matthew McCullough
- Neal Ford
- Jeff Brown
- Tim Berglund
- Peter Bell
- Oleg Zhurakousky
- Billy Williams
- Johnny Wey
- Chris Wensel
- Jim Webber
- Vaughn Vernon
- John Steven
- Bruce Snyder
- John Smart
- Stuart Sierra
- Roshan Sequeira
- Brian Sam-Bodden
- Terry Ryan
- Johanna Rothman
- Ian Robinson
- Paul Rayner
- Nilanjan Raychaudhuri
- Matt Raible
- Eric Pugh
- Peter Niederwieser
- Andrew Lombardi
- Howard Lewis Ship
- Tiffany Lentz
- Scott Leberknight
- Kenneth Kousen
- Dave Klein
- Paul King
- Frank Kim
- Heath Kesler
- Christopher Judd
- David Hussman
- Jez Humble
- Daniel Hinojosa
- Erik Hatcher
- James Harmon
- Arun Gupta
- Jerry Gulla
- Jeff Genender
- Szczepan Faber
- Ben Ellingson
- Johan Edstrom
- Hamlet D`Arcy
- Hans Dockter
- Esther Derby
- Jeremy Deane
- Luke Daley
- Adrian Cole
- Cliff Click
- David Bock
- Ola Bini
- Alex Antonov
- Andres Almiray
- Dan Allen
Paul Rayner
Agile Consultant, Developer and Architect for Virtual Genius LLC
Paul Rayner is a Denver-based independent consultant with more than twenty years of software development and consulting experience. His company, Virtual Genius LLC, provides organizations with the tools and practices needed to succeed at agile software development, from portfolio management through to customer delivery. He specializes in helping organizations struggling with their transition to agile software development, or in need of external agile custom development and architectural expertise.
Paul is an active member of the Colorado developer and agile communities, on the Agile Denver leadership team, a certified Domain-Driven Design instructor with Domain Language, a member of the Agile Cooperative, and a regular speaker at user groups and conferences. He writes with an Australian accent about software development at www.virtual-genius.com/blog and can be found on Twitter as @thepaulrayner
Presentations
ATDD/BDD with Cucumber Workshop (Bring A Laptop)
Acceptance Test-Driven Design (ATDD), or Behavior-Driven Development (BDD), employs the approach of specification by example. Cucumber is such an amazing ATDD tool because it’s so good at mapping stories and acceptance criteria to automated functional tests.
Product Owners, developers and testers collaborate together to write acceptance criteria in natural language and unobtrusively automate tests for them. This is a hands-on workshop that will have you writing and automated acceptance tests on your own laptop by the conclusion of this session.
Cucumber enables a team to collaboratively create specific examples that specify what the system should do from the user's perspective. These executable specifications function as acceptance criteria for the user stories the team is developing. This workshop will cover:
- Building quality in
- Understanding the place of ATDD - The agile testing matrix.
- Why test automation?
- Build the right product using specification by example
- The need for Ubiquitous Language
- Writing scenarios with Cucumber
- Using Cucumber to test web applications
This is a hands-on 3 hour workshop with Cucumber using Java, you will need a laptop running the JDK and a text editor (doesn't have to be an IDE). Class tools, materials and code exercises will be provided.
Introduction to Lean-Agile Software Development
Successful software development is about building the right product at the right time for your customers. This means focusing attention on the right places in the portfolio of projects and products that your company provides, and optimizing the entire value stream from "concept to cash" for your customers and the development teams.
Agility is more than just adopting Scrum or some other agile process framework; it involves adopting a new set of Lean-Agile values, principles and practices through the entire software development lifecycle and beyond in order to provide value to customers earlier and more often.
Lean-Agile software development consists of frequent feedback loops, intense team collaboration, continuous improvement, business and customer involvement, baking quality in and consistent delivery of valuable software. Learn how these Lean principles and practices transform software development and the radical difference it can make in your development work and wider organization.
Using DDD Patterns for Supple Design
Come on a guided tour of how applying Domain-Driven Design (DDD) building block patterns can make your code cleaner, more expressive, and more amenable to change. We cover examples of DDD patterns such as entities, value objects, closure of operations and side-effect-free functions.
When good design really matters, DDD building block patterns enable your design to model the business domain you are working with more richly. They allow you to collaborate with domain experts to build deep, useful models of the domain in your code that solve difficult business problems with elegance and simplicity.
This is a highly interactive modeling session which walks through diagrams and code samples to demonstrate how the application of these patterns to modeling can make writing and reading coding fun again, while improving the effectiveness of the code you write. Come prepared to think, ask and answer questions, and learn how to write the best code where it matters most.
Strategic Design Using DDD
Not every part of a software system will be well-designed. How do you know where to put the time and effort to refine the design, or refactor existing code? Learn how strategic Domain-Driven Design (DDD) patterns can show you how to know which parts of your system matter most to your business and how to focus your team's design efforts most effectively.
Context mapping and Core Domain are key concepts in DDD, providing valuable techniques and insights into where to focus your design attention, yet most developers have never heard of them. This session will introduce the tools of strategic DDD and show you how they can shine a light on your design challenges.
Measure for Measure – Lean Principles for Effective Metrics and Motivation
This presentation explores the nature of motivation and the place of metrics and measurement in software development, and how lean software development principles and practices shed light on motivation and metrics and how they can be used to support deep organizational improvement.
We will examine the nature of motivation in terms of the four intrinsic rewards that drive positive engagement, and also how certain approaches to measuring and managing performance lead to organizational dysfunction. We will also show how the application of lean principles such as building quality into the product, respect for people and optimizing the whole enable more effective approaches to motivation and metrics in software development.
Domain Modeling Using Domain-Driven Design (DDD)
This presentation seeks to provide a solid introduction to the fundamentals of DDD. Learn why modeling a complex business domain in software is so advantageous to your business and ways in which your team can go about delivering software models to give your business a competitive edge.
The philosophy of domain-driven design (DDD) – first described by Eric Evans in his book [of the same name – is about placing our attention at the heart of the application, focusing on the complexity that is intrinsic to the business domain itself. We also distinguish the core domain (unique to the business) from the supporting sub-domains (typically generic in nature, such as money or time), and place appropriately more of our design efforts on the core.
Domain-driven design consists of a set of patterns for building enterprise applications from the domain model out. In your software career you may well have encountered many of these ideas already, especially if you are a seasoned developer in an OO language. But applying them together will allow you to build systems that genuinely meet the needs of the business.
The premise of domain-driven design is two-fold:
- For most software projects, the primary focus should be on the domain and domain logic; and
- Complex domain designs should be based on a model.
Domain-driven design is not a technology or a methodology. It is a way of thinking and a set of priorities, aimed at accelerating software projects that have to deal with complicated domains.
Aggregate-Oriented Modeling with DDD
Many of the problems encountered in scaling, parallelizing and distributing systems that tend to be addressed in ad-hoc ways are actually deeply connected with the manner in which the business domain has been modeled. Domain-Driven Design has rich modeling resources for tackling concurrency, transactional and distribution boundary issues within the domain model itself, enabling teams to be more effective in dealing with business complexity and change.
Learn about how Aggregates can enrich your domain models, improve system performance and loosely couple your systems.
Domain-Driven Design Overview
Build your awareness of the basic concepts and value of Domain-Driven Design (DDD) in one day. This workshop is the official DDD Overview class from Domain Language.
Understand what DDD is and when and why it is valuable to software intensive organizations. Overview the basic principles and processes needed develop the useful sort of models, tie them into implementation and business analysis, and place them within a viable, realistic strategy.
Topics Introduced
Morning: Ubiquitous Language & Model Discovery
- What is DDD?
- What makes a model useful to a software project?
- Cultivation of a model-based language to connect domain experts, developers, and the code itself
- Exploratory interaction of technical and business people in the modeling process
- Aggregates: A taste of rigor. This pattern addresses, at the model level, the scaling of systems in complexity, performance, and distribution.
Afternoon: Strategic Design
- Distilling the Core Domain: Focusing fine modeling and design into those subdomains where the organization distinguishes itself
- Clarifying a shared vision
- Context Mapping: A pragmatic approach to dealing with the diversity models and processes on real large projects with multi-team/multi-subsystem development.
- Combining the Core Domain and Context Map to illuminate Strategic Design options for a project.