
Computerscience is a young science. Computer programmers my age were trained byengineers. That training dictated how we approached softwaredevelopment for an entire generation. But now after decades of buildingsoftware to be expensive, unwanted, and unreliable we have come torealize software is different. Building software is more like creatinga work of art, it requires creativity in design and ample craftsmanshipto complete. Software remains malleable, often illogical, andincomplete forever.
Agilesoftware developmentis basedon fundamental changes to what we considered essential to softwaredevelopment ten years ago.

Themost important thing to know about Agile methods or processes is thatthere is no such thing. There are only Agile teams. The processes wedescribe as Agile are environments for a team to learn how to be Agile.

Werealize the way a team works together is far moreimportant than any process. While a new process can easily improve teamproductivity by afraction, enabling your team to work effectively as a cohesive unit canimproveproductivity by several times. Of course to be eligible for such a bigimprovement you must be working at a fraction of your potential now.Unfortunately, it isn't that uncommon.

Themost brilliant programmers alive working competitively in an ego-richenvironment can’t get as much done as ordinary programmers workingcooperatively as a self disciplined and self-organizing team. You needa process whereteam empowerment and collaboration thrive to reach your full potential.

Thesecond change is making the
