logoalt Hacker News

cauchyesterday at 6:48 PM1 replyview on HN

As I've said (quote): "The author explains YAGNI perfectly".

My point is that he does not notice that he is doing, in the scenario, what he is saying should not be done.

What the author is doing is a common mistake with a lot of people into YAGNI: they just think that because they see "3 weeks", it means that the problem is not about you failing TODAY'S REQUIREMENTS.

And again, it does not mean that Chet is always talking about today's requirement. The problem is that if you are the team lead and Chet said exactly what is quoted here, you make a mistake by blindly assuming Chet is trying to solve 3-week-away problem. It may be the case, it may be today's requirement that will become visible in 3 weeks.

> It’s Chet that refuses to accept that

Who cares about what Chet accepts or not. Neither me, you or the author has to agree with Chet. Just LISTEN to him to check if what he is talking about is in fact about the current solution failing TODAY'S REQUIREMENT (or if today's requirement were misleading) or not.

Again, for the hundredth time: if Chet is indeed talking about a future requirement, then say "no" to him. But in this scenario, with the exact quote that is used, you don't have enough information to understand if Chet is talking about today's requirement or future-in-3-weeks requirement.

> Chet himself has said that B will matter in 3 weeks. He hasn’t said that B matters now.

And I gave you several examples where people can say that the failure of doing the task according to the requirement of TODAY will only appear later.

That's your problem: you see "3 weeks" and you conclude "so it is not today's subject".

If today's subject is to install the correct wheels, if you install the incorrect wheels, which will break down in 3 weeks, you failed TODAY'S PROBLEM. Today's problem was to install the correct wheels, not the incorrect wheels.

Or, even more generally: if I write a piece of code and forget about some requirements, if someone said "hey, you forgot some of the requirements, when we are going to plug it with this other tool in 3 weeks, it will crash", I cannot say "if it does not work in 3 weeks, then it means it is a different feature". If what you say is true, then I can always write incorrect code that will not play nicely with the rest of the systems when deployed, and just say "we haven't deployed yet, so my code is perfectly fine".

In fact, another way of seeing this: almost all mistake in today's requirement can be magically transformed in any future requirement according to you: just postpone running the unit test: "I've finished the code and it looks ok when I look at it. Chet is saying that the unit test will crash in 3 weeks when we are going to run the unit test, so this mistake in the code is a future-hypothetical-different-feature"

> Do you agree or not with that statement?

I agree with that statement. What I don't agree with is saying that just because Chet says "3 weeks", it means it is not about the current problems.

That's the common problem with some people defending YAGNI. They are talking about "meditation on timing" and "building too soon or too late", but they don't realise that knowing if the problem is today's problem or the problem is 3-weeks-away problem is not as trivial as just noticing the word "3 weeks".


Replies

skydhashyesterday at 7:57 PM

> And I gave you several examples where people can say that the failure of doing the task according to the requirement of TODAY will only appear later. That's your problem: you see "3 weeks" and you conclude "so it is not today's subject".

Which does not correspond to the stated premise of the article that it’s not a requirement for TODAY. It’s a requirement for 3 WEEKS LATER.

Chet says that B is for 3 weeks later, the author agrees that B is indeed for 3 weeks later. The conflict is that Chet prefers B (correctness) and the author prefers A (simplicity and swiftness, and for the next 3 weeks, correctness).

It’s only YOU that is saying that B could’ve mattered for today or A is incorrect. Nowhere is the article that is stated. You even disagree with Chet (who has asserted the timeframe and has said nothing about A being not useful now.)

And the author has even said (which I quoted in my previous comment) that YAGNI is not about the things you needed for today. If B was part of the requirement for today, there would have been no article.

It’s about what you need today vs what you need in a distant future.

In all your examples, you are bringing things that matters TODAY and try to twist it like someone wrongly asserted them for 3 WEEKS LATER. While the whole time the author and Chet is agreeing that it’s for 3 WEEKS LATER and not TODAY.

Where did you even come up with the understanding that B is for TODAY?

show 1 reply