Agile Programming Professional

Duration: 
4 days
Codes: 
933

Overview

Focusing on the techniques for implementing software with an Agile mindset, this course prepares programmers, developers, testers, and designers to immediately become productive members of an Agile team. Learn to use test-first principles, design and create automated acceptance tests, and apply SOLID design patterns to code. Earn the industry-recognized ICAgile Certification in Agile Programming (ICP-PRG).

Audience

Analysts, programmers, designers, architects, testers and other development team members who want an introduction to modern software engineering skills and UML.

Skills Gained

You Will Learn How To You Will Learn How To

  • Apply test-driven techniques for developing working code
  • Refactor code to exploit SOLID design principles and pattern technology
  • Use mocking libraries to isolate components for efficient testing
  • Remove dependencies between components with Dependency Injection Frameworks
  • Drive version control systems using an Agile branching and merging policy

Prerequisites

Important Course Information Important Course Information Requirements: Requirements:

  • Prior to attending this course, attendees should have attended:
    • Course 918, Agile Fundamentals: Scrum, Kanban, Lean and XP, or
    • Course 1813, Certified ScrumMaster
  • Experience in programming, preferably in a modern (object based or object oriented) programming language
  • A broad understanding of the software development lifecycle

Prior to attending this course, attendees should have attended:

  • Course 918, Agile Fundamentals: Scrum, Kanban, Lean and XP, or
  • Course 1813, Certified ScrumMaster

Course 918 Course 918 , Agile Fundamentals: Scrum, Kanban, Lean and XP, or

Course 1813 Course 1813 , Certified ScrumMaster

A broad understanding of the software development lifecycle Recommended Experience: Recommended Experience:

  • This is a course not just for programmers, but for testers (particularly automation testers), and software designers that then implement their designs.

This is a course not just for programmers, but for testers (particularly automation testers), and software designers that then implement their designs. Software: Software:

  • 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.

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. Course Preparation: Course Preparation:

  • 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.

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: Certification & Exam Information:

  • View the ICAgile Certification & Training Roadmap ›
  • 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 ›

View the ICAgile Certification & Training Roadmap › View the ICAgile Certification & Training Roadmap ›

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 ›

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
  • 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

  • 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
  • Test-Driven Development

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
  • 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
  • Scaling Development

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

Monitoring 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

Thinking about Onsite?

If you need training for 3 or more people, you should ask us about onsite training. Putting aside the obvious location benefit, content can be customised to better meet your business objectives and more can be covered than in a public classroom. It's a cost effective option.

Submit an enquiry from any page on this site, and let us know you are interested in the requirements box, or simply mention it when we contact you.

Upcoming Dates

  • GREEN This class is Guaranteed To Run.
  • SPVC - Self-Paced Virtual Class.
  • Click a Date to Enroll.
Course Location Days Cost Date
London
London4 2000 £2000 2019-03-19
London
London3 1695 £1695 2019-04-03
Onsite
Onsite4 2000 £2000 2019-04-23