Settings

Theme

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

22 points by hdx 16 years ago · 31 comments · 1 min read


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 16 years ago

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 16 years ago

    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 16 years ago

      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 16 years ago

        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 16 years ago

          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 16 years ago

            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.

  • rue 16 years ago

    Even the "paying real money" bit is unnecessary.

    Having some working, usable sample code - whether your own project or participation in someone else's - obviously provides some gauge of what you can do but also indicates that you can make a program, maybe work with other people, maybe understand the various things involved in the process. Quite a few people come into the workforce only knowing how to write code, which while a prerequisite is nothing like actually programming. If you know the difference, you have a leg-up already.

    Networking is important, and even someone like me can do some of it sort of incidentally by joining the local <Technology> User Group etc.

    • aaronbrethorst 16 years ago

      Proving that you can do everything—and that you understand a business' lifecycle—is going to be incredibly valuable in an interview, especially in a smaller company (but certainly not limited to them).

      Being able to point to a real product being used by real people who had paid me real dollars for it has made a significant difference for me in job interviews in the past, especially for my first real job out of college at Microsoft.

      Today, I'm a startup co-founder. If I'm looking to hire a developer, and I see that a candidate knows how to not only create software, but also market it and sell it, AND that they recognize the value in those other two steps, I'm significantly more likely to call them in for an in-person interview.

      And besides, with any luck you'll generate enough money off your own software that you can tell all those companies you're looking to for a job to piss off ;)

      • rue 16 years ago

        Yeah, I am sure it is good to have. Just not necessary, particularly if mistaking it to be causes failure, stress or paralysis. One should strive to have something up there. If it pays, I guess that is a bonus.

        It is not your fault, but overemphasis on "monetization" or whatever the preferred word may be is really unappealing to me here.

        • aaronbrethorst 16 years ago

          I'm sorry you find it distasteful, but it's important to me, and likely to you too. Monetization comes in many forms, including the paychecks you might collect every two weeks, or the grad student stipend you might collect at the beginning of the term, or in many other forms.

          Paying rent and being able to eat are nice, and they're the direct result of monetizing something

          • pyre 16 years ago

            I think he was referring to your insistence that showing an actual working product to someone in no way demonstrates your job potential as a programmer unless you already have a business running around the product with paying customers. The idea that paying customers demonstrates one's programming abilities is laughable. "If you build it, they will come," is a phrase best left in the theaters.

            Not to mention creating a product that is great does not in and of itself generate a customer base. You have to use your business/marketing acumen to get that. And in a lot of cases, you can cover up your lack of programming skills by over compensating in the business or marketing areas.

            • aaronbrethorst 16 years ago

              Having a working product with positive customer feedback is no Kevin Costner Hollywood gimmick; it takes tons of hard work. 'If you build a good product that can attract users, you'll have an easier job of convincing potential employers of your usefulness' is the only point I'm trying to get across. Do you disagree with that notion?

              I'm perplexed and somewhat disturbed by what I interpret as an assertion that creating a successful product indicates a lack of software development skills. Am I misunderstanding you?

              • rue 16 years ago

                I am merely arguing that for a relative newb, trying to make money in addition to writing code is too much pressure for want of better term. In my opinion, bringing it up serves as a distraction more than anything. I may be wrong, of course, but I think the focus should merely be on the programming. There is a a whole lot to learn.

              • pyre 16 years ago

                > Having a working product with positive customer feedback is no Kevin Costner Hollywood gimmick; it takes tons of hard work.

                Hard work != Good software development skills

                Granted you have to have at least some base level of skill, but I don't feel that the bar is necessarily that high.

                > 'If you build a good product that can attract users, you'll have an easier job of convincing potential employers of your usefulness' is the only point I'm trying to get across. Do you disagree with that notion?

                I don't disagree with that. I just feel that you are putting too much emphasis on 'monetization' when you're trying to get that point across. 'Monetization' is a completely different skill set from software development. The product doesn't attract users all on its own. You have to market it, and marketing is not a software development skill.

                Creating a profitable side business around a product that you created is impressive, but not everyone can do it because it requires an individual that has a number of skills that don't fall under 'software developer.' Acting like only the people that can create a product, market it and manage the finances surrounding it (as well as make tough business decisions, etc) are the only people worth looking at as developers is a little over-the-top.

                > I'm perplexed and somewhat disturbed by what I interpret as an assertion that creating a successful product indicates a lack of software development skills. Am I misunderstanding you?

                You are. Creating a successful product requires more than just software development skills. In fact, it only implies a base level of software development skills. You cannot use it to deduce the actual level of a person's software development skills, only that they have a minimum level. It's possible for someone to be a super-skilled developer, but have mediocre marketing/business skills. If the job only calls for development skills, why should that person be discounted for a lack of skills not related to the job?

mbrubeck 16 years ago

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 16 years ago

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 16 years ago

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 16 years ago

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 16 years ago

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 16 years ago

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 16 years ago

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 16 years ago

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 16 years ago

    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 16 years ago

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 16 years ago

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 16 years ago

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.

hdxOP 16 years ago

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 16 years ago

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 16 years ago

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 16 years ago

    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.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection