Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Probably the most important bit of the entire article, which you can probably get from many self help career books (applies to all, not just programmers): "Ask others to explain why they do things, but don't just accept dogmatic reasoning. Demand examples and inquire about context, so that you can try to imagine what it is like to be in their shoes. Doing this is tremendously valuable because it allows you to see the strengths and weaknesses of ideas in their natural habitats."

One thing I can add is always question. There's a reason kids ask tons of questions, they want to know. Asking questions not only increases your own knowledge, and that of the person answering, but it also creates a culture where complacency is extinct. The one thing I hate more than people that litter are people that say "oh, well, that's the way I've always done it." There's lots more I dislike above that, but...complacency is the death of innovation. Then again, sometimes things just work....but that shouldn't stop you from trying to improve it.



This reminds me of the woman who was teaching her daughter to cook a pot roast the way she remembered her mom doing it. You take the meat, cut off four inches from one end and throw that away, put the rest in the pan in the oven at 350 for 3 hours. One holiday when the daughter was hosting grandma came over early to help and saw her cutting the end off the pot roast. She asked why and the daughter said that was how her mom said she did it. "Oh child, I only did that because our pan was too small!"


A WarCraft III commentator told the story of how he once saw a pro, during the opening, send his Demon Hunter to the healing fountain on a certain map, and he started doing the same with the same timing on that map. One day he met the pro in person and asked why he'd done it, and the pro said, To see if the opponent's Blademaster was there.


Can you explain? I'm familiar with the mechanics and abilities, but probably not the tactics.


The Demon Hunter and Blademaster is each player's respective hero/champion and essentially a free powerful unit.

The DH player has the advantage during the early game, so is scouting around the map (the Fountain of Health being a likely location) to find an easy fight.


Sure. Sometimes. Othertimes, you have to recognize that you aren't an expert, and that the real "why" is beyond your reach. If you're in this situation, you're probably better going with the herd.

I run across this sometimes with my boss. He asks why we do X, can't we do Y? I respond: X is common and a well vetted practice, I don't know the security implications of Y. Then he says: lets use Y unless you can think of a concrete reason not to.

In the meantime, I'm not really qualified to analyze Y in the way X has been analyzed. I would rather stick with X, even if my reason is dogmatic.


> Othertimes, you have to recognize that you aren't an expert, and that the real "why" is beyond your reach. If you're in this situation, you're probably better going with the herd.

Yep. And as a society we are great at this, which makes it almost impossible to improve any part of our culture basic enough to be taken for granted.

That’s how we end up with a base ten number system, a weird irregular calendar, really silly spelling rules, suboptimal mathematical abstractions, inflexible shoes, office furniture and computer input devices which cause serious injuries, roughly the same computer architecture since the 60s, or the marvelous absurdity that is the modern web software stack, not to mention bloody centuries-old feuds between neighboring tribes.

Also the main reason advertising and propaganda work so well. “Everyone else does it, so you should too” is an incredibly effective way to shortcut reasoning.


I think you're conflating cargo culting with pragmatism though. The generalized reason that everything is messy is because it's too much work to gather all the knowledge and consider all the angles and do a big reset, and even when you do, you run into unforeseen issues that may end up being just as bad (see Gall's Law).

Consider a pet peeve of mine: The Turkish Problem. Specifically, when Turkish was latinized almost a century ago, they had the brilliant idea to use lowercase i and capital I as separate letters, and then introduce their counterparts İ and ı as new letters. This now means you can't upcase or downcase the letter i/I unless you know the language. Note that it took 11 years for Firefox to handle this correctly (https://bugzilla.mozilla.org/show_bug.cgi?id=231162), and even then you have fractal complexity if you're dealing with an internationalized site. I had the pleasure of working on a film site that was localized to Turkish, where I realized that it is not enough to know the language of the document, you must indeed know the language of every string in the site. In the case of film titles for instance, many films in Turkey are known by their English title, and in that case you must use normal capitalization rules, so now every film title has to have the original language flagged. This is not a small issue because if you are a Turkish speaker it just looks wrong if you don't get it right.

Why do I go into this digression? Because from a programmers perspective, this is insane. In retrospect it would have been infinitely better just to invent a new letter or use an accent or something that fit the alphabetical semantics of other latin languages. But they didn't. This decision went into effect in 1929 when the concept of character encodings was something only maybe a handful of engineers and mathematicians had even considered, and the concept of Unicode would have been beyond science fiction; it probably seemed a perfectly reasonable hack at the time. If we were to reverse it now in order to ease technical concerns think about all the fallout with all the existing documents and printed materials. It's just too big a price to pay. The world is full of these things, there's just not a big enough ROI to justify overhauling these old systems.

That's very different from the more actionable problem of people who go through the motions without ever questioning how they do things.


Most of the things you mention are not things engineered by small -- or even large -- teams, but are evolved products of whole societies. And for all their absurdities they also embed a lot of knowledge about how to get things done in the real world.


So can you go into detail about why the things you mentioned are bad and what the alternatives are?


>X is common and a well vetted practice, I don't know the security implications of Y.

What isn't concrete about this? Does your boss invent his own HMAC schemes?


That's just your boss being dogmatic.

Your reason for wanting to do X seemed valid to me, but then again I have no idea what Y was or why your boss wanted to do it.


Dogma is the roadblock to a lot of progress, not only software development.

> Asking questions not only increases your own knowledge

Acknowledgement of being wrong or in doubt is a prerequisite of asking a question. Our current approach to education discourages being wrong - although it is difficult to imagine any other system with the amount of children that need to be educated today.


but we've always littered, it'll be fine...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: