Main image of article Improve Your Job Search With a Personal Project

More and more, hiring managers tell us that they want to hire candidates who work on personal projects outside of their jobs. They say the first place they look up a potential candidate is on Github. Designing an AppPersonal projects & open source contributions are both great ways to demonstrate passion for the industry. They show initiative and can be a great way to sharpen your coding skills before an interview. Plus, they add extra experience to your resume and are a great way to build experience if you don’t have much and want to break into the industry. They can have other benefits too: Back in 1982, I wrote one that created a weighted average for estimating the results of English soccer clubs. There was a legalized gambling system called "The Pools" where you had to predict which matches would be draws (1-1, 2-2, etc). I actually got 24 points one week (the maximum score) but so did 9,000 other gamblers and the betting syndicate I ran won just $450 dollars. Had it been the week before or after I'd have won 1.5 million dollars! With today’s availability of open or free software, there’s never been a better time to start a home project. Even those currently employed may find it useful to work on one for a few hours a week. The ideal project isn't too trivial, but equally shouldn't be something you'll need to spend all your life working on. Struggling to come up with one? Here are a three ideas to get you thinking. If you can think of something else that takes more effort than "Hello World", go for it!

  1. Mastermind GameA Mastermind Solver: This is the game where you have to guess a sequence of hidden colored pegs. After each guess, red and white pegs tell you that you had a successful peg or you had the right color peg but in the wrong peg hole. For your project, instead of making a two-player game, write a program to generate a pattern and then have the program deduce it.
  2. Find out about Markov Chains: Use word lists like some of these to generate a reasonable sounding piece of text or if you're musical, make it a music composer.
  3. Learn to Program Simple Games: Start with text first and then add graphics. You could develop something for the iTunes Store or Google Play, though don't do it with the expectation of making lots of money. Check out the Invent with Python blog for 49 games ideas.

So Why Do This?

  1. Nothing demonstrates technical mastery of a programming language better than explaining how you solved a problem in it. Offer to share your source code with potential employers – Dropbox can be particularly handy for that. Most of them can't or won't install it but they can view a folder shared by a link.
  2. To stretch yourself, expand your skill-set and step outside your comfort zone. Never written any SQL? Install MySQL or PostgreSQL and learn to code queries and updates and use it in your program. In Java, why not try using the Spring framework or even learn Scala? In C#, master LINQ or Reactive Extensions. With Google and your browser there’s always information, examples and sites like StackOverflow or Reddit to search when you get stuck.
  3. In my career I've learned MsBasic, CBasic, Fortran IV, Z80, 6502, 8086 and 68000 assembler, C, C++, C#, Java, Pascal, PHP, SQL and JavaScript, and the best way I've found to learn a new language is to write something meaningful in it or convert an existing project.

Some of these sound like you could spend days or weeks learning them, but don't let that discourage you -- they really aren't too difficult. For instance, I thought LINQ sounded quite scary at first. But once I got down to it, it wasn't that bad. If you know SQL, LINQ is really straightforward. Continual development in your own time can be a great way to keep up with new technologies and programming languages. It’s normal to write lots of throwaway code to try something out, but keep working on your project so that you have something to show for your effort. It gives one heck of a buzz when you get it working.