106

I want to know, how important is it to program in your spare time? Is it necessary to work your 9-5 as a programmer and then get home and work on your hobby to become a better programmer?

This said, I know you only get better at programming by, well, programming.

Do prospective employers take hobby programming into account in an interview or do they ask this just out of curiosity?

I feel guilty for not having a hobby project, but everything I can think of doing has already been done. So I am kind of in two minds about this, start something that has already been done or leave it until I come up with something original?

10
  • 6
    On the "not starting something that's already been done" part -- if it's a FOSS project, there's always the possibility to join the team & work together.
    – TC1
    Aug 10, 2011 at 8:30
  • 41
    “You don’t stop playing, because you grow old; you grow old, because you stop playing.” — Ben Franklin.
    – user30455
    Aug 10, 2011 at 14:18
  • 1
    Why don't you have a hobby project? (I ask seriously.) Aug 10, 2011 at 14:39
  • 4
    I believe that having a hobby project will, by nature, make you a better programmer. If you don't have one, you'll just think of programming as a mundane job rather than something interesting, challenging and fun.
    – Maxpm
    Aug 10, 2011 at 16:24
  • 1
    Employers ask because they want to know about things that you are passionate about. Somethings mesh well with a specific work environmnet some don't. I doubt most company's will fault you for not having a hobby project. But if you are passionate in your off time about something they are also passionate about it can be an indicator of a good fit. Aug 10, 2011 at 17:03

17 Answers 17

147

I feel guilty for not having a hobby project

Feeling guilty is a crazy reason to embark on a programming project. Probably a good way to start hating programming, too. Work on something because you want to, not because you think you're supposed to.

but everything I can think of doing has already been done.

Bah! Who cares if it's already been done? Do it again! Do it better! Or, accept that you may not be able to do it better and do it anyway. Where would Microsoft be if they said "well, someone has already created a database/spreadsheet/word processor/operating system/IDE/project manager/money manager/C-based single-inheritance dynamic object-oriented language/web browser/web server/music player/mobile platform/search engine, so we'll look for something else to do..."?

Seriously, if you write a web server, it's probably not going to out-perform Apache, but you'll definitely learn valuable lessons in the process. You're unlikely to outsell Angry Birds, but writing a simple little video game will teach you a lot too.

12
  • 78
    Projects can be like guppies -- you start a couple, and before you know it you've got 35. A few of those guppies might turn into gerbil-sized pets, and one or two of those might become cat- or dog-sized. But start with guppies, and don't hesitate to flush the ones that don't work out.
    – Caleb
    Aug 10, 2011 at 6:18
  • 5
    +1 Yeah! Just because it has been done before doesn't mean that you shouldn't do it. Just do the thing you want to do, you will learn a lot from doing some stuff yourself.
    – Spoike
    Aug 10, 2011 at 6:55
  • 14
    One of the best ways to learn jazz improv is to copy the solos of the great musicians. Programming is the exact same way - build things that already exist, and you'll learn how to create something new. Aug 10, 2011 at 12:34
  • 6
    "If a thing is worth doing it is worth doing badly." (G.K. Chesterton) The things you learn in making a bad blog engine or a bad email client, will be invaluable -- especially if you ever are paid to make a good one. Aug 10, 2011 at 14:34
  • 16
    +1 "Bah! Who cares if it's already been done? Do it again! Do it better!" - It may be bad in business to reinvent the wheel but its alot of fun to do at home. The cool part is it doesnt have to even be better. Aug 10, 2011 at 17:00
59

I think hobby projects are important

I use hobby projects to test out theories, design practices, new frameworks that I don't get to do in my 9-5. ie Functional programming, algorithms, design patterns, new frameworks, new languages etc.

This can mean the difference in how quickly and efficiently I can tackle a new project at work, or even mean the difference in picking up a new project from a client or missing out because I didn't know enough about the problem domain.

Only doing your 9-5 daily grind can stagnate you as a developer if you are not introducing new things, or new ideas. For me doing hobby projects is a means to an end of making me a better, smarter more efficient developer.

Prospective interviewers do take hobby projects into account

In my experience if you have done a hobby project in a related technology that your employer is currently using or "looking at" using. You get bonus kudos for already having familiarized yourself with the technology in question. This is especially pertinent for new technologies which have only just hit mainstream where the playing field is levelled in regards to technology experience.

5
  • 4
    +1 for "Only doing your 9-5 daily grind can stagnate you as a developer". Aug 10, 2011 at 5:54
  • 15
    @Bobby: "can" is the operative word here. As it happens my 9-5 "grind" doesn't allow me to stagnate... I guess I am lucky :-)) Aug 10, 2011 at 6:41
  • 1
    +1 IMO hobby work is the only way you can really learn other frameworks, unless of course you aren't busy 9-5. I tend to find that hobby work does help in interviews as well but only if you actually have something to show, not just, yeah I played with that. Aug 10, 2011 at 9:30
  • +1 for interview, my tinkering with writing android apps directly led to me getting my current position, even though I don't do any mobile programming in this position. Aug 10, 2011 at 19:26
  • @Marjan Venema: Absolutely. I've had a few that did. But it can be a bit of "you get what you put in" too. Which in a couple of my previous jobs was definitely a failure on my part to make the most of them. Aug 10, 2011 at 20:40
42

The problem with your current job is that you only probably only need a limited set of skills to perform your job function. The world of programming is so vast that it is easy to get stuck in a rut year after year. By hobby programming you can branch out and be ready for other technologies before the opportunity arises either in your current position or elsewhere.

But it's important to realize that the hobbyist programmers don't just program.

  • They read blogs
  • They install tools
  • They read source code
  • They debug open source programs
  • They submit patches
  • They participate on StackExchange programming sites

But sometimes they get inspired to write a program to meet their own specific needs; a programmer's guilty pleasure because it has exactly the features they want. And then they tire of it and throw it away. That's the luxury of a hobby!

2
  • I agree that it isn't just about programming. I, and I am sure most programmers, do almost all the items on your list on a daily basis. Aug 10, 2011 at 12:29
  • 7
    +1 So much of "programming" consists of activities other than pounding new code into an editor.
    – StevenV
    Aug 10, 2011 at 16:33
26

IMHO it's not necessarily hobby projects per se which make you better (although they don't hurt for sure), but staying open and spending time on learning new stuff in general. As @Rick noted, it can take many different forms apart from actually coding. You can e.g. read books - but if you have a laptop, even code - while commuting to/from work.

Note also that one absolutely needs to keep a balance.

  • If you don't spend any (of your free) time learning, you will stagnate, and at some point may get completely bored with your profession and unable to take up new challenges.
  • If you spend too much of your free time learning, you won't have time to that curious but important thing called Life, thus in the long term you may burn out and/or get health problems.

One more thing: it is easy to (suggest) working on hobby projects while one is young and single. At later stages, you may get a family, and that will eliminate most of your free time for many years (at least if you want to do it well - and what is the point otherwise?). So you will be forced to manage your time more efficiently, in order to spare some precious time for learning.

3
  • 5
    +1 for having a life. I don't work at a typical company, but I consider learning and keeping up-to-date a part of my job. So much of my learning happens at work. Granted, I don't work on full-scale hobby projects at work, but I do find opportunities to use new things "just because" in my various work projects. So for me, having a life is more important than having a hobby.
    – Phil
    Aug 10, 2011 at 12:45
  • 2
    +1 for life! It is essential to have a work-life balance. You will burn out very fast if you don't! Aug 10, 2011 at 15:15
  • 1
    +1 I am having a hard time with this right now. I have two young daughters (6,11) that require my attention, my day job (50ish hours), and then another 8 - 16 hours on contracted work. For awhile a managed this by doing the 6-5ish, spend time with family until the go to bed around 9ish, and then contracted work until whenever. It worked but I am really getting burnt out. Just haven't decided what to do about it yet.
    – Ominus
    Aug 10, 2011 at 17:17
10

Do side projects! Don't think of it as bringing something new to the web, think about it as practicing your skills, sandbox for learning/mastering technologies and approaches.

As an employer I've been always asking my potential co-workers if they are doing any interesting side projects. And even in case those were not spectacular ideas, but their authors showed excitement about it - it was always a big pro.

1
  • 2
    I ask it in interviews. If someone doesn't do hobby programming, I won't hold it against them because there is a lot more to life, and with family there can be less time for such (my projects all stagnated when I had kids) - but I do consider it a bonus because it shows they have real interest and initiative. I can't tell you how many people get writers block if they have to start from "main()".
    – phkahler
    Aug 10, 2011 at 17:01
7

The programmers I meet who have a hard time keeping up to date with new technologies are the guys who treat it as a job. Their counterparts - the ones who do keep up with the new stuff are the ones who make things at home.

2
  • +1 for a nice concise answer. Be careful not to assume causality, though.
    – Caleb
    Aug 11, 2011 at 2:22
  • 6
    Why can't you keep up with the new stuff at work for? Seems like the problem here is a bad, narrow-minded employer rather than the lack of hobbyist projects.
    – user29079
    Aug 12, 2011 at 13:40
6

You say that everything you can think of has already been done, but does every tool you use work the way you want it to? I frequently find that tools do nearly, but not quite, everything I want it to, and my hobby projects come out of trying to fill the gap. I don't always succeed, but I enjoy trying, and as the end user I have no problems with motivation or specs

5

If you really have the interest and energy for those projects, by all means do them. But I wouldn't go as far as saying that it is a must for any serious programmer. If you work full-time with programming, doing it in your free time as well will not necessarily increase your interest in it, it may very well have the opposite effect. Personally I used to do hobby projects, but I have stopped. I were already programming 5 days a week and to me it seemed healthier to do something entirely different in my free time.

Also, if your employer doesn't give you room to test out new things at work, study and improve continuously, then you should probably look for a new job rather than doing those things on your free time. A good employer will realize that it is in their own interest to keep your skills refreshed, improved and expanded.

From the employer's point of view (I am one of those), hobby projects will be a merit if you have no actual work experience. All hobby- and school projects will then be very important to bring up as reference during the interview.

But if you do have experience they are less relevant: while they might indicate a passion for your trade, they might at the same time indicate that you are a bit of a nerd. From my personal experience I can't really find any connection between hobby projects and good/bad candidates, I don't think they are particularly relevant unless you are fresh out of school applying for your first job.

1
  • 2
    +1 for being one of the only answer that say that hobby project are not necessary always a good thing (require time and energy). Personally I have a lots of things to do during the time I'm not at work and I rarely have time for programming (browsing SO is not as much demanding that actual programming though). Those things include doing chores, having a social life, resting so I can be productive when I go back to work on monday (I sleep a lot ;o)), etc. Not saying that's bad, those guys are maybe/probably better than me for the employer but I prefer to have a more balanced life personally .
    – n1ckp
    Aug 13, 2011 at 13:07
3

I'm more in quizzes and similar small chunks of code than full scaled projects (though try to work on some OSS projects if I get the time). So for me there is not much excuse to say I have no great idea for a project. Just write some Sudoku solver and try to implement something like Dancing Links to make it faster.

How important they are for you to become a better developer may depend on your job. If this is already very demanding, you can get all the training you need. Otherwise choosing the right project (or quizz to solve) will teach you any amount of new things and keep you stay in touch with a wide area of expertise that many jobs don't offer, since you are often limited to use a small set of tools for a clearly defined domain.

And yes, some companies are seriously interested in your projects. If nothing else, they give you plenty of opportunity to talk about something you know very well during an interview.

1
  • 1
    With regards to quizzes and the like, I do work on puzzles like Project Euler. Aug 10, 2011 at 6:14
3

Hobby projects themselves are not going to be of importance in most interviews. There's a few people out there that care about you doing coding as a hobby, but most do not. HOWEVER, skills that you pick up from hobby programming may be important in an interview!

Extra programming on the side is definitely going to be advantageous in programming, up to the point that you burnout... However, even beyond the burnout issue, you also need to consider that employers are often looking for other skills beyond programming. If you're programming 24/7, you're not developing those OTHER skills! Balance... :-)

1
  • 2
    In my last round of interviewing I was expecting to do some code tests. Instead, this one company asked to see some of my published code. Well, the only one I could legally show them was my hobby project (A timed event which I didn't exactly make robust and clean). The project also came up in other interviews. People care. But you're right in the sense that nobody cares that you went to college, they care about what you learned there.
    – Philip
    Aug 10, 2011 at 15:06
3

For one I think hobby projects are important, because otherwise you will stagnate and loose the fun.

My suggestion to find a new hobby project:

Learn a new programming language to do your hobby project. E.g. a good goal is to try to learn one new language per year (it gets much easier the more you know)

Best would be one that seems totaly wierd to you. Because the more alien it looks to you the more it will expand your horizon.

Also knowing lots of languages with different syntax gets you over the focus on syntax as being important when programming. It is only a sequential representation of syntax trees and not much important. This improves your focus on the semantics which is much more useful in practice.

Have you tried a functional programming language? Have you tried distributed programming languages? Pattern matching languages?

For finding small projects to work on Project Euler is very recommendable.

2
  • I would reword that slightly - use a new language to do your hobby project. Then the project is the motivation, not the learning.
    – phkahler
    Aug 10, 2011 at 17:06
  • Good suggestion, did it Aug 10, 2011 at 21:34
2

I'm an amateur web developer with no college education (yet) working on my own personal project. I was invited to my first interview for a programming job a couple weeks ago because I was working on my own personal project.

Taking this anecdotal evidence into account, working on my personal "hobby" project has been the best thing I've done to advance my career in development...after enrolling in college.

So, yes, interviewers certainly take into account your personal projects, otherwise they wouldn't have even bothered talking to me.

1
  • 1
    This is indeed good advise to everyone who have no work experience and are looking for their very first job as a programmer.
    – user29079
    Aug 12, 2011 at 13:34
2

Others have covered a lot, but I want to focus on this part:

I feel guilty for not having a hobby project, but everything I can think of doing has already been done. So I am kind of in two minds about this, start something that has already been done or leave it until I come up with something original?

It seems to me that this misses the point of a "hobby project." It's certainly true that many hobby projects are created for others, or at least with public consumption in mind -- these projects require a certain amount of consistent work over time, and can be daunting for that reason. After all, who wants to make yet another under-supported, low-quality something-or-other that ultimately gets abandoned after a couple of months?

But, there's no reason that your hobby project has to do anything useful for anyone at all. For instance, I recently started learning Haskell, purely because it's so drastically different from the imperative languages I'm used to, and it's really easy to get set up. I also just started learning the Redcode assembly-ish language, used in the programming game Core War, again out of curiosity.

This, in turn, has led me to look into creating a Notepad++ plugin to provide better syntax highlighting features for Redcode, which has led me to consider learning a bit of C++. Drawing on my comparative familiarity with .NET, I am now pondering getting myself set up with Visual C++.

And the thing is, none of this really "matters," at least not as a project. Hell, I'm not sure you could even call it a project per se, so much as a bunch of stuff I'm kind of messing with because it caught my attention. I mean, you'll need a little time and organization to make sure you actually get something out of it, but no one will care if I stop having time for Haskell once school starts.

And no one will care if it turns out that plugin development for Notepad++ is harder than I expected, and I give up -- indeed, I looked into Perl before I dove into Redcode, and I abandoned it pretty quickly because I had difficulty getting the environment set up properly. Did this show a lack of persistence? Yeah. But nobody cares, because it's my hobby, and that means I get to play with whatever I feel like.

So don't feel like you need to pick some hobby project that will teach you Marketable Skills -- that's just turning your free time into more unpaid work time. The skills come as a result of what you do, but they're not the reason. I understand declarative programming better now, and how assembly languages work, and how programs use DLLs. And I've learned a bunch of stuff about the Windows command prompt, and other things that you wouldn't have thought were connected to anything I've mentioned thus far.

The point being, find something completely new, and see if it's as interesting as it seems. If it is, great, and if it's not, move on. Have you ever had even the slightest curiosity about compilers or interpreters? Go take a look at LOLCODE. If it makes you as happy as it makes me, then it's time to start learning about compilers. And hey, maybe you should go back and think about syntax highlighting again. In fact, this will probably be the next project I start.

If that's not your thing, try something lower-level than you're used to. Or higher-level. It doesn't matter. The only thing that does matter is that when you look at it, you think "Fun!"

0

These project are a must for a serious programmer, especially if you work as a freelancer.

Instead of working 6 days a week, 1 day rest, you can work 5 days a week, 1 day for testing new theories and features and 1 day rest.

It may seem that the testing day is a waste of time, but you will recognize its benefits when you are given to implement a new feature in your programming language which you had already tested during one of those days.

0

I'm involving in interviewing and hiring at my shop. A 'hobby project' is always a plus to us.

Having a more or less finished personal project shows you really enjoy creating software, and shows that you are motivated to learn new things and improve your skills.

If you want to make a really positive impression in an interview, bring a laptop with your personal project. Show it to the interviewer, tell him about the challenges you encountered while building it, let them see your code. Tell them upfront where the rough edges are and what your future plans for the project might be.

You will be remembered, in a good way.

0

I find that programming in my spare time serves two purposes:

1) It allows me to accomplish something personally rewarding, without the restraints of work projects. This is especially important when I've been dealing with difficult and frustrating problems with my work projects.

2) It gives me an opportunity to broaden and sharpen my programming skills, as I am free to create whatever I wish.

All the same, I think it is also important to balance this out with some non-computer hobbies. For me, it's maintaining the creek and trails behind my house.

0

Having a pet application is a great way to force yourself to learn parts of your current platform that you may not have thought about. For example, you might be a great C# developer working on an ASP.Net application at work. But if you have a guy on your team dedicated to CSS, you might not ever learn it properly. However, if you have a pet web project, you will have to learn how to do CSS. This is true for a whole host of technologies that you will run into if you have your own project where you are the sole developer.

For a great write up on all the benifits of pet applications, check out this post.

Not the answer you're looking for? Browse other questions tagged or ask your own question.