Wednesday, October 2, 2013

AGILE: Sprinting Your Way to Productivity

Agile Development LifecycleIt seems that the tech world is inundated with all sorts of buzz-words these days, but many are truly revolutionary and useful ideas. One of the most well-known of these is of course the "cloud" and "cloud computing," but while many companies do leverage this terminology just to seem like they have the hot new commodity, cloud computing as a whole has revolutionized how we do things. A lesser-known but equally revolutionary framework would be Agile. It has challenged decades-old methodologies for software development, namely what's referred to as "waterfall," and come out on top within many companies.

Agile at its core is just that. It emphasizes breaking projects into smaller pieces that can be easily managed and completed in short intervals known as sprints, which typically tend to be one or two weeks long. Each sprint involves completing small components of a much larger project, including testing which is arguable the biggest weakness in waterfall as it can sometimes take longer than the project itself to complete. Agile encourages creating the tests before any development has actually begun, which allows the product to be tailored to the tests rather than the other way around. The tests themselves are created directly from user stories, another key component to Agile.

Agile emphasizes constant communication between all parties involved in a project. This includes management, developers, the customer, and often even end-users. User stories are created that detail exactly what each component should do and why. From these the development team decides on manageable pieces to work on and, as mentioned before, tests that will ensure these requirements are met. While waterfall obviously also must integrate input from the customer, it is generally done at the beginning and a set of specifications are then created from it and the customer has little input until the final product is finished, hopefully ending up something like what was desired.

Since Agile uses short sprints to break the project into smaller components, the customer is constantly giving input and evaluating the work as it progresses. This alleviates the gap between customer wants and the realities of development. Constant input from the customer helps developers understand exactly what is needed and address things that are just not feasible in a timely manner, allowing the product development to be modified before it becomes too difficult to do so. Should a component not meet the customer's expectations or needs, the work lost to redo or modify it is minimized to at most a couple of weeks (the duration of a sprint). As the customer is constantly involved in the project, it also becomes easier to foresee uncertainties about the customer's needs and simply clarify before work even begins.

Agile has been adapted to many different types of projects even outside of the development community. It is a very useful framework and while not necessarily always the answer, it is very smooth and efficient when it is viable for a project. At the very least it is a powerful tool one can add to their list of skills by finding out more and trying it out. For more information, check out a website about Agile.

No comments:

Post a Comment