Agile Programming Course Information
- Prior to attending this course, attendees should have attended:
- Experience in programming, preferably in a modern (object based or object oriented) programming language
- A broad understanding of the software development lifecycle
- This is a course not just for programmers, but for testers (particularly automation testers), and software designers that then implement their designs.
- For in-class examples we use the Microsoft toolkit: the C# programming language with Visual Studio, Microsoft's Team Foundation Server for tracking agile workflow, and the Git version control system for versioning and teaching branching and merging strategies.
- Students will be emailed a short document to review before class. Understanding the content of this pre-course reading is required before class, so more in-class time can be devoted to the role of the programmer.
Certification & Exam Information
- ICAgile: To obtain the ICAgile certification, students will need to pass the Learning Tree exam. Learning Tree customer service will process your registration with ICAgile once the exam has been passed., please allow 10 business days.
- View the ICAgile Certification & Training Roadmap ›
- Scrum Alliance: This course qualifies for the 3-day technical portion of the Certified Scrum Developer. To obtain Scrum Education Units (SEUs), students will need to pass the Learning Tree exam. Once notification of passing the exam has been received, contact Learning Tree's customer service to request registration with Scrum Alliance.
- This course can help you earn Scrum Alliance’s Certified Scrum Developer (CSD) certification. Click to view our options for CSD - Certified Scrum Developer Training ›
- This course can help you earn ICAgile certification. Click to view our options for ICAgile Certification Training ›
Information for European Citizens
Agile Programming Course Outline
Agile Software Development Introduction
- Defining the developer role in an agile process
- Identifying software development roles and activities
- Supporting the requirements engineering process
- Decomposing and estimating requirements
- Using test automation to drive development
- Applying SOLID design principles
- Exploiting design patterns
- Integrating systems
- Branching and merging version controlled code
- Managing defects efficiently
Supporting Agile Projects
Gathering software requirements
- Eliciting requirements from users
- Adopting Agile values and principles
- Identifying user stories from stakeholder requirements
Planning Agile Projects
- Prioritizing and estimating work
- Dividing features into tasks
- Estimating stories and tasks
Tracking Team Progress
- Tracking progress with burn down charts
- Calculating velocity and adjusting to change
- Monitoring work in progress with task boards
Defining test levels
- Acceptance, system, integration and unit testing
- Employing both automated and manual testing
- Specifying boundary conditions
- Driving development through constant testing
Ensuring software meets requirements with user acceptance testing
- Scripting user acceptance tests
- Specifying acceptance criteria
- Determining conditions of satisfaction
- Automating the user story acceptance tests with Gherkin
Minimizing bugs through automated programmer unit testing
- Utilizing tools for automated unit testing
- Writing unit test code
- Isolating classes for testing
- Programming mock objects
- Refactoring for improved design
Improving Code Quality
Applying SOLID design principles
- Ensuring classes have a single responsibility
- Maintaining extensibility through the open-closed principle
- Using inheritance correctly
- Inverting dependencies to obtain the correct interfaces
- Injecting dependencies using injection frameworks
Short-circuiting design with patterns
- Understanding the role of design patterns
- Applying well-known patterns: Strategy and observer
Protecting code with version control
- Locking versus multiple checkout version control systems
- Single store versus distributed version control
- Employing GIT for distributed multiple checkout control
- Pushing and pulling changes from central repositories
Applying multi-team agile versioning policy
- Branching and merging code developed by multiple teams
- Choosing agile branching and merging strategies
Continuous Improvement of Development
- Knowing what to track in development
- Identifying common agile development pitfalls
Participating in retrospectives
- The developer’s role in agile process improvement
- Continuous improvement through learning
Agile Programming Training FAQs
Is Agile a programming language?
No, Agile is a method of building code, not a coding language.
Who is the International Consortium for Agile (ICAgile)?
ICAgile is one of the leading global agile accreditation and certification body. They help organizations design learning experiences that create an agile mindset and continue the agility within the organization.
How does this help me achieve ICAgile Certified Expert In Agile Engineering?
What industry credits can I earn for this Agile Programming course?
You can earn credits toward the Scrum Alliance Certified Scrum Developer (CSD) certification.