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.
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 in a Flash with Class
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.
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
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.
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.
Costs, benefits, and success factors
- Weekly get-togethers
- Daily get-togethers
- Other meetings
Using technologies effectively
- Collaboration tools
-- Shared documents
-- Card tools
- Tracking tools
- Voice / video tools
- Communication tools
- Distributed etiquette
- 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
- 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
Sustaining the distributed experience
» hide details
User Stories: Delivering Business Value
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.
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.
- What is a user story?
- 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
Learn how to reap the benefits of behavior-driven development, a collaboration technique that can help your team cohere and deliver higher quality software.
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.
Stories, Conversations, Confirmations, and Artifacts
Cucumber / Gherkin overview
Specification by Example
Testing vs. Driving
Whole Team Collaboration
Goals/Benefits for BDD
Risks/Challenges of BDD
The Testing Pyramid: Re-Leveled
Clarifying Scope With Scenarios
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
Overview of Implementing Steps
» hide details
A gentle but thorough introduction to building acceptance tests in Fitnesse.
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.)
The Fitnesse innovation: Wiki + FIT / SLIM
Editing test pages
Running Fitnesse tests
Decision table (ColumnFixture)
Query table (RowFixture)
SetUp, TearDown, and !include
Test data concerns
Annotating test pages
Script table (DoFixture / ActionFixture)
Determining the appropriate fixture type
» hide details
A deep dive into Fitnesse, this course will take you from novice to a sophisticated level of test development capability.
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!
Acceptance tests and stories
Testing vs. test-driven
Behavior-driven development /
Specification by example
Roles / responsibilities /
Reading and naming test pages
Row matching and row order
Additional fixture types
Test execution strategies
Acceptance test design principles
» hide details