Why Apply Agile Project Management Principles (part 1 of 2)

why-apply-agile-project-management-principles-1-of-2Many new projects seem to fail at the beginning, especially in hindsight, when looking back after months of development and product delivery progress. There have been many cases where agile projects did not even go over the Agile Manifesto which as most would should have been the first step. Beyond the 4 value statements from the manifesto, are the 12 principles that help guide the agile practitioner in keeping up with the 4 value statements. As we will see, all 12 were very cleverly worded and cover all angles that the agile mind would live by.

As part 1 of a 2-part series we will give further insight as to what those 12 principles are and why they are important for up-keeping in the context of agile project management principles:

1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software (in non-software projects this would refer to product).

When we look at this first principle we see that customer satisfaction is the first thing that comes up, but that is not to say we need to do everything the customer wants outside of reason. This is why the second part of the principle mentions early and continuous delivery of valuable software/product. In all instances the customer relationship starts where ultimately there is a product to be delivered. If you note, the “early” part is also deliberate since it is essential to building the quick ROI for the client. The “continuous” part represents the iterative part about agile methods that allows for features to be built in with the value requested by the customer.

2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

The requirements of an agile project are reflected by the Backlog (Product and Sprint). The backlog is the crux of the agile project methodology and workflow process, and is the basis of the work that needs to be done by the agile team. This principle of welcoming changing requirements in the format of a backlog allows for prioritization and re-prioritization at any moment within the sprint for the Sprint Backlog, and the Product Backlog throughout the agile project. Typically, the high level of transparency through daily scrums, and kanban boards, etc., allows for the agile working team to change requirements to reflect the ROI, resulting “customer’s competitive advantage” as needed and without the resistance that a project would have in a traditional waterfall setting.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

The only way to gain return on a product is by confirming the results. Therefore the need to deliver “frequently” is tied to getting the most out of continuous delivery. This is part of the reason for preference to the shorter timescale, since that would provide more delivery cycles (iterations or sprints) and all resulting feedback loops from the customer and business. The other reason for preference to the shorter timescale is that it mitigates risks by allowing for developing time-sensitive competitive advantages (quicker time to market) of the software or product. When using lean tools the work-in-progress (WIP) becomes evident and quicker cycles prevent any wastes (so-called “muda”), and locks in the value of the delivered product.

4. Business people and developers must work together daily throughout the project.

When referring to working together daily this primarily refers to all agile team roles in the same room, face-to-face communications, and not so much on texting and emailing. Gaps in the daily interactions leaves room for unconfirmed value, and possible waste once business people and developers fall out-of-the-loop. The other key phrase is “throughout the project.” Some business roles, and developers may tend to fade in and out of the project if they are assigned to more than one project, and are spread thin throughout the course of the project. This leaves gaps in expectations and confirmation of progress when it is needed most.

5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

When a project gets started and is ongoing, we need to make sure we don’t get in the way of agile team members that are experts in their domain. This is where we build in the element of “trust” and leave them to do what they do best. Giving them the environment and support relies on the scrum master role where there is a need to protect the agile team from outside distractions, and help remove blockages when they appear.

6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

The key here is that people are to engage in “people-friendly” situations that promote easy communication with the least amount of “out-of-context” risk as possible. Body language makes up about 55% of communication, and therefore represents the most powerful component when compared to 7% verbal and 38% tone of voice. Since email messages can take on a tone the reader chooses to interpret them by, a message may be interpreted as malicious where in fact it could have been completely benign. The other advantage of the face-to-face communication is that everyone benefits from osmotic communication whereby knowledge and information is gained from background discussions from fellow agile team members. This presents an overall advantage since it effortlessly keeps everyone on the same page.

For the second part of this section  << click here >>

[Source for Agile Manifesto Principles: Manifesto for Agile Software Development]
[Image courtesy of Stuart Miles at FreeDigitalPhotos.net]


Agile vs Waterfall – How an Agile Lean Approach Reduces Time to Market

When creating a product that we are excited about, we might already start to think about how to get it out to the market as soon as possible. When taking a lean approach if we were looking at it in terms of project methodology (agile vs waterfall), it is certainly quicker than waterfall. This however raises the question about what the primary features of your product will be. If you or your team have already wandered off into the abyss of creativity, and started to think of every possible feature, it’s fine to do so (without wasting too much time). But ultimately to get started, it’s important to get back to thinking about the core.

agile-vs-waterfall-how-an-agile-lean-approach-reduces-time-to-market

The first step to accomplishing this is to think of scaling your product with a list or series of MMFs (Minimally Marketable Features) to create your MVP (Minimum Viable Product). This could be more difficult to do than you might think. If your team has already gone really far in the amount of features your product will have, you’ll have to take a few steps back, and do some agile release planning with the intent of categorizing them (or backlog items) in the following order:

1 – Is this feature adding to necessary working functionality?

As part of scaling back your product to be a minimum viable product, you have to think about the basic features and functions. In today’s technology enhanced world, we may feel blinded to the extreme amount of features that we get when buying something like an electronic device. Some may come with a user guide that, let’s admit, only 10% or less of buyers will actually read. Many just need 5% of features that the product can provide. That is not to say that the other features aren’t useful, but you can easily appeal to the larger part of the market that is looking to use the product for the majority of uses. For example, think of a product like the smart-phone and think about how many people actually use it just for talking or dialing numbers to call people. Most consumed the majority of the device’s use by texting and emailing, and reading. Imagine if you spent 90% of product development time (or project management life cycle) on a feature that is only used 5% of the time. You wouldn’t be attracting much of the market. But we have to admit, if you bought a smart-phone, it’s very basic function would be to make or receive calls. Using iterative deliveries such as what we find in sprints, can allow for those quicker more frequent releases.

2 – Is this feature marketable once implemented, and what is the perceived ROI?

There should be some considerable market research for the product you are willing to produce. More importantly, the research should also be able to provide the level of market demand. With that level of market research, the Product Owner and Agile Business Analyst should be able to determine the short to long-term benefits of that product once begin it is released to the market. This could be listed out as ROI for each of the features being planned to include in each iterative release of the product. For example, Feature 1 = $10,000 returns, Feature 2 = $5,000, Feature 3 = $100. By looking at the list you will immediately know that developing Features 1 and 2 will give you a return of $15,000. Especially if you knew that your project could only budget for development of 2 features.

3 – How soon can it be completed? implemented?

The time to develop and release a new product will ultimately determine how fast you can get your product out to the market. The key will be to take the features that would provide the highest level of return for the lowest amount of development time or cost. This might not be a simple exercise, but with proper analysis and calculations, your agile team, should be able to decide which those features give the highest result. This reduces risks in multiple forms. Primarily the risk of waste is reduced, such that the possibility that the product feature becomes obsolete before it is ever released is diminished being sold and in the hands of your consumers.

4 – Is there a foreseeable or complimentary enhancement release that can easily be added to this feature?

If you are working on Version 1 of your product, you may already realize that a few more plug-in features can be added to the product with minimal effort in future releases. Your competition may already be looking at those added features before you get them out to the market, so it would be important to consider carefully before you develop your first version. Having a well laid out agile release plan, would allow you to see if the market will be looking for an update to your product relatively quickly. This would also depend on the nature of your product, since software is relatively more easy and less costly to update and distribute than a piece of hardware.

5 – Can the product be easily adopted or used?

With reference to point 1 above, if you are developing a product that the market can use right away, that is certainly a plus. The other side of the coin is, whether or not the consumer-base is able to use your product right away and would it fill an immediate need. The intent to having your product out to the market quickly, is to be the first product that the market will adopt and hold on to for future updates. If there are many competitors out there producing similar featured products, you have to compete on the level where you are releasing the most amount of updates or upgrades in the form of additional features so that the perceived benefit of your product is the highest among your competitors. If you keep in mind, the higher the perceived benefit, the market value will go up. With a higher perceived value, there is an automatic willingness for the market to pay more for your product, and that gives higher ROI.

Taking all points into consideration with an agile mindset and lean tools can more easily facilitate the team’s ability to get your product out to market. Since after all, the best way to consider simplifying all product options and how to simplify them further, is more easily attained by engaging the experts themselves.

[Image courtesy of Stuart Miles at FreeDigitalPhotos.net]


How to Define Your Kanban Workflow Management

Whether or not your workflow management tools include a kanban board with a workflow process via an actual (low-tech) office wall or having a (high-tech) virtual agile software board, you want to avoid having too much WIP (work in progress). If there is too much WIP, you may create too much waste or risk in the form of lagging partially completed work, or excessive waiting. Furthermore, excessive WIP will also cause blockages to be obscured and hidden.

Here’s an example of a comprehensive status workflow automation from beginning to end:

New –> Open –> In Progress –> Code Review –> Code Committed –> QA Ready –> QA In Progress –> QA Passed [or] QA Failed –> UAT Ready –> UAT In Progress –> UAT Passed [or] UAT Failed –> Closed/Done

A more simplified (and recommended) view of this workflow process would look like this:

To Do –> In Progress –> Done

how-to-define-your-kanban-workflow-management/In either workflow solution, it is in everyone’s best interest to place WIP limits. Before your sprint would start, you should be able to determine based on the story points and team size what the typical limits should be as per the agile team roles and team members. These can then be calculated and factored to represent the overall WIP limits for your board to prevent too much clutter. However as you can guess, the comprehensive example above or any type similar to it, would be the most difficult one to set limits to, since the stories would be scattered everywhere across multiple statuses.

Like any complex procedure, it is best to break it down into smaller parts. A simplified board should be used as your dashboard view to get a consistently general view of progress.  Once you’ve scaled down your board as much as possible the WIP limits will become easier to manage. A notable mention is the status “Blocked” which can be shown with a more specific indication of which workflow the block occurrence came from, i.e. Blocked in Dev, Blocked in QA, or Blocked in UAT. This will further allow for a quick response to the blockages.

The example given above assumes workflow management processes are happening simultaneously, but it would certainly be more appropriate to create some workflows in later sprints or specific milestone date if you knew, for example, that UAT was coming at a much later time. The key is to keep it simple.

[Image courtesy of Stuart Miles at FreeDigitalPhotos.net]