In the recent trend of software development and information technology, Agile has been a Buzz word among the developer community.
There are three types of guys, while a new hype gets introduced. First, who really ignores it, as it is being hype, second, who really get excited about it, but really not very aware to utilize the concept properly, and the third, who really don’t care about whether it is hype or not, but cares to utilize and adopt it properly.
It’s very hopeful that the third type of guys with respect to the Agile Buzz word is getting increased among the local developer community in Bangladesh.
When I first heard about Agile, few years back, while starting my software development career, as usually, I digged in the internet to know more about it, and then got introduced with some relevant key concepts, like Extreme Programming, Test Driven Development, Unit Testing, Scrum etc. At first all the concepts seemed very similar to me, and I couldn’t distinguish each other. That’s a tough thing! If you want to utilize any technology, you must have to understand the basics very well.
There are hundreds of new concepts being discussed in Agile Software Development. Understanding Agile Software Development, you don’t have to know and/or remember all the principals, but understanding the underlying spirit in more important. Today I am going to discuss some of them that are being discussed and utilized frequently.
What is Agile Software Development?
So what is Agile Software Development? According to Wikipedia, Agile software development is a group of software development methodologies that are based on similar principles. Agile methodologies a set of project management and engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals.
What is Extreme Programming (XP)?
Extreme Programming (XP) is a software engineering part of agile software development, prescribing a set of daily stakeholder practices. Extreme Programming has been described as having 12 practices.
... and Test Driven Development?
Test Driven Development is one of the 12 practices that are followed by a “Test First” rule, in software development process, where the test cases are being implemented before the actual implementation. These test cases are generally modeled according to Unit Testing methodologies, where a software component is divided into separate logical units that can be tested independently, where possible.
SCRUM? What's that?
And what is SCRUM? This is the Project Management part of agile software development, where a software development is being planned to be released into several small iterations. These iterations are typically from 1 to 3 weeks and called sprint. Before starting software development process, a product backlog has to form, which includes all possible features to be implemented. And before starting each sprint, the product backlogs are discussed to form a feature list to be considered in the upcoming sprint release. These are classed sprint backlog.
So in short, Agile Software Development includes Extreme Programming methodologies as its Engineering part and SCRUM as its project management part, which both encourage the similar iterative manner to provide high quality product in cost effective manner.
The Power of Agile Development
Most of the concepts and principles in Agile Software Development are not new. As a software developer, even you may not heard/studied about Agile Software Development, but may consider lots of the similar principals in your daily professional life. Agile Software Development encourages simpler concepts and ideas so that the participants of a given software projects, can adopt and utilize it quickly.
One of the main principal, that makes Agile Software Development popular, is its iterative nature of product releases. While working for 20-30 software development projects in last 5 years, I have found to customer/owner of software projects become very satisfied while they start to see the progress in just 1-2 weeks when the project started. Agile is different than the typical “Waterfall” based approach, where system analysis, design, coding and implementation is being happened in linear way, but the customer has to wait a long to see the progress, Agile software development is also different from the “Prototype” approach, where the mock prototypes are shown in the early phase of the project, to give the customer in basic idea, but with not recommended practices implemented in coding level.
“Trust” is one of the key factors, which I personally believe is one of the most powerful principal in agile world. During my early stage of professional career as team leader, I have seen developers at my and some other team; often hide serious risk factors during the upcoming software development project, as they didn’t have enough confidence that they will be not able to explain the risk factors clearly or their manager have enough trust on them. This results a serious failure in later phases of the software.
A big success factor in Agile Software Development is, developers always provide the time estimation, which may vary during the implementation phase, depending on the situation and cases. Having a trust on developers, especially on this case, plays a vital role towards the success. For all managers, I request, if you can’t really trust your team member, please don’t work with him, either moving you or him to another team or company. Having a trust on the team members is really helps a lot to make a project successful.
Agile Principal encourages personal communication more than the traditional overloaded documentation principal, which saves lots of time and ability to discover the problems quicker.
There exists a common rumor with respect to software development world, is software developers always have to work on unusual working hours, which is also true for most of the traditional software development companies, however, Extreme Programming practices encourages an ideal 40 hours per week for best production, which also includes 5 hours dedicated to meeting. As a software developer, I also personally believe this is true.
Agile Success Factor: Agile is More About Human Ideology, Rather Machine or Technology!
To be benefited from Agile concept, I think developers and managers needs to take it as an ideology, rather considering it as technology. The very basic concept is, keep it simple, provide the working samples in iterative manner, work with trust and discover the future risk factors by discussing with team members (not just spending hundreds of hours to read and write documentation's!). Why Agile projects are successful? This encourages HUMAN effort and motivation, not on machines! And it's been absolutely proven is HUMAN is the most powerful process in the universe!