Process Training

About the Non-Technical Classes

  • All non-technical courses are heavily hands-on, with lots of discussion, interaction, and exercises.
  • Remote delivery is available for some of the courses.

Student Quotes
General Information About Training
Questions / pricing inquiries? Want to schedule training now! Call Jeff at +1-719-287-GEEK, or use the contact form at the bottom of the page.

Agile Classes

Agile in a Flash with Class

2 days

Based on the book Agile in a Flash by Jeff Langr and Tim Ottinger, this course distills decades of collected agile wisdom to help your team master agile software development.

» details

Agile in a Flash with Class (2 days)

Are you truly agile? Are your agile teams able to adapt to changing business needs? Are they consistently producing low-defect software that your customers are happy with? Are they able to continually add new features at a fairly consistent pace? Are they truly enjoying their jobs or are they getting burnt out?

If you can’t answer yes to each of these questions, you may need to dig deep to find out why. Agile is easy to learn, but there are many serious pitfalls that teams commonly step into without even knowing there’s a problem until it’s too late.

“Agile, in a Flash, with Class” is based on Jeff Langr and Tim Ottinger’s deck of agile reference cards Agile in a Flash. The class combines the four different card deck areas: agile concepts, planning, teamwork, and development into a two-day course, setting aside a half-day for each area.

Agile in a Flash with Class is designed for everyone involved with agile software development, including but not limited to managers, Scrum Masters, coaches, programmers, testers, business analysts, and project managers.

During each half-day session, you’ll learn how to take agile to the next level. The focus is on moving behind strict application of the practices, focusing instead on more advanced concepts, techniques, and nuances of agile. You’ll learn through a combination of memorable hands-on group exercises, discussion, and lecture.

Every student receives a complimentary deck of Agile in a Flash cards.

Agile in a Flash with Class is designed to keep all students interested and engaged. All students attend three of the four sessions: agile concepts, planning, and teamwork. The fourth session–development–is optional for non-technical attendees. (Depending on the audience, I can optionally present the development topics using a less-technical approach. This allows non-technical students to understand agile technical practices and how they impact an agile software development project.

This unique course design allows flexibility in scheduling–customers are free to configure the four sessions in any order that best suits their needs.

» hide details

Building a Distributed Development Organization

2 days

Distributed development teams provide you with the opportunity to hire the right people, no matter where they or you reside. Successful distributed team members are happier and more productive.

In this class, largely based on years of personal distributed development experience, you'll learn how to manage the many factors that play in cohering a successful distributed team.

» details

Building a Distributed Development Organization (2 days)

The premise of distributed development is great: Save significant money on office space, hire the right people for your company no matter where they reside, and provide a great work-life balance for your employees.

It's important, however, to invest some of that saved money on ensuring distributed success: proper equipment, appropriate tools, face-to-face get-togethers, and continued investment in improving distributed practices. Make sure you understand all the implications of distributed development teams!

This class is available either on-site or remotely (practicing what I preach!). For remote sessions, I'll facilitate a readiness meeting: Some time in advance of the two-day training, your team will join a readiness session--the goal of which is to ensure your team is technically capable of attending a two-day distributed session using their computer and network. Attendees with working setups will drop out of the meeting quickly, while I'll remain and help other attendees through any challenges.

Distributed development is often a bag of surprises around technical communication issues. Audio won't work at all, voices will turn robotic, internet connections will go out (and unfortunately, sometimes mine will go out as well). We'll ignore the hiccups; for any significant time lost due to my unavailability, or for technical problems affecting significant number of students, we'll reschedule follow-ups.

Topics Covered

Costs, benefits, and success factors


- Weekly get-togethers

- Daily get-togethers

- Planning

- Reflection

- Other meetings

Using technologies effectively

- Collaboration tools

-- Shared documents

-- Card tools

- Tracking tools

- Voice / video tools

- Communication tools

- Distributed etiquette

Team coherence

- Geographical considerations

- Cultural considerations

- Team chartering

- Building a team culture

- The importance of face-to-face

- Fostering trust

Getting work done

- Completion criteria

- Establishing a rhythm


- Techniques

- Screen sharing

- Effective hands-on remote dev

-- Using terminal multiplexers

-- Establishing standards



- Hiring criteria and mechanisms

- Retaining your people


-- distributed wallflower effect

-- decision making: coming to agreement

-- technical communication issues

-- communication downtime / contingency plans

-- miscommunication

Sustaining the distributed experience

» hide details

User Stories: Delivering Business Value

1.5 days

Everything you'll want to know about how to succeed with user stories. Avoid the many commonplace mistake teams make when incorporating user stories into your process.

» details

User Stories: Delivering Business Value (1.5 days)

Agile software development replaces the traditional requirements gathering process with a more dynamic mechanism: user stories. A user story is just what it sounds like: the customer (representing end users) initiates a conversation with the development team around a specific need for the software. Instead of writing down excessive detail, then tossing it over the wall to a development team, the customer promises to relate--primarily orally--the details behind these needs as development actually progresses. The use of user stories meshes well with the short-cycled, iterative development process of agile.

To take effective advantage of user stories, you must understand their strengths and weaknesses. You must avoid the trap of focusing too much on things like story format and story/task tracking, and instead understand things like what makes for a good story.

Learn how to translate the vagueness of oral tradition into long-lasting, useful artifacts. This workshop gives you everything you need to understand how to make concept successful for you and your customers. The class is chock full of content, and the many hands-on group exercises will keep you engaged.

Stories: Overview

- What is a user story?

- Card-conversation-confirmation

- Stories and collaboration

- Stories vs. use cases

- Why user stories? (benefits)

- Stories in agile / IID

- Exercise: creating candidate stories

Guidelines for Story Development

- Stories and product vision

- Who’s involved?


- Value and Independence

- Focusing on goals and “closed” stories

- Using the domain language

- Avoiding implementation details

- Exercise: vetting story quality

Story Derivation Techniques

- Using story format (As a-I want-so that)

- Determining the user

- Roles & personas

- FURPS / non-functional stories

Stories and Acceptance Tests

- What is an acceptance test?

- Examples of acceptance tests

- Tools overview

- Fitnesse, Cucumber, Concordion

- Agile development flow

- Specification by example

- Stories and artifacts

- Exercise: Vet stories with INVEST: T

Story Sizing & Granularity

- Epics & stories

- Agile estimation

- Task breakdown?

- Exercise: Vet stories with INVEST: E

Exercise: Story estimation (simulation)

- Story vs iteration size

- Techniques for splitting stories

- Level of detail

- Exercise: Vet stories with INVEST: S

Stories and planning

- Index cards and card walls

- Software tools

- Definition of done

Story prioritization mechanisms

- Planning challenges

- Story dependence, story size

- Exercise: Iteration planning overview


- Making user stories work

» hide details

BDD / Specification by Example / Cucumber / Fitnesse

Specification by Example (BDD) Workshop

1 day

Learn how to reap the benefits of behavior-driven development, a collaboration technique that can help your team cohere and deliver higher quality software.

» details

Specification by Example (BDD) Workshop (1 day)

With behavior-driven development (BDD), aka specification by example, you specify your system in terms of automatable examples of its behavior. The many benefits of BDD can include significantly minimized defects, a clear shared understanding of the capabilities/business rules of your system, a definitive criteria for acceptance, and a basis for splitting larger stories.

In this class, geared for anyone involved with a software delivery team, you'll first learn what BDD is and more about the benefits it can help you reap. You'll then get hands-on, learning how to transform user stories into scenarios that can be automated, through a series of exercises that will give you the confidence to implement BDD in your team.

This class can be delivered for virtually any development environment--whether you're using (or planning to use) Cucumber or Fitnesse, and if you're using Cucumber, whether you're using Java (CucumberJVM), .NET/C# (SpecFlow), Ruby, Groovy, JavaScript, Clojure, C++, or PHP.

Topics Covered

Stories, Conversations, Confirmations, and Artifacts


Cucumber / Gherkin overview

Specification by Example

Testing vs. Driving

Whole Team Collaboration

Three Amigos

Goals/Benefits for BDD

Risks/Challenges of BDD

The Testing Pyramid: Re-Leveled

Story Vetting

Story Breakdown

Clarifying Scope With Scenarios

Given-When-Then Phrasing

Gherkin Feature Files

Driving Your System With Cucumber

Grooming and Sustaining

More on Given-When-Then

Steps and Stepdefs

Eliminating Redundancy with Scenario Outlines

Eliminating Redundancy with Backgrounds

Scenario Naming Recommendations

Declarative vs. Imperative Scenarios

Organizing Features and Scenarios

Flow Strategy

Design Principles

Cucumber Smells

Overview of Implementing Steps

Outside-In Development

» hide details

Fitnesse Fundamentals

1 day

A gentle but thorough introduction to building acceptance tests in Fitnesse.

» details

Fitnesse Fundamentals (1 day)

Fitnesse combines the ease of use of a Wiki with the power of being able to define acceptance tests via a series of tables (known as Fit tables). Used properly, Fitnesse tests can act as the negotiation point between programming and the business.

This course teaches you the fundamentals of Fitnesse, enough to be on your way building automated acceptance tests. You'll overview techniques for best expressing requirements using Fitnesse.

You may also want to consider the two-day Fitnesse Workship, which teaches you advanced techniques for taking advantage of the full power behind Fitnesse.

This is a hands-on course, where students learn to build their own working Fitnesse tests. Note that this is not a programming course and does not teach how to program fixtures. The Fitnesse Programming Crash Course provides hands-on experience in building custom Fitnesse fixtures.

Fitnesse Fundamentals is currently offered for both C# and Java environments. We can also build support for C++ and Ruby classes if you're interested! (We also support FIT, SLIM, or both.)

Topics Covered

Fitnesse overview

The Fitnesse innovation: Wiki + FIT / SLIM

Editing test pages

Running Fitnesse tests

Decision table (ColumnFixture)

Query table (RowFixture)


Graceful names

SetUp, TearDown, and !include

Test data concerns

Table flow

Annotating test pages

Script table (DoFixture / ActionFixture)

Determining the appropriate fixture type

Test design

Test organization

» hide details

Fitnesse Workshop

2 days

A deep dive into Fitnesse, this course will take you from novice to a sophisticated level of test development capability.

» details

Fitnesse Workshop (2 days)

This class interweaves Fitnesse Fundamentals and Fitnesse Plus into a single, cohesive class. You'll move from Fitnesse basics to advanced Fitnesse concepts, working through hands-on examples in each. You'll also learn key tips and best practices all along the way. On completion, you'll have the knowledge it takes to build and sustain quality Fitnesse tests on your own, and know how to avoid the common pitfalls that Fitnesse can present.

Fitnesse is a sophisticated but sometimes cranky tool. Don't worry if you don't have a programmer background or don't feel technically savvy--we'll help you each step of the way!

Topics Covered

Acceptance tests and stories

Testing vs. test-driven


Behavior-driven development /

Specification by example

Roles / responsibilities /

team considerations

Fitnesse overview


Wiki concepts

Page hierarchies



Test pages


Decision tables

Query tables


Graceful names




Reading and naming test pages

Markup variables


Collapsible sections


Row matching and row order

Additional fixture types

Script table

Test execution strategies

Clean tests


Test design

Acceptance test design principles

» hide details

Not seeing training on the topic you need?

You might be looking for a technical class. Refer to the Technical Training page for information on the following training topics:

  • Clojure developer testing
  • CSD (Certified Scrum Developer)
  • Cucumber programming
  • Fitnesse programming
  • Legacy code rescue
  • Refactoring/continuous design
  • TDD (Test-Driven Development)

If it’s in the technical agile space, chances are good that we can create and deliver a customized class. Call Jeff at +1-719-287-GEEK, or use the contact form at the bottom of the page.