Sunday, January 23, 2011

What is 'Level out the workload' in software development


Recently I been reading Taiichi Ohno book
Toyota Production System: Beyond Large-Scale Production
A key principles in his book was the principle of leveling out the workload

I have been reading lately lots of books that show how to apply Toyota Production principles to a software development process most of them describe how to map Toyota 7 waste to the software development world.

For example

  • Inventory  ~ Partially Done work.
  • Extra Processing ~ Extra Process.
  • Overproduction ~ Extra Features.
  • Transportation ~ Task Switching.
  • Waiting   ~ Waiting
  • Motion ~ Motion
  • Defects ~ Defects
The meaning of leveling out the production in Toyota is to try to make every day the same amount of
each type of product.
For example:

If you have an order of 300 cars of types A and 600 Cars of type B each Cell should assembly
one car of type A than 2 cars of type B and so on.
According to the book leveling out the production help to maintain both machines and employee in good condition, where burst of actions and afterward long periods of doing nothing exhausted both humans and machines.

Another great benefit of leveling out the production is that it allow JIT, when working in JIT
you get every part from the earlier processes exactly when and where you need it, this enable single flow, reduce inventory and find defects early.

Now the question I was thinking of is, how do I level out the workload for software development ?

Software development is creative process unlike car production so maybe there is no good equivalence to leveling out the workload in software development.

My faith is that in software production the your best assets are your employs so leveling the workout can be mapped to:


  • Invest and educate your employs.
  • Give them feeling that their work is important.
  • Provide them with ways to measuring their progress.
  • Plan ahead to reduce burst of actions or periods of doing noting.

If you think there are other way of leveling out the production in software development, please let me know.





Wednesday, January 19, 2011

Testing YUI DND with Selenium

If you happen to write some selenium tests for YUI based page you may notice that sometime selenium DND does not work.
This is because selenium sometime has error when computing the right X,Y of a component when using YUI layout manager.
This problem can be solved easily by overriding selenium JavaScript code that compute X,Y given a locator.

For example getElementPositionTop can be rewrite to something like that:

Selenium.prototype.getElementPositionTop = function(locator) {
    /**
     * Retrieves the vertical position of an element
     *
     * @param locator an element locator pointing to an element OR an element itself
     * @return number of pixels from the edge of the frame.
     */
    var element;
    if ("string" == typeof locator) {
        element = selenium.browserbot.findElement(locator);
    }
    else {
        element = locator;
    }
    var xy = selenium.browserbot.getCurrentWindow().YAHOO.util.Dom.getXY(element);
    return xy[1];
};

All the change should written to a file for example 'user-extensions.js' and selenium should be run with the cmd:


java -jar selenium-server.jar  -userExtensions user-extensions.js

That should solve the issue.