Certified ScrumDeveloper Track
Scrum Software Development Essentials
All courses on the Certified Scrum Developer track are taught by Registered Education Providers. For more information on the curriculum for the CSD credential, visit http://www.scrumalliance.org/pages/certified_scrum_developer.
- This course fulfills the technical skills requirement on the Certified Scrum Developer track.
Scrum Software Development Essentials
Part of the Certified Scrum Developer Training Week
This unique, 3-day training for software developers covers the critical skills needed to be an effective member of a Scrum software development team. Participants learn to identify and give names to the inherent qualities that make software flexible so all team members can communicate with high fidelity. Specific principles and practices which support the development of quality software are presented and examined in detail, including how to discover elegant solutions to software problems using a variety of problem-solving techniques. Understanding the forces at play in software problems enables participants to find and apply the necessary abstractions that make software less complex and reduces the cost of ownership. Advanced techniques, such as commonality-variability analysis, “refactoring to the open-closed”, encapsulating construction, and pattern-oriented design, are emphasized so participants learn how to emerge designs just-in-time and with minimal waste. Mornings are devoted to lectures, with afternoons spent in (Java) programming labs using Eclipse.
WHAT YOU’LL LEARN
Upon completion of this course participants will have a deeper understanding of how to build quality software on a Scrum team and be able to:
- Write software that supports an iterative process without excessive rework
- Use object-oriented techniques to write software that is more extendable
- Identify six code qualities that make software easier to maintain
- Understand how to create flexible designs that can easily change
- Use several practices for writing better software, in any language
- Recognize pathologies of poor code and know how to fix them
- Support collaboration, pair programming and working with customers
- Understand the importance of continuous integration and versioning
- Use test-driven development practices to help build higher-quality software
- Discover software patterns just-in-time to avoid upfront overdesign
- Expert training from one of the industry’s most experienced Agile developer-instructors
- Continental breakfast and lunch; snacks and beverages throughout the day
- A printed and bound copy of all course materials
- A USB drive containing lab-exercise solutions and other useful content
- A free, 30-day advisory period entitling you to ask your instructor questions about the course materials and content, by phone, Skype video or e-mail
- Access to members-only forums containing articles and Scrum-related information
- Free 1-year membership to the Scrum Alliance (normally $50)
- Special discounts on future coaching, and other offers, from Techniques of Design
In the course of his 30-year career, David Bernstein has trained more than 6,000 developers for several Fortune 500 companies on how to improve their software design and construction. A longtime special consultant to IBM, he worked on the development of OS/2 and was a key programmer for IBM’s ImagePlus platform. David trained IBM software engineers around the world, giving them the skills to write the next generation of applications and operating-system software, and earning one of the highest satisfaction ratings in the history of IBM corporate education. He is the creator of a wholesale bank-accounting software program that has become the de facto standard across the globe, as well as econometric software used to invest trillions of dollars. Over the past five years, David has coached and trained thousands of developers at Microsoft, Boeing, Vanguard and dozens of other companies in Agile development practices.
FOR MORE INFORMATION CONTACT
Or Visit: http://www.techniquesofdesign.com
23-25 Mar 2011
City of Chandler Community Center
CERTIFICATION: This course satisfies the three days of technical training requirement needed for Scrum Developer Certification. It helps prepare participants to work effectively on Scrum development teams. See our FAQ for more details.
DAY 1: ANALYSIS
- Introduction: Outline of the purpose, objectives and logistics of the class; why Scrum development is important and how it differs from waterfall development.
- Scrum Development Essentials: Practices including why and how continuous integration supports building better software more efficiently; collaboration with team members; pair programming; engaging the customer; and building a culture that supports ongoing improvement in software development.
- Test-Driven Development: Mechanics of Test-Driven Development (TDD), and how to use it to inform design and create executable specifications; discussion of what makes a good test and common TDD anti-patterns to avoid.
- LAB 1-A: “Iteration 0.” Introduces the case study and software set-up.
- LAB 1-B: “Writing the Test First.” Explores the experience of writing tests before code by implementing the basic stories for our case study. Students learn practical techniques of estimating and working in short cycles, and are encouraged to refactor their code for maintainability once the core stories are implemented.
DAY 2: DESIGN
- Design Review: Includes a group discussion on participants’ experience writing the test first and how well they did at estimating their stories. We also examine the trade-offs of various design decisions employed to implement the stories.
- CREATE Code Qualities: Overview of six critical code qualities; how to recognize when they are missing and ways to get more of them; the relationship between code quality and testability.
- Agile Architecture and Design: Different design paradigms and methods of approaching problems; design principles and key development practices for writing high quality, extendable software.
- LAB 2-A: “Adding Optional Logging Behavior.” Examines the use of changing customer requirements to discover patterns that give us extensibility.
- LAB 2-B: “Encapsulating Complex Business Rules.” Focuses on use of compound patterns to elegantly express complex business rules.
DAY 3: DEVELOPMENT
- Design Review: We discuss how to find patterns in problems, particularly those discovered in the previous day’s labs; we give names to those patterns and review how they were discovered.
- Testing Techniques: Explores advanced testing techniques including the use of mocks and shunts, dependency injection and how to write testable code.
- Refactoring and Emerging Systems: Techniques for refactoring, emerging designs and cleaning up legacy code; different ways to combine the principles and practices covered in the course.
- LAB 3-A: “Refactoring Legacy Code.” How to clean up code by identifying code smells and which refactorings you can apply to clean them up.
- LAB 3-B: “Mocks and Shunts.” Presents advanced techniques to write mocks and shunts that ensure you are testing only what you need to.
- Wrap-Up and Conclusion
- INTENDED AUDIENCE: Software developers, testers, designers, architects and technical leads.
- PREREQUISITES: Familiarity with basic Object-Oriented (OO) concepts and terminology; ability to write simple programs in Java using Eclipse; a laptop with the latest version of Eclipse for Java installed (if you cannot bring a laptop you will be paired with someone who brings one).