top | item 2662617

Advice From An Old Programmer

649 points| FraaJad | 14 years ago |learnpythonthehardway.org | reply

220 comments

order
[+] rdouble|14 years ago|reply
People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.

This is a nice sentiment but as someone who has been a programmer for biology and medical research, it's not true. It's just like any other mediocre programming job, but your office is a folding table under a decommissioned fume hood. Physicists and mathematicians who program are so underpaid they dream about the glamour and glitz of working in a cube on Wall Street. There are bad jobs with technology firms, but by far the programming jobs with the most "respect", most fun and usually highest pay are with tech firms and well funded startups.

[+] timr|14 years ago|reply
"This is a nice sentiment but as someone who has been a programmer for biology and medical research, it's not true. It's just like any other mediocre programming job, but your office is a folding table under a decommissioned fume hood."

It depends on your level of domain knowledge. I saw a lot of programmers start into the world of biology seeking "interesting jobs", but with no background in the field. What they don't (usually) realize is that if a research lab is hiring a coder without research experience, they have some non-specific automation job that needs done. Think: maintaining the website, DBA work, basic sysadmin tasks, etc.

If you have a thorough understanding of a research field and you know how to code, life can be better. There is the potential of great upside (and the problems are usually far more interesting than building yet another caching/database system for a website). But even so, you aren't going to jump ahead of the guy who has spent his life studying the subject matter just because you breeze in with the ability to write code. Writing code is the easy part.

That said, academia is always a shitty place to be if you only want to make money and you aren't a football coach.

[+] bluekeybox|14 years ago|reply
> programming for biology and medical research ... is just like any other mediocre programming job, but your office is a folding table under a decommissioned fume hood.

That is sooo spot on (left my bioinformatics job a month ago for the exact same reason).

What the author additionally misses is that when you have never programmed/developed as your primary means of making a living, you likely have never worked with people who do not consider programming to be scary voodoo magic, and thus you have missed out on a golden opportunity to learn from others who are better than you. If you value your skills, always try to be around people better than you, otherwise you will end up cut off from the rest in a dark corner writing silly musings like this one.

P.S. I guess you can interpret this comment as "Have read the article but ignored where it's from and who wrote it."

[+] CrLf|14 years ago|reply
I think you missed the point. It's not about being a programmer working those fields. It's about using programming to help you in those fields, about programming not being the primary occupation.
[+] ww520|14 years ago|reply
Programming plus domain knowledge is the killer combination. Programmers (or IT) got no respect from "business" people (finance, biologists, doctors, etc). They don't understand the difficulty of programming and think you are replaceable commodity.

But if you have the domain knowledge and the programming skill, you can turn the field upside down. Automate the jobs done by "business" people and commoditize them.

[+] juiceandjuice|14 years ago|reply
Don't underestimate what you are doing though. Just because it's not super fun or interesting doesn't mean it's by any means trivial.

I looked for over a year for a job that I could love after I graduated with a BS in Applied Physics (and a ton of research experience) that would pay the bills, and I ended up mostly working on a pipelined batch processing framework, and web and database stuff, but at a DoE lab supporting physics experiments. It's a happy medium for me, I'm still around physics, I'm still hearing how people do the interesting things, and occasionally I get to drop back down into "find the novel mathematical way to solver this" mode.

Of course it's easy to be a quant and make money making rich people richer, and maybe it is glamorous, and many people prefer glamour, but glamour never cured anybody.

[+] zedshaw|14 years ago|reply
Hmm, you really got a problem with this don't you?

http://www.reddit.com/r/programming/comments/i1j67/advice_fr...

There you are on reddit, saying the same thing, and ignoring the fact that you're confounding your experience as a Biology postdoc with you use of code. Hopefully, as a scientist you know what confounding is. :-)

P.S. I'm the author.

EDIT: point at the exact comment.

[+] wheaties|14 years ago|reply
As someone with a math background who came into programming this statement is very true. It's ironic that I've worked on missile defense, NASA satellite, and UAV routing software only to see my coworkers dream of jobs with webpages or distributed systems. Science work _is_ interesting until you've done it for a few years. Then, it's just another application of the same thing you did last, in another context.

And by the way, you ever see the kind of code scientists write? You'd burn your eyes out. No, it's not "good code," it's "good science." There's a difference. The humble ones nod their head and say "I don't understand the difference." Good luck finding a company like that (www.aer.com <- John Baldwin's group, they're hiring and have awesome management.)

[+] ori_b|14 years ago|reply
his is a nice sentiment but as someone who has been a programmer for biology and medical research, it's not true. It's just like any other mediocre programming job,

I think what he's saying is that a biologist that can program can vastly increase their output. He's not saying that being a programmer that works under biologists in a biology lab is better than being a programmer in a tech company.

And I agree. Being able to hack scripts for number crunching, quick simulations, and so on is vastly useful when you're not working as a programmer.

[+] turar|14 years ago|reply
Agree. I found that working as a programmer with a bunch of biologists, you're somehow become the "support staff", the "computer guy". Sometimes, a "cost center".

When you're working as a programmer in a technology company, you're creating "core product". It's quite a different feeling.

[+] mirkules|14 years ago|reply
I agree as well. That quote reads as a case of "grass is greener on the other side." People who make Augmented Reality software get respect. People who make accounting software don't.

To generalize, doing interesting things with user interface brings respect. Behind the scenes and office software doesn't. (and I mean strictly outside our "techie" circles)

[+] noname123|14 years ago|reply
Yea, I second that. Although I'd say that if you could have your cake and eat it too, it's the best.

Guys like David Shaw who funded their own trading firm to get the bitcoinz so that they could work on fun stuff like DE Shaw Research.

Or even the programmer that eventually published a Bioinformatics paper in Nature without any official affiliation, that just started by poking his head into UT labs; can't remember his name but probably pissed off all of the post-doc indentured servants who slaved away for years for minimum wage and in comes Mr.Programmer to take away their thunder.

But yea, speaking from experience working for Big Pharma IT has both good and bad. Low stress, good stability and decent pay but in no ways does it match the pace, (potential) pay-out of working at a prop desk/brokerage.

[+] jdietrich|14 years ago|reply
Once upon a time, I played poker for a living. The most important thing I learned was that the least important factor in how much I earned was my skill at poker. The most important skill was table selection, my decisions over which games to get involved in and who to sit next to. A close second was managing my resources, making sure I was playing within my financial and emotional means.

If you want to be world champion or mix it up with the legends in Bobby's Room, you need to be a phenomenal player, but being great at poker won't stop you from being broke and miserable. Everyone in poker knows a 'That Guy', a bona fide poker genius who keeps fucking their life up because they care too much about the game. The archetypal example is Stu Ungar; He won three world championships and over $30 million, but died aged 45, penniless and alone in a crappy motel because he just couldn't get his life in order.

Like poker, software is intrinsically meaningful only as an intellectual puzzle. It can be fascinating and beautiful and it can send you mad. Fall into the trap of believing that poker is a worthwhile pursuit of itself and you end up in the trap - living out of your car or on the crappy end of the Vegas strip, some weeks a millionaire, some weeks a bankrupt. You see them come and go, the bright-eyed but slowly dimming college dropouts who could be living the life of Riley if only they knew something outside of poker, if only they stopped trying to beat the hardest games for the sake of it.

Your usefulness as a developer is only indirectly related to your ability to code. There are bona fide geniuses working in poverty and obscurity, there are utterly mediocre programmers doing amazingly useful and important work. Github is overflowing with brilliant, painstaking solutions to problems that just don't matter. Your most important skill as a developer is choosing what to work on. It doesn't matter how lousy a programmer you are, you can still transform an industry by simple merit of being the first person to seriously write software for it. Don't spend good years of your life writing the next big social network or yet another bloody blogging engine. Don't be That Guy.

[+] qusiba|14 years ago|reply
I seldom write any reply on hacker news. But this time I feel I have something to say.

The fundamental question behind all these arguing is, what can be considered useful? In the other word, what we do, couldn't be considered a waste of life?

Philosophers have been arguing about this for 2000 thousand years. So I doubt there's going to an absolutely correct answer in near future. What I can offer, is just my personal choice.

Whether we like it or not, whatever we do, whatever we've build, good or evil, will vanish sooner or later. The human beings will extinct, the earth will become quite, the sun will extinguish. It's just matter of time. If nothing we do could make any sense in the long term, how can we consider something useful not?

Like any living things on this world, we, humans, are born to have many instincts, like to survive, to reproduce, to play. And when we don't obey these inner demands, we feel unhappy. So we eat, drink, sleep, f, and make money. However, that's because what we do is useful, or important, or has any meaning behind them.

Some people might feel happier when they can attain something that are useful* for others, which usually bring them more money, food, prestige, and many other things. But some might be satisfied enough by resolving some intelligent puzzles. As long as people don't end up in a crappy motel because they couldn't get their life in order, I guess these 2 attitudes towards life are both OK.

[+] rickmb|14 years ago|reply
Not that I'm disagreeing with you when it comes to being a professional developer, and neither am I equating programming with art, but you've just argued against being an artist and creating art for art's sake.

There is nothing inherently wrong with pursuing something out of pure passion. If we all thought like that, if all of us religiously avoided being "That Guy", the world would be a much less interesting place. Some of the people I admire the most, who's work has inspired and enriched my life have spend all of their lives being "That Guy".

[+] F_J_H|14 years ago|reply
That was insightful - Thank you.
[+] onan_barbarian|14 years ago|reply
My guess is that I've been coding for longer than Zed, and I don't remember _ever_ thinking it was boring, and a lot of the stuff he says might be true for Zed, it sure as hell isn't true for the rest of us:

"Programming as a profession is only moderately interesting. It can be a good job, but if you want to make about the same money and be happier, you could actually just go run a fast food joint."

If this is actually true for you, and you can actually code, you really need to be making brighter career moves.

"People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines."

Well, maybe. But this sounds like random riffing from someone who hasn't held a senior, stable position in an actual tech company nor worked as a programmer in any of the long list of disciplines. I've met plenty of people who were the duty programmer in a non-CS area who were treated like shit.

But what would I know? At around the time I was messing around with software pipelined SIMD string and pattern matchers, Zed was pursuing the real business of a Working Programmer, which is to say, writing rants and offering to rent a boxing ring to fight people who made physical threats to him (which, I admit, is kinda cool).

[+] Johngibb|14 years ago|reply
I definitely got a different, more inspiring read out of this post. I'd sum it up as "programming for the point of programming will eventually reach a local maximum of enjoyment; focus instead on the creative potential and possible reach of the art programming has enabled you to create." In other words, "make something people want", and from that you will really receive fulfillment.

The true, lasting satisfaction that you'll look back on 20 years from now isn't the number of programming languages you've learned, but what you've created and the impact those creations have had on those who have used them.

[+] cubicle67|14 years ago|reply
don't let Zed's online persona (they ZSFA type one) fool you. He's actually a brilliant coder, has done all the things that it sounds like he hasn't and is one of those who I think has actually given more to the community than the "community" has ever given him (I'm making reference to the phrase "give back to the community")

Sure, he has a fairly unapologetic and somewhat confrontational nature (much like DHH) that seem to irk people, but (also like DHH) his walk matches or exceeds his talk.

[+] zedshaw|14 years ago|reply
> My guess is that I've been coding for longer than Zed, and I don't remember _ever_ thinking it was boring

I didn't say programming was boring, I said the profession was boring.

It's a good thing I didn't write the book for you, since you seem to be unable to read.

[+] singular|14 years ago|reply
Though there is some wisdom in what Zed says here, I am getting quite tired of the 'actually, programming itself (especially as a job) is boring' meme, as if saying that marks you out as some sort of world-weary but insightful practitioner of the arts who has somehow risen above the mere trivial and seen it for the dull plod it really is.

Please stop telling me what I think + feel about my craft - you feel that way, you want to do it down, fine, but don't act as if it is some sort of immutable truth, especially when you are talking to people new to the craft which I think is quite unethical, frankly. Why assume your own experience/opinion is somehow necessarily correct and ought to be dictated as hard-won truths, when your entire schtick is 'dissecting others' logic'?

No matter how many times I read these sorts of things, nothing changes the fact that I find programming a joy, the whole thing of being able to render machines of such incredible power + complexity to do stuff at all a miracle and know it is something I want to spend as much time doing as I can for the rest of my life - no jaded naysayer, not even an 'internet famous' one can change my personal experience of the thing, and I am absolutely nowhere, a nobody in a CRUD job, and not even that good of a programmer, but my passion and love for it remains.

A funny thing about this is that no matter what pursuit you can think of, there are always those in it who say 'actually the reality of this is horrible', people who take that attitude exist everywhere in every field, no matter how wonderful and joyous it seems and often actually is. I think that's something to contemplate - if it were all true then nothing would be worth pursuing.

There is a lot of bullshit spoken about programming, lots of crap aspects to the reality of it, lots of crap aspects of dealing with other people in trying to get things done, but people seriously - this thing is amazing, let's be grateful and celebrate it for once, please.

[+] zedshaw|14 years ago|reply
If you read what I actually wrote, instead of what you wanted to hear, you'd see that I said the profession is boring. Why would I write a book teaching people programming if I thought it was boring? Coding is awesome fun and my favorite thing, but damn the job is really super boring.
[+] programminggeek|14 years ago|reply
You know, half the reason Zed Shaw is so well known is not just that he is a prolific coder, but that he is quite an excellent writer as well.

Well done Zed. I always appreciate what you write.

[+] gaius|14 years ago|reply
Well, other than that he's completely mistaken about the career advice he offers here. I'd be very curious to know if he's ever been the highly-respected programmer in a science lab, or personally knows anyone who is. My science friends tell me the job doesn't exist; any code that needs writing, a grad student will do it sufficiently well (on top of their lab work) for no more money.
[+] zedshaw|14 years ago|reply
Thanks, I really do appreciate that.
[+] mattdeboard|14 years ago|reply
>Finally, I will say that learning to create software changes you and makes you different.

This is so very true in my experience. The way I think has fundamentally changed since programming became the primary professional/pastime activity in my life about two years ago. I'm 32, and everything from my politics to my decisions about where to live has been effected. (Whether I'm using the proper choice between 'effect'/'affect' is still a challenge...)

Programming has taught me more about critical thinking in two years than I learned in the previous 30. I can't stand many of the things I used to because of it, but thoroughly love many of the things I used to find painfully boring.

[+] shin_lao|14 years ago|reply
Programming as an intellectual activity is the only art

Programming isn't an art.

Programming is a craft.

The difference is that you can use a craft to make art, but crafting isn't always artistic.

Let's not get over our heads and consider ourselves artists because we can code...

[+] Johngibb|14 years ago|reply
I have to admit, I came into this discussion in support of the chapter and the author (http://news.ycombinator.com/item?id=2664502 for example), but after reading Zed's replies I'm turned off by his elitist replies, such as on multiple occasions telling people that they "can't read".

Clearly there's a lot of support (443 votes and counting), but resorting to this sort of insulting just doesn't lend anything to the conversation. And I think it's a worthwhile conversation to be had.

[+] zwieback|14 years ago|reply
Some good points buried among juvenile posturing, I guess the "old" part must be irony. Would you take programming language advice from someone who has learned the language in "a day or a week"? I realize the point is the language doesn't really matter but statements like that and the general tenor of the post don't inspire me.
[+] pnathan|14 years ago|reply
No, most languages are isomorphic up to semantics. the outliers today are the logic languages, the HM typed languages and the macro languages.

javascript, qbasic, java, c++, c, c#, ruby, python, perl, they are all very similar, some with their knobs exposed, some without, some with bad environments, some with better, some with closures, some without.

Once you grok the inner similarity of software, it's just not very interesting to learn new languages.

[+] MaysonL|14 years ago|reply
As an old programmer myself, who has learned many languages over the years, and written programs for pay in most of them, learning languages in a day or week is not at all unusual, or difficult. Especially after learning assembly for a few different machines, with widely different instruction set architectures.
[+] zedshaw|14 years ago|reply
1. It's not a "post", it's a single chapter in a whole book http://learnpythonthehardway.org/book/ which I'm guessing you won't read because you clearly can't read.

2. I am old compared to a lot of programmers, but yes it was kind of a joke. There's several exercises where people know my age.

3. It's a good thing you're not my target audience. It's a lot harder for me to write in 2nd person passive voice like you're used to reading in all those academic papers you devour.

[+] dolvlo|14 years ago|reply
When you get to the point where you understand that all programming languages are just implementations of turing machines (some more limited than others), and have much experience with a few languages, I'd say yes, you can give quite good advice regardless of the language, even if you've never once used it.
[+] simonsarris|14 years ago|reply
> Programming as an intellectual activity is the only art form that allows you to create interactive art.

What about oral storytelling? Or just (re)telling jokes? Improv and related performing arts? Stage magicians? Mimes? Community murals?

[+] stephencelis|14 years ago|reply
While the same thoughts crossed my mind, I think he probably meant art in the age of mechanical reproduction.

Still, programming affords a combination of the widest reach and lowest barrier to entry: it rarely requires the artist, performer(s), or specific location(s) to be consumed as a medium.

[+] iloveyouocean|14 years ago|reply
I think his statement is incredibly short-sighted. Has he never been to an art museum with interactive sculpture, etc? Perhaps he could hedge on the 'degree' of interactivity offered, but with such an emphatic 'only', I think its more likely that he is simply wrong.
[+] Peaker|14 years ago|reply
If he thinks he can learn any programming language in a week, he's still ignorant about programming languages.

I challenge his knowledge of/about Haskell, Agda, etc.

Also, I am sure there are plenty of "old programmers" who are still excited about programming languages, and think they matter.

[+] zedshaw|14 years ago|reply
I've gone through http://learnyouahaskell.com/ and it wasn't too hard. About the only difficulty is the pointless and contradictory jargon like "point free" or the hand-waving about Monads and how they violate their purely functional execution model. Never heard of Agda, but then I sort of don't care.

Obviously, there are old programmers who are into programming languages, but they usually sit around writing crappy programming languages that nobody can use because they never ask anyone if their programming languages are usable. You know, kind of like Haskell.

[+] ghotli|14 years ago|reply
You missed the point of his article. I believe Zed has shown that his mind is perfectly capable of seeing and processing the macro picture. Whether that be language theory, software engineering, or whatever he puts his energies towards. I may not agree with some of his opinions but the volume and quality of his output is indeed impressive.

Haskell's type system _is_ complex, but so are most things that are looked upon with foreign eyes. Zed is known for a bit of hyperbole. Are programming languages exciting? Sure, probably at any age. That wasn't his point though. They're just a thing, a tool. To a novice this very well may be novel advice looking upon the rest of us chattering away about the next bit of cooltech on the horizon.

[+] Rickasaurus|14 years ago|reply
I got bored with programming so I started to break out into more mathy things like machine learning and computational linguistics. It's the best of both worlds.
[+] zedshaw|14 years ago|reply
I got bored with programming so I started studying guitar. Way more fun.
[+] kbob|14 years ago|reply
Who is the old programmer that Shaw interviewed for this section? He should have credited him.
[+] paufernandez|14 years ago|reply
"they can go to hell"

"people who tell you it is are just jealous that you have picked up a skill they never in their wildest dreams could acquire"

As much as I get worked up by his writing, I think Zed Shaw always goes a little over the line...

[+] flocial|14 years ago|reply
The piece is definitely tainted by the author's personal experience but the closing message is uplifting and empowering,

"Finally, I will say that learning to create software changes you and makes you different. Not better or worse, just different. You may find that people treat you harshly because you can create software, maybe using words like "nerd". Maybe you will find that because you can dissect their logic that they hate arguing with you. You may even find that simply knowing how a computer works makes you annoying and weird to them.

To this I have one just piece of advice: they can go to hell. The world needs more weird people who know how things work and who love to figure it all out. When they treat you like this, just remember that this is your journey, not theirs. Being different is not a crime, and people who tell you it is are just jealous that you have picked up a skill they never in their wildest dreams could acquire.

You can code. They cannot. That is pretty damn cool."

[+] rhdoenges|14 years ago|reply
For all his faults, Zed Shaw is really a great personality to have in the programming world. He loves to code, but doesn't get caught up in the minutia and cargo-culting.
[+] goldmab|14 years ago|reply
Programming as a profession is only moderately interesting. It can be a good job, but if you want to make about the same money and be happier, you could actually just go run a fast food joint.

Zed appears to be saying that he isn't happy as a professional programmer. Some people really enjoy it.

[+] ihodes|14 years ago|reply
While I'm yet a young programmer, the primary paid experiences/internships/jobs I've had with programming have been in the biomedical/bioinformatics field. My first day on the job? Did probably all the work they'd expected of me the entire summer (all using a simple "programming" trick with Excel) then proceeded to write them a few program to make their data-entry/processing jobs a lot easier and more precise. I was like a magician.

It was pretty cool.

I've had nowhere near as much experience as Zed or many of the people replying on here, but my experience in different labs and situations has been similar.

On another related note; I was talking with an international finance/investment profession when I expressed my dual interests in finance and neuroscience. She immediately made the point that I'd be infinitely more valuable in finance with a hard science background (particularly in financing the field my background was in).

Moral: Domain knowledge and niche/cross-discipline expertise is valuable.

[+] kabushikigaisha|14 years ago|reply
Addendum to your moral: get a job in finance and don't waste your time making CRUD apps and being Super IT/DBA Guy at some uni's bio research lab. Much better pay, and if you're lucky you can train on in maths and the like to move up from day trading to being a full on quant. Then you can have the midlife crisis after you've amassed some capital and connections to start your special startup in SoCal.