Ask HN: How do you *really* get a good Software Engineering job?

18 points by seeminglylost ↗ HN
It seems like anything I do is never good enough. I can know how to code in multiple languages and provide decent coding examples. But, there is always one little thing that I didn't have in order to get the job. It feels like job postings are not very honest at what they are looking for either. An example would be of a 'Frontend Engineer' job posting that I got an email response back from the hiring manager for, and he asked for a link to a fully functioning and non-trivial web app that I had built before. Wtf? I have not built that as of now (even though I am confident I could). And it would not have been in the companies preferred stack anyways. I just want to know one thing: WTF do hiring managers actually want? And why do they almost never seem know themselves? Sorry for the rant but it just seems like this industry is a load of bullshit.

22 comments

[ 4.7 ms ] story [ 64.1 ms ] thread
A lot of job listings are actually for internal candidates, and although the employer is required by law to perform interviews, the external candidate will never get the job over the internal candidate (since the external candidate is a higher risk). What hiring managers actually want is a candidate that has been personally vouched for by developers they trust, and ideally an internship or contract period at a lower pay rate so that they can pull out if the candidate isn't as good as they say they are.

So, make friends with people who have jobs in the industry and convince them that you have the necessary skills.

This is honestly not much better than nepotism. What happened to merit?
(comment deleted)
What happened to merit is that "make friends in the industry and convince them you have the skills" is a more reliable means of finding merit than a typical interview process. It also has tremendous blind spots and will exclude many legitimate candidates in an unequal way and that all sucks, but the goal is "find someone reliably competent you can work with." It's really hard to determine either of those without long term interaction.
Only one of my jobs did I get in the door because of a connection. My other jobs were just all responding to job ads. I think the key is for you to filter job ads extensively yourself and only apply to jobs that: (1) you're passionate about and (2) are completely qualified for. Then write a great cover letter and a resume just for that job.
get a open source contrib on your resume - something they will recognize by name, and hopefully quote something cool - "sped up rendering by 99%"

get a good past job that they will recognize the employer name

and you will have an easy time.

+1 for this. A caution: don't just "join" a project: you have to do something in the project and be able to point at the actual code contribution you made.
Most important is to keep looking, and not let the search get you down (which is hard, for sure). Remember that looking for work is a full-time job.

My current position I found through a connection, and that doubtless helped, but I've gotten jobs before through responding to university postings and craigslist ads. I've also been turned down at plenty of places that I've found both ways - for any given position, most of the time you won't get it (of course, since there are going to be multiple candidates).

>> Remember that looking for work is a full-time job.

+1

Being employed is side effect of that.

"there is always one little thing that I didn't have in order to get the job"

I hear you. Many times, it is not even you. Like you said, the hiring manager is probably too hung up on one specific item that they really think will hit the home run. Now, that depends on the situation. If they need an expert in a very specific niche for a 1 month contract, they probably care about that one thing. If they are looking to hire someone fulltime who can grow in the company, being hung up on that one thing is plain stupid.

"WTF do hiring managers actually want? "

I have been interviewed by tons of managers being a consultant. I would say majority of them are not always sure what exactly they want. It can change. For example, I interviewed once for a role which required a very specific vendor system experience in finance. Apparently, that system was so niche and new that they could not find anyone unless they poached from the vendor directly. So the manager decided to look at other "relevant" candidates. The problem: He had no clue what to look for. True story.

So don't get too upset about this. I say move on and keep looking. There are many great hiring mangers out there who not only understand what they want/need, they also know how to interview and find the right person without being too hung up on one thing or other.

I couldn't find anything so I gave technical tutorials a shot. I found some companies to contract me, but the time involved basically makes the work a less-than-minimum wage 'job'. I know front end development to a degree, but I'm also below the poverty line. I can't answer your question but I can at least validate your perspective first-hand.
One way to get a good software engineer job is to zero-in on firms that look like they are doing interesting work. Don't send them a resume. Instead, approach individuals in a friendly peer-level manner. Start a conversation-- as a fellow coder, I was curious about the work you do.
Hiring managers are looking for proof that you are as good as you say you are. Inexperienced / young programmers often vastly overestimate their own abilities and experienced managers know this. Having hired a couple of gung-ho self proclaimed supermen only to see them not deliver, the hiring manager now wants to see proof.

If you are new in the industry, you don't have people to vouch for you. That's why you get requests to see your actual work, rather than own cherry-picked code examples.

"I could do it easily if I just got the chance" won't fly if you are in a location where there are more developers than jobs. You'll have to make yourself stand out. The easiest way to do that is to build stuff. Doesn't have to be groundbreaking stuff, but it should work and be within your "specialty" language(s).

Then next time someone asks you for a non-trivial example, you can just send them a couple of your projects, rather than a couple of clever code snippets.

Don't assume it's your fault.

Hiring, often times has biases. There could be any number of reasons: either technical or personal. Hiring decisions are often subjective, despite the fact that they try to be somewhat objective. And it's especially hard for people with less than 5 years of experience. Keep trying, you'll get it eventually.

"know how to code in multiple languages and provide decent coding examples" "a fully functioning and non-trivial web app"

If you haven't written a full app in a language, can you really claim proficiency in it?

Position yourself not as a programmer (or glamorous version of that: software engineer), but as a person who can boost residual value of a business. People like these are assets.

"Programmers", "developers" and "software engineers" are essentially liabilities. These are the first to let go when things gets uncertain.

This sounds great but there is one caveat. The person that does the hiring probably doesn't care about the business, they usually just care about their job. It's two different things. The exception are start ups where the person doing the hiring might be the founder or closely tied to them.
In my experience, even having non-trivial apps won't get you anywhere. Networking is the only sure fire way to get a position where I am, and a lot of that comes down to luck in finding the right people at the right time.
I feel your pain buddy.

A lot of good advice given so far.

Perhaps I can add another perspective to it.

Relocate to where demand outstrips supply by a big amount. Relocation is tough, but if you pick the right spot, you will get a job by applying some of those networking principles others have mentioned.

Cities/Areas I'd consider (where you will find it easier to get a job and do interesting stuff) in no particular order: Silicon Valley, San Francisco, New York, London, Berlin, [insert city name here], etc.

I can't think of anymore right now, but those are great places to look at (unless you have enterprise-knowledge, in the form of C#, .NET - which changes things).

It's ironic that programmers use technology everyday to eliminate inefficiencies, yet nepotism in hiring is something even programmers face. Based on this, consider your CV dead for a little while and hustle till you find something.

Good luck!

Avoid recruiters like the plague. Go to Meetups in your area. Got my current job through doing that and it's awesome.

In DC, the custom at tech Meetups is to have a 10-minute "who's hiring" litany before the talks start. I'm pretty sure it's that way in most other cities, too. For mid-to-senior level devs lately, I hire pretty much exclusively from the pool of people I see as regular attendees at deep-language meetups. They are spending their free time getting better at their craft: best 1st-line filter ever.

I would say that besides technical skills, the number one reason I didn't recommend people for hire is because of poor communication or interpersonal skills. In today's environment, these are essential skills and you should practice if you struggle in this area. Nobody wants to work with somebody that is not a team player, no matter how brilliant they are technically.