This article is written as a background source for a presentation about agile development for non-technical people. While not intented for public use, the reader may use it for any means. Any contribution is welcomed.


presentation_time.png

Introduction#

This article could be made very short: people, people and people. The strange thing is that a average developer has more problems dealing with organisation problems than solving technical problems. Agile processes are a pragmatic approach of managing software development.
  • Fact: How farther one looks into the future the lesser accurate it will be.
  • Fact: People only know what they want if they see it.
  • Fact: Almost nothing is right from the first time.
  • Fact: The complexer the wronger it will be.
  • Fact: Face to face communication is the most effective.

1. Methodology Illustration#

Ivory Tower represents the formal bureaucratic oriented sofware development methodologies. Wild Wild West represents those without a real methodology.

Ivory Tower#

Development is separated in several distinct phases. Such as business analyse, design, development and testing. The idea is that one phase can't start before the previous one is finished. Analyse and design produces documents & design artifacts later on development carries the work out. It is assumed that the development of the code requires lesser talented people. Only works if the application is fixed e.g Operating System, Nasa Space Shuttle.

ivory_tower_roadmap.png

Problems:#

  • One can't know everything in before hand.
  • It's static, almost impossible to react on business changes.
  • It literally takes years before something usefull is built.
  • Denies the creative power of the developer.
  • Many premature decisions are made.

Wild Wild West#

This way of working is completely an ad hoc one. Only short time thinking is allowed. Lead by a few sherrifs they know there wayaround in the code base. Mostly these process start in a very formal (Ivory Tower) way but break under market pressure. Only works when the project is reasonable small e.g: corparate website, small scripts.

Problems:#

  • Very buggy results.
  • Progress slows down.
  • Chaotic

2. Agile Manifesto#

Some technical leaders realized that the industry was lead by a mono-culture or not at all. Each of them started there own lightweight way of working. Until they came together and the agile manifesto was born.

Manifesto:

  1. Inviduals and interactions over processes and tools.
  2. Working software over comprehensive documentation.
  3. Customer collaboration over contract negotation.
  4. Responding to change over following the plan.

3. Principles#

Inviduals and interactions over processes and tools.#

Therefor is that the customer the business expert and decision maker is onsite with the development team, face to face is the most effective form of communication.

When choicing a technology it's best first to look at the available people and choice with there capbilites in mind.

Working software over comprehensive documentation.#

Remove the unneeded, many projects have tons of documention without having a decent product.

Responding to change over following the plan.#

No big design up front, nobody can comprehends a complete complex software system. Certainly not a year in before hand. Instead of being determistic set up a framework and like a gardener watch it growing, react when needed. Incremental releases, a version of the product is published in about each 6 weeks. Each release is an excelent candidate for communication. Steering the product as it evolves.

Customer collaboration over contract negotation.#

Speaks for itself.

4. Agile Methodologies#

Extreme Programming#

Basic idea is if it's good take it to the extreme.

An extreme programming project is starts with a vision. Only short descriptions of the system are written in user stories. The customer or representive as decision maker and business expert joins the team so that he can give direct feedback to the developers.

xp_roadmap.png

  • Insight is everything, therefor it's of vital importance to keep it simple. As Einstein stated anybody can take something simple and make it more complex but it takes a genius to move it in the other direction.
  • Refactoring, reworking the internal system while not affecting the intented result until the system is in a good schape. Another benifit is that the product does not need all the possible extra functionallity in the first release. When needed any extra's will be added and refactored when required.
  • Automated tests suites, tests are written before the actual code. While being very strict about the result the developer has maximum freedom to alter internal working of the application.
  • Modular, group logic application blocks togheter so that they can be managed well. Using well thought packaging and clean object-oriented programming.
  • Pair programming, XP does coding in pairs while one is programming another is keeps the overview and gives instructions. This way the code is almost immediately of a production quality.

Crystal#

Crystal approach says that a methodology should fit the project and not the other way around. More people oriented way of working.

Scrum#

More a project management methodology than a programming methodology.

5. Why agile development is so important ?#

Agile development is not a magic bullet. Nothing is realized without the right people. It's all about enabeling talented people to do there work. Bringing value back to the customers.

In return the customer will get:

  • maximum value in a minimum of time.
  • be able to be responsive to changing business requirements.
  • be able to built the extraordinary
  • be able to stear the project.

Author(s) PhilipVanBogaert

Add new attachment

In order to upload a new attachment to this page, please use the following box to find the file, then click on “Upload”.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
png
ivory_tower_roadmap.png 12.0 kB 1 02-Sep-2004 22:28 PhilipVanBogaert
gif
presentation_time.gif 3.4 kB 1 02-Sep-2004 21:32 PhilipVanBogaert
png
presentation_time.png 10.8 kB 1 02-Sep-2004 21:40 PhilipVanBogaert
png
xp_roadmap.png 10.8 kB 1 02-Sep-2004 22:28 PhilipVanBogaert
« This page (revision-25) was last changed on 03-Sep-2004 11:28 by 194.7.114.2