Hacker News new | ask | show | jobs
by xkjkls 4058 days ago
This seems like a form of elitism very specific to programming.

I graduated with a degree in Electrical Engineering, and barely did programming until I began my first job out of college. In many people in the programming space, I see contempt that coding was something I didn't start until later in life. When I interviewed for Electrical Engineering positions, no one ever scoffed at me, "you haven't been computing the impulse response of a filter for 4 hours a day since you were 12? There's a massive difference between engineers who have done that and those that haven't."

5 comments

I think it really comes down to how much enjoyment one gets out of programming. If you thoroughly enjoy the process, you are more likely to put in the time and effort (in fact it will feel effortless), and you will be thinking about it all the time. Then there are those who don't mind programming, or maybe even see it as a chore, but choose to do it anyway.
I sometimes see the amount programmers believe they're supposed to enjoy their job as unique to programming.

People always talk about pursuing coding projects just for the fun of it outside of work, but that's a pretty unusual trait for other forms of engineering.

My father has a PhD in Chemical Engineering and has been doing crude assay work for the last twenty years. He obviously enjoys and gets fulfillment out of his job. But if you asked him to analyze crude oil samples on his free time? He'd say you're crazy.

I dunno, I've been in this field for five or so years coming out of other engineering disciplines, and it always surprises me how programmers view their trade as fundamentally different from other forms of engineering.

You know it's funny I agree. When I was working as an EE no one ever gave me trouble because I wasn't building circuits or filters or doing RF design at home and because I didn't want to think about it when I got home. I keep seeing this attitude in the software engineering sphere that you have to totally embrace it and have all sorts of side projects and it's encouraged to more or less dominate your life; I can't imagine this is healthy for most adults.
I think this is because a lot of computer work isn't just engineering (although there is a large amount of that mindset involved), but it is a mix of engineering and art. One thing to compare it to is woodworking. Many people who are good at it will go into something like cabinet making, but they will still have a lot of personal woodworking tools in their garage. There is something about creating something that, even if the process itself isn't really enjoyable, the final result is.
I've heard the same. There's an opposing group to that: writers.

Read any interview with a novelist, screenwriter, short story writer, etc and most will say it's something they hated doing but were glad to get done.

Pushed further though, I've seen good advice in some of those interviews which is to try to learn to enjoy the process, as what happens with the finish product is usually out of their hands. I think that's pretty applicable to a lot of other fields as well.

Yes! Like musicians that have tunes running through their head constantly. Or poets that turn every phrase over in their minds.

Did you ever dream of debugging your children? That if you could only find the right breakpoint to set, you could adjust them and fix something? Then you are truly a programmer.

Exactly. My dad is a musician, and I always wanted to make music, but I just don't have that thing where I'm always thinking of new melodies or beats or whatever. I know that I could not make music on par with the people in the world that do this like my father. Unless I have some previously undiscovered stroke of genius with music. But that is very unlikely, and still the standard comes down to "How much do you enjoy doing X?" that really determines how good you are or will be at X. I fucking love programming. That means I've got the capacity to excel at writing code. But I'm only okay at making music, and I only really listen to music when I code. So there is diminished capacity for me to be a rock star. Sufficiently diminished capacity that I probably will never be a well-known musician, let alone Michael Jackson.
Did you ever dream of debugging your children? That if you could only find the right breakpoint to set, you could adjust them and fix something?

Or maybe it's a sign that you should take some time off coding and not take your work home and give the other half of your brain some room to wander and explore space and time.

Exploring isn't a passive activity, everyone has their own way of discovering the world and I don't think anyone can claim theirs is superior.

Furthermore, being able to transfer concepts from one activity to another is a clear sign of intelligence: applying an idea to 1-dimensional text and then applying it to social relations isn't a passive activity either, it shows deep understanding of the idea.

I have programming dreams from time to time. But I'm not sure that "programmer" is the first word I'd find for somebody dreaming about debugging his children.
I think its a good word for somebody that has a head so full of programming, that it leaks over into other parts of their thinking. Like musicians that see a rainstorm and think of music.
That was too snide of me. But I would be slightly troubled to have such a dream, though as I say I do have programming dreams from time to time.
That is big of you to admit it! I too have 'programming dreams'. My buddy Tom and I share this problem. We agree, they are troubling and I wish they didn't happen.
I don't think it's elitism, it's just that programming offers a unique opportunity to do this stuff from a very early age from home and the end results is some people end up being very good at it "early" in their career.

Unfortunately you couldn't start "computing the impulse response of a filter" when you were 12 but if you could, and you continued to practice it daily, you would be very capable compared to people who just started in university.

You're demonstrating the exact syndrome the story discusses: conflating the ability to write code "well" with all the other things one does as a software engineer. The article goes into more detail, but I do a fair number of things every day that do not involve typing in code on a keyboard.

Going further, I would argue that most people I know who've been programming since they were 12 weren't even writing very good code at 22 (or whenever they left college and entered the working world). It's vanishingly rare that people were writing flexible, maintainable code in their teens. It's much more common that they were coding to scratch an itch, and that their code only solves the pieces of the problem they cared about, and probably not very well.

Note: I've been programming since I was 12.

This - that it's extremely rare to even be able to think the right things to produce maintainable code at that age - is why I've long thought that 12-15 is the right age to teach assembly language.

At that age, your code is going to be a mess no matter what tools you use, so you might as well have an excuse.

(Seriously: there's some brain development that doesn't happen until the close of puberty, and I believe that some of that is necessary for most people to plan and write maintainable code)

It's specific to programming, but not exclusively to programming; there are a few other areas where "you haven't been doing this since you could walk? Too late to be truly good":

- Mathematics (at the extreme high levels)

- Musical composition

- Classical music performance

- Painting/Visual arts

- Speaking most languages

- Jedi Knight

I agree to the list except painting/visual arts. And I wouldn't put programming along with them.
For the most part companies doing EE work seem to rely on the big three companies making EDA software to do tech development.

On the web and in app development, there's a far greater variety of technical bases to begin building atop, and a lot of web fundamentals that have developed culturally (rather than out of scientific or mathematic bases, where it can be clear your tools are helping).

A sometimes seen result is that those communities of developers that are "well served" by platforms perhaps "shielding" them from the sticky intertwingulated overwhelmingness of choices and protocols and systems often can't relate, don't relate to the wider body of codecrafters.

Ability to harness the best or biggest slices of culture well is a huge part of programming, and that requires more than being really good or really smart: it requires a will and energy to chase, and to always be chasing, keeping yourself unrooted from what you merely know or how you've done it. That doesn't justify a bimodal view, because there are certainly all kinds of ways people come about to programming, but I think in programming it really is different- since everything is made up and abstract, we're still figuring out general shapes. It's all a social milieu, and it requires paying attention to establish and keep authentic roots and identity, roots you'll need to contextualize what it is you do and what's coming down the pipe. Calculating impulse response is a hard task, but it has a mathematical fixity with no compare to the computer arts we use.

It's also been an extremely exciting time watching programming's recent decades. So there is some elitism of simply- why haven't you been here, enjoying the hell out of this? I think it's ok to feel that inside in a general way, I don't think that can be stopped or avoided, but how we reconcile that with the world without falling into the abundant moral hazards, how we still be good- it's doubly hard to reconcile yourself when the feeds are rife with people berating and assaulting tech culture, when you can get lost in these other people fights.

As a programmer, keep an open mind and accept many types of people as peer. As a person in the world, keep an open mind and accept that programmers are still quite high on some cyberspace utopianism and a precambrian-esque explosion of capabilities, and that just as much as you feel alienated by them, they feel alienated that a wider world excuses itself from recursing the depth and breadth of what enraptures the techie. 'The weirdo is just as scared of the normal person as the normal person is scared of the weirdo'

>This seems like a form of elitism very specific to programming.

In my experience it's not at all specific to programming. Other domains have their "rock-star" experts: The brain surgeons, the rocket scientists, the literal rock stars (or at least the true masters of one or more instruments, amazing songwriters, gifted vocalists), the Olympic athletes...the masters of their skill who are so good at what they do that they make it look easy. They've put in the metaphorical 10,000 hours of practice and self-improvement. They are awesome, and the rest of us mere mortals by comparison.

Programming is different from many disciplines, though:

* In programming, everyone from the student who is copy-and-pasting JavaScript into an HTML document to the amazing expert is a "programmer." There's no term for the ones at the top of the scale, no "Olympics" label, no "brain surgeon" specialty that distinguishes the top from the rest.

* World-class skill in one domain or language translates to a very short learning curve in just about any other domain. I've hopped between native apps, games, high performance servers, networking, security, drivers, web apps, embedded, IoT and machine learning, for example, and have used just about every mainstream language (and some trendy ones).

* Programming as a discipline has a 10x-20x measured productivity between practitioners with similar experience -- and the real difference can be infinite (there are tasks that I have accomplished that I know would never have been completed by some people I've worked with in the past). Though some will claim it's unique in that respect, it's not: It shares that trait with (for example) the creation of art and music. I can spend 10 hours working on something artistic, and I know artists who can produce a better result in 30-60 minutes.

* Programming can be learned with a computer and 100% free tools. You can start when you're 12 and have access to a computer, and you are limited only by your skill and imagination in what you can create. So those who have an aptitude can spend thousands of hours in practice for only the cost of electricity (after they have a computer).

It may be that Electrical Engineering doesn't have the 10x-20x relative skill effect, or maybe it does. I don't feel qualified to argue one way or another. It does seem like practitioners will specialize in a particular area, though, and tend to stick with it; correct me if I'm wrong?

Also, it's rare for someone at 12 to feel the need to compute Ohm's Law (well, I used Ohm's Law as a 14-year-old, but I'm odd that way), much less the impulse response of a filter, so for most you're learning those equations at the same time, and the difference between the best and worst students isn't measured in thousands of hours of previous experience.

>"you haven't been computing the impulse response of a filter for 4 hours a day since you were 12? There's a massive difference between engineers who have done that and those that haven't."

For the record, if you're one of those people who did start coding at 12 or earlier, it's not hard to spot another "native programmer", any more than, as a native speaker of a language, it's easy to hear when someone has learned a language as an adult. Sometimes late-learners with particular aptitude for languages can speak without an accent, but most of the time it's easy to tell. There are documented brain organization differences (fMRI) between people who learn a language before they're 12 vs after they're 14, and I suspect the same may be (statistically!) true for people who learn programming early vs. late.

I'm teaching my 10-year-old now, just in case. ;)