Lean and Agile Software Development Education Programme

Introduction

Clients say this is an awesome, useful programme. We agree ;)

This is a summary of the Lean & Agile Software Development (LASD) education programme that I (Craig Larman here) have honed over the decades (it started development & delivery in the early 1990s), and set up at organizations such as Xerox and JPMorgan. For example, it has been successfully delivered at Xerox to well over 20,000 software developers and managers as part of their Lean Software Development initiative, of which I served as the lead coach.

The overarching goal is to improve the organizational system (that creates software) to become a much better learning organization and value-delivery system, through the adoption of Lean-Thinking principles and related practices. I am the author of the Lean Primer, and the book Scaling Lean & Agile Development, and so the bias (my bias) of this programme is indeed Lean Thinking. Therefore, if "Lean" and "lean software development" is something that interests your organization, this is a great fit.

The courseware and trainers for delivering this programme as a turn-key system are already developed.



Candidate Participants & Teams

Beside the obvious candidate participants -- developers -- we urge that it include full participation by many of the managers (including more senior managers) within the Development Organization. Why? In Lean Thinking, a key idea is "manager-teacher" and the saying is, "my manager can do my job better than me." So to amplify the impact of this programme, and to ensure there is strong alignment between the education, knowing, and doing, and the broader organizational direction and policies, participation by managers is a great value. And if some of those managers can themselves become teachers of this programme, then this further supports the Lean Thinking model of manager-as-teacher, in which managers provide great value by directly coaching people in mastering the real tasks.

Another perhaps-surprising recommendation about the candidates is that complete stable teams go through the programme together. For example, if the Development Organization is structured into semi-stable teams of perhaps 5-10 people, all members of the team should go through the programme as a unit. Why? The principles and practices that will be mastered influence not just the individual, but the (organizational) system and group behavior. It strongly amplifies the impact of the learning, and of alignment to deliver more value from the programme, when a team applies it as a team. And it also acts secondarily as a team-building experience.



Delivery Model and Train-the-Trainer Option

First, to define a key term: a wave is a running of the complete programme for a set of teams.

One wave has two teams go through it together. Assuming the average team is 7-ish people, and two teams may be related to 1 manager (who also ideally fully participates in the education), a typical wave has about 15 people.

Lean organizations emphasize developing internal capability to learn and coach, so one goal of this programme is usually to help develop an internal capability to deliver it by internal coaches/trainers. However, of course there's a bootstrapping problem, and there may always be some teacher-availability constraint, and some clients simply don't want to create that internal support.

Therefore, to kickstart this programme, the early waves are delivered Craig Larman and other certified experienced trainers who have delivered it at other clients. And it some cases, the waves are only ever delivered by the external certified trainers.

In the case that the client decides to also create internal coach/trainers, there is a train-the-trainer model: Each potential internal coach must attend an entire wave twice, before certification. Once as a participant, and once in a co-teaching with an existing certified teacher.

To aid in the coach-certification and learning process, the original deliveries by external certified trainers may be video-recorded (but only used for coach preparation).

Licensing: In the case of the train-the-trainer model, the (very mature, refined) programme courseware is made available to the client with a licensing fee model.



Customization of the LASD Programme

The standard curriculum presented in the following sections is recommended, based on many years of experience with thousands of developers. However, there are contexts where it can and should be modified, by either deleting or adding elements. This needs to be discussed and designed with Craig, via a custom programme-design activity.



LASD Programme Curriculum



Introduction to the Programme Curriculum

Broadly, the programme curriculum is a set of intensively hands-on and team-based learning experiences; each is called a unit (typically, a workshop or course). And it involves very close and personal coaching by an experienced trainer who is "at the walls" or "at the computer" with the participants.

The courses and workshops are not like common traditional courses where there is a lot of slideware and a few toy exercises. Rather, the learning involves extremely hands-on work for the vast majority of the time in the workshop room, with close evaluation and coaching by the in-room trainer.

In contrast to the later units, the programme starts with the LASD1 unit that a set of individual readings to establish some baseline common understanding and vocabulary amongst the participants.

On to the standard version of the programme...

LASD1 (Lean & Agile Software Development 1): Readings

Summary: Readings

Person-hours: 5-10

Content:

Chapter: Systems Thinking. Book: Scaling Lean & Agile Development. OR... the online version @ http://less.works/less/principles/systems_thinking.html
Chapter: Lean Thinking. Book: Scaling Lean & Agile Development. OR... the online Lean Primer @ http://leanprimer.com
Chapter: Eliminate Waste. Book: Lean Software Development: An Agile Toolkit.
Chapter: Amplify Learning. Book: Lean Software Development: An Agile Toolkit.
Chapter: Deliver as Fast as Possible. Book: Lean Software Development: An Agile Toolkit.
Chapter: Build Integrity In. Book: Lean Software Development: An Agile Toolkit.





LASD2: Course: Lean & Agile Software Development: Hands-On Practices and Principles

Content Summary: Core hands-on skills in lean software development and agile-engineering practices.

Experience Summary: In this extremely hands-on course, 2 teams (e.g., 14-16 people), each working together as a team, learn and apply in a structured environment with a carefully crafted education system to ultimate create a relatively large product over the 5 days. The coach works intensively with the teams during group agile modeling, and intensively with the programming pairs, during development. There are also regular whole-group code reviews with a large projector, where the coach evaluates for "clean code" and skillful design.

Content Summary: Lean principles and practices, object-oriented analysis and design with low waste and high learning, user-centered design, applying key software design principles (GRASP, SOLID), agile modeling, clean coding and refactoring, automated acceptance testing and test-driven development (Acceptance TDD), and unit TDD.

Duration: 5 days.


Special Readings for Future LASD Teachers:

  • Applying UML and Patterns 3E, Larman: Chapters 1-25
  • Clean Code, Martin: Chapters 1-10
  • User-Centered Design, Lowdermilk, All chapters (it's a short book - a solid overview of basics)





ZERO to max of 3 weeks break (zero is probably best)



LASD3: Workshop: Core skills applied in a mini-Sprint with a work goal

Context: It is helpful to learn & apply new complex skills in a structured classroom environment, but to go from "knowing to doing" in the workroom requires a critical extra step.

Content Summary: The skills of LASD2 are applied to a company goal, that the teams and company mgmt pick (vetted by the coach), in a 5-day mini-Sprint

New Topics? This is mostly application of LASD2 knowledge to "normal company features", but one distinct new topic this week is the use of a "mocking" framework for "test doubles" during the practice of unit TDD.

Experience Summary: The 2 teams are led through a mini-Sprint. The coach works intensively with the teams during group agile modeling, and intensively with the programming pairs, during development, introducing new principles and practices and design patterns as situationally appropriate.

Duration: 5 days.

Environment & Tools: Same as LASD2, but definitely access to your real development (source code, .etc) environment, as we are building "real" software.



ZERO to max of 4 weeks break (no preference)



LASD4: Clinic: Legacy-Code TDD

Context: It's easy to create clean code and do TDD and refactoring in a green-field context (LASD2 and LASD3), but that's not the reality of the developers and the legacy code base. The craft of legacy-code TDD is a very different and challenging skill-set and requires distinct coaching, in the context of your real existing legacy code. Especially difficult is breaking dependencies in the existing code, to enable for TDD, and this requires very situational coaching.

Content Summary: Legacy-code TDD and refactoring, breaking dependencies.

Experience Summary: 1 team does a "coding dojo" style learning with the coach. The team and coach are surrounding a projector displaying the legacy code, and for a 10-minute cycle, one person does legacy-code TDD and refactoring and dependency breaking, guided by the coach. Then "driving" the keyboard rotates to the next team member, etc.

Duration: 2.5 days.

Note: The coach will complete team 1 and team 2 coaching over a 5-day period.

See further description here


Special Readings for Future LASD Teachers:

  • Working Effectively with Legacy Code



ZERO to max of 4 weeks break (no preference)



LASD5: Course: Agile Design And Modeling For Advanced Object Design With Patterns

Content Summary: Hands-on skill and mastery of excellent and flexible software design with design patterns; more agile modeling skill.

Experience Summary: As in LASD2, in this extremely hands-on course, 2 teams (e.g., 14-16 people), each working together as a team, learn and apply in a structured environment with a carefully crafted education system and set of problems. The coach works intensively with the teams during group agile modeling.

Duration: 3 days.

Detailed Description: Agile Design And Modeling For Advanced Object Design With Patterns


Special Readings for Future LASD Teachers:

  • Applying UML and Patterns 3E, Larman, Chapters 26 and 36
  • Design Patterns
  • optional: Head First Design Patterns





no break (start next event on subsequent day)



LASD6: Workshop: Agile Architecture Documentation Workshop

Summary: There is a large system and the overarching existing design is not clear to many. This also inhibits evolving the design for the future. In this 1 day workshop, the coach facilitates the group to create architectural views and technical memos in a highly collaborative hands-on workshop using vast whiteboard spaces, to sketch out the existing product architecture, and also capturing Q&A sessions on video. The output is not only the many architectural view sketches (logical, process, data, deployment, security, ...) and technical memos, but a shared understandings amongst workshop participants in the existing design, using lightweight and fun methods that transform "documenting the architecture" from a boring low-value activity into an interesting high-learning high-value event. This workshop can also be combined with the definition and organization of a self-study plus Q&A mentoring system for new hires to your company, to speed and improve the architectural knowledge of your staff.

Duration: 1 day.

Detailed Description: Agile Architecture Documentation Workshop


Special Readings for Future LASD Teachers:

  • Applying UML and Patterns 3E, Larman, Chapter 39