Friday, 24 July 2009

5S Kaizen in Software Engineering: Part I Seiri

I made a note a while back about my thoughts on if, why and how the 5S ideas from Kaizen could be applied to software engineering. I made quite a few notes about this and thought I'd put them on here in an episodic manner, so we start with the first S: Seiri (the english translation is usually Sort).

In Kaizen, this is the act of removing things that are not used from the workspace; bringing things close that are frequently used. Essentially, the objective is to trim time wasted finding, calibrating and utilising resources.

In software, our software building and debugging resources are:
  • The source code
  • 3rd party libraries
  • Code management tools
  • The compiler and linker
  • The debugger
  • Other development resources used to build and deploy the working software on the target machine such that it can be run, debugged, profiled or built for test or release etc.
  • Test data sets and data streaming services
We must also remember that we have physical resources needs too:
  • PC, monitor, input devices, other output devices
  • Test hardware
  • Reference books (how many times do you need to pick up Effective STL or The Standard?)
  • Programming buddy (if pairing)
  • Access to the product team, stakeholders and (ideally) users
  • Access to the test team
And finally, we have resources that aid in the design and development process (both physical and IT):
  • Meeting rooms
  • White boards, flip-charts, markers etc.
  • Software resources for co-ordinating the design effort (Sharepoint, wiki, standard office software etc.)
  • Project management tools (e.g. tracking software, time sheets etc.)

So, there are probably three categories in which we should apply Seiri:

  1. Physically tidy up individual and shared workspaces: Get rid of stuff that’s in your way and make sure you have access to all of the physical resources you need, including the essential reference texts, whiteboards, markers, flip-charts, allocated test equipment or permanent Ethernet connection to it; move un-necessary and infrequently used resources away.
  2. Tidy up individual “software workspaces: clear off your desktop; make sure everything is installed and configured that you need; uninstall unused software; organise your PC and the data on it; create batch scripts to automate repeatable activities; create immediately accessible links to wiki pages and shared resources; organise personal test data.
  3. Create an efficient “shared software workspace”: make getting, configuring and building the source code quick and easy; organise the source code and remove unused code; cut down dependencies to reduce solution sizes; provide easy access to shared design and documentation resources; trim down the design and documentation requirements to an acceptable minimum without duplication; throw out obsolete specifications; automate testing; automate documentation; pool test data, provide connections to test equipment; provide services to stream test data.
Next up tomorrow is Seiton (or to Straighten)...

No comments:

Post a Comment