Reflections on Agile

Read a bunch about Agile and it's development from the thoughts of Edwards Deming, to The Toyota Way, to the Agile Manifesto, to Lean Development.

The basic idea is one I have often been fond of, feedback loops. It's the way I view the world and the mind, a huge complex system of feedback loops. Nature works this way because it works, so it only makes sense to adopt it in our business systems and development processes. It's also why things are so grey and abstract, they are always changing and in flux. A steady state is nice, but inevitably temporary, so we must be prepared for change; agile in other words.

Agile is basically a rejection of micromanagement and micro-planning, but overzealous users may reject all planning at their peril.

I can see why the Toyota Way is used so broadly, it's a very general principal. I particularly like the idea of a "pull" system that only uses the resources it needs, doesn't horde. However, that kind of optimization requires a stable environment to work (suppliers in there case). Some blame part of the current financial crisis on over-optimization in this area. Buffers are still useful, but should be analyzed (see Queueing Theory). I also like the idea of levelling the workload. I can imagine that having swings in work rate putting the system in an unnecessarily diverse range of states, making errors more likely. However, must be careful not to make the system brittle to changes in work rate either. That's the common sense aspect I suppose, unwritten but probably should be. Can't write everything though, life is often too complex to finish it, and too temporary to create long term value.

Balance in all things. Feedback loops can help maintain this through control circuits.

I was thinking about the 5S methodology:

* Seiri - Take an itinerary of the objects in the environment * Seiton - Arrange the objects to optimize work flow * Seiso - Keep thing clean and neat * Seiketsu - Standardize so everyone knows where things are and what to expect. Less time wasted on preventable uncertainties. * Shitsuke - Don't give in to laziness, apathy or carelessness. Keep the system alive. Probably requires a Kaizen mind, a sense of continuous urgency that takes advantage of the survival instinct for improved productivity.

It occurred to me that it was like a Zen koan. You're part of reality by being separate from it. That is, the work place has a defined set of standards, arrangements and procedures that separate it from reality. It's its own cosmos, and ideally one that promotes productivity, hence the emphasis on cleanliness and whatnot. However, that productivity enabling aspect also makes it much more present in reality and the outside world than the inside of someone's house would be.

Zen koans to me are pretty simple. They are the quantum mechanics of philosophy. They take two seemingly opposite ideas and fuse them together, because in reality nothing is so black and white. This is even the case when those opposite ideas are mutually exclusive, because reality is probabilistic. A system can be in a sort of superposition of those exclusive states, so as you sample it, it may appear one way or another. However, underneath that seeming contradiction is a unifying probability field. So this another angle on the fusion of being separate in order to connect, and one I think Deming might of liked given its statistical analogies.

Also read about the CELL. Currently installing YDL on my PS3 so I can write a concurrent raytracer or something similar. Not sure if I should write a PC version first, might be a waste of time. I'm pretty sure I can handle this. Still need to finish my Common2 library and Compiler though. Lots of work. I chose YDL, because it appears to have the most comprehensive PS3 support, and includes all the necessary development tools out of the box. That being said, it's eclipse package is somewhat broken, so I had to reinstall the eclipse package from an older version, and reinstall the Cell SDK to get the eclipse plugin working. Next time, I'll probably just use Fedora.