Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Fun: The YAGNI Development Assistant

Fun: The YAGNI Development Assistant

In general, pair programming helps us write high quality code in an effective manner, but still there are times that a pair of programmers go off on a tangent, working on something that ultimately winds up being unnecessary. At this point, hopefully there's a coach around to ask the YAGNI question:

"what are the chances that You Aren't Gonna Need It ?"
Agile stresses simplicity - developing what's needed now, and leaving tomorrow's features till the customer actually asks for them  - within reason, obviously. Why? Now that customers have freedom to rearrange their priorities every week or so, it's amazing how many new "urgent" features appear, and others just drop off the bottom of the list. It's a relief, actually - teams know their time is being well used, that they are creating the most valuable customer features.

What if we built everything, both for today's features and to accommodate tomorrow's features, and then all of tomorrow's features became obsolete due to a competitor's new product? Some Agilists call this "inventory": code the end-user doesn't benefit from yet, but which must be maintained anyway, contributing to the bloat and unmaintainability of the app. And keep in mind, tests must be built for this extra code, time must be spent testing, and the tests must be maintained... hmmm, perhaps waiting till tomorrow isn't such a bad idea.

But we can't always catch ourselves, and the coach can't be everywhere at once.  Fortunately, Darren Smith has created Yagni, the Development Assistant, designed to address just this gap.  Yagni works within the IDE to monitor a developer’s work and provide warnings and advice about bad practices and code smells, just like Microsoft's Clippy.

Perhaps in the future we'll see a TAGRI Documentation Assistant added to Word that will help us to stop writing so much useless documentation.  ;-)

Rate this Article