Principles
Agile principles are concretization
of agile values. Agile manifesto lists 12 principles. These principles
are iterated in the form of assertive statements.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
In traditional command and control hieratical management,
boss knows the best and he know who can do what and when even how. But in agile
way of working, those who would do the work are responsible for organizing the
work as well how to do it.
This might be heresy for traditional management gurus but
here you may have to consider few things in context to software development and
maintenance:
- Software development & maintenance is mostly devoid of repetitive tasks. In most of the cases as soon some repetitive task is discovered, team automates it.
- In software development and maintenance interactions are mostly among individuals instead among machines and/or machines & human as in manufacturing and assembly line jobs.
- The general level of education of persons working in software industry is significantly higher than working in manufacturing and assembly line.
- Software development and maintenance is in very nascent state of becoming engineering (if it can ever become!), it is still largely a craft
- Technologies underlying software development are changing very rapidly.
Keeping these factors in consideration, it is observed that
Taylorism does not work with software development and maintenance teams. Also do
not forget that in Maslow’s Hierarchy of Needs software professionals are
striving for top three.
In “Drive – The Surprising Truth About What Motivates Us
“Daniel Pink says that people are motivated by autonomy, mastery and purpose.
In my experience, I find Pink is saying true and these factors are by product
of any self-organizing team.
To create great software (so the different aspects of
software like – architecture, design, and design), provide autonomy to software
teams so it can self-organize.
A self-organizing team:
- sets direction for itself;
- design performing units for its work;
- manages (allocation, reallocation, estimation, re-estimation, delivery, rework) and monitors its work;
- executes the work;
- sets its rules and norms to achieve goal;
- has feeling of ownership and commitment;
- is self-driven, pull out work for itself to meet goal;
- requires mentoring and coaching;
- asks lot of questions to understand not only requirements but to understand reasons;
- gives lot of suggestions;
- intra team communication is spread across formal and informal channels;
- continuously enhance skill set;
- has high level of trust among team members; and
- sticks together for long time.
In scrum, kanban, and devOps frameworks, this principle is
reflected in following practices:
- Sprint backlog
- Retrospect meeting
- Estimation of work by devTeam
- Daily standup
- Visual information radiators
No comments:
Post a Comment