This Agile programming course prepares programmers, developers, testers, and designers to immediately become productive members of an Agile team by focusing on the techniques for implementing software with an Agile mindset. Learn to use test-first principles, design and create automated acceptance tests, and apply SOLID design patterns to code.
Plus, pass the post-course exam and earn Certification in Agile Programming (ICP-PRG) from the International Consortium for Agile (ICAgile).
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.
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.
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
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
Prioritising 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
Minimising bugs through automated programmer unit testing
Utilising 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 organisations design learning experiences that create an agile mindset and continue the agility within the organisation.
Can I earn a Certification in Agile Programming online?
Yes! We know your busy work schedule may prevent you from getting to one of our classrooms which is why we offer convenient online training to meet your needs wherever you want. This course is available in class and live online.
How does this help me achieve ICAgile Certified Expert In Agile Engineering?