In my opinion, this statement is the most often misunderstood statement. Agile is sometimes criticised because some people interpret this statement as a suggestion to act without any plan at all. I strongly believe that it does not say more than “do not blindly follow the plan when reality around you suggests doing something differently”.
Agile Principles
The Agile Manifesto signatories also defined 12 principles which explain in detail which practices are most helpful in creating software in accordance with the Agile philosophy. When summarising and explaining these principles, I usually aggregate them into three major groups: Customer, Team and Practices. Each group focuses on a different aspect of Agile.
Customer
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software - Here, the focus is on demonstrating tangible results (even really small or medium size results) as early as possible, but with continuous updates. If we do not have a good and frequent feedback loop from our customer, then the longer that development work goes on (without feedback), the more likely it is that the results of development work will differ from what our customer expects. It is much more effective and efficient for both the customer and service provider to be constantly aligning changes in the software to the real needs of the project. Likewise, in many cases, it is impossible to define all the important elements of a project at the start. Inspection, which may lead to adaptation, would not happen without early and continuous delivery.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage - We not only respond positively to change, but genuinely welcome it. Changes in the face of projects which include a high degree of uncertainty give us the opportunity to further adapt, and to find the most relevant solution.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale - This is an extension to the “early and continuous delivery of valuable software” principle, but makes it clear that continuous delivery must take place fairly frequently. Of course, it is important to not get carried away and have full-scale inspections every day because, in that case, no actual work will be done! However, in principle, more inspections mean more opportunities to adapt and therefore to reduce waste. Putting effort into going in the wrong direction really doesn't make sense for anyone!
- Working software is the primary measure of progress - This is an extension of: “Working software over comprehensive documentation”. When your goal is to have working software, a product, a method or a model, you must measure your progress against that goal, and not against any other metrics, for example, the number of documents/ lines of code/ experiments conducted / ML trainings done.
Team
- Business people and developers must work together daily throughout the project - If we want to deliver results frequently and continuously, and if we want our progress to be measured primarily in terms of working software, product, method, or model, then we must have instant (at least daily) access to business people so that developers can reach out for information or decisions.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done - This is one of the most important principles. Following all the other Agile principles will make no difference at all if the development team is not highly motivated and skilled. When such a team fully understands the aim of the project that they are working on, are empowered to take decisions, have the necessary tools and are genuinely interested in the project, then they need little more. Certainly, there is no need for a deep hierarchy, onerous administrative tasks or micro-management. There are many possible reasons why a project is interesting to the members of the development team. Some people are driven by constantly learning new things, some need to do something super difficult, whilst others need to do things which make a real difference.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation - After lock-down and the increase in working remotely, this principle sounds really old-fashioned. We all know that it is possible to achieve really great things when working 100% remotely and that this form of work is a reality in today's world. I personally think that it is not so much about being in the same physical space or room. Slack Huddles or any other similar tool now provide a really good substitute. We just need to remember about the limitations of remote communication, and probably pay even more attention to the other Agile principles. Bear in mind that forcing everyone to go back to working in the office cannot, in itself, replace feelings of mutual trust, engagement, empowerment and focus. It can, however, undermine them seriously.
- The best architectures, requirements, and designs emerge from self-organizing teams - A self-organizing team is best placed to take decisions about how to implement software, create a model and so on, as long as the team takes into full account customer feedback.
Practices
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely - As stated above, every successful project requires both developers and the business side to take an active part in early, continuous and frequent inspections followed by introducing any required adaptations. High frequency also requires a constant, sustainable pace, otherwise it will not be possible for everyone to inspect and adapt at the same time.
- Continuous attention to technical excellence and good design enhances agility - Early, continuous and frequent inspections with adaptations require technical excellence. Experience shows that Agile does not have a chance to work in environments where technical excellence is not truly valued.
- Simplicity - the art of maximizing the amount of work not done - is essential - Each product and project has an endless list of possible things to do, improvements to implement, experiments to conduct, etc. And, in most cases, we operate under time, budget, people and resource constraints. The key to prioritising is to maximise the amount of work that is not done. This means saying “no” to a lot of things to have the time, and to use ALL the energy available for the things that really matter.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly - I strongly believe that a minimum viable Agile implementation must contain at least one thing, a retrospective. Sooner or later, every motivated and empowered team will implement Agile's principles and practices (at least those which are the most valuable) by carrying out regular retrospectives, that is, by reflecting as a team on how the team can work more effectively and efficiently.
Scrum Values
This is an article about Agile, and not about Scrum. I hope that I have made that clear because these two terms and concepts are not the same. However, the Scrum Values that were introduced in the 2016 revision of the Scrum Guide are a great example of how to define and maintain values. It is very important when it comes to teams working successfully to create results that meet all project requirements.
Scrum Values are:
- Commitment
- Focus
- Openness
- Respect
- Courage
I would love to elaborate more on Scrum Values, but this is an article for a blog about AI and Data Science, so first I need to receive some more data - feedback from you, the reader :-). Please let me know what you think of the first article on Agile by either sending comments on Social Media or sending me direct messages on LinkedIn (https://www.linkedin.com/in/rurarz/). And please also let me know if you would like me to write more about Scrum Values and about Agile in Data Science / AI / Research and Development.
How can we help you?
To find out more about Digica, or to discuss how we may be of service to you, please get in touch.