About the author

Steven Harmansteven harman :: makes sweet software with computers!

For recent posts and more about me, scroll to the bottom.

Subscribe

  • Subscribe to my feed. via RSS
  • Subscribe via email via email

News

Badges

  • Subtext Project
  • Support Subtext

YAGNI ain’t what you think it is

In the software development vernacular the term YAGNI is often used as a device to put down attempts at prematurely adding functionality – things which are only speculatively required. This makes sense given that is basically the definition that Ron Jeffries and our XP forefathers came up with so long ago.

Is that the whole story?

stop... YAGNI!In short, I don’t think so.

I’ve long believed there was more to YAGNI than what had been canonically defined and was commonly understood. However, until recently I was never able to put my finger on what was missing.

While listening to an episode of

Industry Misinterpretations I heard Kent Beck make a subtle point about the need to make progress being more important than the completeness of the thing you’re building at the point you’re building it.

Lending from this Kent’s insight and mixing in much of my own experience, I realized YAGNI is not about delaying building things until you need them; it’s that gaining real experience in the problem domain, while making concrete progress, is more important than trying to achieve a complete solution right now.

Do you think it’s too early to update the Wikipedia article…? hehe!

Technorati Tags: ,,,

What others are saying.

# re: YAGNI ain’t what you think it is
Gravatar Mark Nijhof
Jan 08, 2010
I think you can go ahead with editing Wikipedia ;) YAGNI and "The last responsible moment" go hand in hand, it has all to do with handeling uncertainy. I usually say stuff like; how do you know you need that, and how do you know something doesn't change? So yeah I agree with you here.

Ps That one with Kent was a nice one.
# re: YAGNI ain’t what you think it is
Gravatar Urs Enzler
Jan 10, 2010
>> it’s that gaining real experience in the problem domain, while making concrete progress, is more important than trying to achieve a complete solution right now.<<

That's the core of incremental development. Learn and get feedback as soon and frequent as possible.

Cheers,
Urs
# re: YAGNI ain’t what you think it is
Gravatar Zac Vawter
Mar 04, 2010
Its all about having the experience & knowledge in the problem space to choose when, where & what to be open/closed to.

What do you have to say?

Title*
Name*
Email (never displayed)
(will show your gravatar)
Url
Comment*  
Please add 7 and 5 and type the answer here: