I recently watched a video presentation of Alistair Cockburn, who is a fairly major name in the Agile Development Community. It pushed me to put this entry together for future discussion that I intend to kick off (at least on this blog & the few readers I have). I have worked on the following Agile Projects:
- My most recent project utilizing Agile Processes was at Webtrends for my stint in Engineering late 08 and earlier 09. I worked on a team to build web services for Webtrends data access for customers.
- The team consisted of three people, one being a team lead. Our primary use of Agile was somewhat limited as it was a new process for the team. We performed continuous builds via Team Foundation Server and test driven development when feasible. We were limited in using TDD to some degree as a large part of the work was configuration based for server configuration and required a large degree of integration tests more than isolated unit tests. In addition to TDD we also utilized user stories, burn down charts, and to some degree kanban style prioritization. The project was a rocking success, and is now offered as a Webtrends offering and documented, discussed, blogged and continuously maintained and advanced. Even though I am on a different team now working directly with customers to implement integrations with these REST based web services, the engineering team continues forward with more Agile practices being used daily, including paper prototyping, furthering the unit testing majority of the teams, and more.
- After* and before* the Webtrends engagement I helped to initiate Agile in a development group of 4 people at Axiom Group (now Axiom EPM) to build a Excel UI to SQL Server for accounting data storage, manipulation, analysis, trending, and retrieval. I helped get the group kick started, and the software that was released is now called Axiom Planning.
- The team of 4, split into two pairs, and we did pairing & individual development. Other agile software methods used were rapid learning, extensive test driven development, continuous integration (w/ TeamCity), unit tests in builds w/ good coverage (the logical kind), mocking (for databases), self organizing team, paper prototyping, and direct daily communication with customer representatives. We also as pairs and as a team used refactoring heavily. In addition heavy utilization of design patterns and domain driven-design was used in close collaboration with the customer.
- In 06 & 07' I worked with Centerstance Consulting on a project which started Waterfall and moved to Agile during the course of the engagement. We started off a team of 5 developers, grew to about 16 at one point, and shrunk down toward the completion of the overarching architectural design to about 8-12 again.
- The teams ranged from 4-5 people per team with a team lead, to two teams with two sub-teams split with a team lead each doing their own respective stand ups (SCRUM style), a continuous integration was setup, unit & integration testing was eventually put into place across a wide spectrum of the code base. Mocking, faking where appropriate, and general unit testing took place, with business analysts acting as customers.
- For Ghallt Enterprises I served as CTO with a business partner, leading efforts among remote teams, utilizing Agile practices (yeah, remotely, I know, it seems crazy) to develop social media software. Methods included continuous integration, build management, pair development, code review & refactoring on a regular basis, and other practices. Even though this is a company that a friend and I started, it served to provide a catalyst for me to push forward extensively into Agile Processes. The level of progress, quality of code, and other characteristics that are inherent to effective Agile Processes were of a level that left no reason to endeavor toward traditional style project planning or Waterfall style approaches.
I?ve worked with others to mentor and experiment with pair development, continuous integration, unit testing, and other processes to enhance and streamline the software development life cycle.
* I write after and before Webtrends because I left Webtrends in 08' to work the Axiom effort, upon kicking that off, I then headed back to Webtrends to work on the then new Web Services with REST Architecture Project.