In our first article on Agile Software Development we told you what you need to know about it (read here) and why it works. The pool of ASD methods and practices is immense, and each company uses an adaptation of it that best suits them. We explored the vast territory of agile methods and practices, specifically those used at Promobi Technologies. In the previous article we discussed an overview of the Scrum method (read here). In this article we will delve into a few other methods and practices applied for our various projects and development strategies.
Adaptive Software Development (ASD) is another iterative method of development which focuses on continuous adaptation of the project. It replaces the traditional waterfall cycle with a series of speculate, collaborate and learn cycles. The speculate part refers to the planning part of the project, and collaboration refers to the efforts taken to create a balance between the predictable parts of the environment and adapting to the uncertain parts. The learn cycle is based on short iterations of design, build and testing.
Extreme Programming (XP) is an agile software development method which contributes to frequent “releases” - working prototype, of the product in short development cycles. This method is meant to improve productivity and introduce several checkpoints at which new customer requirements can be implemented into the project. There are multiple elements and practices of Extreme Programming; some of the important ones, also used by us are: Pair Programming, Test-Driven Development and Continuous Integration.
Pair Programming is a technique in which two programmers work together on a single workstation. One is known as the driver, who is responsible for writing the code, while the other known as the observer, pointer, or navigator, reviews each line of the code as it is being typed. The roles can be switched frequently between the two. This allows the driver to focus entirely on the tactical aspect of writing the code, while the observer addresses future problems and areas of improvement. The benefit of this method is that both the developers bring different experiences to the table, as well as stand at a different positions in the project. In an attempt to agree on goals and plans, they must thoroughly negotiate any course of action and in doing so, consider a much larger number of ways of solving the problem. This results in a significantly improved design and quality of the product.
Test Driven Development (TDD) is process with involves the repetition of a very short development cycle, in which the developer first writes an automated test case keeping in mind the desired function or improvement, and then produces the minimal amount of code required to pass the same test. This method encourages simple designs with a fail proof confidence. Continuous Integration (CI) is a practice in which the project is split into smaller branches, each with a functioning part. The base of the project on which development progresses is known as the trunk or the mainline. In this practice the developer merges all working copies of the project with the mainline several times a day.
Feature Driven Development (FDD) is another iterative and incremental software development process which merges several industry-recognized best practices into one. These are all driven from a client-based feature perspective. The aim of FDD is to deliver tangible, working software in a timely manner to the client.
Kanban is a method in which the entire process, from definition of the task to its delivery time, is displayed visually to all participants of the project, and the team members pull out work from a queue. The term ‘Kanban’ originates from Japanese and roughly translates to ‘signboard’ or ‘billboard.’ The idea is to visualize the work flow, lead using a team approach and to learn and improve continuously throughout the development process. It starts with the existing process and strives to ensure incremental and evolutionary change with leadership at all levels.
Velocity Tracking is basically a tool often used in Agile Software Development to track and measure ‘velocity’. The velocity is calculated by counting the number of units of work completed in a said time interval, determined at the beginning of the project. Keeping a track of velocity helps the team give a practical and realistic estimate of the amount of work they can complete in a given amount of time. The unit of work is chosen by the team itself and can be anything tangible or abstract. Each task is then valued in terms of the chosen unit.
Agile Testing follows the principles of Agile Software Development and recognizes testing as an integral part of the development procedure rather than a separate phase. Thus agile testers elicit examples of desired behavior from customers and collaborate with the development team to turn those into executable specifications to guide coding. Thus, testing and coding are done incrementally and iteratively to build up the feature to the desired quality and value before releasing to production.
The large number of proven Agile Software Development methods available can be overwhelming for a beginner. Keep in mind that no method is right or wrong, and that not all methods can be used at once for the same project. You do not need to adhere to the same method consistently; depending on your project, client requirements and team, you can select and experiment with different methodologies. Once you have selected which method you want to go with, stick to it. You can adapt the chosen agile methods and practices according to your business and project, as the name itself states.
Written by: Dipika Asnani, Digital Marketing & Content Writer at Promobi Technologies Pvt. Ltd. www.promobitech.com