Over a million developers have joined DZone.

Does (PURE) XP work for non trivial software in most practical scenarios?

DZone's Guide to

Does (PURE) XP work for non trivial software in most practical scenarios?

· Agile Zone
Free Resource

See how three solutions work together to help your teams have the tools they need to deliver quality software quickly. Brought to you in partnership with CA Technologies

Some of the XP practices don’t seem to be practical for non trivial software.

  •  No written requirements: - For a long running development say 2-3 years how one understands why something is working in a particular way? The typical XP explanation is code and unit test is the documentation in itself. Is it really feasible to go through the code to understand the functionality? How the user documents get created? How an end user will understand the product functionality?

  • No upfront design: - Advice is develop for immediate requirement without doing the design for “speculative” need we can always refactor the code. But isn’t code refactoring adds work? Why should one “design for refactoring”? What I mean is if we know the requirement on high level why we should not design for it?

  • Team code ownership (Everyone knows everything): -Probably works for a college project :-). Can this really work for reasonable size software of millions of line?

  • Pair programming: - If you are a services company bill for two developers instead of one :-). Pair programming do have value when doing research, prototyping or cross training etc. But such activity is only a fraction of total time spent on a software development.

Discover how TDM Is Essential To Achieving Quality At Speed For Agile, DevOps, And Continuous Delivery. Brought to you in partnership with CA Technologies


Opinions expressed by DZone contributors are their own.


Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.


{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}