Hi Gabriel,
When it comes right down to it, Lean is a state of mind, a way of looking at things. One of the most important things that Lean brings to software development is the idea that
testing is not, and should never be, after-the-fact. Testing at all levels - from unit testing to continuous integration with a 10 minute test harness to longer acceptance test harnesses - should be done as an integral part of development, not after it is done.
It is never a bad idea to start moving testing forward as soon as you realize that it does not belong at the end of the development process. It is never a bad idea to think hard and act aggressively to reduce the time spent in regression testing so that it becomes feasible to implement small feature sets instead of big batches of features.
But changing your entire process is another matter. One frequent good reason we hear for changing to short iterations is that longer iterations are simply not doing the job. As crunch time comes and the work is not done, staged deployment can look very attractive.
Another variable would be whether or not you have intact teams that move together from one problem to the next. Such a team can determine when it wants to switch processes and how to go about it. Without intact teams, changing to a new process is much more difficult because people will have to figure out how to work together at the same time as they attempt a new way of doing things - always a challenge.
This is just a long way of saying that situations differ. But you can always learn and implement lean principles at any time.
Mary Poppendieck