Agenda
- Registration and Welcome
- Introduction to Agile, Steve Bohlen
A high-level introduction to Agile concepts and values from the software developer's perspective; this session will introduce the principles and practices at the core of the Agile approach to software design and development that we will explore in greater detail during the following sessions throughout the day.
- Refactoring to a SOLID Foundation, Mark Pollack
This presentation will examine the five key design principles used on agile projects and how to use them to build out an adaptive system over several cycles.
- Introduction to Agile Estimation
We’re agile, so we don’t have to estimate and have no deadlines, right? Wrong! This session will consist of an overview of the concept of agile estimation and the notion of re-estimation. We’ll learn about user stories, story points, team velocity, how to apply them all to estimation and iterative re-estimation. The lab will consist of an estimation project and doing a round or two of "planning poker".
- Test Driven Development, Alex Hung
One of the foundational concepts of Agile software development is ensuring that your solution is loosely-coupled, highly-cohesive, and able to respond easily to changes; in this session we will explore the fundamentals of unit testing and their application through the practice of using TDD to evolve the design of your solution such that the results are both testable and flexible in the face of changing real-world requirements.
- Continuous Integration, Erik Stepp
Which would you prefer each morning when you get into the office; having to fix compilation error, failed unit tests, etc., or get right down to coding and provide value to the business? Having a Continuous Integration (CI) process setup in your development environment can mean huge gain in productivity. In this session, we explore the benefits of CI and why every development team should have one.
- Dependency Injection, Mark Pollack
Dependency Injection (DI) provides a simple, but powerful, approach to application configuration. While thoughts of NameValueSectionHandlers in App.config might come to mind, DI is focused on managing the relationships between components in your application and not simple strings. Instead of directly creating collaborating objects in code, Dependency Injection containers take on that responsibility. As a result, an application that uses a DI container for configuration is easier to test and evolve. This session will introduce dependency injection and demonstrate it in action using Microsoft’s DI container called Unity.
- Retrospective, Erik Stepp
- Wrap up