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.
- Introduction to Agile Estimation, Stephen Forte
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, Steve Bohlen
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.
- Pizza!
- Continuous Integration, Alex Hung
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.
- Refactoring, Mark Pollack
Does your code smell funny? If so Refactoring maybe the answer to remove that mildew smell. Refactoring is a disciplined technique for transforming an existing body of code, altering its internal structure without changing its external behavior. The technique is centered on a catalog of transformations, also called ‘refactorings’, that help you identify common problems in your code and provides guidance to make changes for the better. Popularized by Martin Fowler’s book, “Refactoring: Improving the Design of Existing Code” almost ten years ago, Refactoring is considered to be an essential part of following an agile methodology. This session will introduce refactoring, its relation to agile development, and how to use VS.NET’s refactoring features.
- 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

