Hacker News new | ask | show | jobs
by everyone 3147 days ago
I felt that wizard thing when I was just starting out, for most of my career though, i've thought an apt analogy is tradesman. eg. carpenter or metalworker.

We get commissioned to build something that does X. Then we design and build it. With experience we develop our own tools / practices and a familiarity with our materials. Experienced masters might experiment and develop completely novel things or masterworks. Sometimes many of us will be commissioned together to build something really big or challenging.

5 comments

I think most people look at skilled construction contractors and assume they could be just as good with a very small amount of study and practice. People see us as having a completely alien ability that they intrinsically lack. That makes us like Harry Potter wizards, people with an inborn gift that makes us capable of learning things that are beyond the reach of normal people. The difference between us and wizards is that everybody would love to be a wizard, but they look at us and think, "Thank god there are people who enjoy that stuff." If you knew a wizard you'd probably constantly wish you could do what he could do. I think the only time people wish they could do what I do is when they're trying to get their printer to work.
That's quite true. When you say you're a plumber, people can at least ask half-assed questions or provide a story when they were doing that themselves. When you say you're a programmer, the conversation usually ends with "Oh.". They have literally no clue how to get into the area.

How many of you have girlfriends who are genuinely interested in your craft and regularly talk with you about it ? Say, once per week. But if you're a photographer, that's instantly understandable to anyone. Anyone can chime in.

This reminds me of the time when Charlie Chaplin said to his friend Albert Einstein: "People like me because everyone understands me. People like you because no one understands you."

I had a girlfriend with a CS degree from Princeton. She didn’t care much about code, and didn’t want to talk about it.

Another had an MIS degree. She loved my enthusiasm, but didn’t care much about the content.

Another was a photographer with a tremendous amount of curiosity about everything. She listened raptly for hours at a time to every word I said about every low-level or mathy thing. She took it all in and asked great questions. Then she learned programming and became a software project manager.

I believe the biggest factor in the difference in interest was the “cares about people” vs “cares about phenomena” spectrum.

In general, though, I would never even bring up the topic with friends or girlfriends.

Quite a lot of times, actually. It helps to work in gamedev, but I think a lot of developers can have interesting and meaningful conversations with outsiders about their work if they focus on the domain, things that they are building and problems they're solving, not the inner workings of languages and frameworks.
What if you write kernels or compilers for a living? Talking about a business domain is cheating :D
If you can't make a race condition in a device driver into an interesting story, you need to work on your story telling :)

And compilers are fascinating - you are, essentially, formalizing the act of translating between languages. Something anybody who speaks more than one language can understand.

You probably can't translate everything you do into a great story, but the basics of your field should be straightforward.

I got to answer the question with "I write file system performance benchmarks" once. Got looked at like I said I played with spleens for a living.
I love talking to my partner, even though she's got an MBA (and works as an artist. Long story :)

It helps me improve my communication and teaching skills. It's fun, because it highlights the parts I don't clearly understand as well. She cares about it because it's so fundamentally different from anything she does, it's an entirely different world. (Vice versa, too. She's given me beautiful explanations on color theory, for example)

Yes, it requires work, from both sides. But for me personally - if your partner doesn't care enough to ask (or you don't care enough to explain), why have a relationship in the first place?

(Sidebar: s/girlfriend/partner/g, please.)

I think plumber is more apt: We take shit and send it places so people don't have to think about it.
A lot of programming work being done today is information plumbing. Creating pipes that move information from one place to another. Regulating and monitoring information flow rates. Unclogging pipes that are backed up.
The difference is that plumbing is tangible. You can touch the pipes and imagine what's inside them.

IT is intangible.

You can touch a server and a network cable, but their work is utterly mysterious and unintuitive compared to a domestic water pipe.

Which is why IT seems like magic, but plumbing, carpentry, and car maintenance don't.

I think the craft aspect is somewhat romanticized and that much of programming work is more like a kind of accounting or some other clerical bureaucratic trade.
In my experience, that depends entirely on your role.

I've found that my place is within a team of 5<x<20 - it's large enough that I can work on "meta" stuff like workflow improvements and refactoring existing functionality to make it generically applicable where appropriate, but small enough that my contributions are not lost in the noise and I can see the impact I'm having on the team's overall velocity.

If all I were doing every day was implementing yet another CRUD form, then I would feel the same way you've described.

You’ve just reminded me of a line from one of the Wicca books I read as a teen. The whole coven size <= 13 thing was down to how big teams can get before people tread on each other’s metaphorical feet.
Covens of >13 are dealt with a great deal in Sterling's "Emberverse" series...
Surely there are lower and higher levels of abstraction and impact in accounting too—and a lot of repetitive drudgery in carpentry and other crafts.
Maybe you've been at it longer than me.. and as one gets more experienced/jaded ones analogies become less romantic.. Wizard!, tradesman, garbageman, bureaucrat... I hope it doesnt get down to politician!!

Also software is a huge field and where u work in it probably has an effect. I never do internety stuff for example, I make computer games.

> I hope it doesnt get down to politician!!

Given how political certain projects have become, i dunno...

I'm actually kind of romantically impressed by accountants and actuaries!
Similarly, I've found that most of the more effective programmers that I know personally tend to have backgrounds in trades, whether that is carpentry, building construction, mechanical tinkering, etc. Odd anecdote, I know, but perhaps it has something to do with a similar style of big-picture systems-thinking, combined with a need for attention-to-detail.
I used to work construction and a lot of the concepts translate well to software. You learn pretty quick that if you half ass something early in the build it'll come back to bite you later (didn't place your studs 16 inches apart? Enjoy marking them all out so you can put up drywall).

The tools are different but the ideas are the same.

I used to be an architect, worked at it for a good few years, and only got into programming when I was approaching my 30's. Ive since found that my architecture experience gives me a huge advantage over my peers when it comes software architecture and project management.
Architecture was my other potential major in college. Took drafting classes in high school and everything. I think there is definitely something to the mindset correlation.
I have this idea to write an article on how architecture and general design was taught to me. I think software dev education could benefit from that approach. We were never told how to design, it was almost all studio work. We would be given a site and a brief and then off we go and design a building. We could get advice from our lecturers + also there were regular 'crits' where you have to put your work up on the wall in front of everyone and give a brief presentation, then the lecturers and everyone is free to critique it. It takes a year or two or three, but going through this over and over you do eventually develop your own design methods.
If you want to impress people as a programmer, I think it helps to have imagination and side projects. Visual programming is nice, too (like SVG).