Hacker News new | ask | show | jobs
by hazelcough 4834 days ago
Blog post writer here. I was going to mention this in the post, but I ended up deciding against it:

I'm from Middle America. In Middle America, when you ask a farmer what he feeds his pigs, he tells you what he feeds his pigs, what he doesn't feed his pigs, why he feeds his pigs what he feeds his pigs, how he feeds his pigs, and what sunscreen he applies to their skin.

So it was very weird to me that a lot of programmers didn't like to share their knowledge of programming (except, it seems, when they are trying to impress other programmers).

11 comments

It seems to me that farmers spend a long time agonizing over what to feed their pigs, but don't often get to talk with people who are interested in hearing what they feed their pigs. To have someone to braindump to is a delight.

For programmers, everyone is trying constantly to braindump to everyone else; that's half of what the blog posts on HN consist of. And everyone wants their braindumps analyzed, and, more importantly, debugged. "I'm feeding my pigs horse meat--did I make the right decision?"

When you're exposed to it so often, it's hard not to get tired of telling people about the benefits of grain over horse meat.

See, I've always really liked explaining how things worked in the abstract to people, and most of the time, they also enjoy it. There is a logic that flows through programming that is beautiful and I feel innately understandable, even for the most abstract of programs. However, it often requires a lot of explanation and of laying out an intellectual base on which to build your mental construct. That's hard, but I've always found it so worth it:

The person listening learns something new, and is able to see something beautiful in the way that someone else sees it. Additionally, the person who's doing the explaining gains the experience of trying to relate their idea to another person, an exercise that often expands the explainers understanding of the idea.

I really wish more people explained what they love and find interesting!

I think that kind of explanation--explaining what you want to explain, with whatever tangents you like, just to get the other person to feel passion about the topic--is great, and can leave you feeling more invigorated than when you started.

But it's a very different kind of explanation than "here are all the building blocks you need to put together in order to understand how wrong the way you're currently doing things is." The second kind is pretty much what all "innocent programming questions" require in response.

I love these kind of interactions; both listening and explaining equally! I find I can elicit these kinds of explanations from others by being actively interested, reading how they react and what they emphasize, and asking the right questions to really get at their passion.

I exhort everyone to strike up these kinds of conversions especially with strangers as often as possible - I guarantee you will learn something interesting :) Ever since I got the hang of it, it has really enriched my life.

I have a great mentor who will often lead me up the garden path and get me nodding with him, then scuttle his own argument and let me know why it's bad. It's part entertainment for him (and me), part making me think before blindly agreeing, and partly history lesson/why they went this way.

Done properly, it's fun, though you do need some form of ongoing trust - it's not something you should do to someone piping up for the first time on IRC.

I'm a midwest boy who grew up on a farm, including working it from a very young age. Don't underestimate the farmer. Farmers will talk shop as much or more than programmers.

Feeding pigs is the tip of the iceberg. If you want to see some sparks fly, just sit down at the local cafe and talk about the comparative yield of soybeans and corn, and why anyone growing X percentage this year with the weather pattern is just plain nuts.

It's not quite the same as the family-farm days (most are now corporate owned), but those were the first debug sessions I listened in on as my grandfather held court among his colleagues.

I kind of want to punch the guy who said "no programmer would do this" in the nose. I'm glad you didn't let that person tell you who you were, or what you could be.

You wanted to do a thing. You made the computer do that thing. Programmer.

It's not about proving you're the smartest person before you even touch a keyboard. It's about being persistent, doing experiments, and always learning.

And I expect that your friend has forgotten the sort of things he did when he started.

Personally I interpreted it without any ill intent, more in the sense that no programmer would do it this way because programmers are lazy, they'd recognize "there's got to be a better way".
Confirms my suspicion that code is the most direct extension of biological evolution we've seen thus far.
> I kind of want to punch the guy who said "no programmer would do this" in the nose.

From my reading, it appeared as a complement as in "no beginner programmer would actually go through the pains of finishing it, and finishing it on your own is a feat."

Cheeseburgers, you don't even need to ask the farmer about slopping his pigs. Just ask for directions.

"Slow down when you get to the old Willoughby place, you'll know it by the brick shed they built in back, because the statey likes to sit behind the hill and catch speeders, and after five minutes, you'll want to go left..."

I grew up on the extreme western frontier of Flyoveria, in Eastern Washington State. We had a culture of the same sort of accreted experience that results in journeymen in their various careers. There's a reason a lot of phrases such as "college boy," "doesn't know sh8t from Shinola," etc. tend to be more common, and it's not just because they're "folksy." On the other hand, they really want to save people from themselves if they're willing to learn, and they'll tell you all you need to start farming pigs. You'd better be ready to help him with his computers, though, even if he's running his farm on a Kaypro II.

In programming, there's not as much of a long-term investment in the apprentice-journeyman-master guild-style system, although you can find pockets here and there. I have lamented it and pondered the reasons for its erosion over the past 20 years, but I can't say with real authority why we don't have it any longer, other than an expected lack of tenure at any organization.

It's not like big law or finance, where your first firm is there to grind you out of the business before your second firm decides if you're up or out.

I heard a different version:

Young farmer: I got some pigs, but I don't know what to feed them. What do you feed your pigs?

Old farmer: I had some pigs once, I fed them one of my cows that had died of consumption.

Young farmer: Really?

Old farmer: Yup.

<2 weeks later>

Young farmer: One of my cows died, so I fed it to my pigs. They all died. Your pigs really thrived on meat of a diseased cow?

Old farmer: Nope, my pigs died.

Hi, I used to write code like your 21 nested callbacks, so I'm baffled by your friend's assertion that no programmer would be so patient. I've always thought that the patience to grind endlessly at a problem (or bug) without an obvious solution was one of the more laudable shared virtues of our tribe. Patience is, in fact, a vital part of my learning process.

In fact, I think that's probably a part of the reason why some programmers don't have patience for beginners with a lot of questions. It's because beginners actually have Google and StackOverflow these days, so it might seem like laziness to someone who had to learn using books and man pages. It's not that they don't like to share their knowledge, it's that they think the answer is already there if you'd bothered to look. I'm not saying that they're right to have that attitude, by the way. I'm just trying to present things from their perspective.

Yes, but that "patience to grind endlessly" is typically applied towards a different goal.

Sure, you can spend an afternoon or so to write and debug those 20 nested callbacks, but surely, it is more fun and thus better to spend a couple of _days_ thinking of the problem, googling for solutions, getting distracted by some nice algorithm, attempting to apply that in a totally distinct, perfectly working part of your codebase, renaming a couple of functions, etc., and finally replace that nested thing with some carefully placed '.each' or '.map' (after gauging which solution looks best, aesthetically)

Yes, there may be commercial pressure to ship a product, but in the hearts of many programmers, the journey is the reward.

"I divide my officers into four groups. There are clever, diligent, stupid, and lazy officers. Usually two characteristics are combined. Some are clever and diligent -- their place is the General Staff. The next lot are stupid and lazy -- they make up 90 percent of every army and are suited to routine duties. Anyone who is both clever and lazy is qualified for the highest leadership duties, because he possesses the intellectual clarity and the composure necessary for difficult decisions. One must beware of anyone who is stupid and diligent -- he must not be entrusted with any responsibility because he will always cause only mischief."

Granted, Kurt von Hammerstein-Equord was a nazi fuck and was talking about leadership, but I have found the best programmers are extremely lazy, however they have a constant drive to figure things out, take them apart, and put them back together again. They also generally have a need in the same vein of "write programs so they don't have to do the work of copy pasting 100 times in the first place" even if they spend 4 hours figuring out to do that.

I'm just trying to figure out at which point this conversation invoked Godwin's law... Seems ambiguous in this case.
Did you read my post?

"Granted, Kurt von Hammerstein-Equord was a nazi fuck"

Nope, you didn't.

Did you read his link?

"He is famous for being an ardent opponent of Hitler and the Nazi regime."

Nope, you didn't.

I think that the lack of patience refers more to dislike of redundancy - to an experienced programmer (including present-day OP), the repetition in that code seems absurd; there simply must be a way to refactor it into something simpler. We go out of our way to make tools that automate repetitive processes, we have principles like DRY, etc. Once a problem is solved it should stay solved.
"Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris." -- Larry Wall
I think that really depends on whom you ask. For many (maybe even most) people I know, you would get too much information. With maybe a nice detour into theory. (Most of the best things in CS come with deep but surprisingly simple and elegant mathematics behind it.)

Of course, the information might also be a bit biased: everyone has their own preferences and opinions, and usually present them fairly strongly. Some people hedge about other options half-heartedly, but I doubt anyone would give you an even spiel on more than a couple of different options. Which is entirely natural: chances are, nobody has much experience with more than a couple of different options.

This might also vary a bit by community. I haven't spent much time recently talking to web developers. But the general programming languages/functional programming community is certainly fairly talkative.

Huh- that seems weird to me too - my experience is that programmers generally love to share their knowledge and talk about their field. My tendency when newbies ask me about programming is to share as much info as possible, possibly too much - but then, I've been known to bust out my laptop at fancy dinner parties and start demoing how to write HTML.
Ah... like you said, I'd always felt that programmers try to help each other, so I was surprised when I read that the OP thought that wasn't true.

I think I see what might've been going on now, though; I don't think it was because the question "What's CSS?" (or similar) is too dumb, and I especially don't think that it's because no one wanted to help you (or thought you're incompetent).

Rather, it's because when you're starting to program, you don't _know_ that you can Google the solutions to so many problems so easily, so you ask the people around you. It's perfectly sensible. So, one of the things that programmers try to teach other beginning programmers early is that Google makes a lot of information easy to access, and so they try to help you by telling you that you can Google before asking.

It's not that they don't want to answer, or that they feel you're hopeless -- they're just trying to teach you how to fish, instead of giving you a fish. :) I'm sure if you ask the exact same question _after_ you have failed to find the answer after a 2-minute search on Google, you will not be turned down for the answer -- programmers generally love to help each other figure out how to do stuff. And one of these things they like teaching is that you can find answers to a lot of questions online!

That's amazing! We should've been friends.
Hi Michelle!

That's not too hard to explain. Some programmers see themselves as part of a clique. Their code and ways are what keeps them superior, experts in the field that they work in. The sunscreen that coats their javascript perhaps took them a hard couple hours of debugging to discover, and many programmers are the type of people who feel and rationalize "If it took me this long, this newb should go through the same process".

Of course, there are many exceptions- all the online communities, forums, etc. But there's always some part that does work as I described. Hell, even I get annoyed sometimes and tell someone who's starting out "go google why you don't want a GOTO statement in code"...

Programmers see themselves as part of a clique. Their code and ways are what keeps them superior, experts in the field that they work in.

Any programmer who thinks like that is a poser.

OT, but speaking of cliques and programmers, it seems that I've hit that point again where after you get around 1000 HN karma somebody from the upper echelons clips you (slow ban, etc) as not to threaten them.

I'm not sure why this always happens just after the 1000 mark.

Artificially reducing some ill-considered "competition"?

... and they will address you by your first name on a public forum, showing how friendly they can be to the normals.
Because I'm her friend IRL?
If someone asks me a programming question then I always answer it in the simplest, shortest method possible unless I already know they are at a good skill level.

I think the farmer can reasonably expect a layman to understand most of the things related to feeding pigs.

I, on the other hand, have no expectation that a layman would understand pointers, lambdas or any of the other lovely complicated things that even answering simple questions COULD entail if we went into details or expanded around the question.

[EDIT: Apologies it this comes off as arrogant or elitist or something, not intended.]

Yeah I can definitely see how jargon prevents that level of conversation. There's definitely a false analogy in my original statement--there's plenty of jargon in farming and raising pigs as well, but I personally do know a decent amount on the topic so I'm not really a layman in the conversation that I had imagined in my head.
Hey OP, kudos on finding a solution. However, I want to see the original, can you provide a link?
It's in the post :).

blog.michellebu.com/assets/divart.html

Sorry for missing it!! Cool looking effects, kudos again ;)
This is probably one of my favourite comments ever.