

Ask HN: How does a Jr. to Mid-Level programmer find work? - hdx

I'm a senior Computer Engineering student and I have 2 years of experience working as a Software Developer, mostly J2EE. I've been looking for work for a couple of months and it seems to me that most of the work out there is for Sr. Level/Ninja/Guru people and I'm finding it hard to find a new place for me to grow with. Has anybody here been in a similar situation? How did you do it?
======
aaronbrethorst
Spend some of your time building something real. Nothing demonstrates that you
can perform like envisioning, building, and launching a product that real
people are willing to pay real money to acquire.

It doesn't have to be particularly big or complicated, either. Just proving
that you can accomplish the aforementioned tasks will go a long way to getting
you through the door.

~~~
jrockway
Nobody outside of HN cares if your software makes money. They just want some
proof that you can write code. Being able to show working code at an interview
puts you in the top percentage of candidates; most have clearly worked on
interesting projects, but can't show you anything they have done. This makes
hiring them a big gamble.

Another thing that helps is knowing something other than Java and Oracle, or
whatever other combination of brand-name technologies is popular this week. A
team I work closely with is trying to hire a Java developer. They got 50
resumes, most of them "meh". Nobody was really exciting. This is probably
because after reading 48 resumes, you are not going to be in a good mood, so
even if someone is really good, you are not going to notice.

Conversely, they also needed another Perl developer. They got one resume, and
the guy was awesome. It was easier to spend time on him since he was the only
applicant, and being the only obviously qualified person to apply is good for
your odds.

The other team is thinking of changing the language requirement from Java to
Scala, since people that know to put Scala on their resume are more likely to
have a clue, and it will reduce the applicant pool enough to spend time
talking to everyone on the phone. Plus, who wants to do a Java project when
you can do a Scala project instead? ;)

Anyway -- working code + unusual skills == you getting the job.

~~~
aaronbrethorst
How is "your software makes money" not an "unusual skill"?

Plus, I care. If the business I'm applying to for a job doesn't care, it'll
probably reduce my interest in them.

Let me give you a strawman scenario: I walk into an interview at a startup
that just landed its Series A round. I'm interviewing for a position as the
chief products guy or the CTO or something. The interviewer across the table
from me says "You spent a paragraph of your resume talking about the business
you built from scratch into a $200k/year revenue source. That's not very
interesting; let's talk about this cool IOCCC entry of yours from last year,
instead."

I'm going to assume that the interviewer (likely the founder or a co-founder)
is probably an idiot for dismissing a significant accomplishment of mine and
focusing instead on something that is—relatively speaking—quite trivial, and
that his priorities are totally off. My bozo bit's been flipped, and there's
not a chance I'm going to want to work with this guy. He's going to spend the
next 18 months burning KPCB's million-plus stake on architecture astronaut'ish
goals that have nothing to do with solving real problems and making real
money. I'm going to shake his hand, say 'no thanks,' walk out the door, and go
have a pint. (bear in mind, this is a strawman).

Please note that I'm not a Perl guy, so I can't speak for you or Ingy dot Net
or Larry Wall. I'm a 'business guy' who happens to have a Computer Science
degree and writes his own code.

~~~
jrockway
Sure, but startups are an unusual case. Very few programming jobs are for
startups. Most are for established companies that already have the business
side down; where you are going to be too far away from "the business" for your
experience to have any use. They need programmers that can add features in
such a way as to avoid needing 50 new QA testers and overnight support staff.
"Architechture astronautics" are fine; the company has plenty of time and
money to invest into better solutions than whatever would put out the fire
right now.

I've worked at small and large companies, and this has always been the case.
The business was already well-established and does not really need help from
the programming team. The programmers just need to craft extensible and clean
solutions that solve the current problems and the anticipated future problems.

Startup experience wouldn't count against you, but neither would being able to
run a marathon. The reality is that neither skill will be particularly useful.
Being able to prove that you've written software, however, _is_ a useful
skill.

(People on HN seem to think that "good software" == "software that makes
money", but that's not necessarily true. Good software products made money
because of good marketing, good customer support, and general good business
skills. The actual code quality varies. Ever use Windows? Yeah.)

Also remember that the OP is applying for a "junior developer" position, and I
am answering with respect to that. CTO is very different from "junior
developer".

~~~
aaronbrethorst
Posting a question to Ask HN suggests a predisposition towards startups.

I've worked at small and large companies as well, and I've always been well-
rewarded in job interviews and in the positions themselves for exactly what
I'm describing. It's good to hear that two very different people can succeed
in this business, just don't try to call BS on what I've found to actually
work. I'll agree to refrain from the same.

~~~
jrockway
_Posting a question to Ask HN suggests a predisposition towards startups._

Why? I am a pretty well-known contributer to HN, and I have approximately 0
interest in startups. Since the word "startup" was never mentioned by the OP,
I have no reason to assume he is interested.

------
mbrubeck
The big companies like Google and Amazon are hire lots of entry-level people,
since they have the time and resources to train them. It's a decent way to get
experience if you can get it. (My first "real" software engineering job was at
Amazon.) The interviews are tough and there's a strong chance of getting
rejected even if you're good; follow the other advice on this page and also
study up on both CS theory (algorithms, complexity, networking,
OS/architecture) and programming practice.

------
bluesmoon
Work on an opensource project that fits into your area of interest. Build up
your expertise in all areas of development, especially your ability to work
with a distributed team of developers. Learn debugging skills (they don't
teach this in school).

Support people (users and other developers) on mailing lists and forums
related to the project you're working on as well as the areas of technology
that you have some experience with (note, you don't have to be an expert, just
interested). Work on your page rank, so that when someone searches for you on
the web, they see several pages worth of problems that you helped someone fix.
For this same reason (among others), never be rude or overly sarcastic on a
forum. Be helpful, and if you can't be helpful, be attentive.

In the course of doing all this, you'll sometimes come across people who work
at companies looking for young hotshots (hint, that's you) or reliable
developers (hint, that's also you) or an experienced programmer with an eye on
customer satisfaction (yep, you again). Don't ask them for a job, but hint to
them that given the right conditions, you may be open to a more permanent
technical exchange.

Now if you're active enough, you can get this all done in a couple of months.
When I graduated from college, my resume already had two pages of projects
that I'd played a primary role in. This helped.

------
jballanc
The other advice about doing something open source or building something you
can sell is great and all, but it's March and you're a senior which means that
you're probably looking to land something in the next 3-6 months, which isn't
a lot of time.

In that case, your answer is: _network_!

I've seen so many qualified candidates get passed over for someone equally or
even marginally less qualified because they had an inside line on the
position. It's probably too late to do much networking at school (i.e. joining
clubs, etc.), but the thick part of conference season is just getting started.
Get a student rate to something while you still can (JavaOne seems to have
been free for students in the past...not sure what Oracle plans for this year,
though). I'm guessing that your 2 years experience has come from internships,
so that would be a good place to start too. They might not have been your
ideal place to work, but they'll give you a paycheck while you plan your next
move.

If you are going to work on an open source project, pick one that's sponsored
by a big name company (i.e. not an academic project or start-up). No matter
what the project leader asks you to help with, _do it_! If he says they need
work on documentation or fleshing-out the test suite, don't complain. I know
it's not sexy work, but when the project leader gets a req. to hire someone,
he'll know that you're someone that can be counted on to get the job done.

Finally, learn something new. I recently saw a very qualified developer get
passed over for a job not because he didn't have the skills listed in the job
offer, but because he didn't show an ability to work outside of his set of
core competencies. Since you're new, nobody is going to hire you based on
expertise. Your secret weapon will be the fact that you can learn whatever new
skill or technology it is that the hiring manager needs next. In other words,
you probably want to branch out from Java (it's a skill area flush with
"experts" and hiring managers who are only looking for people who can spit out
code quickly).

------
bmalicoat
I was just in a similar boat (got an offer not too long ago!) and I think
there are 2 important components:

1) Show that you are passionate and driven, which it seems you already have
with your experience. Other ways could be get an iPhone or Android app out on
their respective marketplaces so you can provide hard numbers (# of downloads,
$ made, etc.). Contributing to OSS is always a good way to spend your time as
well, but only if you really care about the project.

2) Make connections. This can be rough but a few things I've found can make it
a lot easier. I've gotten a few really good leads through Twitter actually.
Follow enough people from a company you'd like to work for and eventually one
of them will mention something about openings. Another good avenue is going to
technical talks (most universities hold a few of these a month, maybe more
frequently). Go up and talk intelligently to the speaker and if they are
accepting resumes definitely provide your best. The main thing is have someone
inside the company turn in your resume for you. This informal referral or
recommendation is huge. I read a statistic that only 1 in 20 online
applications result in a face to face interview, those aren't great odds and
being denied a lot is sure to affect your morale. Getting someone to turn in
your resume is a sure-fire way to hear something back from the company.

------
jrockway
Learn on your own and hang out in the social circles of other programmers.

Help answer people's questions on SO or irc. Learn the other JVM langauges.
Learn about tools that J2EE people like, such as Maven and Hudson. Learn
algorithms. Present at conferences.

Do this, and people will find you. Last time we needed to hire someone, I
visited my favorite IRC channel, said "anyone want a job?", got a privmsg, and
had the person interviewed in person and given an offer in just a few days. (A
few because the weekend was in the middle.)

What you want is a friend who will talk you up to the people making the hiring
decisions. What you don't want is to be another boring resume in a 50-resume-
deep stack.

------
lief79
First two jobs were networking, remainder were through recruiters or online
ads (note, this is quite unusual). For reference sake, my first job was at a
company I had interned with, and my second job was due to me ending up at my
soon to be bosses house for a swing dance lesson the week after my resume had
crossed his desk. When you are just starting, it's all about catching the
right peoples attention from the hundreds to thousands of resumes that they
see.

Suggestions:

Figure out where you want to look, and what the hot technologies are. In the
Philly area, if you can demonstrate knowledge of Spring and Hibernate, you'll
get far more offers then not anyone not having it.

Network: Join the local JUG, IEEE, etc. The more people you know, the better.

Volunteer: Something to add to your resume, and you'll get to know more
people.

Read: Grab "What color is your parachute?" out of your local library. It's a
great starting point for any job hunt.

Most importantly, keep at it. Actively job hunt and program. Sitting around
playing games and randomly commenting on the internet are far less likely to
connect you with the people you need. Do something that you can add to your
resume.

------
dschobel
Anecdotally, the company for which I work (big financial research company,
fortune 500) really likes people with 2-4 years of professional experience and
has been having a hard time finding them.

Talking to our HR people, the majority of programming candidates they see are
either fresh out of school with zero professional experience, or they're
consulting refugees (Avanade, IBM, etc) with 10 years of experience who are
just going to bolt as soon as the consulting industry recovers.

Honestly, two years of real world experience and willingness to take a junior
position makes you kind of a commodity.

Are you not getting to the interview stage? If that's the case, I would echo
what the others say, check craigslist in bigger metro areas.

If you're getting to the interview but not getting offers, well, that's
another Ask HN in and of itself.

------
ig1
Be willing to relocate. This is the single biggest factor. If you're not in a
tech-hub you'll find it a lot harder to find employment as a developer at any
level.

Where abouts are you based at the moment ?

~~~
benwalther
Tricky. I'm in a similar position (3.5 years of info sec background) and I'm
willing to work anywhere in the entire world. The problem becomes
interviewing; nobody wants to fly me out to Amsterdam.

------
djb_hackernews
I've had luck applying to positions that were looking for more senior devs but
was something I was interested in. My current job came that way. Looking for
someone with 7 years, I had 3, but I also had built projects in the same space
and was actually a really good fit. Fresh out of school I got an interview the
same way for a small company looking for 10+ years experience.

Just say "hey, this is me, this is what I've worked on that you'd be
interested in, I'd like to interview. If not, hold on to my resume"

------
keefe
There's all sorts of levels of skill in the market. You need to demonstrate
your skills first - either an open source project or host an SVN with some
example code. There is no harm in writing a place looking for a senior dev,
they often have other openings. I hope you're already checking dice.com ....

------
JMyste
You should consider contacting "head hunters" / employment agencies. They will
match your skill set with client's budgets. If you have two years experience,
you should be able to find something that way, even though I agree that senior
level developers are the going thing right now.

------
hdx
Thanks everybody for the insights, I really appreciate it. I have this idea
for an app I'm gonna build it and see what happens :P. In the mean time I'll
change my resume a bit so that it emphasizes the stuff you guys pointed out.

------
anonjon
Honestly, it helps to know someone who is looking to hire.

Persistence/experience/credentials are important, but without a personal
connection the job market (in any profession) is a crap-shoot.

My girlfriend had a similar situation (she's not an engineer), she finally
managed to get a job by doing an internship, all the while applying to a ton
of jobs. (Of course all of them were looking for 5+ years experience and a
masters).

She was rejected a lot and it was demoralizing for her.

But what paid off were the personal connections that she made during the
internship and interviews (she made a good name for herself), eventually one
of her acquaintances gave a colleague her resume (who then offered a job).

I'm not really a people person, so I know that this can be a difficult road
for us introverted folk, but I think the best thing to think about is 'where
can I meet people who would be looking to hire someone like me'.

Then go to those places, meet those people, and get them on your 'team'.
Eventually you are a proven commodity and are able to get something.

------
zackattack
The answer is persistence. Check Craigslist/eng/ in all major metro areas -
chicago, nyc, sfbay, austin, lax, wdc. Email promising job ads daily. Post
your resume on craigslist, especially in SFbay, weekly, and alternate with
other metro areas. I would be shocked if you did not get at least a few
promising leads after a few weeks of hitting up the craigslist rotation.

in the meantime, code up something cool, and post it on HN. Then in your
signature or whatever, mention that you're looking for work.

~~~
Cyranix
I was in a similar situation just two years ago -- newly minted college
graduate, didn't have a CS or related degree, trying to find work based on a
couple of programming classes I took and a meager handful of outside projects.
I used Monster, recruiting firms, and Craigslist to get work; surprisingly,
the two jobs I've landed in Austin were both the result of Craigslist posts,
and I couldn't be happier with my current position.

Just keep at looking for open doors, and work on independent projects when
you're not actively engaged in job hunting. In my personal experience, the
projects don't need to be exceptionally unique and amazing -- find something
that's a manageable size, and prove that you have the chops to see something
through to completion with solid code.

