
"... so now I will jiggle things randomly until they unbreak" is not acceptable' - signa11
http://thread.gmane.org/gmane.linux.kernel/1126136
======
akent
It gets better later in the thread:

 _Yinghai, we have had this discussion before, and dammit, you need to
understand the difference between "understanding the problem" and "put in
random values until it works on one machine"._

 _"There was absolutely _zero_ analysis done. You do not actually understand
WHY the numbers matter. You just look at two random numbers, and one works,
the other does not. That's not "analyzing". That's just "random number
games"._

------
coderdude
I always get a kick out of how Linus talks to people. It's so direct and he
never coats his arguments to make them easier to swallow. You could learn a
lot about not bullshitting from that guy.

~~~
muppetman
It's strange isn't it? When people do the same in places like this community
(and other communities) they're immedietly downvoted or dismissed, unless
they're someone held in similar esteem to Linus.

~~~
qq66
It's not strange at all. Linus has earned his credibility. Some people in this
community have too (pg, joshu, patio11, it's a long list). But people are
downvoted when they act like they've earned credibility when they haven't.

~~~
muppetman
It seems you've missed my point. I don't doubt everyone you've listed has
earned their credibility. What I'm trying to ask is "Why do you need to have
earned credibility before you can be brutally honest with people?"

~~~
ahoyhere
It's not really about credibility, it's about status. Bad behavior -- and
being this rude is bad behavior -- is much more tolerated in high status
individuals, in every type of community. Just like (extreme example) how
senators and Goldman Sachs CEOs can walk away with a slap on the wrist and a
little bad press, where you or I would go straight to jail.

If it were just about the value of the information conveyed, people would do
their own research when a person is "brutally honest" with them, and decide
whether or not that information itself is credible.

The confusion lies in the fact that in a community like HN, that worships
logic (and also success), those things that make you "credible" are what make
you a high-status individual. That means even the statements those high status
people make which are NOT credible themselves will be accepted, or only gently
rebuffed. (Which is a big reason why you don't see much criticism of pg here,
or when you do, it's very respectful, vs other authors, even when he writes
something ridiculous.)

~~~
pbhjpbhj
>" _(Which is a big reason why you don't see much criticism of pg here, or
when you do, it's very respectful, vs other authors, even when he writes
something ridiculous.)_ "

If you think someone is being ridiculous why don't _you_ say something.

~~~
G_Morgan
People don't do it because it is counter productive. Respected people have
their supporters. Unless you first bury your argument in adequately respectful
terms it will get downvoted. Regardless of content.

You cannot say "The Linus rant about C++ is just wrong". You need to first
blather on about why Linus is a great guy but has his limited perspective and
from that perspective he is correct. However there is a world outside of that
perspective where he is wrong.

If I posted the Linus rant on C++ I'd just be called an idiot. Nobody would
worry about my perspective because, to my knowledge, I don't have any
supporters to appease.

It is just politics. It affects tech communities as much as anywhere else.
People get invested in their side. If you challenge their side then you must
be sneaky about it.

~~~
pbhjpbhj
>You cannot say "The Linus rant about C++ is just wrong". You need to first
blather on about why Linus is a great guy but has his limited perspective and
from that perspective he is correct.

You may think that you have to appease people.

If you posted "The Linus rant about C++ is just wrong" then I would down vote
you. Why is it wrong, why is it a rant, what's wrong about it - that's what
gets my vote.

I thought we were building a Brave New World here away from political double-
speaking and ass-licking and endless regurgitation of memes. Please don't give
in.

------
j_baker
I can't help being reminded of this hacker koan:

A novice was trying to fix a broken Lisp machine by turning the power off and
on.

Knight, seeing what the student was doing, spoke sternly: "You cannot fix a
machine by just power-cycling it with no understanding of what is going
wrong."

Knight turned the machine off and on. The machine worked.

~~~
eof
This, in turn, reminds me of a long-shot theory about how the universe works
that I sometimes ponder.

I can't think of how many times someone has come to me with a computer
problem, or I've gone to a vendor/support chat with a problem that hasn't
worked dozens or hundreds of times. Then suddenly, with the guru there,
whether it is me or someone else, suddenly the problem evaporates.

I've found myself wondering if this wasn't some illusion, but an actual
artifact of the nature of the universe. Think about it: if noob's problems
everywhere were actually the universe not letting their shit work, there would
be _no one_ to ever notice it; because when the expert comes in and fixes it,
it is magic to the noob anyway, and the expert is 100% used to mundanes not
having their stuff work for any given reason.

~~~
dasil003
What about the case of a person who, when they show up, magically breaks all
technology. I had a friend like that, "I didn't touch it I swear!"

~~~
derleth
Reading over jwz's travails with computers of various kinds, he seems to have
an amazing amount of it for someone who used to be a professional programmer.

I propose we name it the Zawinski Effect.

------
gregschlom
Am I mistaken in thinking that in this case, it might also be a
cultural/communication problem?

When Yinghai answers:

    
    
      We did do the analyzing, and only difference seems to be:
      good one is using 0x80000000
      and bad one is using 0xa0000000.
    

he clearly didn't understand what Linus meant by "think and analyze".

I don't know the Chinese culture well enough (assuming Yinghai is from China),
but I am under the impression that they would emphasize more on results (fix
the problem) than on processes (understand why the fix works, in order to be
sure we are not breaking something else).

Am I wrong?

~~~
nadam
"I don't know the Chinese culture well enough (assuming Yinghai is from
China), but I am under the impression that they would emphasize more on
results (fix the problem) than on processes (understand why the fix works, in
order to be sure we are not breaking something else)."

The greatest living mathematician has Chinese origins:
<http://en.wikipedia.org/wiki/Terence_Tao>

If someone 'thinks and analyzes problems' then he does.

I don't like categorization by nation because I am Hungarian and I am afraid a
lot of people in the U.S. who don't know me yet thinks something entirely
different of my problem solving style than reality.

~~~
johngalt
When I think "Hungarian problem solving" the first association that comes up
is John Von Neumann.

What assumptions do you normally encounter?

~~~
nadam
I think there is a generic implicit assumption that programmers in less rich
countries are lower quality. Of course it is rarely said explicitly but it can
be seen from some signs: salaries are so much lower here that I cannot see any
other reason why not more development work comes here. When companies do
offshoring they bring here only the boring job which does not need much
creativity, etc...

------
vog
Once again, a great Linus Torvalds statement! I especially like the last
paragraph, which has so much truth in it, and can be applied to small as well
as large software projects:

 _Don't just make random changes. There really are only two acceptable models
of development: "think and analyze" or "years and years of testing on
thousands of machines". Those two really do work._

~~~
masklinn
To be fair, the second case really is just a matter of fossilized random
changes.

~~~
lindvall
That is correct, but is based on a philosophy that the longer something has
been in use, the less chance it has to demonstrate behavior that has not been
previously observed — he even explains that in more detail in further posts
where he discusses his desire to not cause regressions.

------
ilitirit
"Programming by coincidence"

[http://pragprog.com/the-pragmatic-
programmer/extracts/coinci...](http://pragprog.com/the-pragmatic-
programmer/extracts/coincidence)

------
smcl
I think Linus forgets that at one point he too was inexperienced and liable to
make these hit-and-hope fixes. I agree with his point in general, but the
dickish manner in which it's delivered isn't particularly helpful ("Why don't
we write code that just works?")

~~~
alextingle
Why so sensitive? Seriously, when someone criticises your work, do you listen
to what they say or do you just listen to their tone of voice?

If all you do is listen to the tone, then YOUR WORK WILL SUFFER. Because if
someone comes up to you and says, "you dick! What the fuck were you thinking
putting that double dereference there?? There's no way it could ever work!"

If you stop listening after, "you dick! What the fuck were you thinking..."
then you will miss out on learning something that you should know. The person
is angry BECAUSE you have been stupid. Yes, that sucks, and perhaps they
should learn to control their temper. But you can't do that for them. What you
CAN do is be less stupid next time!

~~~
smcl
I listen to what they say. I just lose respect for the person if they act like
a bit of an idiot while delivering it. This is not helpful if the person is
meant to be in a supervisory\managerial role.

~~~
smcl
Confusing downvote, I honestly can't see what could be disagreeable or
controversial about this comment (particularly given it's inflammatory parent
comment) but never mind!

~~~
alextingle
You got an upvote from me.

But, you seriously think my comment is inflammatory? You don't think that
learning to deal with people is an essential part of the job??

------
kemiller
I was all set to defend the "jiggle randomly" school of development with
something along the lines of "sounds like someone who has never had an
external deadline to worry about" but then I got really sad, and didn't.

------
hobbes
Well, that approach worked fine for the evolution of complex life-forms.

~~~
hebejebelus
Yes, but the "we have billions of years to get this right" model generally
doesn't apply to software dev. ;)

~~~
hobbes
Unless you're coding Duke Nukem Forever. ;)

~~~
redthrowaway
That would require they get it right.

------
lindvall
Another aspect of this thread that I find very refreshing is the fact that the
previous implementation may have used magic numbers doesn't reduce anyones
desire to actually understand what is going on going forward.

The realization that a magic number was already being used could have caused
one of two outcomes:

a) justification for replacing one magic number with another

b) realization that more research needed to be done to understand exactly what
was going on in the first place

I appreciate seeing (b) as the option chosen. We should all strive to be this
diligent.

------
rams
Programming by coincidence as the PragProg says (someone has already posted
the link).It's extremely common here in most Indian companies, especially with
freshers.

~~~
pjscott
Also known as shotgun debugging, where you randomly poke at the relevant
portion of the source code in the hope that the bug will magically vanish. I
think the habit is formed early on, when most of the mistakes are things like
syntax errors or off-by-one problems, where certain types of random tweaking
actually can be somewhat effective.

------
benwerd
Well, there goes my development methodology.

------
mv1
I call this "poke it with a stick" debugging. Let's poke the code like this
and see if it works now. This approach is so wrong yet so common it's
infuriating.

------
enjoy-your-stay
Linus seems to be (correctly) railing against what is classic cargo cult
behaviour.

Making changes until someting seems to "work".

------
ciupicri
That patch reminds me about a _nouveau_ bug[1] I had a couple of weeks ago.
According to one of the developers behind nouveau it was caused by a new
memory mapping/allocation scheme that broke things on systems with more than 4
GBs of RAM. Some device memory (registers etc) was mapped above 4 GBs and some
of them don't like this. So he built a new kernel which reverted the change
and the problem was "miraculously" fixed.

[1] <https://bugzilla.redhat.com/show_bug.cgi?id=689825>

------
aangjie
Reminds me of some of my last work experiences...

