
I don't want to be a Real Programmer - verybadalloc
http://verybadalloc.com/blog/2014/03/18/i-dont-want-to-be-a-real-programmer/
======
goldenkey
The viewpoint in this article is disillusioned at best. A real programmer is
not someone who loves programming and attends hackathons to build iOS apps
that map the sewer rats in NYC for fun. That stuff might be fun to the hipster
who just learned iOS, sure. But I doubt someone who's been programming for 15+
years wants to build an app for bullshit. Every line counts more, because the
capability is higher. Wasting time is dreadful, when one has been programming
for so long.

I've been programming for nearly 16 years; code is not as fun as it used to
be, and most programming jobs are inconsequential bullshit of buzzwizardry and
magic frameworks, agile standup chicannery and the dread of dealing with the
zesty pimple pricked CS graduate who just loves AngularJS and thinks he can
code his way out of a paper bag when he's never done reverse engineering.
Never made a web scraper. Never messed with shell code or assembly. Never
wrote a game hack using hooks/detours. Never written a line of C. Etc etc.
Programming is full of happy go lucky adult kids. Real programming is for
getting shit done, that's all it ever was and will ever be to a seriously
learned seasoned programmer. Whether it's building something, destroying
something, modifying something, binary or source, the seasoned programmer has
the skills; but don't expect him not to sigh when you bring up your giddiness
surrounding menial programming labor for worthless causes; or just plain
repeats of the last decade.

~~~
tdees40
This might be the single greatest comment in the history of Hacker News.

------
einhverfr
In my experience there are two kinds of programmers. Those who program
(largely based upon practices they are told are good) and those who also
really think about their own programming and try to develop their own
paradigms in response to their own problems.

The latter tend to be, in the long run, far more productive than the former.
However, this takes both motivation and it takes extra time between iterations
to think about what problems you are having with development and how to solve
them. Continuous iterations get in the way of it, but it isn't clear that the
heavy engineering waterfall model gets people to do it either.

Sometimes you need some distance so you can come back and ask "is this good
code? What can I do better?" Without distance, it is like editing your own
essays.

After 10 years of coding professionally and over 20 years of programming
experience, I find that that capacity, which is entirely independent of how
many hours someone actually spends coding, is the best indication of how
productive someone will be.

If I am ever hiring programmers, my questions won't be puzzle questions. They
will be questions like "how do you decide what needs testing?" or "when and
why do you comment your code?" Those questions are likely to tell me more
about how much someone has thought about their own code experiences than
whether they can solve a certain puzzle or not.

~~~
ownagefool
Learning 30+ years of CS knowledge from scratch doesn't sound very efficient.
The truth is, anyone who constantly delivers must have the capacity to
understand _why_ but they'll still be largely benefiting from the trails
marked by others.

~~~
einhverfr
Certainly we all learn from others. However there is a difference between
those who sit back at the end of the day and say "what worked well?" and those
who say "We should do things this way because it's a best practice."

------
chriswarbo
It can be quite humbling to realise how large a particular field is, but it in
no way makes one an 'imposter'.

Pro tip: Those 'Real Programmers' who's JS experiments make your CSS look
quaint _aren 't the world's best programmers_. They're 'yet another frontend
guy' to, for example, those who write Java servers. Guess what, those writing
the Java servers are 'just end-users' as far as the JVM hackers are concerned.
Likewise, the JVM hackers are 'just end-users' for the OS developers. The OS
developers are 'just end-users' for the hardware guys. The hardware guys are
'just making an interchangable commodity' as far as the sysadmins are
concerned, as they virtualise everything away. And, of course, the frontend
devs laugh at the sysadmins for not being programmers.

You might think of some Node.js guy as a demi-god, but I've never heard of him
since I don't particularly care about Node.js. Likewise there were a lot of
tributes being paid recently to a Ruby developer who passed away. It's
touching to see how many people he'd positively impacted, but again, I've
never heard of him because I don't particularly care about Ruby.

Am I an 'imposter' since I don't care about these things? Not at all. I have a
high-level knowledge of what they are, and I even played around with Node.js a
bit (unfortunately it was just after 0.4 had broken compatibility with most
libraries in NPM!), but I can't go too far down those rabbit holes because
they're not the stacks I use. Likewise, I don't expect those who are deeply
into Node.js and Ruby to care about, for example, the recent death of John
Reynolds, or Robert Harper's kidney transplant.

Just stick with the rabbit hole you've chosen, as long as you're enjoying it;
let the work of others guide you down, and if you reach the bottom you'll
suddenly find yourself to be a 'Real Programmer' who can help with the
digging. Alterntively, if you disagree with or don't understand some of the
decisions/conventions on the way then you should absolutely start digging in
your own direction, even if it doesn't go anywhere.

PS: Knowing APIs inside-out does not make one a 'Real Programmer'. My day job
is PHP, but I still tend to Google the most basic built-in functions (which,
admittedly, is an artefact of PHP's poor API). You should instead strive to
understand your _problem_ inside-out, from multiple perspectives, then you can
pick and choose any API/stack you like and let the docs guide you through the
tedious act of plumbing it all together. Or write your own :)

~~~
CmonDev
A sufficiently high-level static-typed language is similar to Math. Are
mathematicians 'just end-users' to someone? In your world of abstractions you
are the god.

~~~
pdubs
Never more relevant... [http://xkcd.com/435/](http://xkcd.com/435/)

~~~
splintercell
My friends made an improvisation to the comic:

[http://i.imgur.com/etuhc8z.jpg](http://i.imgur.com/etuhc8z.jpg)

------
adamors
Nonsense like this

> For sure, they are plenty of Real Programmers out there, who easily agree to
> the 80+ hours/week workload.

has to stop.

I think the opposite is true: if someone is working 80 hour weeks they either
overcompensate for their lack of skill or are being willfully exploited.

~~~
gearoidoc
Agreed. If there's one danger to our industry, its notions like this.

(Most) humans aren't supposed to work 80+ a week. I say most because there are
always those superhumans you come across that just seem to be able to do it;
but most can't.

I always try to look at statements like this through the eyes of a would-be
programmer. If I was about to start down the programming route and was told I
could never achieve my aims without accepting an 80 hour work week then I'd
run a mile.

~~~
adamors
> (Most) humans aren't supposed to work 80+ a week. I say most because there
> are always those superhumans you come across that just seem to be able to do
> it

I don't think they're superhuman, they are people who have no lives and will
burn out in a short period of time. I can only feel sorry for them.

~~~
amirmc
This thread seems to assume that there's a clear distinction between 'work'
and 'not-work'. That isn't always the case as it's entirely possible that
someone can love what they do to the extent that the lines completely blur
(yes, that means those people could be exploited for that passion).

An example of this is academia where every prof I've met 'works' insane hours
but are completely (and happily) absorbed in their fields. The whole thing
feels like a hobby to them. The only thing they'd want to get rid of is the
paperwork (research assessments, etc) so they could spend that time with
students and research.

~~~
mattlutze
The "work is their passion so it's not work" contrarian-ism is certainly not
uncommon. But the argument against 80 hours is generally stress-induced health
and productivity related. Given, if a person "loves what they do" then the
stress part is probably lower, reducing the negative effects of the first.

But the other argument is that, after so many hours, returns on effort are
reduced, and I don't see a good argument for this being not true whether a
person is in love with their vocation.

I would posit that a likely scenario, is that the 80-hour-a-weeker's passion
for their work their concern for efficiency. They don't get as much done per
hour, but they don't care as much because they love the parts even where they
are just plodding along.

~~~
JoeAltmaier
You have to be doing something for all the hours in the week. We don't get
stresses out playing tennis or having sex (well...) or going to the movies.

So its got more to do with extended concentration on one task, vs the actual
hours? If the work has several tasks (e.g. rehearsing, the gig, songwriting,
negotiating) then maybe its not the same as sitting in front of a screen the
same time.

~~~
mattlutze
I'd ask the professional tennis player or porn star if their jobs are/would be
stressful at 80 hrs per week... but in the spirit of it I can definitely
agree.

The multitude of tasks bit is true. Where my BS meter starts to twitch is when
it's a developer telling me that they've been hacking 12 hours a day for x
years and feel fit as a fiddle. In those instances, I've gotta imagine the
quality output vs. time quotient is lower per capita than the average 30-50
hour per week dev.

------
RyanZAG
The real issue is a guy who has been programming for 3 years is trying to
compare himself to people who have programmed for 30. Practice makes perfect -
if you've only been coding for 3 years, I can almost guarantee that you don't
understand a big chunk of the code you use. Once you've been coding for awhile
though, you really can get to a stage where you understand everything from the
bottom up. At that point, creating new frameworks, languages and algorithms
becomes an obvious task.

I've noticed the best programmers are the ones who have actually coded their
own compiler, frameworks, etc even if they were only toy implementations. The
understanding that comes from building a 3D engine or high performance message
bus is usually impossible to obtain in any other way.

~~~
verybadalloc
I have a feeling that feeling satisfied with one's knowledge will also come
with experience. I couldn't agree more on your second sentence though: not
only will you learn a lot more, you will be able to hone your problem solving
skills, which is what I wish to achieve now.

------
vezzy-fnord
A prolific Node.js developer is what constitutes a "real programmer" these
days? Honestly?

No offense to Holowaychuk, he certainly does appear to have contributed
enormously to the server-side JS ecosystem, but I do not care for JS, so I
have not heard of him. This is all assuming he's not a collective pseudonym.

I agree with the user goldenkey in this thread, and will quote him:

 _Most programming jobs are inconsequential bullshit of buzzwizardry and magic
frameworks, agile standup chicannery and the dread of dealing with the zesty
pimple pricked CS graduate who just loves AngularJS and thinks he can code his
way out of a paper bag when he 's never done reverse engineering. Never made a
web scraper. Never messed with shell code or assembly. Never wrote a game hack
using hooks/detours. Never written a line of C. Etc etc. Programming is full
of happy go lucky adult kids. Real programming is for getting shit done,
that's all it ever was and will ever be to a seriously learned seasoned
programmer. Whether it's building something, destroying something, modifying
something, binary or source, the seasoned programmer has the skills; but don't
expect him not to sigh when you bring up your giddiness surrounding menial
programming labor for worthless causes; or just plain repeats of the last
decade._

I find it disturbing that "real programmer" is being reduced to a trendy
magpie web developer code monkey who goes to hackathons. Lord.

Ultimately though, you just have very warped definitions of what this whole
thing constitutes. My advice is to relax, keep doing what you love doing and
let go of these false ideals.

------
ses
Its interesting to hear from someone who's more of a hobbyist programmer. You
don't meet so many, mainly I think because once you become half-decent at
programming you have access to a range of well paid jobs. Of course as you
say, those jobs come with certain conditions that aren't for everybody.

I've often thought of quitting _professional_ programming and it to become a
hobby instead. I think sometimes great things come from playing around and
working on projects you want to and enjoy working on as opposed to the
'drudgery' of implementing someone else's vision. In my experience although
the job has its perks, very few 'real' programmers actually care much about
the products they work on. Sometimes they do when they start but it doesn't
take long for the pressure of getting something done vs. getting something
done you have real pride in generally breaks you eventually.

At the end of the day I think if you can write some code, you are a
programmer, whether you are a hobbyist or not. Some of the best developers
hack on open source projects and live off very little and they're pretty happy
with their lifestyle. A lot of paid-up programmers are in fact more like
'impostors' than these guys.

~~~
JimmyM
I'm a hobbyist programmer, but I'm able to use my programming in my work -
even though it's not strictly related.

Programming skills can be a nice extra to a creative or administrative
skillset, especially in smaller & boutique companies.

~~~
jowiar
The job title gets thrown around as "data scientist" sort of evolved out of a
mix of "Professional Programmer/Amateur Statistician" and "Professional
Statistician/Amateur Programmer" types.

Anyway, for me, programming has always been something I do, not something I
am... I think this might lead to the exclusionary nature of our field a bit -
I know I've looked around and seeing people who identify as programmers, not
really doing the same, and wondering if I belong...

~~~
JimmyM
> programming has always been something I do, not something I am

I think this is important, it's the kind of thing that I read and think "Yes,
how obvious, of course!" but in practice I wouldn't think of it myself. A very
healthy way of seeing things.

------
nightski
It seems the OP is trying to compare himself with the internet. We may hear
about great achievements every day, but often those achievements while only
taking minutes to read about took years or even decades of work and labor and
were hardly achieved by one person alone.

A Real Programmer is simply one who keeps on learning and doing. It is
important to look back occasionally on what you have achieved, instead of what
you have not.

~~~
rdudek
Agreed. Reading it, looks like OP is reading too much into things yet fails to
understand that each person he listed, those folks have spent years
understanding and developing.

I fell into the same trap in the past. I started learning one thing, others
were quick to comment on that I should learn this , this, this, and that as
well! That caused me to spread out way too thin.

Programming can be overwhelming. Once you start digging into it, you'll then
realize how much you don't really know and how much of it is out there.

~~~
erroneousfunk
One of the most revealing lessons to me, as a young programmer, was when my
uncle (worked on the Java project when it was Oak, published his own network
architecture, distributed systems professor, etc. etc.) asked me which content
management system he should use for an important project, and I was able to
help him out with that. You'll always know something that the "Greats" don't.

------
agentultra
> If you are anything like me, you want to become as good as TJ.

Who?

If you pick up a guitar because you want to be better than Jimmy Page some day
you're going to burn out. You might not even realize that you don't even like
playing guitar until years later when it becomes apparent that you're not
achieving the success and fame you thought you would.

We're all subconsciously reinforced to believe that with hard work,
perseverance, and that hidden spark of special talent in each of us that we
can achieve our dreams. This fantasy is the perfect entry way into our brains
to implant desires and ambitions. You want to believe you're the hero of your
own story because the reality is certainly not preferable.

Don't get caught up in it. Create your own narrative. If programming is only
interesting because you want the attention showered on other people then
programming is not going to be interesting to you in five, ten years when your
fantasy fails to materialize.

Programming will always have it's greats just as any field, industry, or art
form. Learn from them. Don't try to be them. Many of them are about as
talented, smart, and clueless as you anyway.

Donald Knuth didn't spend half a life-time and counting writing TAoCP just to
speak at conferences. That kind of work takes dedication that only an
intrinsic love of the craft can produce.

------
Spearchucker
Time. Work. Those two things are the only things that can deliver on your
aspirations. By your definition I'm a real programmer, and yet after well over
20 years programming I'm still humbled by what I don't know.

There's so much I could write here about where to focus (focus on a real
problem, forget about agile or lean, focus on the joy of the moment, worry
less about whether you chose the right stack), but I've got work to do...

I will leave you with one thought - every time I finished a project badly I
learnt something profound that was scarily relevant in the next project, and
made that next project successful. It's that continuous motivational cycle
that's so addictive.

~~~
walshemj
There do seem to be a lot of rather "precious" induhviduals coming into the
industry these days who seem to easily get obsessed with trivial stuff whilst
missing the bigger picture.

~~~
collyw
coming to the industry? I am working with a bioinformatics team leader who
seems to be obsessed with his hipster stack Mongo, Node , Angular, hang on...
nope, changed to Tokyo Cabinet, Nope, its Elastic Search this week.

Its basically a relational problem we are trying to solve, but because it is
moderately big data (will be a few terabytes in the end), we NEED to use
NoSQL.

~~~
jff
Don't worry, it won't be Node for long either.

~~~
collyw
The filesystem is the database. Because we need to use NoSQL.

------
noelwelsh
> Since I started about 3 years ago

Let's get some perspective here. If you were an undergrad you'd just be about
to graduate. Nobody would expect you to be particularly good at programming at
this stage -- your career is literally just beginning!

------
dsaravel
Well attended a JS conf last year and I got to be at the same room as TJ
Holowaychuk. I had no idea who the guy was and ended up asking where he came
from, what he works with, etc. Shame on me haha.

------
harrystone
80 hour weeks? Hell no, if that's what it is then I don't want to be a real
programmer either. Maybe it's because I'm old and cynical, but you young guys
can knock yourself out. If you're working that hard you better be working for
yourself, otherwise you're just being taken advantage of.

------
RunForFun
I would be curious to see if there has been any study to see which profession
has the most skilled workers who think that they are "imposters". I have to
admit that I fall into this category and I have been seeing increasingly more
people also admitting to this in our industry. It's nice to know that others
feel this way, and it's nice to see many of the encouraging comments that
allude to the thought that imposter syndrome may be more a matter of
perspective, rather than one of performance.

------
erikb
If you are really a programmer for just 3 years, then being lean was hot long
before you even thought about starting to program. Currently hot means big
data.

To get on topic: Don't give up just yet! Yes you can not be awesome at
everything that you read here on HN. But if you, e.g., care about squeezing
out great pixels out of your CSS, you can certainly become awesome at that.
Maybe it's more awesome in your eyes to churn out a new iPhone game every
week, then you certainly can be good at that. You just can't be good at most
things you do. Either you are mediocre at everything, or quite good at one
thing and quite bad on the rest. If you think a programmer is so much better
at everything, learn to know these people better. You'll see that they might
be awesome Node developers, but they might not know even part of what you know
about bash and vim. Or English might be their mothertounge, while it is
actually your second fluent language, etc. Most of the awesomeness you see in
people on stage is biased observation.

And certainly you don't get to be awesome if you slave away at 80+h/week.
Better stay in the 30-50h/week range and spend the rest of the time to
prioritize tasks, stay healthy, networking, etc. With the first approach you
will be nothing more than a machine after just 2-3 weeks. With the second
approach you can learn and get better every week of the year.

------
julesbond007
By saying you don't want to be a real programmer, I'm hoping you don't mean a
good/great programmer.

Isn't it interesting how we're telling everyone to learn how to code, but then
people feel like impostors? Well you can't learn good programming and cs
standards in a few days or weeks, even in a few years. So no wonder a lot of
people feel like impostors.

Having said that, it takes quite some time to really develop as a software
engineer into a real software engineer. You need to know architecture, design,
best decisions, security, caching and more. That's what I call a real
programmer. Can you design a search service? If you can't, can you learn
enough to design it? How would you even start? Everyone can code, but not
everyone can design a system that is scalable, fast, robust and secure.

In addition, to be a real programmer, I think you need to start thinking about
the future...how will people want to use a browser in the future? If I'm a
developer, how can I make XYZ easier and faster to build for other developers?
How can I make it so that the code is reusable? Will a framework make it easy?
How should that framework be built? How are people going to use it? Etc...

Some of it is deliberate thinking and some of it is work experience.

So a lot of this kind of thinking comes from real problems software engineers
faced while working. Discussions, debates, etc... They found a solution and it
was elegant enough for others to use.

That's how I think someone goes from an impostor to a real programmer.

------
kayoone
Newsflash, your hero TJ Holowaychuk probably does not even exist. Seriously
imo this guy tries to compare himself to everybody else on the internet, which
is dangerous.

~~~
jbeja
Huh?

~~~
kayoone
[http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ-
Holowaychuk-...](http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ-Holowaychuk-
so-insanely-productive)

------
likeclockwork
I would usually never respond to so,ething like this. But.. "programming"
isn't just one thing. "Real programming" is pretty specific to your own values
as a programmer.

Look around, find out what interests you.. probably look away from the web,
because the web is over-caffeinated with a lot of churn that resembles real
progress. (Not that there isn't a lot of cool stuff on the web, just that it's
a confusing ecosystem to measure yourself against.)

It's an art and a science.. it's not about 80 hour weeks and writing 10,000
libraries a year. Maybe there's something you have to contribute that you only
work on for 5-10 hours a week and it takes you 2-3 years to complete it and it
still blows our socks off.

------
emersonrsantos
Mother I'm afraid

I do not want to malloc

Mother I'm afraid

I do not want to learn ARM

Mother, I am afraid

Waking up as Tron Guy

Waking up as Tron Guy

Waking up as Tron Guy

------
markartur
It's this exact type of blog posts, that are constantly on HN front page, that
make me feel like an impostor.

>Oh look i do hackathons, OSS contributions at all times of the day, try new
stuff, etc etc, and feel like an impostor.

Shit man, how does that leave me?

------
websitescenes
Want to b a "real" programmer? Don't be so attached to your code. It doesn't
represent you. It does represent where you are and it does indicate where your
going but it doesn't define you. If you identify as a programmer, then you
are. Physics tells us that, to a large extent, we create Our own realities and
our perceptions of such. Put your code out there and don't give a shit what
people think. Is there a better, newer way? Yep. Always will be. So keep
learning and don't get comfortable with your current skill set.

------
PascalPrecht
TJ isn't real. You can't be like him.

------
loladesoto
great essay. ime, the best programmers are equal part artist and hacker. but,
the synthesis would be impossible to describe or even recognize by most non-
programmers. and: conversations about their abandoned or unrealized projects
are sometimes more interesting than their completed ones.

~~~
dlange
they are also engineers and computer scientists. Even in these fields
creativity allows one to look at problems from different angles, and through
experience, recognize or innovate solutions. This may not always be a
vocational skill picked up by anyone over a few years

------
marcosscriven
I enjoyed reading this. I must have 10 to 15 years on Anas, but I can confirm
the feeling doesn't dwindle all that much. The important thing is that you
make sure you're enjoying it.

Incidentally, think the presentation on that page is excellent. And I like the
domain name too.

------
benreesman
something about this aspirational mumbo-jumbo rubs me the wrong way. there are
plenty of objective standards to judge one's self against, most of the best
ones are available to the general public in one form or another these days.

------
rumcajz
For reference about real programmers: Real Programmers Don't Use PASCAL
[http://www.ee.ryerson.ca/~elf/hack/realmen.html](http://www.ee.ryerson.ca/~elf/hack/realmen.html)

------
dsugarman
I wouldn't fall into the trap of thinking more hours = more production. I find
I am most productive and efficient when I don't work 80 hour weeks, that's
when the code I write creates problems.

------
skimmas
OP: just would like to point out that you might get some weird looks when
mentioning your domain name to the portuguese speaking crowd. Visually it
looks a lot like "very badalhoco".

~~~
verybadalloc
Google translate did not return any result. I assume it is some kind of swear
word?

~~~
lfglopes
I actually laughed when I realized. :)

"Badalhoco" translates to naughty.

------
k__
I'm switching between superior and imposter all the time.

The people at the small company I worked for made me feel like I'm a
JavaScript guru.

Last month I did some small stuff for Mozilla and felt like an idiot.

------
imsofuture
This 'Real Programmer' thing is a dumb strawman.

------
it_learnses
just wanted to point out that according to the top comment on the link to
quora you posted ([http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ-
Holowaychuk-...](http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ-Holowaychuk-
so-insanely-productive)), it seems that TJ is a hivemind. Are you sure you
want to compare yourself to that?

------
ibrad
A real Programmer is a machine that does all the work for you. I do understand
that you want to be that. I don't either.

------
BasDirks
OP is indeed not a real programmer. I guess that ends the conversation.

------
garrettdreyfus
I think the only solution is to code if it makes you happy.

------
mrpoptart
if(happy){ continue; } else { try{ somethingElse(); } catch (e) { fastFood()
|| parentsCouch(); } }

------
GFK_of_xmaspast
I don't want to be a Real Anything.

------
ratsimihah
You failed when you gave up.

