These are Essential characteristics in an Agile Software Development Process:
Getting there often causes changes from traditional situations:
- Management Pyramid is inverted
- In true Agile practice the management pyramid is inverted
- Developers are empowered, they self-organize to accomplish the task at hand - without the command and control and master/slave relationships of old traditions.
- Coaches and team leaders work for the team, they are in charge of resolving the issues that the developers can't solve for themselves.
- Greater Liberty and Freedom to accomplish the task at hand
- People in an Agile Software project feel more liberated because they feel _free_ to self-organize to do whatever it takes to achieve their goal including: talk to the customer, think, imagine, code, test, refactor, in any order, as many times as they need/want, and as often as they need to.
- Constant Learning, Knowledge Creation and Knowledge Sharing
- People in an Agile Software project are constantly learning, and sharing knowledge, in an ad hoc way, because by definition agility is based on continuous short feedback cycles of inspection --> adaptation - where we learn from the customers, from other team members, from practitioners in the field, and even from ourselves on a daily basis. In agility, learning and knowledge sharing happens opportunistically and serendipitously.
- A More Enjoyable and Humane Work Environment
- People in an Agile Software project participate in a more human "fun-like" way because the more human and intellectual activities of research, understanding, imagination, creativity, cooperation and sharing are encouraged and required; as opposed to being considered just "another station in a production line". And these activities, by their own nature are not, can cannot be structured in a step-wise process. For example, there is no defined process to invent or create something.
- A Hyper-productive Cooperative Work Mode
- People in an Agile Software project work in teams that exhibit a mode of cooperation that leads to hyper-productivity - the dynamic pull-system way that Nonaka and Takeuchi describe in the Knowledge Creating Company as the "hypertext" organization.
- This way of working relies on dynamic and opportunistic cooperation episodes that are bound by social relationships that don't depend on a defined process.
- This mode of cooperation, taps into the collective intelligence and collective knowledge and memory stored in the distributed mind of the team and the organization as a whole.
- Emergent Planning, Architecture and Requirements
- Agile Software projects work under the assumption and expectation that "emergent" behavior is the only way to confront uncertainty. Agile Software projects openly accept that it is impossible to: outline what tasks are going to be needed to complete a software project up-front, and get all the requirements up-front, and/or design an architecture up-front.
- Rather, the plan, the requirements and the architecture of the project, gradually emerge, by constant feedback cycles, research and creativity, and constant interaction among the participants of the project and the customer.
- New values that generate a cooperative culture
- When operating in a self-organized mode its values change because the team members are now collectively responsible and in control of the team's accomplishments. Therefore, the values of helping others, sharing knowledge, honesty, emerge as the team changes its mode of operation.
- In contrast, the command and control, Master-Slave relationships of defined-process relegated developers to be responsible primarily of their own tasks, generating less cooperative values like perfectionism, being accountable and dependable.
- The Quality of Life
- Self-organization is what gives Agile Software Development teams the distinctive feature of "ordered chaos" that Life itself uses to accomplish its miraculous chores.
- And therefore, this is what literally makes teams more "alive", because teams more closely resemble living systems like ant or bee colonies, brains, or rugby/soccer/football teams. etc.
--
MikeBeedle
All that, and World Peace, too! (In other words the description of benefits seems rather over the top. All new fads get described in such terms. Which makes me suspicious, immediately. Of course, I could be wrong...)
Can you give some examples of some of the fads you mention above that make similar or same claims? -- MikeBeedle
A LearningOrganization, for one. My point is partly it's _all_ good news, and I don't believe that, being old and cynical. Where's the downside, even if that is outweighed by the upside? What EssentialAgileCharacteristics are negatives?
Good point. I am probably far too deep into the forest to give you an objective list of negatives. (Just being honest.)
However, I do have one question. A LearningOrganization, as far as I know, has never been included as a requirement or feature of any development method. Do you know any development methods for which the above characteristics were listed/advertised/required?
The reason I ask, is primarily the root causes by which TQM, BPR, Knowledge Management, Learning Orgs, and such other _business fads_ failed were because of internal politics, technical limitations, the inertia and passivity of corporate cultures, and the sheer organization mass i.e. too many people to line-up in a single direction. But in some cases, Learning Orgs have been successful: 1) some GE factories report success, 2) Saturn automobile project was a success, 3) 3M claims it redefined its culture, and of course many of the Japanese companies claim they have operated in such way for at least 15-17 years.
On the other hand, doing software development, and specially in isolation (one team at a time), it is much harder to beat the politics, change at least the "local" culture, and minimize any technical constraints.
I would even offer that Agile Software Development is a LearningOrganization approach for _software development_.
-- MikeBeedle
Many of the above are framed as the emergent characteristics, rather than essential. For example, number 1 is essential, number 2 is emergent, and number 7 shows how some essential characteristic produces some emergent characteristics. Pick one or the other to emphasize and focus on that, or make a separate page for the emergent characteristics and put them there.