Game design, game programming and more

Marketing yourself as a programmer

A number of readers asked questions about programming careers, both about getting into game-development as well as staying employed in software engineering. I started writing a comment to JM about age-discrimination but it turned into this blog post about getting a great software engineering job.

JM asked: How did you manage to stay in this business for 22 years? I’ve been coding for 30 years now and when I try to find another job that inspires me I am either told to be overqualified or I am missing the basic prerequisites for Java when having a certificate for Hibernate.

Age discrimination is a very real problem for technical folks. Some hiring managers prefer younger candidates who they can bring aboard for lower wages, even though they might not be as productive as more experienced (and hence older) candidates. Regardless of any legal issues related to age discrimination, one reason for this behavior is many hiring managers don’t know how to evaluate whether any given programmer is going to be an asset, so they’ll use an easier determinant like “cheap”.

Good companies need you

There are actually plenty of good companies around who are absolutely desperate for programmers as there is a demographic shortage. Stanford University professors have talked about how enrollment in Computer Science (CS) fell after the 2000 “dot bomb” crash and has only recently started growing, and in fact skyrocketing. So there’s a ten year gap where fewer CS graduates were joining the workforce, while at the same time our society is becoming ever more dependent upon teams of software engineers.

Add in a further trend that many recent graduates see better opportunities in working for themselves, a trend that startup incubators like YCombinator and Tech Stars have popularized, which means that the most ambitious programmers are “off the market”.

Finally, with tech giants like Google, Amazon, Microsoft, Facebook and others vaccuuming up talent by paying top-dollar, we’ve got a perfect storm for companies who want to find folks.

In the last company I worked at, it was so difficult to find good web developers that we stole someone from our operations automation efforts (even though we desperately needed someone there too), as well as relocating other folks from Florida and Eastern Washington.

So you’re probably asking — if all this is true, why can’t I use my expertise get a job?

Based on my experiences I believe there are several reasons programmers — of any experience level — have a hard time getting a job.

Not applying to the right companies

If you want a great programming job, join a business where the development team is the star of the company. Companies that create software products or develop software services are where you want to be. Why? Because they’re responsible for making money, and will be better treated as a result.

If you work at a company where you’re building internal tools or services, your team is a cost center, and there is an entirely different set of goals.

Joel Spoelsky talks all about this, but the guy is so damned prolific I can’t find the article to refer you to; it’s somewhere here in these 1108 articles: Historical Archive.

Not learning new skills

The computer industry is characterized by change. I know vast amounts about DOS, DBase III+, Real Mode, EMS, XMS, 68000/65816/8086/80386 assembly, FORTRAN, and all sorts of other useless cruft that I’ll probably never use again.

For over 10 years I’ve been primarily a Windows developer, but in the last few years I’ve learned something about Erlang, Ruby metaprogramming, Rails, Linux, vi, Racket, D and OCaml, and just recently completed my first C# project: IPC using named pipes. This is what keeps me relevant as a programmer, even though programming is only a part of what I do professionally.

When I talk to many programming candidates, it’s pretty clear they got off the learning train and became comfortable with the skills they had already acquired.

When you stop learning, you immediately become less employable. Keep learning.

I would add that this doesn’t mean you have to learn something awful. Spend some time looking at lots of technologies, then go deep on something you enjoy that you can use professionally.

Some areas that I think will continue to be in growth mode for the foreseeable future are network/server programming, web UI programming, mobile programming, operations automation (dev-ops), business intelligence, and security.

Not selling yourself

Steve Yegge, a brilliant guy who is my biggest blogging inspiration because he writes long-form blog posts (like this one, only 10x as long, and way more humorous) says that the most valuable skills programmers can develop is to market.

Ask yourself what you’re doing to sell yourself. A resume is important, obviously. Do you have a blog? Public github projects? A LinkedIn profile? Do you speak at technical conferences? Do you go to technical meetups in your city?

You can find a great job, but you’ll have to put yourself out there, and the jobs will start coming to you.

Addendum

A particularly relevant post along these lines can be found on the blog of Patrick McKenzie (patio11 from Hacker News): Don’t Call Yourself A Programmer, And Other Career Advice.

About Patrick Wyatt

As a game developer with more than 22 years in the industry I have helped build small companies into big ones (VP of Blizzard, Founder of ArenaNet, COO of En Masse Entertainment); lead the design and development efforts for best-selling game series (Warcraft, Diablo, Starcraft, Guild Wars); written code for virtually every aspect of game development (networking, graphics, AI, pathing, sound, tools, installers, servers, databases, ecommerce, analytics, crypto, dev-ops, etc.); designed many aspects of the games I've shipped; run platform services teams (datacenter operations, customer support, billing/accounts, security, analytics); and developed state-of-the-art technologies required to compete in the AAA+ game publishing business.

  • William Payne

    Technical meetups are an awesome way to raise your profile. They also provide a great opportunity for you to ask questions, find out who is doing interesting work etc…

  • http://min-maxing.com/ Shaun Yelle

    Great article, Patrick!

    I can’t second the “always be learning” thing fast enough. Plenty of people are experienced with older languages and technologies, but new and popular technologies present great opportunities for career growth.

    In my experience, dev-ops & business intelligence are specific areas that are just being discovered by many companies. These areas aren’t new, either, but new innovations are making them much more accessible to a wider range of companies. Adding expertise in these ares to your toolset is a great way to stand out against your competition.

  • Jamie Winsor

    Another solid one Pat.

    I’d like to comment that “DevOps” itself shouldn’t be a department or a position at a company. It’s actually quite a turn off if a company lists a “DevOps Engineer” on their careers page.

    Much like Test Driven Development (TDD) or Behavior Driven Development (BDD), “DevOps” is a development methodology. You could ask for an engineer who understands TDD and BDD but you wouldn’t list on your careers page a listing for “TDD Engineer”.

    Engineers who are unfamiliar with these modern development methodologies are easy to look over. Don’t know how to build, package, publish, configure and deploy your own software? Don’t know the difference between a unit test and an acceptance test? Next in line please.

    • Matt

      I disagree. “DevOps” is just what the IT administrator position has morphed into. Handling infrastructure as well as having enough programming knowledge to understand the software you’re deploying and bugs as they crop up

      • http://twitter.com/resetexistence Jamie Winsor

        This is *a* way to go about it and, in a small environment, you’ll undoubtedly see success by having your Operations people take on the task of understanding how to automate their infrastructure.

        You will have more success if you instead leverage your software engineers to handle these problems themselves. Patrick mentions a bit about what deploying a critical hotfix to the Guild Wars production environment looked like in one of his blog posts (http://www.codeofhonor.com/blog/debugging-running-server-applications).

        This continuous delivery model that Guild Wars adhered to was implemented by engineers and for engineers. There wasn’t any talk about calling up Operations, scheduling an outage, and handing off a payload with a runbook because it was unnecessary.

  • http://www.facebook.com/dave.swersky Dave Swersky

    You missed the single largest growth market for developers- mobile. Xamarin, PhoneGap and Appcelerator Titanium are growing by leaps and bounds.

    • http://www.codeofhonor.com/blog Patrick Wyatt

      Added it!

  • http://leereilly.net/ Lee Reilly

    Great article! I wrote about using GitHub to break into the games industry a few months ago at http://leereilly.net/2012/05/01/game-development-on-github.html.

    > You can find a great job, but you’ll have to put yourself out there, and the jobs will start coming to you.

    I could not agree with that statement more!!!

  • j_meissner

    Wow, thank you for this reply. Maybe we should use the power of words and not call it “age discrimination” but recoin it “naïvety abuse”. This way recruiters might feel bad for exploiting the weak.

    In fact I already thought about publishing github projects, but after being told 14 times that I’m overqualified or they were sure I would leave after six months I was demotivated and canceled that. When I studied Business Informatics I created some programs which proved none of the existing models for Neuronal Nets can achieve cognitive skills, a good idea or too much?
    Again, thank you for this great reply!

  • http://www.itoctopus.com/ itoctopus

    Hi Patrick,

    The thing is developers who want to keep working for others all their lives must pay the price – which is at one point these developers will be old – and thus will not be considered for any job they apply to. I don’t like to think of this as age discrimination – maybe a better definition for this is miscalculation – from the part of the programmers themselves.

    Yes there is currently shortage – but we know how fast highly populated countries can fill in that shortage. Any programmer who wants to remain a programmer all his life must start on his own at one point. Sure it is more scary, but only for the first few years.

    The IT business might be lucrative, but it is definitely treacherous.

  • http://twitter.com/PJWilkinson Philip Wilkinson

    Patrick – what are you working on these days?

    • http://www.codeofhonor.com/blog Patrick Wyatt

      Right now I am taking a few months off and walking the earth while I think about what to do next.

      • Eduardo Ellery

        Nice! Visit Brazil, if you’re interested in South America.

  • zeiteisen

    Its because you still have full hair on the head!

  • exploringme

    There is a price according to this. It’s a difficult job i understand.

    Spectra