Software development is complex business. In order to deal with this complexity, agile practices have been developed to break development into manageable cycles of development called iterations. We examine the use of user stories to gather requirements. We examine ways to automate our build and deployment process in order to produce more frequent releases. Finally we look at ways to implement each of these practices in existing projects.