Hacker News new | ask | show | jobs
by cauch 28 days ago
> And if you can’t ask why A stays and B can’t be accepted, that just means you believe your reasoning is always the correct one

What? Why are you saying "if you can't ask why"? I personally can ask "why", there is no problem with that. I have been in situation where I was the lead and I had to say no to someone like Chet and I've done it after listening to him. And I've been in situation where I was the lead and I listen to Chet and Chet had a good point that was useful, and I used this point to reassess my decision, and sometimes I change my plan, and sometimes I did not. And I've been in situation where I disagreed with the lead but said "ok, you're the lead, we should not flip-flop between captains, we need one person at the driving wheel, so I accept your decision". Why are you inventing that it is a problem to me? Can you provide the sentence I've written that led you to that conclusion?

But in the article, in the scenario, the author never ask "why". Chet arrived and said he thinks there is something suboptimal, and the author did not say "why", he said "YAGNI", and Chet tried to discuss this and the author did not say "why", he said "YAGNI", and Chet tried to have the author explain why, and the author did not say "why", he said "YAGNI".

The author __REFUSED__ the discussion. Chet did not even had the opportunity to say "why".

> If you state something and the person in front doesn’t accept it, you ask for his reasons.

It is what Chet is trying to do. Chet does not say "no, you are wrong", Chet tried to discuss this: he wants to explain his argument to know what are the author reason for possibly refusing. Chet suspects that the author does not understand, he tries to clarify, to give example, but the author just refuses.

> You really can’t accept that the author knows about B and have a valid reason to not choose it, evenk if B is completely valid?

Why are you thinking that? The problem is not that I believe the author is wrong about B. The problem is that the author has assumed Chet was talking about B when this is only an unsubstantiated assumption.

Look at what I've written, I've written explicitly:

> You listen to him, and then you still can decide if it's smarter to do it now or not.

If you decide "let's not do B" and Chet says "no, I refuse to accept that", then Chet is 100% wrong.

The problem is that the author decided that Chet was talking about B __before Chet even explain what he is talking about__.

Again, if the author has good reason to not do B, then, I FULLY AGREE WE SHOULD NOT DO B. The problem is that the author is an idiot: Chet tries to talk to him about something, and the author just assumes, without any proof, that it is about B.

> Software engineering is all about tradeoffs. And it’s on the leaders to choose some, even if you really believe it must lean the other way.

A leader that choose between tradeoffs when he __refused to listen to the information__ is a bad leader, and his work will be poor.

Let's take your logic further: why providing any information to the lead at all? The stakeholders approach the lead and say "hello, we would like to have a feature, this will be ...", lead: "STOP! This will be a frontend interface with an animation of a little frog dancing", stakeholders: "what? no, we would like ...", lead: "no, you want that", stakeholders: "but you don't understand ...", lead: "good meeting, byyyye".

Honestly, your position is so weak. My question is "what's the problem with just listening to Chet to understand what he is talking about", and your position is so poor that the only thing you were able to do is to say "no because if I listen to Chet, it means Chet refuses my decision", which is blatantly incorrect.

1 comments

Chet has already told the author about B in the first sentence (that’s how the author knows B is complicated). The rest is Chet trying to justify B without asking why the author choose A.

It’s not Chet explaining what B is, it’s Chet explaining why B is better. From his own point of view. With no understanding why the author prefers A.

Assuming the author don’t know anything about B and that it can’t understand the tradeoffs between A and B is where you are wrong. Especially if the tradeoffs lean strongly towards “shipping soon” and away from “Be correct 3 weeks later”. In that 3 weeks window, there will be time to review B while A is already providing value. But Chet’s decision to scrape A is not the correct one.

And about the taking the logic further, you’re again inventing a situation that the author has not been discussing about

> My question is "what's the problem with just listening to Chet to understand what he is talking about"

Because what Chet is talking about is abandonning A, a simple solution, for B, a complex one, where the primary reason is that B will be useful 3 weeks later. And for the author, that tradeoff is unacceptable. Why? Chet doesn’t know, because he’s too busy trying to prove B.

> Chet has already told the author about B in the first sentence

No. Chet says, I quote, "so since we’re going to need this more complicated thing I want to do it now". Chet does not explain what is this more complicated thing that he wants to do, what is the problem exactly, if it is a problem linked to A failing the requirements of today or not, ...

> It’s not Chet explaining what B is, it’s Chet explaining why B is better.

Ok, first, for the author to not be a shit team lead, he needs to understand B itself, but also how B fit into the picture.

(also, what is the problem with that: if Chet's opinion is that B is better, I __want__ to hear it. It does not mean I will agree. It does not mean Chet is right. But if someone reached a different conclusion than me, I need to understand why just to check if indeed I've missed something or not)

But secondly, that is again your bias talking. You are brainwashed by YAGNI, so when you read what Chet says, you are unable to imagine that the exact same conversation can happen if Chet is presenting a real new problem that the author missed.

That's my whole red flag with the article: it starts with this scenario, and then continue explaining YAGNI. The author explains YAGNI perfectly. But the big problem is that in his initial scenario, he is showing in fact a scenario I saw over and over again: he fails to notice that someone may say exactly the same thing as Chet __and yet__ "YAGNI" as he correctly describe it later does not apply. The author just teaches readers to be idiot, to not think, to just see someone saying "3 weeks" and then jumps into "YAGNI" without even checking if YAGNI applies or not.

> Assuming the author don’t know anything about B and that it can’t understand the tradeoffs between A and B is where you are wrong.

Read what you have just said and think about it. I am saying "everyone, sometimes, can miss something". And for some strange reason, you understand "this person know absolutely nothing".

I am saying that the author know a lot about the constraints of the project. But unless the author is an idiot, the author also knows that he may have missed something and that someone else may have noticed.

In this dialog, the author does not check if Chet has found something he has missed. He directly assumed Chet is wrong and he is right.

Why is Chet even in the company? You are saying that the author is god: he is never ever wrong, he knows everyyyyything, he is perfect. As soon as you admit that this is obviously bullshit, then you have to admit that the author should engage with Chet to check if something was missed. Again, taking the exact dialog of the article (as you whined about), looking it word-for-word, Chet did not explain his point and the author interrupted him before he could. You can INVENT that the author knows things behind the scene or that they said other things on top of what is written, but then not only you are hypocricital, but on top, it shows that both the author and you just took some hypothesis for granted: you are biased.

> Especially if ...

Again with "you gave a counter-example that shows I'm wrong, but let's ignore it and take an example I've built myself where it works".

Again, I'm saying: "the author is a poor lead because he did not check if Chet has found something he missed", and your answer is "but let's assume Chet did not found something he missed". But the problem is still there. A good bus driver looks both ways before crossing the busy road. "Let's assume no car was coming" means that this mistake, in this specific case, has no bad consequences, but the bus driver is still a terrible bus driver if he did not look both ways. Here, if we assume Chet did not notice something that the author missed, then the author has been lucky, but he still failed to do something he needed to do in order to be a good lead.

> And about the taking the logic further, ...

Do you even understand the principle of "taking the logic further"? Are you telling me that "to take the logic further", one should apply the same logic to THE SCENARIO THAT ALREADY EXIST? How is that moving it further?

Pushing the logic further demonstrates the flaw in the logic. If your logic was sound, than pushing this logic further would not create any absurd situation.

> Because what Chet is talking about is abandonning A, a simple solution, for B, a complex one, where the primary reason is that B will be useful 3 weeks later.

HOW DOES LISTEN CHANGE ANYTHING?

You just LISTEN. You don't say "tell me Chet, and once you told me, I will have no choice but to accept".

You LISTEN to Chet, and if Chet explains and you see that the trade-off is bad, YOU TELL HIM "WE WON'T DO THAT".

That's the problem: for some strange reason, you seems to believe that if Chet just tell you his reasoning, it means you agree with him. You don't have to agree with him, you just have to check if the reasoning of Chet is indeed the reasoning you assumed he had at the start when he did not explain his reasoning yet.

> The author just teaches readers to be idiot, to not think, to just see someone saying "3 weeks" and then jumps into "YAGNI" without even checking if YAGNI applies or not.

If that’s your take away from the article, no wonder you’ve been trying to twist the dialog to justify it.

From the article

  YAGNI is not an excuse to never design as some critics have characterized it. If you need it, build it. YAGNI is a meditation on timing. Building structure too soon is as risky as building structure too late.
That’s why the author says YAGNI in the article. It’s not about never discussing B. It’s about shipping A before shipping B. especially when by shipping A, you can start providing value sooner.

> You don't say "tell me Chet, and once you told me, I will have no choice but to accept".

It’s Chet that refuses to accept that, from the author point of view, B isn’t better than A.

> That's the problem: for some strange reason, you seems to believe that if Chet just tell you his reasoning, it means you agree with him

That’s what YOU believe is the problem. Chet himself has said that B will matter in 3 weeks. He hasn’t said that B matters now.

The problem is clearly stated and argued in the article. It’s better to focus on the simple solution that solves current problems than trying to implement complex solution that solves future problems.

Do you agree or not with that statement?

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".

> 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?

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

For the hundredth time, I very well know that the author wanted to create a scenario where Chet is asking for a feature needed in 3 weeks (and that is exactly my point, the fact that he has chosen a poor quote shows that he does not realise that he jumps to conclusions).

But the quote, in the article, is "I could do this simplistic thing now but in 3 weeks that will be insufficient so since we’re going to need this more complicated thing I want to do it now", and it is supposed to represent a scenario. The author tells us what he would do if he is presented with this sentence. Nothing more.

This quote is compatible with a situation where Chet is talking about a problem in today's requirement.

For example: "I could do this simplistic thing now (installing the wrong wheel) but in 3 weeks that will be insufficient (when we will install the engine) so since we’re going to need this more complicated thing (installing the correct wheel) I want to do it now."

I perfectly know that the author want to describe a situation where Chet is refering to something corresponding to a future problem.

What I am saying is that the author choice of quote shows that he thinks, incorrectly, that if someone is saying that quote, it proves that this person is refering to something corresponding to a future problem. This is not true. It does not matter that in the author's head, in this scenario, Chet has a red t-shirt, funny glasses, and happened to talk about a future feature. What matters is that the author does not know that if someone says "3 weeks", it does not imply that this person is talking about a future feature problem.

Let's take another example (I know it's useless, but let's try). Let's imagine the following article "It is really important to correctly addressing male people by "mr" and female people by "miss". Let's take a scenario, someone that I don't know sent me a message and sign "Alex", so, it is very important that I say "Hello sir"."

In this article, it is pretty obvious that the author, in his head, think that Alex is a man. But if you read that, you should say "Hey, no, Alex can also be a female first name". That is important, because it shows that the author was overlooking that unisex first name exists and need special care.

But if someone reacts this way, apparently, you will say "it is obvious that the author meant that Alex is a man, how did you even come up with the idea that Alex is a woman". Do you realise how much this question totally misses the point? Nobody is saying that the author thinks that Alex is a woman, or that it is not obvious that the author thinks that Alex is man. Yes, of course we know that. The point is to highlight that the author failed to notice something important for the subject he is talking about.

So, my point is not that "B is for TODAY", my point is that, if you are in this situation, B may be for today, or may not be for today. Sure, in his head, the author imagine that B is not for today. But it is important to remind that this is a mistake: if you are confronted to this exact quote, don't conclude that B is not for today.

And my point is that a lot of people who are pushing for YAGNI makes this mistake: they apply YAGNI even if the proposal is for today's requirement.

> 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).

Chet does not say that B is for 3 weeks later. Chet says the famous quote. You and the author imagine this scenario with Chet wanting to mean that. The same way the other author is imagining Alex being man. But the exact quote of Chet does not say that. It does not say that B is for 3 weeks later, and I can prove it: "I could do this simplistic thing now (installing the wrong wheel) but in 3 weeks that will be insufficient (when we will install the engine) so since we’re going to need this more complicated thing (installing the correct wheel) I want to do it now", in this quote, that out-loud part is EXACTLY THE SAME, and yet, the wrong wheel is a failure of today's task, of today's requirement. I know it is not what the author had in mind, the same way I know the other author has a man in mind when he was thinking of a person named Alex. But it is still true that this quote is insufficient to know if Chet is talking about today's problem or 3-week-away's problem. And it is important to raise this mistake, because it is an important thing to understand if you want to not apply YAGNI stupidly.