Tuesday, May 7, 2013

Our First Post: Why Agile?

Byte Shredders would like to welcome you to our blog and thank you for wanting to know more about us. We will use this blog to help keep you informed on what we are doing, give you a glimpse of how we operate, and see some of our work. With that said, I believe our first post should discuss the Agile methodology and how we are using it.

Basically, Agile software development is a way to manage the production of software within a team so that deliverables are produced swiftly. The Agile Manifesto has four important values:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Not to say the values on the right are not important, but typically it is more important to follow the values on the left. For example, a customer will not want to read through a 200 page document on something that doesn't work. They would rather have the software work than have to read a manual at all! 

There are also 12 key principles to follow:

  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  • Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  • Business people and developers must work together daily throughout the project.
  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • Working software is the primary measure of progress. 
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Continuous attention to technical excellence and good design enhances agility.
  • Simplicity--the art of maximizing the amount of work not done--is essential.
  • The best architectures, requirements, and designs emerge from self-organizing teams.
  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

So what are we doing with all this? We've been using the Scrum methodology to help us follow these values and principles. We put together a backlog of user stories or tasks, prioritize them, assign them, and then perform a sprint to get the most important tasks done. Along the sprint we discuss daily what we've gotten accomplished, what we plan to accomplish that day, and discuss any hurdles we may be having. Once the sprint is complete, we have a deliverable! The customer can then see the progress of their project and inform of us any changes they feel needs to be made. We believe that's a lot better than just simply dropping a giant solution on them for them to sort through months later, only to have to change things around so that it fits (all while the customer waits and waits to get a usable product). 

Using these methods, we can quickly 'shred' through projects and get them delivered. 

Other Resources:
All About Agile - http://www.allaboutagile.com/