How to succeed in your projects with Agile Process



Basic idea of Agile process…

Most of you may have heard about agile, learnt about agile or may have already followed the agile methodology. But still you may don’t have any clear understanding about what agile is. Basically Agile is an approach for managing and working on projects. A simple approach of managing complexity of a project. Agile approach can be used in all kind of projects.

Example projects include:-
Software development
Managing service tickets
HR new hire process
Managing tasks at a picnic
Writing a book
Building a rocket and etc..

Each agile project is unique but they usually have some common characteristics.
Characteristics of agile projects
  1.  Incremental- plan, development and release increments. This means instead of building and releasing the product at once small valuable increments of the product are planned and released in a succession. Each increment should be actually usable and valuable to the customer or the user.
  2. Iterative- continuously improve the product and the process of building the product. It includes the continuously obtaining feedback, learn and improve the product. Each increment provides tight feedback from both user and from inside the team allowing continuous improvement.
  3.  Focus on value- team is always working on what it considers to be the highest value parts of the project. After that the team again decides what is the next highest value thing to work on.
  4. Empowered team- this means that the team decides how to organize and how to accomplish its work. Agile is not a command and control system. Think that team contains a distributed brain where each member continuously helps make decisions.
Benefits of agile projects

For the customer-
Desirable products- as a result of following agile methodology customer is capable of receiving a desirable product. This is because customer is continuously provides feedback in the development of the product. Agile team is consistently matching what they build to what customer is asking for.

High quality- since the team members are knowledgeable, they will build high quality at all time.

For the team-
Higher job satisfaction- in agile approach togetherness is highly admired. This creates a culture of empowering team members to define the best way to work together. This results in the use of variety of skills and provides continuous learning opportunities.

Better innovation- Agile approach is experimental in nature. It allows innovative ideas to be quickly built and tested with real users.

Lower cost- Cost for the product is low when comparing with rational models. Due to the consistency, receiving feed backs and focusing on value, wasteful activities are not performing.

Lower risk- agile projects are safer in sense that risk is lowered because you are continuously getting feed backs on what you are doing.

Application of Scientific method to Agile process 

Now you may think “how scientific method is related with agile process”.  Science requires experiments to be independently reproduced in order to verify their results, once a scientific principle is established, most scientists will accept it unless they have an interesting approach to disproving it or new evidence contradicts it. If all scientists felt compelled to start all research from first principles, there would be very little time to discover anything new. Perhaps even more importantly, no new evidence could be found that might contradict existing theory.

The scientific method is a proven process that helps us better understand the natural world around us. When applied to agile software development, the scientific method can help us reinforce the value of these practices by providing a different perspective through which to think about writing software. There is a strong correlation between bad science and poor software design. Both result in speculative theories/software that cannot be reinforced by good experiments/tests, and are not trusted by the community at large. Agile projects are the combination of many small iterative learning loops. Scientific method can be thought of as the foundation of Agile projects.

The scientific method-
        Create a hypothesis
        Build an experiment
        Observe/learn from the results

        Repeat/iterate

Above diagram shows how the scientific approach is following an Empirical approach. Series of continuous learning and improving iterations while learning from the results of experiments is enhances here that is why we say Agile is similar to the Scientific method. In addition to create a hypothesis we plan some work in Agile. Then we do the work, and we learn from the feedback.

Agile and Waterfall models

One of the most challenging and timeless question in project management is “what way of organizing the work of software development to choose?” this is mainly about the development methodology. The two prominent and popular methods of managing projects are the so called Agile method and Waterfall method.


The traditional way to manage software development can be called as the Waterfall approach. It is also referred to as a linear-sequential life cycle model. Simply waterfall is that instead of continuously planning and releasing increments of the product, you develop the whole product in distinct phase.  
phases of traditional software development model
Phases are done by separate teams. One team is passing their output to the next team in succession. Here you can see effectively one cycle of the scientific method. No looping or iterating. This model is just like the one-way street. Once phase X is completed and next phase Y has started then there is no way to going back on the previous phase. This is one of the issues to the failure of the waterfall model. 

Waterfall system still has value for some projects, but for many projects it’s an outdated approach that leaves you susceptible to being disrupted by your competitors. Even when waterfall is necessary elements of agile processes can be included in the project.

Downsides of Waterfall methodology 

So far we have been discussed the phases of both agile and waterfall models. You may now understand that in a waterfall model each phase must be completed fully before the next phase can begin. You cannot reverse a process if any modification is wanted to add. So the user requirements should be clearly gathered and analyzed. This type of software development model is basically used for the projects which is small and there are no uncertain requirements.

Some issues that will go wrong in Big Design Up-Front plan if waterfall model is followed— 

You can’t predict the future
High value features are not correctly identified.
Things are harder more problematic and take longer to build than you think.
The market and/or your team will change with time while you build.
Change is hard and expensive.
You create a lot of obsolete documents.
Feedback is drastically delayed
                                                                                     

Now you may have a doubt Why Waterfall? Let’s clarify when we should use the waterfall model.
  • When you have high set up cost
  • When the work is predictable
This waterfall model is outdated in many cases basically because of the set up cost of some phases is trending to zero. 

Agile vs. Waterfall


waterfall model
agile plan/build/release phases
See the above diagrams. Plan, build, release phases are iterating with time in both models. In waterfall you are effectively performing one giant iteration of the scientific method with entire product being build phase by phase. In agile small batch sizes go through each of the phases relatively quickly. We have seen that a waterfall process is more sequential than an agile process. Agile processors are concurrently with each feature going through phases quickly.

Because of that fundamental differences between waterfall and agile processors project management for the two approaches are different.
Waterfall model is more predictively, command and control process with big upfront planning, while Agile model is more of an adaptive, distributed process with just enough and continuous planning.


Now you have a good understanding about Agile Principle. Basically how the agile works, why the agile and where the agile is used are now you have clearly understood. Then next doubt you will probably go through is how the agile will develop. There are number of platforms. Some of them are,
  • Jira agile
  • Agile manager
  • Active Collab
  • Agile bench
  • Pivot tracker
  • Telerik TeamPulse

Jira

Jira is used as a tool to help work with agile process. It is a proprietary issue tracking product developed by Atlassian that allows bug tracking and agile project management. It is used to help manage, develop and communicate about projects.

Jira Software is part of a family of products designed to help teams of all types manage work. Originally, Jira was designed as a bug and issue tracker. But today, Jira has evolved into a powerful work management tool for all kinds of use cases, from requirements and test case management to agile software development.

Jira can be used to any project may be simple or complex, team or individual, can be about anything. This is a very easy tool to get started with, is very flexible and can be used in a way that matches agile process. 

Ok now let’s go with Jira…

You can sign up for a Jira Software Cloud account developed by Atlassian at any time. Follow this link. https://www.atlassian.com/software/jira/free?utm_source=coursera&utm_medium=jira&utm_campaign=agile

After you are done with sign up you can create your project, manage issues and go with it very easily. Below diagrams will show you steps to create a project. 


Step 1 : Click create project
Step 2: Choose a project type Classic or Next-gen as you need


Step 3: Give the project name. If needs change the template



Step 4: Here you can change the template according to the method you are willing to follow



Agile methods

There are many agile methodologies that approaches to achieve agility. The term Agile refers to the methods and best practices for organizing projects, based on the values and principles documented in the Agile Manifesto. However, there’s no one right way to implement Agile. In fact, there are many different types of Agile methodologies that you can choose from when organizing your project.

The most popular and common methodologies or Agile frameworks that you can choose are 
Scrum - Scrum is the most widely used Agile framework for developing and managing complex software and product applications. In its simplest terms, Scrum is characterized by its core values of Plan Ahead and Inspect & Adapt. Therefore, Scrum successfully manages projects in which there is marked uncertainty and ambiguity at the early stages of the project

Kanban - Kanban is a simple, visual means of managing projects that emphasizes visibility. Originally designed as a scheduling method, Kanban helps teams execute just-in-time production by enabling everyone to see where work is in the project and what’s coming up next. Kanban projects are primarily managed through a Kanban Board. This board helps segment project tasks into three main columns: “To Do,” “Doing,” and “Done.”

eXtreme Programming (XP) - Extreme Programming (XP) was designed for Agile software development projects. It focuses on continuous development and customer delivery and uses intervals or sprints similar to a scrum methodology.

Feature Driven Development (FDD) - Feature-driven development is another software specific Agile framework. This methodology involved creating software models every two weeks and requires a development and design plan for every software model feature. Therefore, it has more rigorous documentation requirements than XP, so it’s better for teams with advanced design and planning abilities.

Dynamic Systems Development Method (DSDM) - The Dynamic Systems Development Method (DSDM) cropped up out of the need to provide a common industry framework for rapid software delivery. Part of DSDM is the mandate that rework is to be expected, and any development changes that occur must be reversible. Like Scrum, XP, and FDD, DSDM uses sprints.

Crystal - Crystal is actually a family of Agile methodologies, including Crystal Clear, Crystal Yellow, Crystal Orange, Crystal Red, and more. Each methodology has its own unique framework. Which one you choose is dependent on several project factors, such as your team size, your project priorities, and project criticality. The belief is that different projects require a slightly different set of policies, practices, and processes based on their unique characteristics.

Lean Software Development (LSD) - Lean development is actually a completely separate methodology, but it’s often grouped with Agile, as it shares many of the same values, such as the ability to easily adapt to change.

Teams generally pick one or two methods. The most widely used methodologies are Scrum and XP, which dovetail nicely.

This article is basically about the Agile process, agile features and how it is differ from traditional methods. We will discuss more about agile methods such as Scrum and Kanban in a future article. Common question that most beginners face is selecting a right development methodology for their projects. I believe this article will help you to clarify your issues about that.


Give your views below. Thank you!






Comments

Post a Comment

Popular posts from this blog

Positive thinking

Neural Network

Team Building