Agility is an approach to project management which is widely used to create software products, even though the approach is by no means limited to that particular use. In the simplest terms, the methodology involves cutting down a big job into multiple smaller tasks, which are called sprints. Each sprint would result in the creation of at least one significant feature or update for the product.
The agile methodology has been successfully adopted by many companies and continues to find favour among firms big and small. The main reason for this is that the methodology satisfies the need for speed in project execution which the dynamic post-internet workplace demands.
However, even when two companies use the agile approach, they don’t necessarily follow the same protocols as agility itself comes in different types. Companies could adopt one type over another depending on their requirements. Let’s now look at the most common types of agile methodology.
Having evolved from the lean manufacturing principle developed by Toyota, lean development is among the most popular types of agile methodology, and it is used especially for developing software. It is an approach that includes the values and best practices that should be adopted while you tackle a project using the agile approach.
The lean development approach lays down seven important principles. These are:
1. Delete everything that doesn’t matter
The word lean speaks about efficiency, of cutting off the flab from any process so that only the most essential aspects remain. Put another way, streamlining is the core idea here. Given this, it shouldn’t be a surprise that this is the first important principle in lean development: if something doesn’t add value to a project, simply delete it. That could be considered as excess baggage which you have no cause to lug around.
2. Ensure quality in development
Developing a piece of software is largely a technical matter. Provided the developers have the necessary technical skills, it could be accomplished without any difficulties. But ensuring quality in the development process is a different matter entirely. When technical skills are not scarce, what differentiates two products from each other could be the difference in the quality of development. This is in turn dependent on how disciplined the workforce is, and is reflected in the number of errors the product has.
3. Generate knowledge
As said before, lean methodology is particularly applicable for software production. And software creation, by definition, leaves behind an infrastructure which could be modified, reused or reconfigured as per future requirements. This principle of lean methodology mandates that the infrastructure should be thoroughly documented, so that knowledge could be accessed by relevant persons as and per needed.
4. Defer commitment
Commitment is a word that has largely positive connotations, especially in the professional framework. After all, unless you are committed to finishing a task on time, you probably wouldn’t achieve that result.
However, workers could also end up having tunnel vision because they are committed to something. Being focused exclusively on one thing, they may miss the significance of a new task that unexpectantly comes up. This leads them to overlook this latter task, continuing to work on their current task.
This in turn ends up being detrimental to the project as a whole.
To avoid such a scenario, lean development calls for deferring commitment. This, of course, doesn’t mean you shouldn’t be committed to the plans that you have created for task execution. Just that you shouldn’t get too attached to those plans if they are made without enough understanding of what business requirements are to be satisfied by a project.
Once you have this understanding, you can easily judge the importance of one task in relation to another. Then, you wouldn’t be stuck in the tunnel vision that we discussed before.
5. Fast delivery
Now, here’s something you must surely have heard n number of times- we live in a fast world. For many of us, the meaning of that phrase is inextricably linked with the quick communication that the internet affords. However, there is another-related side to the speedy nature of the present world. And that has to do with the marketplace, or rather the change that has come in consumer behaviour over the last couple of decades- we have come to accept frequent updates or new variations in the products that we consume.
Part of this behavioural change is ushered in by the high competition among companies in a globalized marketplace. But it is also because spending time online has rewired our ways of thinking- we now expect more things to happen in any given interval of time, much like how we expect to consume quite a lot of content in short bursts of time while online.
Nowhere is this expectation reflected more than in the arena of software products. Customers typically expect meaningful updates that would delight them in a piece of software that they use.
This is why the principle of delivering value to the consumer at the earliest possible time is an important principle in lean development.
6. Respect the team
This goes without saying. But the fact that it is included as a principle here shows that the lean development approach was devised with certain ground realities in mind.
Team members don’t always get along well with each other, and sometimes their attitudes could adversely affect the quality of the end product. To this end, this principle stresses that effective communication amongst team members is important. Managing any conflicts that may arise amongst team members should also be a priority for the managers.
7. Optimise the whole
A crucial problem that many software development teams face is that of suboptimization or sub-par optimization.
There are two probable scenarios in which this could happen. One is when developers create code of less-than-optimal quality when they are forced to develop at a high speed. The second scenario is not related to development but to testing. If the persons involved in software testing are burdened with too many tasks, there is bound to be a long gap between when developers create code and testers providing them with the feedback. The end result is that the software developers will continue creating code that may be filled with errors.
Optimizing the whole is included as a principle in lean development precisely to avoid the problem of suboptimization.
It is predicated on the notion that all the activities required to design, create and deliver software form what’s called a value stream. You should optimize the value stream in order to deliver value to the customers at short intervals.
Kanban is another common type of agile methodology used in many organizations. The name traces its origins to Japan. The meaning is related to the idea of being just on time.
The central tool in the Kanban framework of agility is the Kanban board or a table. This would be segregated into multiple columns so that the entries in these columns show the way the software product is progressing. Put another way, it’s an effective mechanism to visualise the flow of tasks in an agile project. Depending on the progress of the tasks, the entries in the tables would change to reflect the current status. Each task gets its own card on the Kanban board, and whenever a new task is opened, a new card is included on the board.
The biggest utility of the Kanban method is that it’s easy to keep track of the flow of a project using it. Every team member could have access to the board so that everyone is in sync about how far the project has come and how much is left to do. The task status depicted in the Kanban board is near-real time so that everyone stays current about the tasks in progress.
One of the key advantages of Kanban is that you could easily view the tasks related to a project- be it finished, in progress or in the testing phase- all in one place. Also, since you have a clear overview of the tasks at any given moment, you can optimize the number of tasks planned for the future. The framework also enables continuous deliveries of values.
On the flip side, since there are no timeframes mentioned in the Kanban board, delays in finishing a task could incur.
Arguably the most commonly used agile framework, scrum is also one of the most successful among the frameworks. (Indeed, both the aspects are mutually related).
The idea of a scrum comes into play because of the short but periodic sprints which are inherent to agility. A cluster of these sprints- which are essentially different stages of a product’s development- come under a scrum.
Typically used for developing software, scrum as an approach to project management is also used in other types of projects. One defining feature of the scrum framework is the daily scrum- a session that lasts about fifteen minutes, in which team members fill each other in on their progress so far and their agenda for the coming day. This helps everyone stay updated about the progress of a project.
Since scrum, by nature, mandates strict deadlines, team members are usually motivated to finish their tasks on predetermined dates. This minimises the possibility of delays in project delivery. At the same time, scrum also prioritises quality so that errors are minimised in the development process.
Also, scrum is a rather flexible framework, meaning the product developers could adjust their priorities according to shifting requirements. That does come with the caveat that each team member’s role may not be strictly defined. This in turn could cause confusion within the team.
The term extreme programming probably conjures up images of something dynamic, the project management equivalent of explosive action, maybe. But the truth is that Extreme Programming, or XP as it is usually called- rests on humane qualities like simplicity, the value of communication, respect, feedback and courage.
One of the most important aspects of this framework is that it puts customer satisfaction right at the top of the priority list. The product developers are encouraged to stay open to the fluctuating nature of customer requirements. Put more plainly, even if a requirement is relayed to the developers late in the development stage, they ought to be open to them, incorporating the requirement in how they develop the product.
A lot of emphases is put on teamwork in XP, so much so that when an issue arises, it’s rarely the case that one team member is tasked to solve it. More often than not, the entire team- including the managers and the product developers- are equally burdened with coming up with the solution.
The aim of this is twofold: to increase both the team’s productivity as well as the efficiency.
The software being developed is tested from the first day itself so collecting feedback from the testing team is a continual process. This in turn enables continuous improvement in the development process.
As mentioned before, simplicity is one of the key tenets of extreme programming. In software development, this is reflected as simple codes. This makes improving the code rather easy. Also, continuous testing makes for a more agile software development process.
But that’s not to say that extreme programming is without its downsides. For one thing, the constant attention on the program code could mean other aspects like design don’t get adequate attention. Another issue is that it’s hard to implement extreme programming unless all team members function in the same geographical location.
Rather than being a single framework, Crystal is in fact a group of frameworks that share some similar characteristics. The variations are formed with regard to the number of people in a team.
For instance, the Crystal Clear framework is applicable for a team of up to 8 people whereas Crystal Yellow is meant for a team sized 10 to 20. Crystal Orange meanwhile is for bigger teams of 20 to 50 people and Crystal Red is for teams of 50 to a thousand members.
The core features that Crystal values include community, communication, talent, skills, interactions and people. By focusing on these features, the framework aims for the best development process possible. The Crystal frameworks are typically used in software development projects.
The two pillars of the development process in Crystal are symbiosis and interaction. Essentially, this means that the people to whom projects have been allocated should interact well with each other and establish a symbiosis with the processes that they partake in. The fundamental idea of Crystal, as envisioned by its founder Alistair Cockburn is that if the quality of interactions among team members improves, that will benefit the entire project.
Adopting the Crystal framework helps ensure that deliveries are made frequently, and also enables close collaboration and knowledge sharing among the team members.
How a project management tool could help adopt agile
No matter the framework that you adopt to implement agility in your organization, the project management would run much more smoothly if you use the right project management tool than without it. However, you may get baffled by the choices available in the market- especially given how not all of them support agility efficiently.
I’m Productive is an excellent project management software that supports agile projects. From creating and tracking tasks to assigning them to team members according to the requirements of a scrum and more, it comes with an exhaustive number of tools to help you sail smoothly across an agile project.
The tasks management tool also incorporates a powerful AI which helps you accurately predict the project delivery time. In fact, you could do that with the click of a button!
To learn more about this powerful project management tool, and to see how it could help you manage your agile project, please visit their website.
Just leave your email and our support team will help you