An Agile development methodology is essentially just another potential way of applying or approaching Agile project management / development in general. But before we get into specific examples of methodologies, let’s back up and examine what Agile development is.
An Introduction to Agile Development:
Once there was a waterfall. This waterfall represented a linear solution to the problem of how to organise the development of a piece of software. It looked something like this:
This waterfall method of development works perfectly well when a project goes completely to plan, but unfortunately that’s not always the case. What happens when you’re in the testing phase and your client informs you that they want a big change to the functionality? The design has already been completed for the original specification, so now you have the option of starting from scratch, or trying to make this functionality change fit within your tightly controlled product.
As developers started to realise that the real world tends to have quite an impact on the development of any process or product, they realised that a new strategy was required.
They called this new development model Agile.
Agile Development was a phrase originally coined in the 1990s. It described a process that offered far more adaptability than any previous method for putting together a product. Essentially the importance of an agility project is that anything can be changed, allowing for future developments to be easily incorporated within the finished product at any stage throughout the development lifecycle. This doesn’t mean that you don’t plan at all. It is always important to put pen to paper to describe what your software, product or process must do at the end of its development. However rather than simply planning for a finished product, in agile development you must be prepared to adapt your plans based on the results that you find.
Let’s put this into context by going back to the software development example. If your initial plan simply describes what the product will be like at the end of the project, with all bells and whistles included, you will have no way of checking along the way if that finished piece of software is actually suitable for its purpose. By choosing to develop the software in a more agile and modular fashion, you can plan to release launchable products at the end of each development cycle iteration. Rather than waiting until the end of development to test things, you can test as you go, catching awkward bugs as you go and making tweaks to the functionality to ensure it is completely fit for purpose.
The benefits of agile development are obvious, however in order to see success in your project the project manager must be willing to adhere to some key principles:
– Be transparent. Do you want your employees to admit to their mistakes, be willing to discuss any problems and communicate successfully with their colleagues? By being completely transparent and modelling the behaviour that you would like to see in your staff you will start to see it replicated through your workforce.
– Be encouraging. It doesn’t take a lot of time for you to offer a word of encouragement to those on your team. Sincere encouragement will help to make your team more motivated, leading to more success in the long run. Your encouragement may come in the form of empowering those within your team by allowing them to think for themselves when it comes to organisation and independent thought.
– Be adaptable. The whole purpose of an agile development cycle is to recognise that complications often arise in the real world, and to be adaptable enough to work with them. This is also true of the agile process itself! If something is obviously not working for your employees then be prepared to make a change for the ultimate success of the project.
Agile development is a system for managing projects, particularly software development that evolved out of the older system, often referred to as “waterfall software development”. The hallmark of Agile is its “lightweight” approach to managing individual / specific elements of any project. You see, in previous incarnations of software development, intense, stifling micro-management was fairly commonplace. Over time, it became obvious that this older system was not as efficient or personnel-friendly as it could be. Agile is merely a similar but superior system for software development, for all involved parties (including managers, developers, and customers).
Over time, individual methodologies were created to help deal with specific types of problems and projects. For example, some projects might have more stringent requirements or deadlines than others; those projects might be better suited toward RAD development. RAD development, or Rapid Application Development, is a means of producing a more completely functional prototype in a shorter amount of time.
Of the many types of Agile development methodologies, Scrum is arguably the most well known (and perhaps, used). What sets Scrum apart is its system of mini-deadlines / meetings which not only encourage collaboration, but also creates the need for incremental developmental successes. Scrum basically takes individuals, forms smaller groups of developers from them, and then assigns them incremental tasks to complete. At the end of each “task”, all the individual teams are united where results are shared, problems addressed, and the next line of goals, laid out.
Simply put, an Agile methodology is a specific manner of applying Agile techniques and systems of organization.
Some Advantages of Using Agile Methodology
While there are an almost unlimited number of reasons as to why Agile is the preferred method for software development (in lieu of traditional “waterfall” methods), here are some of the most compelling:
Increased visibility across the board
One of the pitfalls of early software development methods was their inability to allow cross-functionality. Often times, solutions to problems don’t uniformly come from the group / department / team that are tasked with working on that specific related area. If someone working in a different area can provide a solution, they need to be able to easily do so. This only increases the potential profits and effectiveness of the entire organization; but this type of synergy cannot occur without increasingly higher levels of visibility (which agile can provide).
Change is inevitable; this is especially true where software development is concerned. The older traditional software development method sought to establish all the core ideas, goals, and directions at the initial stage. The problem is that this approach doesn’t account for problems that might emerge, or the changing goals / desires of the customer. As you might imagine, trying to initiate change at a late developmental stage is very expensive; luckily, Agile allows issues to be dealt with in an incremental fashion so that problems are dealt with early on.
Adds business-related value
Those involved in business usually don’t understand what’s involved in software development, nor do they care how it works; they simply want to know that a quality product that does what it is supposed to is on the way (and when it can be expected). Through the implementation of Agile methods, time tables and deadlines are easily managed. Likewise, business leaders tend to rest easier knowing that there is a quality methodology in place which is capable of producing real results, which can also be routinely monitored.
In keeping in line with adding business value, Agile is also a hedge against big and small risks. Most risks in software development are associated with either missed deadlines or inappropriate use of budgetary funds. For example, if a project takes too long to develop, a customer might decide to terminate, or if the team goes over-budget it might end up making next to nothing in terms of profit for that particular project.