Agile Iteration Kickstart
Virtually every leader and organization that has adopted agile and iterative methods, including the recent Yahoo adoption of Scrum, will vouch for the high-impact value in having an experienced coach help kick start the adoption of these practices on a pilot project, which often involve significant and sometimes subtle changes in how to approach project planning, requirements analysis, test, and measurement. Thus, in addition to the first step of helping executive management understand the motivation, evidence, and big ideas regarding agile and iterative methods, in the second step I help these organizations launch a pilot project through my Agile Iteration KickStart program.
This has some similarity to my highly-customized mentoring package, but the KickStart is a more structured 5 or 10-day workshop centered around your project.
In short, the KickStart takes the team through some “classic” events and activities of an iteration, such as iteration planning, requirements or design workshops, and more. This often revolves around the (extremely) popular Scrum method, but other methods, such as XP, FDD or Crystal, can form the foundation if you desire. I’ll (or one of my very talented coaching colleagues) be spending significant time with a cross-functional team, coaching them through the details of perhaps a requirements and/or design workshop, and the iteration planning meeting. I’ll be spending time with the team and business stakeholders to help understand and apply Scrum skills, and chart progress with iteration and release burn-down charts. I’ll be working with developers at their workstations, and in small teams at the whiteboards during object design and agile modeling sessions, also perhaps coaching test-driven development or refactoring.
Methods of Education
Discussion, presentation, Q&A, workshop exercises
Clients find it useful to include related product groups; for example, 8 people from 1 product, and 8 from another. It is useful to include a cross-functional set of representative skills (product management, development, test, systems engineering, ...) as lean and agile principles emphasis cross-functional teams and very close, cyclic collaboration between product management and R&D.
Intermediate: This course introduces concepts and techniques that the attendee will apply during the workshop.
The intent of this session is to begin using agile development techniques in real life--you should have a real project and a real development environment to get the most of this time. Good preparation beforehand significantly improves the richness of the outcome.
It is highly recommended that you have attended Agile Software Development: Hands-on Practices, Principles, Agile Modeling, and TDD beforehand.
Depending on topics selected, after completion of this course students should be able to:
- develop software in short iterations (typically using Scrum)
- do agile modeling
- test-drive new development
- test-drive modifications to existing code
- run Agile SAD workshops to document existing architectures
Several schedule variations are possible and will be customized with you beforehand, depending on the degree of requirements and design fuzziness and complexity, and state of the team. For example:
- Monday: Agile software architecture documenting with an N+1 view model and technical memos
- Tuesday: Requirements workshop, applying use cases or use stories
- Wednesday: Design workshop, applying Agile Modeling
- Thursday: Test-driven development, refactoring, and continuous integration
- Friday: Release and/or Iteration planning meeting, applying relative point estimation, velocity, burndown charts, and more
Another popular variation runs 3 mini-iterations on the development project Tuesday-Thursday.
I emphasize not only analytical skills such as requirements and design patterns, but harder-core engineering skills such as setting up and using a continuous integration and test environment, test-driven development, pair design, light-weight code reviews, and more. There are myriad skills that may be applied and mastered. Depending on your needs, that may include:
- Agile and iterative project management and methods adoption with blended UP, XP, and Scrum practices.
- Creating a Product Backlog and Iteration Backlog
- Agile estimation with relative point estimates
- Agile requirements analysis with use cases and other specification techniques
- How to run an iteration planning meeting; how to plan a timeboxed iteration
- How to run a fast and focused timeboxed evolutionary requirements workshop
- How to do an Agile Modeling Day
- Applying effective object-oriented analysis and design
- Rapid architectural documentation with an agile N+1 view model for architecture
- Coaching for high-performance OO designs in Java or C++
- Useful UML; modeling like a master
- Agile Modeling with the UML
- Possibly an agile approach to a Release Planning Workshop
- Design patterns
- Refactoring and refactoring tools
- A healthy, scalable build environment with continuous integration and automated testing
- Architectural analysis
- How to quickly and effectively document your architecture
- How to work in a common project room without driving each other crazy
- Applying the Decider protocol for effective team-based decision making
- The daily Scrum meeting
- Walls of wonder for modeling and project management
- Test-driven development
- Code reviews for improved detailed programming and use of APIs
- Reviews, analysis and coaching for suitable performance of (for example, Java) applications.
- Organizing your project files and build environment
- Automated acceptance and unit testing runs
- Agile TDD and Refactoring
- Agile Acceptance Test-Driven Development: Requirements as Executable Tests
- Agile Architecture: Process and Design Tips to Support Flexible Systems
- Certified ScrumMaster Course PLUS
Environment - Room, Tools, Texts
Read this: Course Environment - Workshop Style3
Text and Notes
- a useful pre-read is The Scrum Primer
- There is a course PDF for the presentations. We may decide to give the students a file copy to view on a laptop or a paper copy, depending on situation.