Improving Wetware

Because technology is never the issue

Another take on the Software Engineering idea

Posted by Pete McBreen 23 Jun 2011 at 21:28

Why Software Development Will Never be Engineering

Basic idea in the article is that things like bridge building are now fairly static. The types of bridges we know how to build are well codified and replicable. Not mentioned in the article is that novel bridges still have novel problems, but after a few mistakes the construction engineers seem to resolve most of the issues.

Software development is different because it keeps on changing. The article argues that 10 years ago the future seemed to involve UML and CASE tools, but that the current state of the art of software development (Agile) does not use either of them.

Magical Thinking

Posted by Pete McBreen 07 Jun 2011 at 22:12

There is a constant refrain that occurs whenever people try to achieve anything

There must be an easier way

We learn this lesson at an early age and never forget it. The toy problems we are “challenged” with while learning always have an easy solution. Sometimes the easy solution is non-obvious and hard to find, but there is always a trick that makes solving the problem easy.

Unfortunately the world does not work this way — but we want to be tricked into thinking that it does.

Some examples:

  • Finding the one food that will help the pounds melt away
  • A pill that will cure all diseases
  • The invisible hand of the market
  • Buying a CASE tool to improve code quality
  • Adopting Extreme Programming
  • Thinking that Requirements Traceability makes systems better

Whether we think of these as “Silver Bullets” or a “Technological Fix”, it seems that we are hardwired to seek out simple solutions. In part this could be because we are so good at pattern recognition that we see a pattern where none exists.

All of this makes progress in software development difficult, because collectively we don’t want to believe how hard it is to deliver reliable systems. There has to be an easier way …

Understanding The Fundamentals

Posted by Pete McBreen 31 May 2011 at 23:01

Is there a Mathematics Generation Gap

Calculators became affordable in the mid- to late-1970s. Students in the 1980s were taught by teachers who had learned mathematics without calculators, and could do basic mental arithmetic. Students today might be taught by a teacher who is himself unable to work out 37+16 without help. The consequences are neatly described in an “Alex” cartoon I have on my fridge about a proposal to ban the use of calculators in school. “Faced with home work which requires him to work out simple sums in his head today’s lazy seven-year-old will instinctively turn to the quick and easy method of arriving at the answer… i.e. asking his dad, who, embarrassingly also wouldn’t have a clue without a calculator.”

Implications of this could be interesting for software development. When there is a large part of the workforce unable to do simple calculations without the use of a “Guessing Box” I expect there will be a lot more errors in software. Or at least errors that can be attributed to the Garbage In, Garbage Out problem of the users (and developers) not having the basic skills to detect implausible answers from systems.

An Economist Admits There Is A Problem

Posted by Pete McBreen 24 May 2011 at 16:30

Brad DeLong admits to a problem

Four years ago we economists were writing learned papers about the “Great Moderation”: about how it looked as though the governing institutions of the world economy had finally learned how to control and moderate if not completely eliminate the business cycle–the epileptic seizures of the economy that leave us with pointlessly high unemployment, pointlessly idle capacity, and pointlessly rusting away machines in spite of there being no fundamental cause for machines to be idle, factories closed, and workers unemployed. In such an epileptic seizure of the economy, workers are unemployed and machines are idle because there isn’t the demand to employ them, and there isn’t the demand to employ because the workers are unemployed and have no incomes.

We have been seeing these epileptic seizures called business cycles fairly regularly since at least 1825.

And we have been claiming that we have it licked fairly regularly since 1825 as well.

British Prime Minister Robert Peel thought we had it licked with his Bank of England reforms in the 1840s.

While some of the explanations in that post are to my mind a bit off, the overall message is that economics is still not very good at predicting what will happen with the economy.

Story About The Start Of Scientific Management

Posted by Pete McBreen 21 Apr 2011 at 11:04

An older article from The Atlantic, on Management Myths. Telling comment from the viewpoint of Scientific Management

the science of handling pig iron is so great and amounts to so much that it is impossible for the man who is best suited to this type of work to understand the principles of this science, or even to work in accordance with these principles, without the aid of a man better educated than he is.

Worth a read if only for the historical perspective.

Strange error from RubyGems due to linux prelink ...

Posted by Pete McBreen 07 Apr 2011 at 14:32

After installing Ruby 1.9.2 from source on Centos, a few days later got a strange error from rake and gem commands

# gem list
<internal:lib/rubygems/custom_require>:29:in `require': No such file or directory - ?? (Errno::ENOENT)
       from <internal:lib/rubygems/custom_require>:29:in `require'
       from /usr/bin/gem:8:in `<main>'

Found a fix for this at Ruby Forum Beware prelink and compiling ruby from source. The problem seems to be prelink corrupts ruby, so just need to ban prelink from touching the ruby executables and libraries. Need to ban /usr/bin/ruby in /etc/prelink.conf. by adding the line

-b /usr/bin/ruby

to the conf file. Hopefully someone else will find this in the search engines and not have to reinstall ruby too many times (but once it has occurred you will need to reinstall to fix the corruption).

The Economist Gets It Wrong Again

Posted by Pete McBreen 01 Apr 2011 at 20:25

Not sure what it is about the magazine, but it seem to be incapable of reporting the implications of actions. A stunning example of this comes from their Babbage Blog reporting on the delays in the acceptance of the reports that CO2 is warming the planet…

Erring on the side of extra caution is not a bad idea, and various efforts are underway to develop, corroborate and better to underpin the work on temperature records that has been done to date.

Erring on the side of extra caution for climate change would suggest that we take steps to reduce CO2 emissions, not that we do yet more studies on whether the planet is warming and how fast. We already have the warming data, and it does not look good. “One sure bet is that this decade will be the warmest” on record – James Hansen

Celebrating the day of fools...

Posted by Pete McBreen 31 Mar 2011 at 22:31

Why skepticism is just another cult

Some History Of Programming

Posted by Pete McBreen 12 Mar 2011 at 12:05

A fascinating one hour videos of a talk by Douglas Crockford on Open source Heresy. The talk includes some humor around the JDON license

The Software shall be used for Good, not Evil.

Interesting to hear the idea that open source dates back to the very early days of Univac …

Celebrating 15 years of the Sokal expose...

Posted by Pete McBreen 04 Mar 2011 at 09:58

In the Spring of 1996 the Alan Sokal had his article Transgressing the Boundaries published in the Social Text journal. To coincide with the article’s publication, Sokal arranged for another article to be published A Physicist Experiments with Cultural Studies.

The displacement of the idea that facts and evidence matter by the idea that everything boils down to subjective interests and perspectives is – second only to American political campaigns – the most prominent and pernicious manifestation of anti-intellectualism in our time. – Larry Laudan, Science and Relativism (1990)

For some years I’ve been troubled by an apparent decline in the standards of intellectual rigor in certain precincts of the American academic humanities. But I’m a mere physicist: if I find myself unable to make head or tail of jouissance and différance, perhaps that just reflects my own inadequacy.

So, to test the prevailing intellectual standards, I decided to try a modest (though admittedly uncontrolled) experiment: Would a leading North American journal of cultural studies – whose editorial collective includes such luminaries as Fredric Jameson and Andrew Ross – publish an article liberally salted with nonsense if (a) it sounded good and (b) it flattered the editors’ ideological preconceptions?

The overall result of the experiment was that the parody article was published as if it were a valid work of scholarship in the field.

Hoax or Expose?

Sometimes it is not enough to just question something, sometimes you have to go further. Yes, Sokal’s experiment is often labelled a hoax, but my take is that it was an expose of many things that are wrong with out current social and political discourse.

TL;DR Soundbites Are Going To Kill Us

Posted by Pete McBreen 02 Mar 2011 at 22:14

TL;DR If you let other people tell you what you should think, don’t be surprised if you end up doing things that are not in your own long term interest.

Niel Postman was right, we are Amusing Ourselves to Death.

Soundbites cannot communicate nuances of ideas

For whatever reason, few people take the time to really find out what is going on in the world, being happy to be few a soundbite by a politicain or demagogue. Since I have the CO2 level shown in the sidebar, a good soundbite to use as an example is “CO2 is Plant Food”. Yes, CO2 is required by photosynthesis in plants, but the role of CO2 is much much more complicated than that.

Television and Radio news rely on soundbites, and as such are destroying public discourse about important matters that as a society we need to deal with. And yes, I know that TV and Radio news have some value, but that value needs to be considered in the light of what it also does to our understanding of science, technology, economics and the political choices facing us in the 21st Century.

When the Low Cost Supplier Stops Supplying

Posted by Pete McBreen 22 Feb 2011 at 18:59

A parallel to the outsourcing debacles is what is currently happening in the supply of Rare Earths (mainly the transition metals if you remember your periodic table). The rare earth metals are commonly used in high tech components, often for the super strong magnets, but also for lots of other electronic components.

China used to be such a low cost provider that it managed to capture most of the market, all of the other suppliers basically closing their mines. Now China, which produces 97% of the world’s supply of rare earths, slashed its exports to a trickle to feed its growing domestic needs. The link goes to a feel good story about a mine that is trying to ramp up production quickly, but there is still a measure of reality in the storyline

“Bottom line, we fell asleep as a country and as an industry,” Smith said. “We got very used to these really low prices coming out of Asia and never really thought about it from a supply chain standpoint.”

In more and more areas we seem to be bumping up against problems when demand starts to exceed easily available supply. It is not that we are running out, it is just that demand is larger than expected so there is not the production capacity, so the price in the market becomes unstable, with large spikes and then resulting drops as some customers leave the market for alternatives.

Mainstream media is catching up with outsourcing

Posted by Pete McBreen 16 Feb 2011 at 09:41

The LA Times is the latest to report on Boeing’s costly lesson on outsourcing. They have an interesting lead to the story

The biggest mistake people make when talking about the outsourcing of U.S. jobs by U.S. companies is to treat it as a moral issue.

Sure, it’s immoral to abandon your loyal American workers in search of cheap labor overseas. But the real problem with outsourcing, if you don’t think it through, is that it can wreck your business and cost you a bundle.

I don’t agree that many people thought of outsourcing as a “moral issue.” The conversation was more about the balance between short term economics and the long term implications of outsourcing. Short term the numbers can look better, but long term organizations lose the ability to do the work. The end result is that in the end the supplier becomes dominant, captures most of the available profit, and the outsourcer ends up being responsible for the downside risk.

See also Outsourcing too much part II

Time for Intolerance?

Posted by Pete McBreen 16 Feb 2011 at 07:50

Jim Bird recently pointed out that there’s a cost to building good software, so calls for Zero Bug Tolerance are sometimes misguided.

There’s a cost to put in place the necessary controls and practices, the checks and balances, and to build the team’s focus and commitment and discipline, and keep this up over time. To build the right culture, the right skills, and the right level of oversight. And there’s a cost to saying no to the customer: to cutting back on features, or asking for more time upfront, or delaying a release because of technical risks.

He goes on to say …

That’s why I am concerned by right-sounding technical demands for zero bug tolerance. This isn’t a technical decision that can be made by developers or testers or project managers … or consultants. It’s bigger than all of them. It’s not just a technical decision – it’s also a business decision.

Alistair Cockburn has pointed this out in his Crystal set of methodologies, that the cost of an error in different kinds of applications varies, and that an appropriate methodology takes this into account.

  • Life and Safety Critical - things like pacemakers and flight control software
  • Mission Critical - systems that the business depends on, if the system fails you make the evening news (for example a stock exchange)
  • Departmental applications - yes the business depends on it, but a certain amount of downtime can be accepted
  • Comfort - yes, twitter and facebook, I’m looking at you

Processes and verification procedures that are appropriate for a mission critical application would be detrimental to a departmental time booking application. A good test suite would be appropriate for both, but only the mission critical application needs a formal review of the test code to make sure it is covering the appropriate cases.

This is one of the reasons why I support Jim’s idea of being intolerant of the Zero Bug Tolerance mantra.

Wider Intolerance

Some ideas just fail the laugh test, but they are afforded too much deference by people who should know better. The Rugged Software Manifesto fails the laugh test as well.

After reading about the attempts to brand Alberta’s Tar Sands as “Ethical Oil”, maybe it is time to start laughing at politicians that espouse crazy ideas as well.

The UK Government Chief Scientific Adviser John Beddington recently called for scientists to be “grossly intolerant” if science is misused

“I really would urge you to be grossly intolerant,” he said. “We should not tolerate what is potentially something that can seriously undermine our ability to address important problems.”

Beddington also had harsh words for journalists who treat the opinions of non-scientist commentators as being equivalent to the opinions of what he called “properly trained, properly assessed” scientists. “The media see the discussions about really important scientific events as if it’s a bloody football match. It is ridiculous.”

Limits Of Expertise

Posted by Pete McBreen 15 Feb 2011 at 18:09

A common problem in software development and science is that people are often not aware of the limits of their knowledge.

The electric car provides a great example of this. Richard Muller in Physics for future Presidents makes several statements about the feasibility of electric cars that have turned out to be incorrect.

This quote is from Confusing Future Presidents part 2

High-performance batteries are very expensive and need to be replaced after typically 700 charges. Here is a simple way to calculate the numbers. The computer battery for my laptop (on which I am writing this) stores 60 watt-hours of electric energy. It can be recharged about 700 times. That means it will deliver a total of 42,000 watt-hours, or 42 kilowatt-hours, before it has to be replaced for $130.

Muller implies in this post that a car would need to replace the battery after only 700 cycles, but although this might have been the case at the time, car battery suppliers are continually extending the life of a battery.

Better Place which is the pioneer in rapid change for electric batteries in cars has also pointed out that the end of life is not a fixed point. In their blog post batteries can have a second life they state

In the world of batteries, what does “end of life” really mean? According to the industry, end of life is defined as that point in time when a battery has lost 20% of its original energy storage capacity or 25% of its peak power capacity. This implies that an EV battery, with an initial range of 100 miles per charge, will reach its end of life when, years later, it only delivers 80 miles per charge.

That time is likely to be reached only after the battery has carried an electric car about 200,000 miles or 2,000 cycles. But that’s not really the end for an EV battery – it’s just the beginning of a second life that not many people know about.

All this goes to show that Muller’s expertise in a branch of physics does not necessarily extend to expertise in economics, engineering and battery chemistry. Muller had tried to dismiss the Tesla roadster before it was released by claiming that it would cost too much and the batteries would be too heavy Confusing Future Presidents part 1. But the Tesla was launched successfully as a niche sports car. Now the GM Volt and Nissan Leaf are also proving that it is possible to build electric cars.

The Better Place business model of renting the battery through quick change stations that can swap a battery faster than you can refuel at a filling station is likely to be a game changer as well.

So the next time someone states categorically that something is not possible, first check to see if they have the relevant expertise in the appropriate areas before listening too long or hard.

Outsourcing Too Much Part II

Posted by Pete McBreen 08 Feb 2011 at 13:02

To follow on the outsourcing saga, the Seattle Times reported that 10 years later Boeing is finally listening to John Hart-Smith. Note that that PDF link is covered in BOEING PROPRIETARY labels.

One interesting item from my viewpoint is that it took 10 years for the warnings to be heeded, so there are echoes of the climate change issue there.

TL;DR Fourteen pages later …

Although John Hart-Smith’s paper deserves to be read in full, I know few people will, so here are some key excerpts.

Almost all potential suppliers indicated a preference for being subcontractors rather than risk-sharing “partners’. Could they have known more about maximizing profits, minimizing risk, etc. than the prime manufacturer who sought their help?

One must ask the question as to where the skills for writing such specifications will come from if there is no continued in-house production from which to learn.

Outsourcing the generation and distribution of a company’s proprietary intellectual data would seem fraught with opportunities for potential customers to acquire the knowledge they need elsewhere.

The inherent difficulty with such an approach to business is the need to retain and develop the technical skills needed to develop future products. … One must be able to contribute in some way to products one sells to avoid becoming merely a retailer of other people’s products.

The paper does discuss some situations whereby outsourcing is useful. On a personal level this is useful because I do a lot of contract software development, so whenever I am working, my client is in effect outsourcing the work.

It is accepted that prime manufacturers cannot afford to have expensive facilities that are under utilized, even if it would save on downstream rework. It really is better to out-source such work, IF AND ONLY IF the selected supplier has excess capacity on such equipment.

In the software world, this equates to contracting for work that is done infrequently, when the skills necessary are not needed on a constant basis. It is also useful to contract in skills that are to be passed on to the in-house employees, so that the contractor comes in, sets up particular processes/machines and then trains the other staff in how to maintain and use them on a regular basis.

Using Climate Change to study Software Development

Posted by Pete McBreen 04 Feb 2011 at 20:51

Although lots of software is used in studying climate change, for example a python re-implementation of a climate model, there are many issues in climate change that relate to software development.

Parallels between Climate Change and Software Development

  • Things change slowly and then suddenly things are different

    An extra 2ppm of CO2 might not seem much, but over a working lifetime, an extra 60-70ppm has changed lots of things. In software development Moore’s Law was slowly making computers faster and cheaper. Suddenly things changed when we realized that hardware was no longer an expensive item in projects. When I started software development, the developer costs on a project were swamped by the cost of the hardware. Now using cloud machines, the hardware costs of a project can be less than the cost of gas to commute to the office.

  • What we are sure we know is not necessarily true

    In climate change, the distinction between weather and worldwide climate is not well understood. Also it is hard to figure out how a 2C change could matter that much when locally the weather can range over 60C from the depths of winter to the height of summer. In software development, historically it really mattered that the code was as efficient as possible because the machines were slow. So everyone knows that scripting languages are not useful for large scale development. Enterprise systems are built in traditional languages, but most web companies are using some form of a scripting language, or one of the newer functional languages.

  • Fear, Uncertainty and Doubt

    Software development probably lead on this one. IBM was justifiably famous for FUD to ensure that customers followed IBM’s lead and did what they were told. IBM had the market and customers were supposed to do what IBM told them was good for them. With Climate Change, large organizations that will have to change to preserve the climate that is suitable for our current civilization, are spreading as much doubt as possible to delay the realization that business as usual is no longer possible. In Software Development the threat of Open Source is currently the target of lots of FUD and large corporations that are seeing changes on the horizon are doing all they can to preserve their business as usual.

  • Nobody wants to listen to the people who know what is going on

    Software Developers are used to being overruled by people who do not really know what is going on. Sure sometimes it is genuinely a business decision, but often the business people are busy making technical decisions that they are not competent to make. In Climate Change, the scientists doing the work are being challenged by the political decision makers who do not have a clue about science. Realistically the political decision makers should accept the science and then start talking about the political choices that we need to make as a result of that science.

  • The results really matter

    There are two things that our civilization depends on, working software and a livable, stable climate. The news is occasionally enlivened by the story of a major software project that costs hundreds of millions of dollars that fails to deliver the expected benefits. The smaller day to day losses from smaller failures are hidden. Similarly the big storms that are increasing in frequency and severity due to climate change are making headlines, but the smaller impacts are never visible in the news.

Making sense of the parallels

Still working on this one, but I have a sense that the political power structures have a big impact. The techno geeks that do software or science are not part of the larger political power structures that govern our corporate dominated societies. As such the techno geeks are marginalized and can be safely ignored … at least for now … obligatory link to Tim Bray - Doing it Wrong.

Ruby on Rails Gotcha — cannot always omit parenthesis on a method call

Posted by Pete McBreen 03 Feb 2011 at 10:45

When trying to test out some legacy routes I got a really obtuse error from rake while running the following test case

  test "legacy routing OK" do
      assert_recognizes {:controller => 'index', :action => 'contact'},  '/contact.html'
  end

All I was trying to do was make sure that any URLs saved in search engines from the old static site still worked in the new Rails based site, so no issue, just use assert_recognizes and that will make sure the routes are protected by test cases. It is not possible to use assert_routing since I did not want the new code to generate the .html style URLs. Anyway, this is what rake complained about

/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:147:in 
   `load_without_new_constant_marking': ./test/functional/index_controller_test.rb:25: 
            syntax error, unexpected tASSOC, expecting '}' (SyntaxError)
          assert_recognizes {:controller => 'index', :action => 'contact'},  '/contact.html'

         ./test/functional/index_controller_test.rb:25: syntax error, unexpected ',', expecting '}'
            assert_recognizes {:controller => 'index', :action => 'contact'},  '/contact.html'

It turns out that although the code documentation uses the normal rails convention of omitting the () around the method arguments, you cannot do that if the first parameter to a method is a hash. So the fix is to put in the parenthesis and the test runs as expected.

  test "legacy routing OK" do
      assert_recognizes( {:controller => 'index', :action => 'contact'},  '/contact.html' )
  end

Fun with Ruby on Rails

Posted by Pete McBreen 01 Feb 2011 at 16:31

Rails can be for fun as well. Rather than going the usual Wordpress/Joomla or PHP route for my local Cochrane Red Rock Running and Tri Club website, I decided to have some fun with Rails and jQuery. Nothing really fancy but it does what it needs to without anyone having to learn about the joys of a CMS control panel.

Overall the site took less than 10 hours of spare time, time that would easily get eaten up by the usual requests for updates to a static site. There are still a few static parts to the site, but those are ones that do not change frequently, so not a big deal to maintain those parts.

Edited Dec-2018, site is now retired, had a long run but now replaced by a wordpress site maintained by someone else. Over the years spent about 40 hours maintaining the site, so not too bad, and zero breaches/security issues in that time

Kanban for Software Development?

Posted by Pete McBreen 31 Jan 2011 at 09:02

Gotta smile at this one, but recently was referred to an article on Kanban for Software Development and my immediate thought was but Kanban is all about pull… I could also make a comment that they seem to have re-invented the linear waterfall process, but I will not go there.

All of the diagrams in that article show the scrum style backlog and input queue at the start of the process. Is that not the very definition of PUSH? Admittedly I last looked in detail at Kanban in the early 1990’s (not much call for Manufacturing Systems experience where I currently live), but I’m sure that Kanban did not get redefined in the intervening period to be a PUSH system, the whole point of Kanban is that it PULLS work through the system in response to customer demand.

I was hoping that the Limited WIP Society, which claims to be The home of Kanban Systems for Software Engineering would correct the mistakes in the article, but all it seems to be is a place that links to a lot of different blogs. The overall consensus seems to be that Kanban for Software Development is just Scrum with limits between stages rather than the normal scrum which just limits the work per iteration.

Once you put limits between stages, interesting things happen, so there are lots of things to address and Goldratt’s Theory of Constraints seems to get thrown into the mix. But overall it sure looks like Scrum.

Understanding Kanban in a Manufacturing context

Kanban originally addressed the problem of too many old rusting parts scattered about the factory floor, with nothing much of value being shipped. In manufacturing, context switching incurs setup costs, so it pays to run large batches, but that means that you might take forever to get to making the one small volume part that is vital to being able to ship the final assembled goods.

So rather than allowing any work station to produce too much of any one part, the simple rule is implemented that a station cannot produce anything until their is a demand for the item from one of their consumers. So suddenly the performance metric goes from how much utilization did you get from that expensive machine to were you able to satisfy all your consumer demands in a timely manner.

This works because kanban was set up for batch production of standardized items. You know how many exhaust valves you need per engine, and there are whole systems dedicated to working out all of the list of parts that go to make a completed engine (parts explosion is a fun problem when looking at customer orders for an assembly plant). For every part there is a standard time to manufacture the item, and the setup times are also standardized, so an industrial engineer can work out if it makes sense to produce a weeks worth of exhaust valves in a single batch, or to just produce one days worth at a time of each of the sizes that are needed (because setup time to change over is low).

So in a manufacturing context, you can balance the overall plant by simple signals, engine assembly sends out a pull request for 800 inlet valves and 800 exhaust valves. Once your machine has pumped out the 800 exhaust valves you have to switch over to producing the inlet valves because you have no more demand for exhaust valves. Assembly can now start on building the engines since it has both types of valves it needs. Under the old machine utilization regime, changing the setup to produce the other type of valve would have meant downtime and lower utilization, so switchovers were rare. It was common to run out of necessary parts because someone upstream was busy making other parts.

Kanban in a Software Development context

Software development does not have any standardized items, so everything is a batch of one. This plays hell with the overall model, because the rate at which each station can process the items is not eventually knowable. You can make guesses or estimated averages, but some requirements are hard to elicit, but easy to develop and test for. Other changes are easy to say, easy to implement but really complex to test for.

Another issue is that a key part of Kanban was that it worked at the workstation level, but the “Kanban for software development” seems to be working at a team or subteam level. This might work for Scrum, but applying it that way for software development seems to make it much more complicated than it needs to be. To make Kanban work in software development the pull requests need to go to the software equivalent of workstations, so either to individuals or programing pairs. Scheduling at any larger level leads directly back to the problems that Kanban was designed to eliminate, the fact that there is half finished stuff lying all over the place.

Kanban for Software

If we are going to try to apply Kanban we have to first change the mindset.

Scrum and XP both have the idea that the backlog of stories is prioritized into the iterations (though they use their own terminology for this process.

Kanban for Software has requests for changes and new features in an Order Book, just like any factory has an order book, and the factory only builds to order. So having a large order book is a good thing.

Scrum/XP show the backlog at the start of the process, pushing on the development team.

Kanban for Software shows the Order Book on the user end of the process, emphasizing the pull of the orders placing a demand on the team.

Kanban for Software schedules from the Acceptance Test back into the development process. The rest of the changes flow naturally from there.

If the most valuable order in the order book is “Add social features to the website”, then the person responsible for Acceptance Test has to find out what it would mean to successfully test that item. Feature definition would occur through what Brian Marick calls Example Driven Development.

Once identified, the feature requests would be passed back up the chain of people who are necessary to deliver the feature. The integration tester who hands off the individual sub-features and tasks to specific developers.

Changing the Mindset to Pull

Rather than allowing developers to pull items into the current iteration when they are blocked, Kanban for Software suggests that developers should ask their downstream consumer for work. If at the end of the chain the Acceptance Test person is too busy to look at the order book for new work, then it is OK for the developers to be idle while waiting for the inevitable bugfix requests. After all the thing that is in Acceptance Test right now is the most valuable thing that can be produced, so why make that wait for developers who are working on less important tasks?

The idea of Stopping the line was one of the hardest ideas to get across in manufacturing assembly lines. And the idea that it is OK for a developer to realize that they do not have any customer requested work to do right now is going to be just as hard to accept when we start applying the idea of Kanban for Software.