What is Extreme Programming?
Develop software at lower cost, with fewer defects, with higher productivity, and with much higher return on investment.
I'm currently reading the book Extreme Programming Explained: Embrace Change, and wanted to write about what Extreme Programming is.
Extreme Programming (XP) is about social change.
XP addresses both necessary points to be successful, technique and good relationships.
It is a style of software development focusing on magnificent application of programming techniques, clear communication, and teamwork which allows us to achieve greater things than imagined.
XP includes (points taken from the book):
A philosophy of software development based on the values of communication, feedback, simplicity, courage, and respect.
A body of practices proven useful in improving software development. The practices complement each other, amplifying their effects. They are chosen as expressions of the values.
A set of complementary principles, intellectual techniques for translating the values into practice, useful when there isn’t a practice handy for your particular problem.
A community that shares these values and many of the same practices.
It is different from other methodologies by (points taken from the book):
Its short development cycles, resulting in early, concrete, and continuing feedback.
Its incremental planning approach, which quickly comes up with an overall plan that is expected to evolve through the life of the project.
Its ability to flexibly schedule the implementation of functionality, responding to changing business needs.
Its reliance on automated tests written by programmers, customers, and testers to monitor the progress of development, to allow the system to evolve, and to catch defects early.
Its reliance on oral communication, tests, and source code to communicate system structure and intent.
Its reliance on an evolutionary design process that lasts as long as the system lasts.
Its reliance on the close collaboration of actively engaged individuals with ordinary talent.
Its reliance on practices that work with both the short-term instincts of the team members and the long-term interests of the project.
A good relationship is important, it leads to good business. The technical aspect is also important, considering we are in a technical field, there are good and worse ways of doing things.
Focus on doing your best work, despite the constraints. Obsessing about the constraints distracts you from your goals. Do your best and communicate clearly. If a deadline is unrealistic, say it, communicate clearly what is realistic, and don't try to manage other's expectations.
XP is a discipline that addresses risk at all levels of software development. It is simple, you only do the necessary work to deliver value to the customer. It can work with both small and large teams. It adapts to quickly changing requirements.
It is about people coming together to develop software, you being a part of the team, working together, to grow and improve both your relationships and skills.
The authors end the first chapter with points that summarize XP (points taken from the book):
XP is giving up old, ineffective technical and social habits in favor of new ones that work.
XP is fully appreciating yourself for total effort today.
XP is striving to do better tomorrow.
XP is evaluating yourself by your contribution to the team’s shared goals.
XP is asking to get some of your human needs met through software development.