Original Post on 04.30.2008
David Verba (Adaptive Path)
11:00am – 11:50am Friday, 04/25/2008
Presentation: Agile Development Presentation [PDF]
It’s difficult to talk about development these days, especially in the Web 2.0 world, without coming across references to Agile. We’ll explore the broad landscape of Agile and Agile-inspired development going into detail about specific practices. We will also take a look at where these approaches came from, discuss why they’re important, and how you can start taking advantage of lessons learned.
David Verba is the Technology Advisor for Adaptive Path and the Chief Technical Officer of Emmett Labs. His many years of technical leadership and architecture experience cover a broad range of projects and strategies, including Sun, Java, Oracle, and a variety of open source technologies. David served as Director of Technology for WholePeople.com, a large ecommerce initiative by Whole Foods, Inc., and was a core developer for CodeZoo.net, a web site for programmers sponsored by O’Reilly Media. He also provided essential technical leadership to Measure Map, a free web service (now part of Google) that tracks blogs’ traffic stats.
Old method of waterfall to to never question or rethink Functional Requirements. This just is absolutely not appropriate for Web development in today’s world. The Agile manifesto – goal is not to concentrate on perfect documentation but to concentrate on developing software for the users.
12 principles of agile
1. Highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time-scale.
3. Working software is the primary measure of progress.
4. Welcome changing requirements, even late in development. Agile process harness change for the customer’s competitive advantage.
5. Simplicity, the art of maximizing the amount of work not done, is essential.
6. Continuous attention to technical excellence and good design enhances agility.
7. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
8. Business people and developers must work together daily throughout the project.
9. The most efficient and effective method of conveying information to and within a development team is fact-to-face communication.
10. The best architectures, requirements, and designs emerge from self-organizing teams.
11. Build project around motivated individuals. Give them the environment and support the need, and trust them to get the job done.
12. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constatnt pace indefinitely.
* All these key pieces lead to an advantage to your company.
Scrum, Lean, Crystal clear, extreme programming – all different kinds of agile. The key is to have Customer Involvement integrated into your Agile process because its very important to have communication with the development team.
User Stories – the provides the bases of the brief descriptions like
· User should be able to log in…
· brief ideas and flows for the project… Bite size
· developers assign points to the stories to get a sense of the estimation to the stories
· business should look at the stories and the work on priorities
Don’t take the BUG’s and make them stories and assign points to them like stories.
Time Boxes is the length of iterations. In scrum these are called Sprints. If the time boxes are to short then its difficult to get working code working. If the time boxes are to long then it does not work good either.
Sometimes projects need to be worked across a distributed team in which people. Really face to face communications is the best and most effective. If business team is separate from Development team then that is very challenging – need to decide what is the best type of communication. Daily standup meetings should be mid morning. Issues to get resolved quickly. Set up the resolution for bigger issues.
Pair programming – site two people in front of one monitor and keyboard working on the same code base for development. Solving bugs really gets speed up with pair programming. Co owner ship of code is a good thing. Example is fred has worked on shopping cart extensively. If he gets hit by a bus then you are screwed. Not that he will get killed but he might get promoted or go on vacation or just not be available. Valuable approach.
Agile development involved with refining the code and is extensible , bug free and sometimes requires rewrites.
1. Select all
Iteration – build and integrate
· Continuously integrate the code bases for builds.
· Automate this process
Testing – Approaches
· Stupidity driven testing – come across bugs and
· Complete testing framework is the best
· Test driven development
· Behavior driven development
· These tests are written before the code is developed
After product rolls out – how do you document the information around what the product does? Need to add a step for communication of what the product is, how it works and why it benefits the company.
Functional specs… don’t really need, Look at the testing suites that were developed closely.