The Artima Developer Community
Sponsored Link

Weblogs Forum

36 replies on 3 pages. Most recent reply: May 28, 2012 9:11 AM by Manny Bonet

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 36 replies on 3 pages [ « | 1 2 3 ]
J. B. Rainsberger

Posts: 12
Nickname: jbrains
Registered: Jan, 2004

Re: YAGNI Posted: Apr 24, 2004 9:24 AM
Reply to this message Reply
> People who have absorbed some of the XP philosophy
> understand not to take YAGNI literally

> Say what you mean; mean what you say. (Or create
> confusion.)

/Of course/, this is the way the entire world actually operates! :)

Isaac Gouy

Posts: 527
Nickname: igouy
Registered: Jul, 2003

Re: YAGNI Posted: Apr 25, 2004 9:20 AM
Reply to this message Reply
> > People who have absorbed some of the XP philosophy
> > understand not to take YAGNI literally

> > Say what you mean; mean what you say. (Or create
> > confusion.)
> /Of course/, this is the way the entire world actually
> operates! :)

People who have absorbed the XP principle of "Open, honest Communication" might wonder about the usefulness of slogans which we shouldn't take literally.

J. B. Rainsberger

Posts: 12
Nickname: jbrains
Registered: Jan, 2004

Re: YAGNI Posted: May 4, 2004 2:40 PM
Reply to this message Reply
When did "open" and "honest" become antonyms to "unambiguous"? I don't want to get off on a whole discussion of natural languages, but it seems to me to be possible to be open and honest in spite of saying things that are ambiguous or even mere hyperbole.

YAGNI started out to mean one thing, then it shifted meaning a little. We generally understand the current meaning and have grown accustomed to using the term with this new, slightly shifted meaning. This is precisely how all language develops. If you think you can stop that, then by all means, give it a go and I wish you luck.

Ron Ruble

Posts: 10
Nickname: ronr
Registered: Aug, 2004

YAGNI, YANGNI, and YAGNIY Posted: Sep 9, 2005 5:11 AM
Reply to this message Reply
>YAGNI is another way of saying "Stop and Think", or as that poster in IBM said more succintly: Think. People like to do
> what they're good at, so if they're good at creating database access layers then that's where their eye will be
> drawn. YAGNI also leads to the other XP slogan "WorstThingsFirst". If building a DAL is no sweat then tackle
> something in the project that is a risk!

I think part of the reaction, too, is that people interpret YAGNI as being synonymous with "You ain't NEVER gonna need it", which could not be farther from the truth.

YAGNI really means you ain't gonna need it -yet-. Developers tend to believe they will increase speed by avoiding refactoring the code to add, for instance, database support. In truth, we often gain speed by avoiding doing things we don't need...yet.

Michael Stover

Posts: 28
Nickname: mstover
Registered: Jul, 2005

Re: YAGNI, YANGNI, and YAGNIY Posted: Sep 9, 2005 8:09 AM
Reply to this message Reply
Actually I think YAGNI is there to separate those who are tedious, literal, and boorish from those who would sprinkle a little fun and enjoyment in their work.

Johan Normén

Posts: 1
Nickname: johann2
Registered: Sep, 2005

Re: YAGNI Posted: Sep 26, 2005 10:55 PM
Reply to this message Reply
Hehe, Fun topic...

I think you have a point here. When i say YAGNI people start thinking bad code, they may think bad code because you don't add lot's of shit in your code, they don't think you optimize at all, that you don't add exception handling etc... But if I say KISS they think nice code. I think it's becuase of the negative tone in YAGNI and the more possitive tone in KISS that makes people feel like this...

take care.

Manny Bonet

Posts: 1
Nickname: amannyb
Registered: May, 2012

Re: YAGNI Posted: May 28, 2012 9:11 AM
Reply to this message Reply
> a kind of humility that I am bad at predicting the
> future

> And in a spirit of humility, we question, we do not
> assert.
> And questions flow more easily from "Always implement
> things when you actually need them, never when you just
> foresee that you need them."
> Why do we need to do this now?

"one mans humility is another mans arrogance"

As a designer/developer I am humbled by the sheer complexity of the things I am asked to design.

As an INTJ I assert that which I know into my design and that which I do not know I seek to understand and derive a deterministic solution for.

Given a frame of reference every decision that is met head-on is a compromise in another frame of reference. YAGNI is a claim that transforamtions are simplistic which in my experience could not be further from the truth.

As a visionary I seek out only projects which benefit from foresight and intutition and knowledge.

YAGNI works great for the vast majority of small and even medium-small projects; however, I do not think it can ever work for any significant codebase because dependencies and complex relations between system parts outright defy that we ignore complexity.

For example you may know up front that a process will have general characteristics but there will be many specialized instances of that process which will need to be accounted for. And how do you know? Well because this is only the umpteenth system you've designed which has the same general characteristics. In a case like this YAGNI would dictate that you ignore the specialized variants and only build the one that you know of today. Moreover you should not even build interfaces because you don't know if you are going to need them. All that works great for the first release and the team is just awesome. Everyone pats each other in the back and drinks beer and celebrates. But upon the consequent releases refactoring and workarounds begin to make the code brittle. So the unit tests fail and they get fixed until you arrive at a unit which resists change without a major refactor of it's dependencies.

I know plenty of agile teams that put off stories because modifying the code base to fit that story will exceed the expected iteration length. Because no one wants to modify that code and the last guy who tried got fired.

YAGNI is equivalent to saying I don't know if I'm going to need thirty stories so I will build one floor at a time. Some of you will say that software is not at all like Civil Engineering and I would agree, in my experience software is far more complex (I have worked in both fields). So what makes anyone think that ignoring complexity in software, an undertaking at least as complex if not more so than Civil Engineering, will have any result other than the disastrous result it would have in the Civil Engineering discipline?

The best software will always be the one designed and built by engineers and visionaries and by engineering methods. It will never be the quickest if that is what is important to you. I much rather delay the out come of the project by 25% than have to try and refactor some codebase to make it do what it was never intended to do. I explicitly run not walk from projects like that I recognize that they are just more wood for the growing fire.

The people who will fight you on YAGNI are the people who either know that they know (the cognoscenti) or the people who don't know that they don't know (the ignorant). Telling them apart can sometimes be difficult.

Flat View: This topic has 36 replies on 3 pages [ « | 1  2  3 ]
Topic: Summer Workshops: Gentle Intro to Scala & Get Your Groove Back Previous Topic   Next Topic Topic: The Management Myth

Sponsored Links


Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use