Course Description
Agile Software Development Essentials
Skill Level: Intermediate-Advanced
Duration: 3 Days (9am-5pm)
Delivery Type: Classroom, Public or Private On-Site
OVERVIEW
In this unique training we cover the critical skills needed to build software that can easily change. We identify and give names to the qualities that make software flexible so all team members can get on the same page and communicate with high fidelity. We then look at specific principles and practices which support the development of quality software.
In addition to covering a core set of patterns every developer should know we also examine the forces underlying patterns that make them valuable to agility. This expanded view of patterns gives attendees a powerful framework allowing them to encapsulate and abstract virtually any problem for maximum flexibility without overcomplicating the solution. These techniques apply equally well to new development as they do to maintaining or extending existing systems.
Attendees learn how to find elegant solutions by understanding the forces of problems which lead to discovering the right abstractions that make software less complex and more manageable. Using advanced techniques like commonality-variability analysis, “refactoring to the open-closed”, encapsulating construction and pattern-oriented design, participants learn how to emerge designs just-in-time and with minimal waste.
There are no “magic bullets” in software development but we will make better choices if we understand the tradeoffs of our decisions. This training helps attendees evaluate tradeoffs in design that can then be immediately applied to virtually any problem. This practical approach will impact the way attendees create software on a day to day basis. Participants leave this training confident and empowered to improve the quality of the software they produce.
This is a lecture-style course with a group exercise done at whiteboards.
SKILLS TAUGHT
After completing this training attendees will be able to:
- Identify six code qualities that make software easier to maintain
- Build a common vocabulary for evaluating and communicating designs
- Understand how applying key principles lead to easily extendible designs
- Evaluate the tradeoffs of alternate designs without having to code them
- Learn twelve core patterns that every developer should know and use
- See how to apply patterns just-in-time and avoid up-front overdesign
- Employ proven techniques to dramatically reduce defects
- Recognize pathologies of poor code and how to fix them
- Discover how to refactor code without breaking callers
- Master an easy way to find patterns in any problem
COURSE OUTLINE
Day 1
Introduction
Architecture and Design
CREATE Software Quality
Software Patterns
Encapsulating Varying Behavior
Day 2
Review
Paradigms, Principles and Perspectives
Encapsulating Foreignness
Group Exercise
Group Exercise Debrief
Day 3
Review
Core Practices
Encapsulating Sequence and Cardinality
Encapsulating Construction
Refactoring and Emerging Systems
AUDIENCE
This training is for developers, testers, designers, architects, technical leads and managers of development teams.
PREREQUISITES
Attendees should be familiar with basic Object-Oriented (OO) concepts and terminology.
COURSE DESCRIPTON (PDF FORMAT):
Click here for a current schedule of public classes or contact me to bring this class into your organizaation or learn more.