Category: Lean/Kanban

The logical conclusions

Feeling a bit inspired by the recent DirectTV commericals I figured it's about time to apply the same rational thought patterns to the waterfall methodology.

When have a deadline approaching, you work all night.
When you work all night, you don't get enough sleep.
When you don't get enough sleep, you turn into a zombie.
When you turn into a zombie, you start eating your co-workers.
Don't eat your co-workers, get rid of waterfall.

When you try to generate an accurate project timeline you start guessing.
When you start guessing, you start grasping at straws.
When run out of straws to grasp at, you look for more.
When you look for more straws, you go looking through trash.
When you go looking through trash, you find yourself in a dumpster.
Don't go dumpster diving, get rid of waterfall.

When you plan too much, you can't make decisions later.
When you can't make decisions later, things will need to change.
When things need to change, you need to change directions.
When you can't switch directions, you drive off an oncoming cliff.
Don't drive off a cliff, get rid of waterfall.

When you estimate a feature wrong, your boss wants you to improve.
When your boss wants you to improve, you practice estimating.
When you practice estimating, you estimate how many tacos you can eat.
When you practice eating tacos all day, you spend all night in the bathroom.
Don't spend all night in a bathroom, get rid of waterfall.

When requirements can't change, the customer wants to change them.
When the customer can't change them, the customer gets mad.
When the customer gets mad at you, you get mad.
When you get mad, you go home mad.
When you go home mad, your mother in-law stops by.
When your mother in-law stops by, she tells you everything you are doing wrong.
When she tells you everything you are doing wrong, you punch her in the face.
Don't punch your mother in-law in the face, get rid of waterfall.

Did you like this? Share it:

Is Developer Productivity A Crap Shoot?

Post written by Brett Gibson, Owner at AdventureTech 

We like to educate. In fact, we even have a board game we use frequently to help clients visualize workflow and facilitate collaborative systems thinking.

We recently introduced this game (created by a fellow New Zealander, Heaven forbid) to a selected group of cross-functional internal change agents.

They seemed extremely engaged and excited by the benefits of Kanban and receptive to the collaborative approach required by each other’s input.

It was a great session on software delivery, where the players identified bottlenecks in process from a full systems picture. Amongst other things, we discovered that optimizing one functional area did not ensure better throughput of software.

Important lessons and great stuff if you’re in to that sort of thing. We are, and so too was this group.

Here’s something interesting, however: In order to represent the productivity of a developer in this game, dice are rolled…

This is always an interesting conversation topic and uncovers a host of questions like the ones below. Take a look and let us know what you think: 

1. Is it realistic to portray developer productivity this way, on the randomness of a 1-6 scale?

2. Is the daily life of a developer really that unpredictable?

3. If it is, then what does that mean for project planning and estimations?

4. When you ask a developer how long something might take, how do you account for interruptions, daily “emergencies”, or the business demands for their knowledge? What’s your “padding” for those factors against that guesswork – surely padding itself is guesswork game too? Now your project planning is nothing more than a game of predicting padding on top of other guesswork.

5. Can you really keep a developer in a productivity bubble away from the demands of the daily operation of a company? Does that solve any problem, create more or just move the problem to others?

6. If the daily life of a developer is NOT predictable, then doesn’t that make the guarantee of an estimate null and void? 

Did you like this? Share it:

Now Or Later: You Must Decide How To Manage Software Project Risk

Post written by Troy TuttleProject Leader and Software Process Coach at AdventureTech 

Risk management is nothing new to the project management community. But in software projects, the traditional approaches to managing risk are far from ideal. Traditionally, we have produced project documents with nice-looking risk matrices that are neatly categorized by severity and impact. This is nice to look at, but how does it help us manage real project risk? We seem to be good at identifying risk, but we give little or no guidance to project stakeholders on how to make decisions based on this information.

In software projects, effective risk management is about the process of making decisions—specifically, deciding the optimal time to execute a decision. The Lean software movement provides us with much better guidance in the form of principles and decision frameworks.

Take, for example, starting a large software project at your company. How do we insure we are not throwing this money away?  In a traditional software project, we would come up with a “Grand Plan” that represents the project from A to Z  and we would present that to decision makers for funding approval. With funding secured, we start that project boulder rolling down the hill.

When will we know we are building the right thing?

In this Grand Plan approach, we do not typically know until the very end, when the money is all spent. There is no actionable risk mitigation.

Defer Commitments
Grand Plan projects have little opportunity to manage risk along the way because most or all the the commitments are made at the beginning. For example, if we estimate our project cost to be $1 million, we secured that much funding from the overall budget and committed it all to the project at the beginning. What if we changed our strategy and decision making process? Would we better manage financial risk if we fund the first phase, say $200,000, then decide if it would be worth spending more? If so, then we are deferring the commitment of our entire funding amount until we know the project is succeeding.

Think about the same problem in our specifications. A typical Grand Plan will specify the product in total, to a high degree of detail. If we apply a preference to defer commitments in our specifications, what would our project plans look like? They would be a lot smaller, take less time to generate, and would be more meaningful. Instead of detailing precise requirements months in advance, we can defer that commitment until we have better information about the marketplace, our team, or the product itself.

Real Options
Real Options, as applied to software development, gives us a nice decision framework for determining when to defer commitments. The model is described as:

  • Options have value.
  • Options expire.
  • Never commit early unless you know why.
     

This approach is not complicated, but it has big implications. For many organizations, better risk management could save precious project funds. It could also be the difference between the next great product and something much less useful.

What do you think? How do you handle risk on projects? 

Did you like this? Share it:

Open Mouth, Insert Software Toolbox

A toolbox, from Biltema)

 

 

Image via Wikipedia

 

So often we hear the phrase, “I have many tools in my software development toolbox, and I like to use the correct tool for the job.” It sounds good. It appears to be a responsible approach. After all, why wouldn’t we want someone to have multiple tools at their disposal? 

The whole toolbox metaphor is fine on the surface. My problem with it stems from the incidentals in the discussion.  In my experience, most people who reference having a “software toolbox” are really hiding from a more direct questioning or discussion of specific practices or methods.  Instead of advocating for those methods they believe work, or more importantly, listening to others advocate for their methods, many in our field throw up the “toolbox” as a defense mechanism.  It makes for a clean exit too. The problem is this mechanism limits learning for everyone involved. The “software toolbox” is a conversation ender, not a conversation starter.

With that said, I am going to put my toolbox where my mouth is.

First, my obligatory disclaimer:  Individual results will likely vary. Past performance does not guarantee future success. Your specific context and corporate culture are critical factors when deciding which tools are best for you. This is not intended as a comprehensive list.

Troy’s State-of-the-Art Software Toolbox:

  1. Small Iterative Development Cycles: Software work is knowledge based. Knowledge in software is best improved by frequent feedback cycles. Early information feedback allows the team and customer to learn and improve at a much faster rate than when iterative approaches are not used.
    Source: Extreme Programming, Scrum
  2. Explicit Work-In-Progress Limits: Even when working iteratively, teams will often have too much WIP. Ever observe a Scrum team start every single user story by the first day?  I have, and without an explicit policy limiting work-in-progress, teams and managers will try to push too much work into the system. WIP limits allow a team to begin finishing work instead of starting more work. Team context switching is minimized, giving the team the opportunity to improve quality.
    Source: Kanban for software
  3. Just-In-Time Planning: Plan just for what you can do, and nothing more. There is no waterfall-style comprehensive requirements document with this approach. Nor is it the heavy backlog grooming practices frequently seen in some Agile teams where user stories are analyzed and specified in detail months before they are implemented. Just-in-time planning also means no commitment-based time-boxed iterations.  Optimal planning occurs when the the team is provided with the best thing to work on next, no more and no less.
    Source: Kanban for software
  4. High Discipline, Low Ceremony Engineering Practices: Emphasize practices that encourage collaboration and short feedback cycles. TDD/BDD and a continuous integration server are a great start. After-the-fact, formal code reviews are typically too late to add anything other than rework. Code metrics are fine, but be careful what you measure. Are your code metrics making the code easier to understand and change, or are you happy just to apply “standards” to your code? Covering code with tests is a good thing. But higher code coverage doesn’t automatically mean your code base is functioning the way your customer wants.
    Source: Extreme Programming
  5. Kaizen: Continuous improvement may come from inspect and adapt, PDCA, or other methods. It doesn’t matter if you prefer one over the other as long as you build an information feedback loop into your process. At the basic level, provide enough oxygen to the team to reflect, share ideas, and improve. Some teams may require regularly scheduled retrospectives, others may perform mini retrospectives or spontaneous Kaizen events during the project. 
    Source: Extreme Programming, Scrum, Kanban for software

I’m hoping this is valuable information for you.  This is my toolbox, and these are some of the more valuable tools to me. If I show you mine, will you show me yours?

Will these work for you?  I don’t know, that’s for you to decide. I just know that they work for me today. If I were a part of a brand new software team tomorrow, this is where I would start our discussion.  And hopefully we grow to an even better place.

“Merely having an open mind is nothing: the object of opening the mind, as of opening the mouth, is to shut it again on something solid.” — G. K. Chesterton

Enhanced by Zemanta
Did you like this? Share it:

5 Myths About Agile That Every Business Owner Should Know

 

There are several common myths about Agile principles that might prevent your business from adopting them.

We're going to "debunk" these myths below and help make sure that you understand how Agile brings real and meaningful value to the bottom line of every business.

Myth 1: Agile means having no documentation.

Agile methods still produce documentation, but you only produce the documentation you need as you need it.

This provides the best combination of time, cost, and value that your documentation can bring you. You won’t have documents that take hours to produce and update simply because someone suspects they might be useful to someone at some point.

Myth 2: Agile means no up-front planning or decision-making.

Agile does not mean blindly jumping into a project with no planning. What it does mean is that planning is done as you need it, which is where planning adds the most value. 

Having fully planned out every aspect of a project before you begin is a liability, not an asset. Many things will change between Day One of planning and completion of a project. All you’ve done is set yourself up to spend a lot of money for absolutely no reason at all.

However, planning absolutely must be done as you need it. The things that need to be planned and decided before a project starts ought to be, but nothing more and nothing less. The rest of the planning is done progressively as needed.

Myth 3: Agile prescribes a lot of practices and tools we may not want to implement.

Agile is a set of principles. Different people have come up with various practices and tools that they feel capture Agile principles, and some are so commonly used that they are virtually “Agile methodologies,” but there are no mandated practices or tools. Agile is not Scrum, XP, Kanban, or even such valuable practices as TDD.  Those things may be very useful to a group trying to be Agile, but none of that is mandated by being Agile.

Myth 4: Agile is just a development fad.

When all the amazing developers are doing something and big names are trying to find ways to support it, and this has been going on for several years, it’s well past the fad stage. 

It has become a common part of today’s development practices, not because it’s the Next Greatest Thing (NGT), but because it provides real and immense value when properly implemented. Writing Agile off because it is a fad is rather similar to writing off Object-Oriented Programming because it’s a fad.

Incidentally, I think that Internet thing will catch on one day as well.

Myth 5: Agile will not allow me to estimate.

Agile forces you to work with real data and metrics as opposed to wild guesses with no useful connection to reality.  If by “estimate” you meant “make wild guesses with no useful connection to reality,” then this might not be a myth. I’d really like a video of the shareholders meeting where you announce, “We will not go Agile because we are solidly committed to giving you wild guesses with no useful connection to reality. Speaking of, let’s take a look at this year’s budget.”

I’m guessing by “estimate,” you mean, “give a useful approximation of when X amount of work might be done,” and in that case, Agile can not only provide that, but it bases the estimate on actual data that your actual developers produce.

What Agile will not allow you to do is make an estimate that can’t be justified with actual data, such as, “When do you think you can have a CRM built by?”  You will be forced to break that question down into units that can be accurately estimated, and the estimates will be based on your developers’ actual past history, not their guesses.

Which would you rather make decisions on: actual historical data or your developers’ guesses?

Also, Agile development means you get feedback on the validity of that estimate early and often.  If your project is behind, you can find that out on a day by day level as opposed to the month before release.

In summary, moving your organization in a more Agile direction does not do away with anything that provides actual business value (although it does do away with many things that don’t), and it provides that value when the value is most necessary, most current, and most accurate.

How would you like your organization to run?

Did you like this? Share it:

Connect With Us

     

Contact Us

Toll Free: (888) 373-8718
Main: (913) 402-9600
Fax: (913) 402-9603
7450 W. 130th Street
Suite 320
Overland Park, KS 66213

Upcoming events

  • Events on May 16, 2013

    LWS Lunch

    Starts: May 16, 2013, 11:30 am

    Ends: May 16, 2013, 1:00 pm

    Location: DEG Offices

  • Events on June 18, 2013

    Kanban Training

    Starts: June 18, 2013, 12:00 am

    Ends: June 20, 2013, 12:00 am

  • Events on June 20, 2013

    LWS Lunch

    Starts: June 20, 2013, 11:30 am

    Ends: June 20, 2013, 1:00 pm

    Location: DEG Offices

  • Events on July 18, 2013

    LWS Lunch

    Starts: July 18, 2013, 11:30 am

    Ends: July 18, 2013, 1:00 pm

    Location: DEG Offices

  • Events on August 15, 2013

    LWS Lunch

    Starts: August 15, 2013, 11:30 am

    Ends: August 15, 2013, 1:00 pm

    Location: DEG Offices

  • Events on September 19, 2013

    LWS Lunch

    Starts: September 19, 2013, 11:30 am

    Ends: September 19, 2013, 1:00 pm

    Location: DEG Offices

  • Events on October 17, 2013

    LWS Lunch

    Starts: October 17, 2013, 11:30 am

    Ends: October 17, 2013, 1:00 pm

    Location: DEG Offices

  • Events on November 21, 2013

    LWS Lunch

    Starts: November 21, 2013, 11:30 am

    Ends: November 21, 2013, 1:00 pm

    Location: DEG Offices

  • Events on December 19, 2013

    LWS Lunch

    Starts: December 19, 2013, 11:30 am

    Ends: December 19, 2013, 1:00 pm

    Location: DEG Offices

  • Events on January 16, 2014

    LWS Lunch

    Starts: January 16, 2014, 11:30 am

    Ends: January 16, 2014, 1:00 pm

    Location: DEG Offices

  • Events on February 20, 2014

    LWS Lunch

    Starts: February 20, 2014, 11:30 am

    Ends: February 20, 2014, 1:00 pm

    Location: DEG Offices

  • Events on March 20, 2014

    LWS Lunch

    Starts: March 20, 2014, 11:30 am

    Ends: March 20, 2014, 1:00 pm

    Location: DEG Offices

  • Events on April 17, 2014

    LWS Lunch

    Starts: April 17, 2014, 11:30 am

    Ends: April 17, 2014, 1:00 pm

    Location: DEG Offices

  • Events on May 15, 2014

    LWS Lunch

    Starts: May 15, 2014, 11:30 am

    Ends: May 15, 2014, 1:00 pm

    Location: DEG Offices

Recent tweets