Sponsored By Aspose - File Format APIs for .NET

Aspose are the market leader of .NET APIs for file business formats – natively work with DOCX, XLSX, PPT, PDF, MSG, MPP, images formats and many more!

Lean Software Development: differentiating push- and pull-based development

I was reading a white paper over at Realization.com and a thought hit me regarding lean vs. conventional development.

Backing up a moment, perhaps I need to explain some of my
reservations toward conventional waterfall development.  I’ve
always felt that projects driven by the waterfall approach are
fear-driven – fear of the developer and fear of the development team
producing something the business doesn’t want.  However, waterfall
often times doesn’t even protect you from that fear – market pressures
exerted during the development phase are forcibly ignored by the
project manager who is guarding against scope creep for fear
of jeopardizing the previously committed schedule. This makes me
believe my fear theory is wrong.  Waterfall is also capable
of driving specifications to the nth degree before development begins
and many are outdated by the time they are saved in
some document repository. Worse yet, waterfall taken to the
extreme is capable of distilling context out of the specifications
which can lead to developers making poor implementation

After reading the white-paper titled “What should multi-project operations focus on: Resource Utilization or Cycle-Time?
my entire attitude toward waterfall completely changed. The article
states that the primary operating assumption in traditional, waterfall
development is “not enough resources.”  That deserves repeating…

The primary operating assumption in traditional, waterfall development is “not enough resources”.

Take a moment and consider the waterfall project.  The entire
process is usually driven by a master Microsoft Project template (or
some other tool from that software category) where tasks are
broken down, dependencies stated and ultimately resources are
assigned – everything drives to assigning resources. The project
manager’s primary focus is getting and holding onto resources with
every grasp of energy.  Good project managers will protect their
people from outside interruptions and getting time taken up by other
projects – they are protecting their project.  But what if their
greatest battle is actually fighting the schedule they’ve
created?  I contend this happens all the time.

Going back to the Realization whitepaper, they state the traditional
operating assumption is “not enough resources”.  They contrast
this with a lean approach that states “reducing the cycle
time of projects will increase overall throughput”.  They further
contrast the differences by stating that traditional
operations set aggressive resource utilization targets for the
resource while lean operations set aggressive cycle time reduction
targets to ensure that there is no room for Parkinson’s Law in the project. This becomes clearer on how lean differentiates when you read Darrell’s LSD principles
When you drill down on the approach you can see that waterfall projects
are push-based while lean is pull-based.  Pull based is
fundamentally different and merits some discussion.

If you look at lean from a manufacturing standpoint and compare it
to software – I see a couple of concepts that are critical. This whitepaper from Synchrono is
particularly useful in this discussion from the first three pages by
introducing the following concepts: the pacemaker and takt time.
The pacemaker is the constraining resource (development) and all focus
is directed on delivering continuous flow to the pacemaker.  This
continuous flow includes inputs such as specification writing,
sample data generation and anything else that feeds into the
development process. This continuous flow also includes the output
– which is code that is handed to resting. Meanwhile, we also have the
concept of takt time.  Takt comes from the German language and
means meter – as in musical meter.  Takt time is the rate at which
the market consumes the product coming from our pacemaker. In
development terms, takt time is driven by testing.  For this
process to be effective, testing is continuously building the product,
testing it and providing feedback to development with a 24 hour
turnaround which is referred to as the heartbeat in lean terms. 
Now developers are receiving feedback immediately after coding and not
waiting 3-4 months before testing gets involved.  This takes the
whole process a step beyond Test Driven Development – not replacing it,
but further enhancing the quality of feedback to development.

Since we are no longer driving off of a static schedule and
development is pulling tasks to be completed based on triaging the
highest priority issues we can see a number of capabilities that play
to Darrell’s points mentioned earlier.  We can now “decide as late
as possible” since specifications can be written at the last possible
moment provided they don’t violate the continuous feed to
development.  The longer we wait on specifications, the better
those specifications will be by adjusting to realities such as
market shifts during the development process.  Here’s the best
part, I can now respond mid-cycle to a new requirement!  New
specifications can be driven to completion and prioritized
on development’s “to-do” list and handled in the normal process –
it’s simply a question of evaluating the size of the task and deciding
when it needs to be released.  As opposed to waterfall,
the entire process and schedule doesn’t need to be rebooted to
accomodate what was formerly considered a major interruption. 
Finally, if I need to push the project out sooner based on customer
requirements, I can choose an arbitrary cut-point at any time and
deliver the product with minimal interruption.  In reality, the
concept of “three-month cycles” or “six-month cycles” are now truly
arbitrary and have no meaning or value beyond the
marketing/planning benefits because development is now focused on a
24-hour cycle.

I previously posed the question “is Lean just a rehash of Agile?” 
I believe the answer is a resounding ‘no’.  While
Agile&XP focus on making changes starting with the programmer,
lean focuses on the management process and drives down to the
programmer.  Lean cannot exist without Agile/XP
approaches while Agile/XP can become much more effective with Lean.

There are a number of traits you have to consider in a product used
to drive this project such as managing sequential processes (called
gating).  A gating capability can even allow you to coordinate
multiple projects under one plan (try doing that on a
complex project set using MS Project!).  There are also
architectural issues that must be addressed along with programmer
skills.  I’ll leave those discussions for another blog entry.


This entry was posted in Development. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

4 Responses to Lean Software Development: differentiating push- and pull-based development

  1. Steve Hebert says:

    BTW: I should mention I’ve never used the tools provided by Realization.com. I was googling some lean topics and came across the whitepaper.

  2. Steve Hebert says:

    Hi Darrell,

    I think we’re saying the same thing regarding the process. The tool used to capture the definition and then develop and test issues is well defined, but it’s just defined very differently from MS Project. MS Project can still be used up front to identify the initial steps and points where one set of development is dependent on another, but it’s not used to drive the project. We actually used a tool not written for lean to drive the project – but it works very well.

    And I think we’re saying the same thing on requirements – as a rule of thumb don’t define them until they are needed. I think the combination of getting too specific too early typically results in marginal specs.

  3. You can be pull-based even in a defined process. For example, Dell is pull-based because they don’t start until you place an order. However they have the entire process planned down to the minute.

    This is analogous to having a plan to implement a requirement but the exact parts we use (the lines of code) are not written until we need them. Just-in-time inventory baby! :)

  4. Deciding as late as possible is made possible by not deciding the “concrete implemenation” of a requirement until the month we do it. We have a general idea, but we didn’t waste time getting too specific. Actually the time is not wasted in getting specific, time is wasted when we get specific but then have to throw it out or modify it because of changes in the marketplace.

Leave a Reply