A couple of years ago, I posted already a post describing roughly what Agile isn’t and how it should not be considered, treated and implemented. Most of my experiences come from Software Development, so I’ll be mostly referring to Agile in Software Development. Although, I do believe in Agile methodologies so much, that I implement them in all areas of my life, professional and private. For me Agile isn’t only a set of methodologies and practices, it’s a mindset and way of thinking and acting in real everyday situations.
So, let me first explain how the Agile was started. In 2001 a small group of software developers got together to discuss how to manage Software Development project in more efficient and better way. So, they produced the Agile Manifesto, which is representing 4 important values:
Agile Methods follow 12 principles in a way to have good collaboration with customer and even inside the team. The communication inside the organization and team is a very important point. The team should be highly motivated all the time and they should have the work environment that stimulates such actions. On the other hand, to maintain customer satisfaction on a high level, the continuous collaboration with a customer is required.
Therefore, Agile Methods focus on responsiveness and adoption to changes and continuous development and delivery. In Agile we fail fast and don’t just blindly follow the plan, at highest we target the customer satisfaction trough early and continuous delivery of software. Even behind Failing fast there is a philosophy that aims to comprehensive testing and incremental Software Development to understand if our project has enough of value. The main idea of this philosophy is to avoid losses and risks in cases when testing shows that our project or part of a project isn’t’ working well. In such cases, we can adapt quickly to necessary changes and try new options.
In Software Development, Agile Methods are constantly being refurbished and improved along the way. By my opinion following Agile in Software Development, it’s a must, as usually systems require frequent changes during the development process. Trough last years the Agile Software Development approach is becoming more and more recognized and accepted by different organizations, individuals, and companies. The main goal of its usage is to achieve the best quality and timeline of the project and to deploy the best possible solutions for the customer.
In this days, today, the changes are inevitable, they are everywhere, rapid and even becoming more and more advanced. They are so quick that is not recommendable only to follow and to adapt to changes, it’s necessary if the organization or individual wants to keep up-to-date. In order to survive in this world of constant and quick changes and development, the adoption of changes should be flexible and highly responsive. So, the core target in Software Development is having rapid and continuous development with great collaboration between teams and customer and with high-quality simultaneous releases.
In Agile Software Development, we relate to 5 factors to reach success: Organizational, People, Process, Project, and Technical. Of course, for every factor, there is a philosophy and other subsets.
There is a wide range of Agile Methods used in software development life cycle (SDLC). Some of them concentrate on workflow and others on practices. Two most familiar Methods focusing on workflow are Scrum and Kanban.
Scrum is an Agile’s framework used for project management. It focuses on building a product which will meet the requirements. In Scrum, the iterations are divided in short intonation, known as Sprints, which are usually long from one to three weeks. Inside the Sprint the product is being integrated and possibly ready to ship. It’s being tested at all time and at the end of the Sprint, the product is revised by the team to see if it meets the requirements. Also at this meet-up at the end of the Sprint, the team plans next sprint and steps. In Scrum, there are 3 important roles: Product Owner, Scrum Master, and Team Members. The Product Owner is a role with vision and authority to take the decision. Scrum Master’s role is to coordinate the project between Product Owner and the team, but he doesn’t manage the team as the team is self-managed.
Kanban is a framework which focuses on Work visualization, workflow, and Continuous Improvement. Kanban board are used for the team to visualize the work and to optimize the work as much as possible. It enables much easier collaboration inside the team and between teams, it supports traceability and it can be usually accessed from various locations.
I could write a book how to implement Agile practices and maybe one day I will, but in this post, I’ve just summarized main principles and philosophies standing behind Agile, just to have a quick understanding what Agile is about. Agile is about small steps in development with incremental releases and iterations, focusing on frequent deliveries and quick adoption to changes. With transparency, visibility and with a focus on high quality the performance of development teams and projects can be improved in a great scope.