An Agile Primer

Breaking away from the Waterfall model

The traditional waterfall model of software project management is a sequential development process that has it's origins in manufacturing. Like manufacturing, practitioners believe that each phase of the project should be completed, and perfected, before moving to the next phase. We feel that this just isn't realistic when business priorities and customer needs are constantly changing.

Other reasons that waterfall doesn't quite work for software development include:

  • Requirements “locked” before any production work started
  • Massive documentation development
  • Does not respond to change well
  • Low collaboration as teams work in silos
  • Each team has one chance to get the entire project right
  • Any delays from one team can greatly affect all down stream activities
  • Time to “working software” could be months from project start
  • Stakeholders don’t see mistakes until all development work is done
  • Very focused on sticking to the plan
  • Business needs often change before project is complete
  • Accountability can be hard to trace

How is Agile Development Different?

Agile development concedes that we will never fully understand all requirements in the beginning of a project. The entire process and accompanying engineering practices are built for change. The focus is put on constant collaboration with the business sponsors to ensure that we are constantly prioritizing features, refining the requirements for the features as we get to them and getting immediate feedback as we complete features.

Agile does this by breaking the overall project into shorter, iterative planning and development cycles, called sprints. Each sprint offers an opportunity to re-prioritize, code, test and review and potentially deploy product features.

 

More Benefits of our Agile Process

  • More of a mindset than a specific process
  • Can be adapted to each organization
  • Adapts to change easily
  • Decrease time to market
  • Has been very successful when collaborating with creative teams
  • Increased quality through automated code testing
  • Increased confidence in making changes as the project grows
  • Increased collaboration eliminates last minute surprises
  • Improves designer/developer workflow

Tools & Technologies

Although we specialize in the Microsoft .Net stack for primary development tasks, we use many other open-source and commercial products to ensure we are using the best tools for every step in our process.

Application Development

  • ASP.Net - MVC and Web forms
  • WPF/Silverlight, WCF, C#/VB.Net
  • Web Services – WCF / JSON
  • MS SQL Server/SSIS/DTS
  • Subversion (SVN) / VSS
  • NHibernate (ORM)
  • StructureMap (DI/IOC)
  • Tarantino DB / DB Deploy
  • Redgate SQL Tools
  • Visual Studio + Resharper

Communication

  • Base Camp (Extranet)
  • Development and Staging servers

Automation & Testing

  • CruiseControl.net
  • nAnt, MSBuild
  • nUnit
  • nCover
  • TestDriven.net

Content Management Systems