It is essential to talk about the Lean teams and not only about the Lean companies. Let’s be realistic – most of the current companies are not Lean. I predict that it’ll take a whole generation for software companies to shift from the “old ways” to the “new ways” of Software Development and there is not a lot we can do to change this dynamics. It takes a lot of effort to persuade the current management generation that the “new ways” are much better than the “old ones”. Usually the conflict lies in the “ego” world – whose “ego” is bigger.
One of the principles of Lean Software Development is to “Respect People” or, sometimes it’s reads as, “Empower People”. This directly contradicting the “old ways” where the principle was 100% opposite – the strict “top down” management and control. The “top down” development was a result of that principle where the top level requirements were translated into the top-down architecture which, in it’s order, was translated into a components with a strict plan of dependencies and schedules.
In my personal opinion this principle should be at the second place following the very first and essential one “Eliminate Waste”.
Let’s see what this principle is about and why I see this is one of the core ones:
- It’s all about Training:
- Training is essential to increase your team’s potential.
- The team should be a self-sufficient, self-organizing and self-managing organism.
- The people should be trained to the point where they can get a requirement and deliver.
- The right training will ensure that the delivery is up to your standards, up to industry standards and contains all the necessary artifacts (i.e. documentation, architecture, testing, installation and configuration instructions, etc…)
- Move responsibility to the lowest possible level:
- Developers are much closer to the “metal” and to the technology.
- They know more about the technological problems that may arise during the development process and they can foresee the conflicts in the requirements.
- Encourage pride in craftsmanship:
- Encourage people to be passionate about what they do and how well they do it.
- Encourage the team to get evolved in the community or, at least, in a cross-team communication. Make them share the ideas and present their achievements.
I hope, the points I’ve discussed above, make pretty compelling explanation why we have to Empower the teams and the people. If you still not convinced and you’d like to ask a usual question: “Why do we need the management and the managers”, I’ll give you my favorite answer: “To empower people, to make them succeed and to provide them with all the support they need to fall into the pit of success”.
The managers should:
- Remove impediments
- Train
- Guide
- Advise
- Support
- Empower
- Recognize
- Foster
- Mitigate
- Resolve conflicts
- Encourage
- Catch errors
The managers should never:
- Discourage
- Punish
- Micro-manage
- Downplay
All the above is very well summarized by a very old aphorism: “Find good people and let them do their job”. If you, as a manager, found right and smart people – they’ll do the right job. If the people are not “right and smart” – then why were they hired in the first place?