DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
  1. DZone
  2. Culture and Methodologies
  3. Agile
  4. Why XP After All These Years

Why XP After All These Years

Many developers have taken to Scrum and Kanban over time, but does Extreme Programming still have something left to teach us?

David Bernstein user avatar by
David Bernstein
CORE ·
Aug. 02, 18 · Opinion
Like (4)
Save
Tweet
Share
4.66K Views

Join the DZone community and get the full member experience.

Join For Free

I have been an advocate of Extreme Programming (XP) practices for well over a decade. To me, Agile software development means more than just an agile development process, it means that our code is agile and able to respond to change easily. This doesn't happen by accident. It's a result of following good programming principles and practices that support writing modular, maintainable, and changeable code.

It's not enough to write software to make a computer do a specific task. The software that we write has to be agile. It has to be changeable without incurring a large amount of rework. It has to be safely extendable so that we're not putting our systems and our users at risk as we add new features.

Many people, even within the industry, are unaware that we have solutions to most of these problems. We have well-defined methodologies that allow us to transform existing code into designs that allow us to accommodate new features and we are able to do these things in a safe and repeatable way. In other words, software engineering can be just like any other form of engineering in terms of having standards and practices that support us.

I found that many of the practices from Extreme Programming as well as the concepts from the design patterns movement, object-oriented programming and functional programming movements, software craftsmanship movements, as well as Scrum, Kanban, and Lean Software Development movements are about addressing different aspects of software development, and together they often form whole solutions to previously intractable problems.

Our industry has come a very long way in terms of being able to build reliable systems cost-effectively but the problem is that these ideas are not common knowledge throughout the industry and so the benefits of these practices that are used by some of the top corporations in the world haven't really trickled down into the rest of the community of software development.

The whole discipline of software development is rapidly evolving and so it's important not to just keep up with the latest tools and technologies but also to keep an understanding of the fundamentals fresh and top of mind so that we understand the reasoning behind the core practices and how to do things in standardized ways so that they're straightforward to integrate with other people's code.

We're trying to build a discipline, after all. That means that the tools and techniques that we build have to work for all of us and we have to arrive at some level of consensus and agreement for what the standards and practices should be for developing software.

I think Extreme Programming offers a core set of developer disciplines that are highly valuable. I think our industry would be far better off if we paired more often and place more of an emphasis on refactoring code safely and writing good unit tests. I think these things raise the level of professionalism in our industry.

When I think about a minimum set of developer practices that really support an iterative process of software development that we do with Agile then it's clear that the practices of Extreme Programming are essential when doing Scrum.

I find test-driven development to be invaluable for writing testable code that allows me to refactor my design safely. I find that refactoring is extremely valuable for allowing me to transform code from one design to another, which often is required when adding new features to a system. This is the kind of knowledge that makes us professionals and lets us build software in a consistent way.

So, many of the ideas that are embodied in Extreme Programming are some of the most valuable ideas in software development that I've ever come across. Even over a decade and a half later, I still find that many of the ideas from Extreme Programming represent the best approaches that I found for object-oriented development.

Software development agile Extreme programming

Published at DZone with permission of David Bernstein, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Building Microservice in Golang
  • DeveloperWeek 2023: The Enterprise Community Sharing Security Best Practices
  • Create a CLI Chatbot With the ChatGPT API and Node.js
  • Chaos Engineering Tutorial: Comprehensive Guide With Best Practices

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: