How To Get A Job As A Programmer

It seems that for the better part of my life, America’s economy has been in murky water. I was born into a Reagan economy (good), graduated to Bush Sr. (bad), did my time with Clinton (good), and started looking for jobs as a developer during Bush Jr.’s tenure (bad). And while I’ll abstain from the more political conversation, Obama’s reign doesn’t look much better in terms of economic health (of course, he inherited a lot of trouble).

And throughout those recessions of the last ten years, there doesn’t seem to be a much more exciting topic for news anchors to talk about then joblessness. The unemployment rate is up, it’s down, this year’s graduates can’t find jobs, and here’s the story of Marty McNoJob, who has been unemployed for 62 years. Many people (grandmas in particular) eat it right up, and try and convince you to get into whatever field is hot at the time.

And accordingly, mountains of advice articles (like this one) try and give you a good idea of how to get a job in this tough economy. Put these words on your resume, wear a suit, get a minor in management, send thank-you notes, get a degree if you don’t have one, and talk about how much you raised revenue at your last job, etc.

But here’s the startling truth about one-size-fits-all advice like this (which you can find almost anywhere): These rules do not really apply to software development. Software development is a completely different ball game.

So now that I’ve given you a fairly lengthy segway into the actual topic of this post, let me be clear about my background:

  • As a freelancer, I’ve been to a hell of a lot of interviews
  • Almost all of those interviews resulted in job offers (yes, in this economy)
  • I’ve interviewed plenty of people for employers and as a business owner
  • I’ve written plenty of resumes for co-workers and friends that have gotten them interviews

The number one rule to getting a job as a programmer is to be good at what you do. This applies to recent graduates too.

When you go to school for a computer science degree, there’s a good chance you went somewhere that offered other engineering degrees such as Mechanical, Civil, and Electrical Engineering. Think of those other majors. How the hell is a Civil Engineering major going to get any real field experience before his first job? He can’t. But programmers have it completely different. Programmers can get field experience as early as they want. If a young programmer in middle school wants to write a website or a video game, he can learn how. He can read up on the vast, free resources on the internet and build up his awesomeness. If a Civil Engineering major wants to build a bridge in high school, he better like playing with Legos.

The programmers who get jobs in a tough economy are those with experience and projects they can associate their names with. That leads me to my next rule.

The second rule to getting a job as a programmer is to have a portfolio.

Software development is a wacky world in that good companies hire people based on talent, not on “years of experience”. In fact, 15 years’ experience in the world of software development could mean absolutely nothing. This is something that recruiting firms have yet to grasp (which is why programmers should probably stay away from headhunting firms, which is for another post). Good hiring managers know this.

So you may be thinking, “I’m a recent grad, how can I possibly have a portfolio this early?” If you became a software developer because it supposedly paid well, you’re out of luck. You likely don’t love the craft, and you might lack the ambition to have done anything significant as a developer up until this point. But developers who love what they do can:

  • Get an internship
  • Get involved in an open-source project
  • Roll your own project

The point is to have something cool to talk about at your interview. If you’re being hired out of college, for the love of god, make sure that you have something that your interviewer can talk about other than what your favorite classes were in school.

The third rule is that you can’t look like a rookie.

Forgive the l33t talk, but in a tough economy, companies don’t have the money to risk on hiring a noob. They want to hire someone who can jump in on a project and hit the ground running. There is little to no “on the job training” in the world of software development.

So what can you do to avoid looking like a noob?

  • Chances are, you shouldn’t wear a business suit to the interview. The goal is to look well put-together, but fairly casual.
  • Bring a nice stack of screenshots which showcase projects you worked on. Don’t unnaturally force the interviewer to take a gander, but if you’re explaining a project you worked on, it can be much more effective to put an image to the description.
  • Don’t use idiotic jargon on your resume. Example resumes online have absurd phrases like “goal-oriented, motivated individual seeking position in a fast-paced agile environment where they can grow, learn, and advance”. All I see when I read that is “n00b, noob, noob, I’m a fat scrub.”
  • Don’t use acronyms that you can’t back up. If you list both Ruby and PHP as languages that you know, be sure that you can answer thorough question on each. And expect to answer the fraud destroyer questions like, “So can you tell me about some of the ways that PHP and Ruby differ for both good and bad?” This is truly an open-ended question, and the interviewer is really just trying to gauge your expertise.

The fourth rule is that it’s okay to say that you don’t know.

“I don’t know.” — A wonderful phrase used by millions of students in the world to get teachers off their backs when they’re called out because they weren’t paying attention. But in the business world, apparently “I don’t know” is an invitation to disaster.

Guess what? If you’re pitched a cut-and-dry question like “How is garbage collection handled in C#?,” and you don’t know, just say so! Essentially, be calm and say something like “that’s something I’ve actually never looked very deeply into, so I’m not entirely sure.” The interviewer may ask you describe how you think it works. This is when it’s okay to say something that might be wrong.. He just wants to hear you think out loud.

The worst thing you can possibly do is act like you do know, but be wrong. In software development, admitting when you need help or you don’t know how to do something is key to the success of the team. Project managers want someone with a “can do” attitude, but they don’t want someone who is going to throw the project off schedule because of his pride and his refusal to admit he needs help.

Also, saying you don’t know does not make you look like a rookie (see rule #3). Software development is a gigantic, always-changing field, and it’s impossible to know the ins-and-outs of everything.

The fifth major rule is that you have to build street cred.

Expect to be Googled (especially if you have a unique last name like Katzgrau). For me, no one’s name is safe from The Google. Whenever I’m about to work with another developer, I check up on their internet rep. Why?

Because if they have a website, blog, github account, stackoverflow account, sourceforge page, etc, I can begin to verify their authenticity. Suppose I get two resumes, and one of them has a GitHub account listed. If I can see some of their code contributions online, I have a much more realistic sense of who they are as a developer — not the actor that walks in the door trying to impress me. I would absolutely feel much better working with someone who’s code quality and contributions I can verify.

Get a website, blog, or some other public account where the smart guy that you are can really shine.

A word on having a college degree:

College degrees are not always required for some of the best development jobs. You can easily make 100k+ if you’re great at what you do, and you don’t have a degree.

That being said, you should probably have one. I hate to think it, but some companies and hiring managers will actually check to make sure you have a degree despite other fantastic credentials on your resume. It’s practically a stamp of approval from another institution.

But in reality, what good is a degree? There are certainly some institutions out there whose Computer Science degree courses are fantastic, useful, and progressive. But the majority of them — and I think I’m safe to say this — suck. Students are usually stuck in a classroom with professors who haven’t worked in industry for at least 20 years, if ever. They can’t tell you about things like unit testing, design patterns, version control, agile development, code reviews, or other industry shenanigans like that. But that’s just my take, and certainly doesn’t apply to everybody.

It’s really interesting, because the development fields’ laxness in regard to degrees is in stark contrast to fields like Education. For many teaching jobs, you must have a Master’s degree. Did that Master’s really help any teachers teach more effectively? I don’t know the answer to this question, but I’m skeptical.

And a degree from a fancy-pants place like MIT will probably help you get in the door (if not from sheer prestige, than probably from networking), but it won’t carry you forever. Ultimately, it’s the work that you’ve done that gets you future jobs, and help you take over the world.

Lastly, some smaller, but important notes that don’t deserve a spiel

  • Don’t pitch yourself as a language-specific developer. It’s important to list technologies that you’re really good at, but don’t make it seem like the only thing you’re interested in is one language. Java developers seem to do this a lot, but I have little basis for this other than observation.
  • If you’re still in school, maintain a good GPA, and above all, read this classic on the Joel On Software Blog
  • Know at least one language that is widespread. It’s cool to be a Python developer right now, but most job postings are looking for C, PHP, .NET, or Ruby devs. Python is something that is totally awesome, but it might not open all the doors that you’d like.
  • Always make sure your resume is up to date. When you work with a new language or you are on a new project, make sure it gets a spot.
  • Resumes, contrary to popular belief, do not have to fit on one page. If you’re a developer with a few or more projects, this can be somewhat difficult to achieve without sacrificing important information
  • Prepare for the interview. Look up questions commonly asked on the interview on places like GlassDoor.com

Anyway, if you needed this advice, take it to heart, and build your cred. If you read it just to see what I had to say, pick out anything you agree or disagree with and comment. And if you think this is oh-so-absurd, start a flame war.

This entry was posted in Jobs, Life, Offtopic. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.
  • http://www.davidrhoden.com David Rhoden

    It always shocks me that more programmers (especially front-end programmers, and even more especially front-end programmers who are way ahead of me in skills) don’t have a portfolio online. Especially if you do a lot of project based freelance work, it just tells the story so much better than a resume can.
    I guess it’s the cobbler’s-children-going-barefoot thing.

  • Kenny Katzgrau

    Hey Dave! Yea, it’s amazing. It’s like being a business without a phone number. The innerwebs are the modern yellow pages, so you’ve jus’ gotta have one.

  • Pingback: Getting A Job As A Programmer » John Bellone – Thoughtless Banter

  • Andrew Bloom

    Good read Kenny!

    Had to laugh about some of the professors @ NJIT when I was reading this.

  • Kenny Katzgrau

    Hey, Andrew — long time! Ha, you and me both (after all, wth else could I be thinking of as a perfect example?)

  • http://www.thoughtlessbanter.com/ John Bellone

    I still have fond memories of my graduate database course and how 99% of what was taught is never used in real life and would never be asked of me as a programmer.

  • Kenny Katzgrau

    Yea. I suppose the relation algebra was supposed to help students get used to the concepts, but most of the people who know SQL really well learned by diving right in.

  • http://www.betteradvertising.com Kyle Carter

    Kenny – As the head of HR who’s interviewed hundreds of Developers, I found your post very, very funny! My question back to you though is how or where do I find good Developers. Better Advertising is a growing digital company focused on a dry but interesting issue – online privacy. Our interfaces are in front of billions of people every month and we own a browser extension called Ghostery (ghostery.com), which over 2M people have downloaded to date. We make heavy use of JS and JS libraries. Most of our UIs are written in Rails, and all of our infrastructure lives in Amazon’s cloud. I think what we do is pretty cool but I don’t know where to find the good talent – any ideas?

  • Kenny Katzgrau

    Hey Kyle, Interesting question. In fact, I’ll answer that in my next post. Look for it in the next couple days :)

  • Pingback: How to Find Good Developers

  • http://morganmccarthy.co.cc/ Morgan Mccarthy

    Yea. I suppose the relation algebra was supposed to help students get used to the concepts, but most of the people who know SQL really well learned by diving right in.

  • Pingback: How to get a job as a programmer | The Thinker

  • Shane

    I like this :) Ive wanted to be a programmer for a long time and this helps alot.
    I have a question though if i learn PHP, Visual basic, C+, Java, Php, and SQL would that open alot of doors for me? i know about half that list..and im improving everyday.

    would those languages open many doors?

    thanks.
    shane.

  • Ken R.

    This looks very useful. I can see why my friend recommended it.

  • Raaz321 Com

     good post i want 2 start my career as a programer u r article was very useful thanx buddy

  • paul jordan

    Good comments, I esp like the open source project idea as I have no experience

  • Anon

    Good tips for people who want to start their career as a programmer.

  • Dan Schaefer

    Nice post. Thanks.

    I am inclined to disagree with you on the college degree, however. True, most professors are not up on the latest technology, but their job is not to teach you about the latest whiz-bang features in PHP. Go to a trade school for that. Colleges teach you how to think. I’ve seen sooooo many programmers that know how to code really well, but don’t know squat how to organize their programs coherently to solve a problem.

    I know … I know … a guy can get through college without being that good in the thinking department. But on the average, if you can get through an advanced course in physics, you’ll know how to break down a problem, organize an approach and think your way to a solution. You’ll end up being a software designer, not just a script coder.

    IMHO, of course.

  • katzgrau

    Thanks for the comment.

    Maybe the real value of college is that it does force some mental exercise, hrm.

  • John

    Sounds good to hear something like this. Since, I’m gonna starting floating my resume soon. 

    Jobs: 
    Career AdviceCareersIT JobsJava Developers
    EditChances of landing a Java web development job without a Bachelor’s Degree?EditI’m half way through college and going to transfer to a 4yr university next semester.I have 1+ of core java experience and I was trained for 5-6 months in JSP,Servlets, Spring MVC, Maven, Hibernate, jUnit, log4j and I have 2 years of expeience in HTML4/5, CSS2/3 and Javascript/jQuery.Build 2 projects using the above mentioned technologies. I am quite comfortable with using it and can getting the job done. But, Do you think not having a Bachelor’s Degree is going to limit me too much even after having good experience in all these technologies for about an year? I have run & maintained several other projects using PHP & WordPress.I’m looking into Scala and Play Framework. Thinking of doing a fun project with it after I learn Scala.

  • john

    Edited Version:
    Sounds good to hear something like this. Since, I’m gonna starting floating my resume soon. 

    I’m half way through college and going to transfer to a 4yr university next semester.I have 1+ of core java experience and I was trained for 5-6 months in JSP,Servlets, Spring MVC, Maven, Hibernate, jUnit, log4j and I have 2 years of expeience in HTML4/5, CSS2/3 and Javascript/jQuery.

    Build 2 projects using the above mentioned technologies. I am quite comfortable with using it and can getting the job done. But, Do you think not having a Bachelor’s Degree is going to limit me too much even after having good experience in all these technologies for about an year? I have run & maintained several other projects using PHP & WordPress.

    I’m looking into Scala and Play Framework. Thinking of doing a fun project with it after I learn Scala.

  • katzgrau

    The most important part of being a great and valuable developer is loving what you do.

    We work in one of those fields where you always have to learn something new. Learning new things can be awfully hard if it’s not exciting. Getting hired can be awfully hard when you don’t seem excited.

    Go to tech meetups, read HackerNews, etc. Surround yourself by people who have the talent that you want to develop.

    The degree isn’t a requirement, but it’s a good idea, so stick with it. And if I were you, learn up on as much javascript as you can — especially how to write good javascript. It’s quickly becoming *the* language of the web.

  • http://tallulahcantu.wordpress.com/2012/11/06/developers-are-switching-to-the-c-platform-for-better-performance/ AileenHarrell

    Hold yourself accountable for a greater conventional than anyone else desires of you. Never reason yourself. Thank You. 

  • http://twitter.com/MichealKennedy Mike Kennedy

    2 years later after this post, is the same still true for Python?

  • Broadstreet

    I’d say the coolness of python has worn off a bit (and moved to languages like scala/haskell). But knowing python was and still is a great language, and knowing it well is a hint that someone knows what they’re doing.

    Good hiring managers have been moving toward hiring anyone who’s awesome in any language, not just the one they need to hire for. And when looking for a job, focus more on the team and company you’ll be working for than the language you’ll be working with.

  • Ryan Grissinger

    This post was really encouraging for me, especially the ‘word on having a college degree’.

    At the moment, I am almost 40, and recently decided to pursue this career rather than my last one, BECAUSE I love this. I have always believed “you’re never too old” (I am not THAT old anyway, am I?). I have recently had the perception that software companies only want early-20’s, recent graduates at discount salaries. It’s easy to say to yourself, “how can I compete with these 23-year old kids with a fresh computer science degree?”

    Based on several recent interviews, that perception may be reality to a point, but your post gives me a renewed sense of confidence: it’s great to know there are hiring managers out there capable of looking at an entire person rather than just the resume. There are lots of great take-aways in your article, but these two really stuck out to me:

    #1: “be good at what you do” (thus have & demonstrate confidence in my skills).
    #2: saying you don’t know does not make you look like a rookie

    Good stuff – Thanks a bunch, katzgrau!

  • katzgrau

    Thanks!

    And definitely don’t worry about the age — 40 isn’t even in the neighborhood of ‘old’. That said, it doesn’t matter anyway — it’s all about ability. Get involved in a big open source project (pull requests, bug fixes, etc) and you’ll be ahead of 90% of the pack.

  • Brown

    Well it is possible that I’m wrong but nevertheless I will say it anyway, I disagree that colleges improve your problem solving or designing skills.
    For example, the OOP way of thinking is not something that you just sit and learn, it comes with practice, and between “school homework” and “personal project” I will give more experience value to a “personal project”.
    Also a design skill requires experience as well, but regardless of that it requires knowing and understanding the best practices and conventions. And as you said it yourself the professors job is not to teach the latest technology, and without being familiar with the latest you cannot teach the designing…
    But I do believe that colleges provide a great grasp of fundamentals and also they often improve ones algorithmic thinking.

    Now to continue on, katzgrau regarding your first rule about getting the experience as early as possible, I know this is a bit off topic but I just wanted to add that the same is applicable to electrical engineers as well. They can learn, practice and experiment on their own, they can work with Verilog or VHDL, they can create some electronic components like smart house or circuits (there are thousands, if not millions, of free electronic schemes on web).

    Regarding the portfolio, I feel like nowadays there is no excuse for a graduate not to have one, I mean there are a lot of free public repositories available online so it is quite easy to publish your source code somewhere. Also this has another benefit and that is that you will show your employer that you are familiar with some version control systems. From my experience most of the schools do not cover this topic at all, which is funny because it is one of the fundamentals…

    But I have a question for you about the fourth rule. Do you think that it is a good practice to always try to follow up the “I don’t know” with the “but I guess …”?
    In other words do you think it would be OK to say your guesses even though you’re not sure if they are right or wrong, or should you just say your guesses when you are explicitly asked by an interviewer?

    Last thing I would like to say to any fresh programmer is that the most important advice here is as author mentioned “to be good at what you do”. You need to have skills in order to be hireable… it is as simple as that. Acquiring the necessary skills is not out of anyone’s grasp, but it does require practising.
    I like that you mentioned contributing to open-source project for practising, that is a really great advice. I will also add that another interesting practice is to solve some coding tests online, these kind of tests can show some of the common daily tasks that you can expect on a job (like fixing bug, implementing small feature, etc…).

  • hatemylife

    Old article I know but

    If you’re still in school, maintain a good GPA, and above all, read this classic on the Joel On Software Blog

    What if you dont have a good GPA and youre done with school? Then what? Just keep coding on your own and pray?

  • katzgrau

    Haha, a good GPA is something to try and maintain if you’re still in school, but it’s really not a major factor. Ask most developers if they’ve ever been asked about their GPA for a professional gig and the answer is very likely ‘never’.

    Beyond your first year out of school it’s really about experience and reputation of the companies or projects you’ve worked with. Being a contributor to a major open source project, for example, is going to go much farther than whatever your grades were in your partying days :)

  • Job Gondwe

    Awesome post that have taught me things I never paid attention before about being a competitive programmer. God Bless You for being Generous! :)

  • Md Jahid Hossain

    If you are looking Information technology jobs, another online staffing platform Staff.com which is good site for getting full time jobs.