

Ask HN: How to look for a programming opportunity - owinebarger

A recent thread http://news.ycombinator.com/item?id=1176962 about a Giles Bowkett blog post went long on the solicitous nature of the article but ignored the most interesting claims:<p><pre><code>  Most programmers I know seem to respond to job searches
  by learning new programming languages. The logic there is
  pretty weak. "I can't get a job with a language I know, so
  why don't I see instead if I can get a job with a language
  I don't know." Learning new languages is a good thing, but
  there's a time and a place for everything. It's never a
  matter of your skills being stale; there are still COBOL
  jobs out there. If you're good at programming, and you
  can't get a job, the skill to improve is not your
  programming skill but your job-getting skill. If you've got
  a task that requires two skills, and you have one of those
  skills down solid, but you suck at the other skill, the
  thing to do is not spend even more time perfecting the
  skill you already have down solid.
</code></pre>
As someone thinking about working in programming after not doing much real programming for a few years, I am interested in whether he's right or not.  I am actually planning to dive into learning a new language or relearning C++ with its current set of metaprogramming features and extensive libraries.
======
patio11
I think this is largely good advice. You could expand it to thinks much more
concrete than "improve your job-getting skill": make yourself a portfolio
website if you don't already have one. Make decisionmaker-specific pages on
your portfolio website targeting the exact interests of the people who you
want to hire you.

(Hypothetically assuming I wanted to apply to Google, Big Japanese Megacorp,
and Cool Valley Startup, I'd be pitching myself in a very different way in the
cover letters and resumes... why show them all the same portfolio? I mean,
theoretically I'm supposed to be pretty good at this whole "Build a web page
to sell stuff" thing -- if I can't build a web page to sell _me_ , why should
they hire me?)

If you don't already have a blog and social proof of value which you can quote
to people, start building them. For example: you put a recommendation on your
resume in the hope someone calls them, they agree to talk, and then they
praise you, right? That's an awful lot of opportunities for the recommendation
to not pan out well. Instead, when you ask for a recommendation, ask for a
testimonial, too, which you will prominently quote in your Hire Me
salesletter. And write the testimonial for them. "Hey boss, can I quote you on
'$NAME_HERE is one of the best developers I've ever had the pleasure of
working with. He has done things with $PROJECT that we never thought were
possible. I'd hire him in a second.'?" (This presumes you have, actually, made
a good impression on your boss. If not, then just write down their phone
number and pray that no one calls it, because that is apparently what everyone
else does.)

Networking is, obviously, another opportunity for improvement. Rather than
spending time waiting for someone to call you back, it is (well past) time to
start reacquainting yourself with friends and business associates (and
mentioning, hey, you're on the market now) and making new friends/business
associates.

~~~
btilly
The one point I disagree with is giving people the suggested testimonial. This
may vary by culture and person, but there is no better way to guarantee my
non-cooperation than telling me what you want me to put my reputation on the
line as having said. No matter how good an impression I had before, I'd have a
bad one after that interaction.

Otherwise I agree with your advice.

~~~
nagrom
I think this is fairly common. I've had two people agree to give me a
recommendation on the basis that I write it for them, allow them to see it and
change anything that they don't like, and then sign it. As I see it, if you're
willing to help me out then I wouldn't want to take up your time
unnecessarily. If you want to write the whole thing yourself, then great! But
if you're willing to do it but are time-constrained, I'll help you.

~~~
nostrademons
Different people have wildly different expectations. When my mom wrote a book,
she was dumbfounded that she was supposed to write all the back-flap
testimonials herself, and then the person they were attributed to just had to
sign off on them and put their name on it. All but one of the people said, "Ah
great, I don't have to do any work, this is awesome." One person said "WTF is
this?" and wrote her own testimonial.

In my limited sample size, I tend to trust & respect the people who say "WTF?
It's my name, I'll write it myself" more. Unfortunately, they seem to be in
the minority.

------
kixxauth
Just write code. Work on open source projects, blog, twitter, and keep a
GitHub account with interesting projects in it.

I know that many jobs may hire by running "grep" on hundreds of resumes, but I
don't think those jobs are the good ones. I think the good jobs want to hire
your brain, not for any particular language, but for the overall value you can
add to the company.

Working on open source projects and posting your own projects on sites like
GitHub demonstrate your ability to understand architecture and write good code
in any language.

This is what I'm looking for anyway, and it seems to be what Google is trying
to get at with all the silly questions they ask during interviews. How good is
your brain?

[http://www.fireworksproject.com/pages/extraordinary_people.h...](http://www.fireworksproject.com/pages/extraordinary_people.html)

~~~
owinebarger
I have to strongly agree with your second paragraph, but finding the good
opportunities is the trick.

------
nostrademons
I'd disagree with this. Most of the candidates I've seen turned down weren't
rejected because they lack some nebulous job-getting skill. They were rejected
because they don't have the CS and programming skills to do the job.

The part I would agree with is that learning a new language != getting better
at programming. When you learn a new language, you're increasing your breadth
of knowledge - but most employers don't hire for breadth, they hire for depth.
They want you to be good at the job they hire you for. And when you pick up a
new language, you'll perform _worse_ than on your existing languages, until
you've had the practice to bring your skills up to where they were before.

Instead, spend time learning your language _better_. Most languages (even
Python) provide different ways to accomplish the same task; try them all out,
find out which is best, and most importantly, find out _which is best for
which tasks_. Learn some libraries in depth. Write some actual code so you
have something tangible on your resume - starting a project from scratching
will teach you a lot that maintenance work at your employer won't, and even
contributing some patches for an open-source project will teach you something
new.

A big problem with many candidates is that their knowledge is very shallow:
they'll claim to be an "expert JavaScript programmer", where "expert" means
they can only use JQuery snippets they found on the web. And they don't even
realize that their knowledge is shallow; they're completely oblivious to the
depth of the subject until they meet someone who really does have deep
knowledge (and even then, only rarely).

~~~
owinebarger
I agree with your assessment of learning a new language != getting better at
programming, as well as how you become an expert in a particular field.

After reviewing these comments, it seems the interesting aspect of Giles
Bowkett's paragraph is the emphasis on networking your way to a person with a
need. It's easy to get blinded by the easy access to openings posted on job
boards to the existence of non-advertised positions and enterprises you may
not be familiar with. Rather than "job-getting" skill I'd call it
"opportunity-finding" skills. Getting past HR can be a bear.

------
lpolovets
I think the claimed point is valid. If you are a good programmer, you can
improve your chances of finding a job much more by polishing up your resume,
writing awesome cover letters, networking, etc. than you can by learning new
programming languages.

It's all about bang for the buck. If you spend 100 hours learning, your
programming skills and hence your ability to find a job might improve by a few
percent; if you spend 100 hours on marketing yourself better, your programming
skills stay the same but your chances of finding a job will improve greatly.
It's like a lot of software... once the internals are good enough, it's much
better to make the UI good than to keep the UI crappy while making the back
end a little better.

Also, anecdotally, every good company that I've interviewed with has said that
if I am the right person for the job, then they will give me the benefit of
the doubt that I can pick up whatever technologies are necessary.

------
btilly
In most cases I agree. If you can't get a job with your primary language,
you'll have a harder time getting one in a language you just learned.

But there are exceptions. For instance if you don't have a programming
background, learning the basics of something employable is a good idea. Also
some things do become obsolete. For instance if your background is VB 5, you
should update your skills to be more employable. (Actually you should have
done that a few years back...)

Another exception is when a particular area is hot. If not many know a
suddenly popular language or library, teaching yourself that tool can give you
an edge on those jobs. Of course most jobs are maintaining something that
already exists, and so don't need to cool new stuff. And more people try that
strategy than there are jobs, so it may be a losing proposition to compete
there. But, for instance, a lot of people learned Java back in the mid-90s to
jump on a bandwagon, and it worked out for many of them.

Also it is fine to learn something for the job prospects when you have an
obvious hole in your resume. For instance if you've been doing statistics
professionally and you haven't learned R, you probably should. If you're a
Perl web programmer and haven't learned Catalyst, it is at least worth playing
with for a couple of weekends. A Java programmer is on solid ground in
deciding to learn Spring better.

A special case of the obvious hole is when you need to learn something to get
a certification. The whole certification treadmill is something I hate. But
there is no question that it can help you, and acquiring relevant
certifications is not a useless endeavor.

And a final exception is if there is a specific requirement for a job you want
that you have a realistic shot at. For example I learned three languages
before my Google interview. I knew that the interview would be in some
combination of C++, Java and Python, and I knew none of them. So I learned the
basics of all three, and made my lack of experience clear in the interviews. I
was not hired for my knowledge of those languages. But without putting out
that effort I couldn't have passed the interview. However this kind of
situation is the rarest of them all. (This has only happened to me once.)

~~~
nostrademons
I boned up on C++ before my Google interview because I didn't know it and
heard it would be included. It turned out that my interviewers exclusively
asked me questions in Java and JavaScript, both of which I had fairly
extensive experience in.

Then I ended up working in C++ and Flash once I was hired. Neither of which I
had any prior experience with (well, I had a little Flash, mostly as a
compiler target). Go figure.

------
gnosis
There are still COBOL jobs. But are they the kind you're interested in?

If you're interested in, say, web programming, you're probably going to have a
hard time finding a job doing web programming in COBOL.. no matter how great
your interviewing/job-hunting skills are.

The same goes for many other preferences regarding work, from location to the
kind of company you'll be working at or people you'll be working with. If most
jobs you're interested in largely have openings for people who know language
X, you'll probably be better off knowing that language.

On the other hand, it's certainly a good idea to have well-rounded skills. So
if you're particularly weak at people skills, or job-hunting skills, it's a
good idea to work on improving those, as often being a good programmer is not
enough to land the job you want.

~~~
ahlatimer
I can easily find you a job doing web programming in COBOL. The first tech
company I worked for decided to build their new task system in COBOL. I can't
really remember the framework they were using (RMCOBOL, I think), but they had
somehow managed to find a way to get Apache installed on a HP 3000 that
communicated with a COBOL web app.

Keep in mind, I'm 20, and I only really started working when I was 18. This
all happened two years ago, and I seriously doubt they've stopped using COBOL
in that time.

~~~
GFischer
The best-paying jobs advertised at the state telecom are for Senior COBOL
programmers. That definitely makes me wish I knew it a bit better :P (I did
have COBOL classes at college, and I'm 29)

~~~
ahlatimer
It's an easy enough language to master. There aren't a whole lot of
constructs. The difficulty is wrapping your head around the massive lines of
code that any COBOL program of reasonable complexity is bound to have. Not to
mention every variable being defined by what it looks like, no notion of
scope, no syntactic sugar like for or while loops, and no notion of methods.
It's all supposed to read like English, but while English can pack a lot of
meaning in a few statements, COBOL can't do anything in a few statements.

------
starkfist
Giles is wrong. Learning a new language/toolkit is actually a "job getting
skill." I got my last 3 jobs by learning Javascript, Ruby, and Objective-C.
They would not have hired me if I hadn't taught myself how to do stuff in
those languages. If it's a startup job you are expected to hit the ground
running. Figure out what job you want and then figure out what you need to
know to get it.

That said, hardcore C++ skills are in demand everywhere from audio software to
robots to games to wall street to scientific research. Even "web" companies
need C++, Google, OKCupid, Amazon, etc. If you're already good at it, it's a
great skill to polish up.

------
jarsj
In my college first year, we programmed in two languages Fortran and scheme.
It really made me a better programmer. Scheme rocks.

------
eliot_sykes
MySpace hired this person after they built <http://myspacehire.me/>

I'm sure they've been other examples of people being hired (or not) after
turning a cover letter into a dedicated web site for the employer they want -
anyone remember any others?

