An introduction to agile development
Agile development is ordinarily used in the software design industry as an alternative form of project management. It’s utilised instead of traditional ‘waterfall’ methods, which have been criticised for being too rigid and heavily regulated. Whereas waterfall methods may stifle the development process, agile will encourage creativity, innovation and quick responses to unpredictability during creation.
Traditionally, development usually goes through stages in a very linear format, starting with planning and ending with testing. The people responsible for each stage wouldn’t have much communication and would only be responsible for their stage of the process.
Agile is the complete opposite by design. All stages work together with a real sense of team unity. Communication between the various different ‘stages’ is a key component and the development is regularly appraised and dissected every few weeks during increments.
Instead of an assembly line concept, whereby there are strict phases in the development timeline, agile is split up into frequent increment periods. The aim is to have a fully working model at the end of each increment. This way the software can be steered in a different direction if necessary.
Increments, also known as iterations, provide the customer and stakeholders opportunity to witness tangible updates. This will give customer satisfaction and clearer reflection on the return on investment.
The time frame between increments can vary between one and four weeks. It’s important to the development that they’re frequent. This is due to the absence of real long-term planning. The regularity of increments gives the developers clarity and more chance to think on their feet.
The team are cross-functional and work closely together on all aspects of the software development at the same time.
This includes planning, analysis, design, coding, unit testing and acceptance testing. There is no hierarchy within the team and they will be coherent, working towards the same goals and aspirations. The selection process for the right team members is crucial for agile development, as it’s all about communication and unity.
The cross-functional team will have a customer representative. This spokesperson will be selected by the stakeholders and will liaise between them and the team. Questions that arise from developers leading up to the increment will be answered by this representative. They’re responsible for ROI (return on investment) and will have ultimate control on the direction of the project. This is usually decided with the stakeholders.
Here’s a brief look at four of the principles of agile development that will give you a better understanding of its objectives.
Embracing change in circumstances is a big part of agile development. Being flexible and fast thinking is key and the team should be prepared for modifications, even in the late stages of the project. The marketplace is constantly changing and is unpredictable.
Fully Functional Software
The team will have a clear goal for each increment and although working together to achieve a fully working piece of software isn’t easy, it’s extremely beneficial to the project overall. It gives everyone involved in the project a clear vision. Working software is the main objective and it’s the primary method of measuring the progression of development.
It’s imperative the relationship between the business people and the development team is strong. There must be a constant line of communication and co-operation from both sides at all times.
Agile is built around motivated and trustworthy team members. There is a daily ‘stand up’ which gives each team member the opportunity to discuss what they achieved the day before and what they’re currently working on. This is essential to ensure each member is completely up-to-date on all processes of the development and it encourages team morale.
Agile development does set teams and organisations a real challenge and it can be hard to put into practice. There are many different modes of agile development techniques such as Scrum, Crystal Clear Methods and Adaptive Software Development.
If you’re thinking of adopting this way of managing, do some research and find the one that best suits you.