Agile software development

Agile software development

Agile is the word you will hear from software developers from around the globe. Everyone claims stuff like “We’re doing agile” “We work totally in agile” “Agile is our priority”. Well, for one, someone here seems to be missing a tiny detail.

Table of contents

  1. Flexibility is a future of software development
    Inclusive, collaborative methodologies work best
    Iterations – doing it in stages means faster results
  2. Changes – yes, chaos – no – The Agile Manifesto
  3. Equality, with moderation in agile process management
    Working together rather than doing your own thing – agile team is more efficient
    All pieces of the puzzle are important to set up a proper agile development process
  4. Mutual understanding
    The closer to the finish line, the clearer the path
  5. Agile development values put people first

Agile is not a noun. Sorry to state the obvious, but adjectives play a rather important role in the language, and in case of “agile”, especially in regards to development, this role is a crucial one.

Flexibility is a future of software development

For the software development to become an agile process, certain conditions must be  met. The priorities of the process change from rigid, with roles thoroughly defined, into flexible and collaborative.

Agility requires that all those involved in the process of development collaborate on more or less equal level, with continuous interaction and communication being the cornerstone of a successful project  – see also a role of SPoC in Scrum Rules.

>Inclusive, collaborative methodologies work best

An agile process can adapt various frameworks for its needs, but the choice must be made among methodologies that are inclusive of persons involved. For the needs of any development project we assume that main roles to fill are:

  1. Product owner,
  2. Project manager,
  3. Dedicated team of developers.

The product owner has an important role of active participation in the project. He sets his requirements, expectations and propositions, manage resources, communicates them to all other parties, which is then followed by an open discussion between them as to possibilities, projected issues and proposed solutions.

>Iterations – doing it in stages means faster results

Depending on the complexity of the project, stages of development are established, with certain general goals to be achieved in each. They get more detailed at the beginning of the stage, but should remain constant throughout it.

The more involved you are as a product owner, the better your vision can be realised. One little detail is worth noting here. All the changes you try to introduce during the development process require time and work do develop.

Changes – yes, chaos – no – The Agile Manifesto

With software, these don’t happen overnight, and often more than one person is required to actually make it happen. Adding even a smallest detail could mean a lot of extra hours for the developers, so it’s best to stick to ideas and requirements agreed at the start of a given stage of works. As agile development as the process is, it shouldn’t be made chaotic. At the start of a stage, set the goals and stick to them. Trying to change stuff mid-stage is frustrating to all involved, and usually ends badly.

Read more about Agile Manifesto Principles in our next article.

Equality, with moderation in agile process management

The project manager or a team leader is the relay between the product owner and the team. She serves as the organiser, gatherer of ideas, but most importantly, she is a channel of communication and a moderator between the product owner and the development team. Agility of the process doesn’t mean it’s a free for all situation. A team leader must decide how to approach certain issues and how to schedule tasks, so the project doesn’t descend into complete chaos of new ideas and constant changes. Adjustments are often required, but constant reinventing is both costly and frustrating for all involved.

The team are the people who will create your app. For the needs of an agile process, custom agile teams should be created according to the requirements of a given project. When those are met, the team will work on all aspects of the project management in a collaborative way. Suggestions of solutions may come from any member of the team, not necessarily the specialist in a given field. This way high level of collaboration is established within the development team.

Working together rather than doing your own thing – agile team is more efficient

The people who are developing your project cover all required areas of expertise. They will cooperate closely with each other, and adjust their approach according to needs. The cooperation among team members who understand and work according to the principles of agile approach, will work differently to a classic team. They will all contribute not only their knowledge, but help each other solving problems and suggesting alternative approach to tough issues. The decision making process will be collaborative, not hierarchical.

All pieces of the puzzle are important to set up a proper agile development process

The flexibility and adaptability in the collaboration between the three is what makes the process agile. For a product owner, the ability to adjust to recommendation puts his project on the right track. Same goes to the project manager and the team, who adapt to the requirements (often changing) of the product owner and together find most suitable approach to fulfill them. If anything needs clarification, all those participating in the project make themselves available and communicate regularly.

Mutual understanding

Developing software according to agile values and principles assumes that all parties involved are on the same page from the beginning. The product owner will see a lot of questions coming his way, regarding software requirements, specifications, scope of work, time requirements and many others. The team needs to know what the general goals are for the whole project, but specifics are established in stages at the start of each iteration.

The collaborative nature of agile production requires for the product owner to be most engaged in the process at the beginning of the project, at the start of each stage, and whenever important things happen.

The closer to the finish line, the clearer the path

Estimations of time and costs for the agile development of a project will initially seem quite ambiguous. This may be stressful, but gets quickly alleviated by tangible effects of work. Agile software development produces working pieces of software very quickly. Within first weeks, we can get a couple of simple features or a logging screen up and running.

The further the project progresses, the more accurate estimations can be done regarding the remaining work.

After the initial weeks of intensive work, active involvement of the product owner is greatly reduced. If few or no major changes are needed, the product owner is informed about the progress and shown the effects of work for approval. He still attends meetings at the start/end of each iteration to approve the completed work and plan the next stage.

A few weeks before projected projects’ completion, the software should be complete and ready for final testing, approvals and launch. Introducing changes at this stage is still possible, but this could mean delays or even adding new iterations to the project, depending on how significant the changes are. The product owner should be made aware of this fact and prepared for the consequences of last minute doubts.

Agile development values put people first

Agile development is all about flexibility, collaboration and productiveness. The values of agile approach encompass putting people and interactions over processes and tools. It is about producing working software or parts of it, rather than putting together volumes of documentation. Its’ collaborative spirit makes the customer part of the process, not just a signatory of a contract. Following a set and rigid plan gives way to responsiveness to change – flexibility that allows perfecting the product according to expectations.

Although tools, processes, plans, documentation are still required and used, the preference of an agile development is to treat them as secondary. Agile development produces highly customised, bespoke products and give all those involved great satisfaction and feeling of being part of something rather than just “doing their job”.

5 (100%) 3 vote[s]