
Advice From An Old Programmer - FraaJad
http://learnpythonthehardway.org/book/advice.html
======
rdouble
_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.

~~~
zedshaw
Hmm, you really got a problem with this don't you?

[http://www.reddit.com/r/programming/comments/i1j67/advice_fr...](http://www.reddit.com/r/programming/comments/i1j67/advice_from_an_old_programmer/c204vpv)

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.

~~~
collypops
It was really interesting for me to look at all of the different directions me
and my fellow students took after completing our CS degrees. I always joke
that I 'sold out' with my programming skills for going to work at a news/media
company to build their websites, whereas a couple of the guys a I know are
doing a much more honourable thing by working in Biology and Space Tech.

I think it's unquestionable that they are the ones who are deserving of more
respect, but I still think that it's not just our jobs that define how well
we've used our programming skills. We're always hacking away on our own little
projects, and hopefully carving our own paths, creating useful software along
the way (something you excel in, Zed). I think that having the drive to do
this commands more respect than any specific career choice.

------
jdietrich
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
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.

~~~
seri
Although I like the grandparent's anecdote and up-voted him, I would have made
the same argument as you did against his point. It's just confusing and
therefore unsatisfactory to use usefulness as a tool to decide how to spend
your life.

The reason why one shouldn't be That Guy is not because spending all your life
playing Poker, or doing Maths, or playing Chess (as in the case of Bobby
Fischer) just for the sake of it doesn't benefit others, but because when your
level of obsession reaches a certain point, the point of diminishing returns,
you just get confused -- you can't tell whether you are still getting pleasure
doing it anymore. You've been off-balanced with other parts of life for too
long that you've lost the ability to approach your passion purely from
intellectual curiosity, as you used to.

So the bottom line is, solving intelligent puzzles is fun, as long as you
don't abuse it.

------
onan_barbarian
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
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.

~~~
zedshaw
You'll find that this part of the book gets interpreted by different people in
different ways. Some folks, usually those who've invested their life in _only_
programming, take it offensively and assume I'm insulting them. Others who are
beginners or maybe having a hard time with programming find it inspiring.
Still others just find it weird.

To each their own.

~~~
ChRoss
Your post reminds me to time when I did my first freelance project. I want to
create software/applications that people can use, and can make their life
easier.

Thank you Zed.

------
singular
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
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.

~~~
singular
With all due respect, I did read TFA -

"I have been programming for a very long time. So long that it is incredibly
boring to me."

But you do of course later say:

"This doesn't mean I think programming is boring, or that you will think it's
boring, only that I find it uninteresting at this point in my journey."

And, of course:-

"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."

To me that all seems a little contradictory, but ultimately seems to say to me
'actually, after all these years I've seen through all the naive bullshit and
_realised_ that it is, in fact, rather boring'.

There are obviously crap and boring aspects to any activity, but how on earth
can you say the act of doing something is interesting, but the profession
itself is not? Do you mean to say that everything in the profession _other
than_ the programming is boring? Well I'd disagree with that too, though less
emphatically.

------
programminggeek
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
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.

~~~
F_J_H
I’m not brave enough to speak in extremes/absolutes like "completely wrong" on
a topic like this.

My experience aligns with his advice. As a finance student, I was selected for
a research project because of my database/SQL knowledge, which got me mention
in the Journal of Finance when my prof. was published, and which later paid
unexpected dividends. Later, knowing to code in a finance/analyst job
ultimately positioned me for a startup that has left me much better off
financially than if I had stayed in my job. I also have a friend in the pharma
research field that did very well because he could write code.

(Note that it’s not always the money that is the pay off. Sometimes it is an
opportunity that leads to other opportunities that would have never been open
to you had you not been able to code, as in my case. )

So, in my experience his advice has proven to be right on.

~~~
gaius
But was he a pharmacist that could code, or a programmer who showed up one day
and said, hey, need any programs?

~~~
F_J_H
The former.

------
mattdeboard
>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.

~~~
GHFigs
Seymore Papert, in _Mindstorms_ :

"By deliberately learning to imitate mechanical thinking, the learner becomes
able to articulate what mechanical thinking is and what it is not. The
exercise can lead to greater confidence about the ability to choose a
cognitive style that suits the problem. Analysis of "mechanical thinking" and
how it is different from other kinds and practice with problem analysis can
result in a new degree of intellectual sophistication. By providing a very
concrete down-to-earth model of a particular style of thinking, work with the
computer can make it easier to understand that there is such a thing as a
"style of thinking". And giving children the opportunity to choose one style
or another provides an opportunity to develop the skill necessary to choose
between styles. Thus instead of inducing mechanical thinking, contact with
computers could turn out to be the best conceivable antidote to it. And for me
what is the most important in this is that through these experiences these
children would be serving their apprenticeships as epistemologists, that is to
say learning to think articulately about thinking."

[http://www.amazon.com/Mindstorms-Children-Computers-
Powerful...](http://www.amazon.com/Mindstorms-Children-Computers-Powerful-
Ideas/dp/0465046746)

~~~
mtraven
More here: <http://dailypapert.com/>

------
shin_lao
_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...

~~~
zedshaw
Oh, I'm so glad you, the one arbiter of all that is art, is able to correct
our misunderstanding of the definition of "art".

The truth is, you can't define art, so in the same way I can use paint to
paint my house, or use paint to create a portrait, I can use programming for
art or just as a day job.

Finally, everything that requires skill has craft, even art.

~~~
catshirt
while op is possibly being pedantic, aren't you agreeing with him?

shin_lao is suggesting that painting itself is not an art, but a craft. what
you do with the paint defines whether or not it is art.

likewise, your code can create something menial the same way it can create
something artful.

being able to program makes you no more of an artist than being able to put
paint on a brush. whether or not being able to put paint on a brush makes you
an artist, of course, is subjective. :)

~~~
zedshaw
I have no real idea what he's talking about, since like most pedants, what he
talks about isn't really relevant to anyone but him.

------
zwieback
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
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.

~~~
Peaker
"At the time that I wrote this book I knew about 20 programming languages and
could learn new ones in about a day to a week depending on how weird they
were."

He's saying the entire range is a day to a week. The ones that are isomorphic
would take a day or two, I agree.

But he's saying the ones that are _not_ isomorphic also take just up to a
week, and according to other discussions with him, it's not because he's
already an expert in those other types of languages.

------
Johngibb
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.

------
simonsarris
> 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
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.

~~~
simonsarris
I agree with what he meant, but I dislike his use of the word "only." I hate
to be really anal, but that kind of thing always sticks out in writing to me.

"Hard distinctions make bad philosophy." as John McCarthy (of Lisp and AI
fame) would say.

------
Peaker
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
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.

~~~
nostrademons
The mark of whether you "know" a programming language isn't whether you've
gone through a tutorial; it's whether you can write useful programs in that
language.

~~~
zedshaw
Uh yeah, there's this thing called experience which allows me to learn a
language well enough to realize it's a total load of bullshit. Haskell was
exactly like that.

~~~
crasshopper
Zed, why do you think Haskell is spoken of so highly if it's so crap? Or are
you being hyperbolic? I'm not in a position to judge, but when Peter Thiel
gives a 19-year-old $100k to do a Haskell project, that gets my attention.

Really nice effort on this book, I wish I could teleport it back in time to my
past self.

------
Rickasaurus
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
I got bored with programming so I started studying guitar. Way more fun.

~~~
seri
I would also recommend board games, such as Go, or Chess (actually, let's just
pick Go; Chess is undeservedly popular, you know, like Java).

------
kbob
Who is the old programmer that Shaw interviewed for this section? He should
have credited him.

------
paufernandez
"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
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."

------
astrofinch
It seems likely to me that the dual specialization strategy Zed describes is
beaten by the strategy of being an opportunist who has the ability to code as
one of the tools in their toolkit.

[http://www.ribbonfarm.com/2007/12/05/the-fine-art-of-
opportu...](http://www.ribbonfarm.com/2007/12/05/the-fine-art-of-opportunism/)

------
rhdoenges
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
_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.

------
sunchild
I'm just going to start linking to Shoshin every time I see a weary, old coder
blogger post: <http://en.wikipedia.org/wiki/Shoshin>

------
ihodes
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
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.

------
marcamillion
For all the flack that Zed gets, this is actually one of the sanest/most
inspiring things I have seen him write.

Truer words have never been said.

~~~
ryan-allen
You may also like this essay of his:
<http://zedshaw.com/essays/master_and_expert.html>

------
KeyBoardG
I think this becomes apparent to anyone with experience with multiple
languages and multiple platforms. The language is just the tool you use to
accomplish the goal. Its good practice to learn new and different languages
and paradigms just to see how they work and how you can take the good and add
it to your arsenal.

------
swah
I just don't like when he calls himself an old programmer. He is only like 10
years older than me - oh, wait..

------
jerryr
As someone who's been trying to hire good software engineering professionals
for some time now, I'm going to tentatively agree with, "people who can code
in the world of technology companies are a dime a dozen"; however, I'm going
to posit that, in the world of technology companies, good software engineers
who are passionate, diligent, and bent on improving themselves and their field
are rare. So, please do not despair because you've read the Old Programmer's
advice and you're not fluent in biology, medicine, government, sociology,
physics, history, or mathematics. I can say that even as a generalist, you can
help advance the field of software engineering, and I represent one technology
company that will value you for that.

------
JoshTriplett
I found the book that contains this chapter quite impressive. It represents
the only attempt I've seen to document the procedure many self-taught
programmers followed to learn programming by exploring. At first, reading the
instructions about carefully typing in the exercises, it took me some time to
realize the point (and I don't think someone would get much value out of
_only_ typing in the exercises); however, once I read some of the "Extra
Credit" exercises it made perfect sense as an introduction to learning by
exploration. If typing in the exercises and running them doesn't give you an
irresistible urge to tweak them and see what happens, you probably won't find
programming fun.

------
code_duck
>People who can code in the world of technology companies are a dime a dozen
and get no respect.

That may be a bit exaggerated, but...

>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 quite true. I'm involved a bit with a few circles outside the whole
web-tech sphere, and it's quite different. Someone who understands the web and
technology can create things that others cannot. Being involved in a certain
field gives you knowledge and social contacts in the field. Put those
together, and the business ideas you can come up with can be ones that can
really change things.

------
starpilot
> 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.

So true. I'm a aeronautical engineer and notice things everyday that could be
revamped through coding. The problem is the vast majority of
aeronautical/mechanical engineers aren't comfortable with code, and if
anything broke or any improvements were needed after I left, no one could do
anything with it. So we're back to our "database" of 200+ Excel files and
nested folders for CAD "version control."

------
MichaelReed
I think a craftsman is entitled to reflect upon his work and profession and
not have that introspection be neat an clean for everyone else's consumption.

There are moments of doubtful introspection and unwelcome truths that are
insightful and illuminating. Stop and listen to the perspective and perhaps
just spend a moment with it... That is want it means to be human.

Spouting of some knee-jerk reaction shows you are not even beginning to listen
and haven't begun to hear what this person is emoting. There is a lot more
here that is heartfelt and true than simply what is written.

------
jeggers5
This is a fantastic piece of writing. Was actually very inspired by it.

~~~
chashaz
I totally agree, it's quite an inspiring article.

My dad suggests that I take over his business which I might but I'm still
sticking to programming as a career. May be I won't be earning a lot of $$$
but atleast I'll be doing something that I totally enjoy.

~~~
fjordan
You should learn to apply your knowledge of programming to his business.

I find that that when knowledge of programming and software systems is
combined with business, one has the potential to create a highly profitable
autonomous system which only requires the initial investment of time (and hard
work, of course).

------
russellperry
Zed's a strong cup of coffee and guys like him generally play a really healthy
role in the community they are a part of, driving discussions in directions
they might not have taken and playing the part of Gadfly at Large -- every
community needs a Zed to keep from becoming complacent.

"Rails is a Ghetto" notwithstanding, Zed's writing is always worth engaging
even when you strongly disagree. In that respect he's always reminded me of
Steve Albini.

What Albini would do with Fret Wars, however, is another question entirely.

~~~
schleyfox
Actually, I tend to think "Rails is a Ghetto" is one of his most beneficial
works. It was angry and juvenile at times, but I think it did help make rails
grow up. It also called out a lot of the fanboy-ism in the community and
helped people who actually cared about engineering to rise.

------
caryme
_Programming as an intellectual activity is the only art form that allows you
to create interactive art._

I would venture to say that music composition is also interactive. Music, to
me, is art twice: first in the composition and second in the performance.
Somewhat like programming, composers create something and send it out into the
world so that others can use it, give it life, perform it.

------
delpinoman
I agree that it's more important to have some additional domain knowledge than
to be some superprogrammer. I'm not the best programmer but I have some
(human) language learning knowledge and thus could set up my own business at
<http://www.chinese-course.com/> Best thing you can do as a programmer is be
your own boss.

------
donaq
_People who can code in the world of technology companies are a dime a dozen
and get no respect_

Wow, where have you been coding? I am not as proficient (and DEFINITELY not as
prolific) as you are, but I've only had that feeling once working as a
programmer in Singapore, and that was because the boss in question happened to
be an asshole.

------
crasshopper
Oh please. You can't make as much money running a fast food joint and you will
not be happier, unless that's in your blood. (I know one of the owners of a
super-high-grossing KFC and have run a small business myself.)

Programming is a cushy, stimulating, high-paying job - and don't you ever
forget it.

~~~
crasshopper
And, your risk in running a fast food joint is much, much greater. Franchise
fees of $100k+, managing employees, avoiding lawsuits because your parking lot
has a bump in it, and being in the shop everyday versus...

learning a language is free + telecommute, flexible deadlines + server crash
leads merely to whining + Idea Guys have to pay developers and not the other
way around.

------
Quiark
I'm surprised than in this whole wall of critique, almost nobody has pointed
out about the last 3 paragraphs.

I don't think "They can go to hell" is a good enough advice. There are nerds
out there who are struggling socially, may be even virgins and I think they
deserve better advice.

------
russellperry
If you haven't watched Peepcode's Play by Play with Zed Shaw, you should.
Really insightful stuff.

------
joyarubica
Since the best programmer, the most intelligent person or the best working
people can be the lowest paid person, I think that what you must learn is to
sell your skills.

Compare Linux to MS, is not about what you do but about how you sell it.

------
schiptsov
<http://en.wikipedia.org/wiki/Narcissism>

Coding and software engineering are not the same knowledge. Coding is just a
small part of the big discipline. The difference between software engineer and
a coder with even years of practice is the same as between a poet and a full-
time typist.

Memorizing syntax (and may be even some standard idioms) of 20 different
languages doesn't make you a software engineer, and of course, you can code
something after a day to week of practice, but it will be a mere amateur
coding, not a programming.

Of course, such kind of coders are dozen for a dime, because having a
dictionary doesn't make you a translator or even speaker of the any human
language. After memorizing some basic words and you can use some very basic
vocabulary and copied sentences from a phrasebook, but you cannot read even a
news paper, let alone a non-fiction or a scientific book. You cannot even
watch a TV - they're speaking too fast.

The idea behind reading other people's code is not about finding familiar
syntax or code blocks, or even use Ctrl-C, Ctrl-V it is about appreciating and
understanding the ideas which leads to this exact code and not the other, why
this and not that, which is impossible without engineering knowledge.

No amount of memorized syntax can compensate the lack of practice. You may
learn the syntax of 50 programming languages, it is not a substitute for years
of practice with at least one of them.

Memorizing standard idioms also does not make you a programmer. You should
understand why there idioms emerge and remain here, which ideas are behind
them, which technology, what are advantages and disadvantages. This knowledge
makes you a software engineer, and this knowledge will give you respect of
others.

Producing yet another python tutorial, without ever realizing that keeping it
short, full of idiomatic examples, and ability to grasp the big picture in an
couple of hours is a huge advantage of the classic tutorial
<http://docs.python.org/py3k/tutorial/> doesn't make you a teacher of
humanity.

And of course, language matters. just look at this
<http://hyperpolyglot.org/scripting> and try to appreciate the differences in
readability and self-explanatory between PHP and Python/Ruby. Try to grasp why
carefully chosen syntax of Python/Ruby is different from chaotic approach of
PHP. Unfortunately we can't see the bloatedness of Java syntax on the same
page.

~~~
zedshaw
Wait, so you link to the wikipedia page on Narcissim, then spend 9 paragraphs
pontificating on my experience and how you know all about me in a way that
assumes everyone cares what you think?

Right, I'm the narcissist.

~~~
schiptsov
I don't know what this way of expressing my ideas assumes. If you have
something to say about these ideas - you're welcome.

------
adsr
I found the discussion about domain experts interesting, as if there is no
domains within CS. Wouldn't domain expertise in networks, machine learning,
DSP, data bases, operating systems etc. be of any value.

------
mohsen
the first time i read this i remember thinking to myself, "oh boy, i wish i'd
read this 8 years ago. i would have still been a programmer, but i would have
chosen a different degree..."

------
richcollins
Interesting response:

[http://dekorte.com/blog/blog.cgi?do=item&id=4871](http://dekorte.com/blog/blog.cgi?do=item&id=4871)

~~~
zedshaw
I find that the hallmark of my writing is that people seem to find their own
issues in reflected in what I say. This is a great example of that.

------
brooksbp
> At the time that I wrote this book I knew about 20 programming languages and
> could learn new ones in about a day to a week depending on how weird they
> were.

Funny. I've been programming quite a bit too and feel comfortable in a handful
of languages. Knowing what's happening in the compiler and in the hardware or
vm (runtime) is a different story. Being able to understand what programs do
no matter what language they're written in is also a different story. We all
know 20 different languages.

------
boscomutunga
I like the point mentioned that we should avoid being allied to a particular
language and reflect on solving the problem.

------
rlobue
Lovely end to a book. To say other forms of art are not interactive however is
a little short sighted.

------
olalonde
Isn't this the same guy who complains about not being able to find work and
how pissed off he is that Google only offers him "junior system administrator"
jobs?[1]

Not sure I'd want to get my career advice from him.

[1] [http://techcrunch.com/2008/01/01/zed-shaw-puts-the-smack-
dow...](http://techcrunch.com/2008/01/01/zed-shaw-puts-the-smack-down-on-the-
rails-community/)

------
astrofinch
"People who can code in the world of technology companies are a dime a dozen
and get no respect."

O RLY?

[http://blogs.forbes.com/nicoleperlroth/2011/06/07/winners-
an...](http://blogs.forbes.com/nicoleperlroth/2011/06/07/winners-and-losers-
in-silicon-valleys-war-for-talent/)

~~~
zedshaw
O HAI! You found an article about programmers getting respect in Silicon
Valley. You totally proved me wrong, since it's exactly like Silicon Valley
in...New York.

~~~
astrofinch
Good to know, but if I'm a coder who wants respect, it seems like it'd be
easier to move across the country than develop an entirely new set of skills.

------
hiesenburg
you're the man, Zed

~~~
zedshaw
Thanks, I appreciate that you liked it.

------
rimmjob
zed shaw taught me python, cured my hemorrhoids and showed me a how to be a
real man.

~~~
zedshaw
Must have been hard for you to get those rimmjobs on your massive hemorrhoids.

------
whalearmy
hah, well shit way to spoil the end of the book for me!

------
shevegen
Zed Shaw is trolling again. His ego is so boring.

Good that I stopped reading the rant when I found out it was him.

------
CedriK
I'm clapping my hands right now! Good text :)

------
mclin
> 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.

Totally

~~~
dolvlo
I disagree. People who code in the world of technology companies get respect,
and quite a lot of it. Getting paid for your work is a form of respect.

~~~
orillian
Getting paid is only a form of acknowledgment that you worked, but it in no
way denotes respect.

It simply says " to the best of our knowledge s/he did <insert type of job
here/> work for the duration of this pay period.

I agree that some people do get respect in this industry, but too many of us
are simply cogs in a wheel.

~~~
dolvlo
What's so bad about being a cog in a wheel, if you're enjoying your life?

~~~
elmomalmo
I think that's precisely one of the the points Zed is making. That is, that
coding is a cool, rewarding pursuit. But that you shouldn't expect a coding
profession to necessarily be the either cool or rewarding.

If you're happy in that profession, great. I don't think the chapter in this
book says you shouldn't be, in fact I think it would suggest that you have the
right disposition for such a profession and are therefore fortunate.

------
jhuni
_What I discovered after this journey of learning is that the languages did
not matter._

This sounds a lot like my journey. I was overwhelmed with the details of ~20
programming languages and data formats. Eventually it actually got rather
frustrating to work with all of them. Then I discovered Lisp.

