Improve Quality & Reduce Risk What is Agile Development? Agile development is a software development process created as an alternative to traditional methods. It accounts for unpredictability by allowing for changes to be constantly implemented as the client is provided access to multiple iterations of the product, which is delivered early and often. Members of Agile development teams perform various duties and self-organize with each other in a way that encourages adaptation, flexibility, the evolutionary development of the project, and the frequent delivery of pieces of working software. For the client, this means that you are able to change your requirements for the project as you see pieces of it completed, and those changes are planned for as part of the Agile development process. Knowing what software development processes a developer favors can help guide your decision making when deciding which agency to partner with. An example of a popular Agile framework is Scrum. In Scrum, the Product Owner begins the project by creating the product backlog, which is the prioritized list of all the project’s features and requirements. Then, the team begins planning the first “sprint” (we call them epics) by pulling items from the product backlog to create the sprint backlog. Development begins during the first sprint, which normally lasts for about two weeks, and at the end of the sprint there should be a functioning piece of software to present to the client. In Scrum, team members have specific roles; the ScrumMaster is responsible for keeping team members on task, and everyone meets daily to discuss progress in what is called the "Daily Scrum" during sprints. After each sprint the team reviews the work that has been done, and plans the next sprint by incorporating client feedback and selecting more items from the product backlog. Why it Makes Sense Shortcomings in Traditional Approaches Why the need for non-traditional approaches to development projects? Traditionally, software development has been treated like something it wasn’t: manufacturing. The linear approach developed and used with great success by titans of industry like Henry Ford are best suited for products where there is a known and quantifiable finished product. When building a car, it is known exactly how it should turn out, how each individual part will function as part of the finished product, and what each person involved in the process will do to put it all together. Not so in software development, where each project is unique and requires adaptation to unpredictable challenges. In software development, projects are sometimes cut short before they are finished by deadlines or budgets. While projects will ideally end when they are completed, in traditional development models projects cut short may not have important aspects completed. Agile development ensures that the most important work is completed and functioning first. Agile is just one of many non-traditional approaches that has popped up over the years in response to these shortcomings. Agile Scrum Masters Agile Development at Clarity The development team at Clarity Ventures is currently moving towards a more Agile environment, thanks in part to our growing team. Agile development is very difficult with smaller teams, so previously Clarity has mostly used only certain aspects of Agile. For example, a mainstay in the process is the frequent delivery of working software to the customer. It is important to Clarity that the client be involved in the process and feel welcome to give feedback that may change the nature and scope of the project as it develops. As our team grows and as clients and projects dictate, Clarity will continue to implement more Agile processes. We tend to use a hybrid process that involves a development team working in a series of overlapping phases or “Epics” with built in feedback loops for refining delivered feature sets. An example of what this would look like in a project with three feature sets: Define the project: this occurs before beginning development, with the creation for the product backlog. Epic 1: Development team stands up the project and begins developing its framework. The first phase might include the DNN install, creation of the database, dropping in the eCommerce module, and/or creating the skeletal framework of the site pages. Epic 2: Development of feature set A (as an example, this feature set might be quote functionality for the site), QA of Epic 1 items, internal and external (client) feedback on Epic 1 and feature set A. Epic 3: Development of feature set B (for example, checkout functionality), refine feature set A, final push of Epic 1 items, second QA and internal/external feedback on feature set A and initial QA and feedback on feature set B. Epic 4: Development of feature set C (for example, development of static pages), Final push on feature set A, second QA and internal/external feedback on feature set B and initial QA and feedback on feature set C. Epic 5: Final push on feature set B, QA and internal/external feedback on feature set C. Epic 6: Final push on feature set C, QA and internal/external feedback on fully delivered project, final push, development team project feedback for improvement on future projects. Is It Really Agile? Potential Obstacles and Alternatives If there were no downsides or potential difficulties, Agile development would be the only process developers used. In reality, Agile development is difficult, especially in the early stages when the process is disruptive to established norms in a development team. Those who are serious about doing Agile might say that unless you are following the process exactly, you are not doing Agile. Strict adherence is a big commitment that few companies are willing to make. At Clarity, we take advantage of aspects of Agile development, while leaving room for other processes as required by the client or the project. We are also looking to become more agile in the future. While we could devote entire articles to each of these, here is a very brief overview of some of the other methodologies that might be incorporated into your development project at Clarity: Waterfall: this is a sequential development system which occurs in phases, for example: specification of requirements → software design → implementation → testing → integration → deployment → maintenance Iterative and Incremental Development: as the name suggests, this is a combination of iterative and incremental design, commonly used in larger projects. The software is developed in repeated iterative cycles, in small incremental segments. Extreme Programming: A type of Agile development process which consists of feedback loops of coding, testing, listening, and designing. Incremental Funding Methodology: IFM combines the usual software development tasks with project management strategies. Increments of the software are developed and delivered to the client in parts referred to as Minimum Marketable Features (MMFs). Agile Specialists Clarity Can Help When deciding on a development company to partner with, it helps to know how their development process works. You want to be sure that your feedback is welcome and expected, and that the scope of the project can evolve without setting it back. At Clarity, we work with you to determine how the development process should occur. Our advanced developers can customize our Clarity eCommerce™ platform to work with CRMs, ERPs, content management systems, and more. Versatile and scalable, Clarity eCommerce™ with Clarity Connect can grow with your company without compromising security or speed. For a free quote, contact us today!