Wednesday, June 8, 2016

The Agile Manifesto in English - 16



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