What is Agile?
What is agile
Software folks, distressed by the continual dilution of their energy commitment and talents, caused by dysfunctional ways of working, dysfunctional management, dysfunctional clients, took matters into their own hands and…. uncovered better ways of developing software by doing it and helping others do it
Back in 2001 seventeen “lightweight” methodologists got together in a ski resort in Utah…they name the new movement agile and the agile manifesto was born!
- established by four values
- grounded by twelve principles
- manifested trough different practices
Agile Manifesto Values
individuals and interactions over processes & tools
working software over comprehensive documentation
customer collaboration over contract negotiation
responding to change over following a plan
As mentioned in the agile manifesto, it is believed that more value will get if you focus on the left part of each rather than on the right one. It is needed to have the right processes and tools in place and you need to focus on the way people interact and collaborate in producing a valuable software for their clients. Documentation is needed and as long is provides value to your organization and your customers. How often do you collaborate with your customer? Have you ever challenged that? Did you see value of frequent interactions with your customer? Or do you prefer to follow a contract and try to explain and fire fight whenever sth is being changed? Have you ever observed your position as a customer when buying products? Are you willing to change and meet your customer needs? Are you constantly aiming to deliver value for your customer? Agile embrace changes and the various frameworks are designed to help us doing that. Change some time is hard, but learning to change is a good start.
Agile Manifesto Principles
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
Welcome changing requirements, even late in development.
Agile processes harness change for the customer’s competitive advantage
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale
Business people and developers must work together daily throughout the project
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation
Working software is the primary measure of progress Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely
Continuous attention to technical excellence and good design enhances agility
Simplicity—the art of maximizing the amount of work not done—is essential
The best architectures, requirements, and designs emerge from self-organizing teams
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly
Few people have spent time to understand the value behind each principle or even read them! Worth to mention that each one principle could trigger lots of changes in any organization. Understand them and work on areas that could benefit your organization!
Try this, organize a workshop on agile principles and values. Read each principle and highlight those words that you believe will return the most value in your organization. Discuss why these words are important, how these principles are reflected in the framework you are using, what you need to do to get the most value, how your organization, your team your product will benefit. Create an improvement prioritized board with the areas that you would like to work first considering the cost you need to invested compared to the value you will gain.
There is a big number of practices that someone could apply in an agile environment. A map of the practices as created by the Agile Alliance could be seen in the image below. The combination (a simplification) of various practices, results in frameworks like Scrum, XP, e.t.c and even your own custom made framework.
Follow ShuHaRi! This name comes from Japanese martial arts and it is related to the way we learn new techniques. Shu is the beginning phase where you learn a technique by following your instructor. If there are multiple ways to perform a task follow the one is suggested by your instructor. Ha is the point in which you are able to understand the underlying theory and principles behind the specific technique and you could integrate other ways that you might have learned for the same technique. Ri is where you learn by reflecting on your own experiences and you are able to adapt the technique taught and used based on the learning you have gained. This should be the approach with the selected framework as well. Try first to learn it and practice as you’ve been taught, understand it in depth, brake it and make it meet your own needs!
Agile benefits, barriers, concerns & more
According to 9th annual state of agile, answered from almost 4K agile practitioners, agile development is getting more attention from business. Even more and bigger companies are scaling and embracing agile as part of their larger vision, aiming to deliver software faster, easier and smarter.
Reasons for implementing agile
Agile methodologies used
Common agile practices used
Leading Caused for Failed Agile Projects
Where to apply an agile methodology
Agile does not fit to everything…or you might not get the most benefits as described above. Stacey Matri is commonly used in agile training to explain where agile methodologies are most appropriate. According to that matrix, whenever you are dealing with complex or close to chaos project it has been proven that it is better to follow an iterative approach (reflect whether you are on track with your goals, and adapt your plans accordingly) in building your product.
- A simple project could be seen one that it is clear what needs to be done and how it will be done (it has been done before…)
- A complicated is a project that there is some uncertainty in either what will be done and how it will be done
- A complex or chaotic project is one that there is alot of uncertainty either in requirements or the technology being used.
Traditional defined approaches with plans, allocations e.t.c work well for simple and complicated projects.
So prior moving to agile, think of what problems you are trying to resolve!
Agile methodologies are based on empirical process control methods. A few important elements of such methods are visibility (transparency), inspection and adaptation.
- Visibility means that all aspects of the process that affect the outcome must be visible (transparent) to all involved parties (stakeholders)
- Inspection requires that various aspects of the process are inspected frequently so that to detect those that need to be changed
- Adaptation requires that the process is adapted based on inspection outcome
Agile methodologies in other words are following the iterative Deming cycle (PDCA) for the continuous improvements of processes and products PDCA cycle
On the other hand there are the defined process control methods in which every piece of work is completely understood. Havind said that, in defined processes, given a well defined input the same outputs are generated, or whenever a defined process is started and is allowed to run until completion the same results are expected.
Agile vs Waterfall
As said already, there are benefits from agile and waterfall methodologies that are strongly related to the context being applied. Nevertheless there are some benefits in terms of business value, risks, transparency, adaptability related to project duration between the two approaches as per picture below (green – agile, red – waterfall)
Due to iterative nature of agile sw development the business value could be visible as from the first iterations sth that is not happening to waterfall sw development where all business value is visible at the end of the project (including surprises!). The iterative approach also reduces the identified project risks whilst in waterfall projects even if risks are identified soon it is required sometimes quite a lot of time until are closed. Transparency is at the heart of agile which means that the usage of all artifacts and events of various frameworks enable the transparency of the project. In waterfall approaches there is a pretty clear view at the beginning of the project and at the end but quite cloudy during development. Finally the iterative approach and the close customer collaboration gives a flexibility to adapt and absorb easily changes throughout the whole project duration whereas in waterfall sw development it’s quite difficult to handle changes request especially when you have even passed the design phase of your project.
In few words
Agile, as Bob Marshall stated in one of his recent post, could be seen as a collection of various shared beliefs (continuous improvement, learning, trust, iteration, early and frequent feedback, inspect and adapt, self-organization, iteration, meeting needs, anticipate and embrace changes, diversity, theory Y, healthy relationships e.t.c) aiming to a more effective collaborative knowledge work!
And Agility could be seen as the state in which people, teams, organizations are able to easily adapt in changing environment, deal efficient with complexity & uncertainty and meet their own and their customer needs!
Remember also that agile values and principles as Gunther Verheyen mentioned are agnostic to scale! Keep that in mind whenever you are thinking of any agile transition or implementation!
If it happens to be proud of your agile implementation reflect on agile values and principles! I am pretty sure that you’ll be proud as well that you have understood in depth and you have worked a lot in all these set of values, principles and beliefs!
Post & Articles