Friday, October 13, 2006

Lean Software development, can it be applied in Jordan - by Ammar Sajdi

I ve been recently reading a lot about software development strategies and methodologies revolving around a fairly recent way of thinking. These methodologies also belong to what is now know as Agile Software Development. an interesting overview about Agile software development can be found at wikipedia.
One particular book that i discuss with the employees at REALSOFT (Amman office) is called "Lean Software Development" by Mary Poppendieck and Tom poppendieck (ISBN 0-321-15078-3).
The origin of Lean thinking stems back to the 1940's when taiichi Ohno of Toyota who wanted to know how Toyota (a small car producer at the time) could compete with American mass-produced cars. The father of the Toyota Production System is the mastermind behind the fundamental lean principle, namely, eliminate waste.

The book and others book in Agile realm try to transform the Lean thinking used in development and production of products into lean thinking as it applies to Software development.
Effectively, lean thinking advocates the adoption of iterative software development approach over the traditional water fall approach. However, even though several other studies in software development life cycles (SDLC) favor iterative approach, the agile lean approach has its unique steps.

Lean thinking has seven principlesEliminate Waste
Amplify learning
Decide as late as possible
Deliver as fast as possible
Empower the team
Build integrity in
See the whole.

The are other approaches that also know in the agile arena such as
Extreme Programming (XP)

I think that this approach can be applied in Jordan very well, and many of us, most probably apply it without having identified their method as being Lean or Agile. The Lean approach applies best in environment when it is not possible to capture the business requirement of a certain business precisely and comprehensively at the start of the project. The agile approach, then suggests, that the team starts to do early rough releases and present the results to the client as soon as possible, then start enhancing and evolving both the requirement and the software application itself by introducing another iteration that includes the additional features resulting from the first release. (This complies with the Decide as late as possible and Deliver as fast as possible principles)

1 comment:

Izzat Sajdi said...

You have listed amongst the Seven Principles of Lean Thinking : (Decide as late as possibe). I find this to be misleading as this statement implies that you have no direction which I am sure is not the intention. I would suggest replacing it with :(Make and Take intuitive decisions).

However, because of the possible uncertainities in the Software Development, which are possibly more that those in other businesses, you may have to " Keep options open and make irrevocable decisions as late as possible".

Getting Ref of the View Object referenced by the current Iterator binding for One iterator page without knowing the name of the iterator

Getting Ref of the View Object referenced by the current Iterator binding for One iterator page without knowing the name of the iterator ...