Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

A lot of blogs and advice on the web seem to suggest that in order to become a great developer, doing just your day job is not enough. For example, you should contribute to open source projects in your spare time, write smartphone apps, etc. In fact a lot of this advice seems to suggest that if you don't love programming enough to do it all day long then you're probably in the wrong career.

That doesn't ring true with me. I enjoy my work, but when I come home from the office I'm not in the mood to jump straight back onto the computer and start coding away until bedtime. I only have a certain number of hours free time each day, and I'd rather spend them on other hobbies, seeing friends or going outside than in front of the computer.

I do get a kick out of programming, and do hack around outside of work occasionally. I'm committed to my personal development and spend time reading tech blogs and books as a way to keep learning and becoming better. But that doesn't extend so far as to my wanting to use all my spare time for coding.

Does this mean I'm not a 'true' software developer at heart? Is it possible to become a good software developer without doing extra outside your job? I'd be very interested to hear what you think.

Update: thanks everyone for your comments & answers. A lot of good thoughts and advice!

share|improve this question
132  
I think that just makes you more normal, you probably have more connection with what us geeks call "real life". Value that. –  Orbling Feb 16 '11 at 23:55
145  
@Orbling What's this "real life" you're talking about like? Is it similar to WoW? Does it run on a 64 bit OS? –  biziclop Feb 17 '11 at 0:07
18  
@biziclop - Its like WOW with better graphics and game play that is a lot more tedious. –  ChaosPandion Feb 17 '11 at 0:11
39  
@ChaosPandion: Quests suck in r/l, long, dull, and the loot is definitely not epic. –  Orbling Feb 17 '11 at 0:20
6  
+1 for going outside. –  jprete Feb 17 '11 at 1:20
show 17 more comments

29 Answers

IMO this attitude comes from people that have horrible, soul sucking jobs, combined with piss-poor time management skills. If you're basically typing web forms all day, go out and get a more challenging job, or start your own.

Here's the thing. A concert musician (cellist/pianist/whatever), will practice at most 6 hours per day. Most only practice a few hours per day. at the highest levels

People say program more because you learn more, but that's a smokescreen. 8 hours per day is plenty.

Progress is NOT linear. It's logarithmic:

enter image description here

The only reason that a musician might practice longer than 3 hours, is that they need to squeeze out the extra 1% that those hours gives them. If you think that applies to you, re-solving a problem CS solved 2 decades ago, then you have a prima-donna complex to boot.

I've worked in pressure cooker companies before, and trust me, the actual amount of work that those guys get done isn't any better than a company like 37signals that places constraints on the amount of work: http://37signals.com/svn/posts/996-why-i-love-working-with-family-people

What ends up happening is that sure, you may be in front of a computer for 10-12 hours, and in the office for 2 more, but that doesn't include the 90 minute lunch you took, the 2 hours you spent browsing discussion forums, and the hour break you had to play one of the many games laid out in the office (foosball, pool, yada...).

Look back at that graph. Now back to me.

Your mind actually has the opportunity to expand much more if you engage it in some other activity: Learn to play an instrument. Learn a foreign language. Better yet get out and get some exercise, and connect with real live people.

On the logarithmic nature of productivity:

In the renowned 1993 study of young violinists, performance researcher Anders Ericsson found that the best ones all practiced the same way: in the morning, in three increments of no more than 90 minutes each, with a break between each one. Ericcson found the same pattern among other musicians, athletes, chess players and writers.

For Real Productivity, Less is Truly More

This is actually a well-known principle in the business world, I'm surprised more programmers haven't heard of it.

Update: More on the Ericsson study.

The whole notion of it taking 10,000 hours / 10 years to become proficient actually comes from the studies done by Ericsson, not from Malcom Gladwell.

As we all know, you can have 1 year of experience repeated 10 times... so just having your ass in the seat for 10 years doesn't qualify. What does qualify is what Ericsson calls deliberate practice.

He has found this principle to hold true in athletics, music, writing, chess, and mathematics. He further defines deliberate practice as being so effortful, that even at the highest levels you can only put forth about 4 hours per day. Otherwise you will suffer from overtraining or burnout. Again, he recognizes that there are diminishing returns for deliberate practice, up to about 4 hours.

On the subject of not having a good/challenging job:

Hogwash. Either get a better job, or here's an idea: Make your current job into something it's not, at least right now.

One of the best programmers I knew walked into a job as a maintenance programmer on a legacy system that consisted of dozens of programs and hundreds of thousands of lines of code. Most of which had been hacked on over the years so much that you would have to say there wasn't any coherent design to it anymore.

This was pretty much a go-nowhere, dead-end job. Management wanted you to keep your head down, and just fix the damn bugs. The good developers were working on the greenfield project. People either came here to sit out their remaining days until they retired, or gain a few years of experience before going on to new application development. Whereas most programmers would complain about the lack of career development, or the opportunity to learn new things, or not having exciting projects to work on, or more generally just bitching about no one enabling them, this guy simply sat down, and went about doing the work that needed to be done.

And over the course of 2 years, he had transformed that system from a buggy hell of spaghetti code to something that was a thing of beauty and functioned like a swiss watch. So complete was the transformation, that the VP of the division started paying more & more attention to the existing project, and started questioning the value of the greenfield project. Although he didn't have a title, the operations people went to him as the de-facto leader of the group. When I left, the VP was talking about creating a new role for him as a systems architect...

I'm not sure what happened to him after that, but he taught me a couple of very important lessons:

  1. Your job is what you make it, and there's interesting problems to be solved everywhere. If you hate writing CRUD screens, solve the problem by automatically generating them.

  2. Don't sit around waiting for opportunities to come to you. Chances are they never will.

share|improve this answer
28  
This, and many other answers, put far too much emphasis on programming as "practicing". To continue on the musician comparison, believe it or not but they actually also play for pleasure. What interviewers looking for someone who programs in their spare time are looking for is not someone who feels the constant need to practice all the time. They're looking for someone who is passionate and really enjoys what they do. If you're passionate about your job, you often turn it into a hobby as well, and it's hard to get away from it. It's no different from picking up any other hobby. –  Phong Oct 13 '11 at 17:51
6  
The musician's example is not really good. When a musician reaches a high skill level, when he has learned all the theory, when he can compound songs with eyes closed, when he can play over 9000 instruments at the same time, he has nothing more to do. The programmer or computer engineer needs to learn about new technologies ALL the life. Always there's something new to learn. So, answering to the question, a guy that programs all the day and has no social life is far better than a guy that does not program in his spare time. –  user49943 Mar 18 '12 at 14:54
2  
@GabrielLlamas The music theories are basic things such as fundamentals of algorithms, distributed computing, and operating systems we learn in college. These basics doesn't change that much overtime. Back in about 20 years we already had the model of client and server, and now we still have the model of client and server. So the basics of client and server still applies, it's just the high level things are changing rapidly. You can think of different instruments as different technologies such as HTML, Javascript. But if you are able to apply fundamentals, then things will be similar. –  David Gao Aug 29 '12 at 3:30
1  
Another example is like once you know how to program in c, learning c++ won't be difficult. I remember I solved my roommate's programming questions using Scheme without knowing any Scheme. Learning Scheme wasn't hard for me at all because I know on high level, what a functional language was. –  David Gao Aug 29 '12 at 3:34
show 5 more comments

To answer your question: No, it doesn't make you a bad developer.

However, it might make your professional life down the road a bit harder. If you've got a job where you're constantly learning new technologies that will help you further your career path (whether that be promotions at your current job or new jobs at different companies), well then you're set.

But if you're currently working at a company where the technology used rarely changes, then in 2 or 5 o 10 years you might find it hard to get that next job. If you're coding at home with new technologies and have something to show for it (app, website, open source project, etc), then you'll find it much easier to get that next job.

Of course, you might be completely happy doing the exact same thing for the next 40 years, and as long as your company and the technologies continue to exist, then you're set!

share|improve this answer
add comment

The real question is what you are doing all day. The analogies to athletes and musicians are usually not applied correctly. Your day job is not practice, it's performance, unless you have the explicit ability to spend part of your work day in genuine "practice". How do you know? If you never have the time to do anything "right" or learn a new language/technology/framework/etc thoroughly, then you aren't practicing, you're performing. Professional athletes and musicians don't get better during the game or the concert, they get better during focused practice. So, if you're like most, the only time you have for genuine coding "practice" is outside work. That being said, it's only worthwhile if it's focused. If you hack all day and then hack all night, you just get tired, not better.

For example, you need to optimize a piece of code at work and you throw the usual profiling tools at it and speed it up maybe 50% and move on to the next task but you think there are other things you might do that would help even more but you don't have the time allowed to try them. If you take that piece of code home with you and spend a few extra hours really wringing it out, you are learning techniques that make you better the next time you optimize something. You aren't doing the same thing at home as at work.

Practice is about adding skills and honing skills and those activities are necessarily done in an artificial way (it's like isolating a muscle group in the gym, nobody does that in normal physical activity). Building apps at home is not automatically practice. The work at home should focus on the techniques and the process, not the end product. If an end product is what you need to be motivated, great. Just don't fall into the trap of developing it the same way you do at work.

The coding kata movement is an example of what practice is all about.

share|improve this answer
add comment

No, it doesn't make you any less of a programmer than anyone else. You're just more social. I'm envious to be honest.

You don't have to use all of your spare time to write code. My job is pretty simple: server management. I write a lot of code because I don't have to do a lot at work. That doesn't make me better or worse than anyone. If you're passionate about programming, why not do some freelance work? I often put up Craigslist ads for my services and make a good amount of money off of it. It's also a great learning experience since you'll be working with startups and sometimes even large websites. Hope this helps. :)

share|improve this answer
show 1 more comment

Is it possible to become a good software developer without doing extra outside your job?

It's depends on the industry you're working in. Some are more competitive than others.

If you don't like to learn new stuff on your own, you're likely to stay at your current skill level. That's may be enough ... or not.

It is not about the time dedicated, it is about curiosity, and a thirst for knowledge and mastery. Obviously, it has nothing to do about staying up to date, it is about fundamental -often hard- stuff : compilers, monads, memory architectures, etc. Things that stretch and expand your brain.

Wanting to Code at home is just an important side effects. But don't underestimate it, without doing, learning is often shallow.

All the best dev I know have theses traits.

share|improve this answer
add comment

If have a job that provides you a completely engaging intellectual experience, chances are that's going to be your mental life -- outside work is for blowing off steam. If your job doesn't engage you, you're much more likely to find intellectual satisfaction after work hours. That's true in any business, not just coding.

Coding in an office saps your creativity, period. At least 8 hours per day, your mind is doing a continuous sprint on someone else's behalf. It's normal to come out of that and not want to get back on a computer. When I worked from an office, it was the same for me -- I'd get home and only want to cook, or go see a movie, hang with friends or just zone in front of the TV. Then from 2001-2004 or so, after the company I worked for tanked and I cracked up, I dropped out and drove a taxi and waited tables. That's when I really started coding in my off hours.

The truth is, I don't think anyone has more than 8 hours a day worth of high-quality coding time in them. A lot of coders only have 2-3, but they might be the most efficient people out there. It's just how you use it, how you spread it out.

share|improve this answer
1  
You've never been around OSS developers much, have you? When coding becomes a passion, you sometimes want to be at it for 24 hours at a stretch. –  Martijn Pieters Nov 19 '12 at 11:36
add comment

During the day your programming is short bets. There's money to be earned, you know exactly how much and what for, and you don't have a lot more to gain than a paycheck.

At night you're working on long bets - crazy ideas that will mainly not work at all. These are the projects that will catapult you out of the rank and file. This is how you become the inventor of PHP rather than the code monkey using it.

I interview lots of programmers, and whether they have done interesting oddball things outside of working hours is an instant green light. It's surprisingly rare.

Though I will say this: there was one time a guy who did a lot of cool stuff outside of working hours turned out to be a total dud of a hire. I'm still stumped by that guy.

share|improve this answer
add comment

The real issue is whether a new developer is coding enough (on challenging enough problems) to get through a few hundred thousand lines of practice code and become a decent programmer.

This can in theory be done at work, or on your own time, or both. Practice does have to be somewhat self-directed, so you can learn what you need to learn. That means work that's a little flexible.

Lots of times entry-level jobs are a bunch of bug fixing or other work that isn't going to teach you to be good. What you need to do is write a lot of code from scratch, and that code will probably be bad. It's hard for employers to pay for this. That's why people end up doing an open source project on the side or launching a startup or whatever.

When people say you have to program in your spare time, I think it really means that you have to power through years of meaningful practice early on. You have to do whatever it takes to get the practice and learn to write and maintain a large codebase from scratch. If nobody's paying you to write a probably-disastrous series of projects from scratch, then spare time is the only option.

If you already did the practice when younger and became a good programmer, I don't think you're going to lose the baseline skills if you keep it 9-to-5 later on. Later on it's more a matter of keeping up with new technology which isn't so time-consuming.

However, it's a rare entry-level job that would give you the quantity and quality of practice all by itself to become a good programmer in the first place. A new developer needs to take the initiative to learn, not just hang out in an entry-level job doing entry-level tasks.

It would be really tough to become a good programmer from scratch if you already had a family and were heavily emphasizing work-life balance. Just as it'd be really tough to become a doctor or become a virtuoso musician or anything else in that situation. There's a reason people tend to get through their thousands of hours of practice when they're younger rather than when they're older.

share|improve this answer
add comment

There is more hidden in this message.

Many enthusiastic programmers like to explore things, to experiment, to follow their ideas, that's how we learn and obtain our skills and vision.

Usually you don't get to follow your interests during work hours. You just do things you are told to do and that's it. Only few of us are lucky enough to do at work what we would do personally even if not paid.

Therefore if you're not doing anything extra, you're not developing to your potential. And that is exactly the problem.

share|improve this answer
2  
wow that's a huge relief, as sometimes i feel that i'm interested in learning about other aspect of programming but the work just makes everything feels like a grind. –  melaos Feb 17 '11 at 1:06
3  
True. One thing to be aware of is any Invention Agreements you may have signed during intake. We didn't use those, but I had a verbal agreement with my programmers: if it's outside work hours and is not directly competing with the company, then have a good time. I didn't even mind if they used company equipment, although there was general agreement that it was "cleaner" to keep it at home. –  Peter Rowell Feb 17 '11 at 1:49
3  
It fine to follow your curiosity out of hours. That might be in how to deploy the next version of windows automagically throughout your whole company overnight (Mwah hah hah). Or it might be photography, or beer brewing, or rowing. Outside interests make you a more rounded person. It does not HAVE to be related to your day job. –  quickly_now Feb 17 '11 at 8:00
5  
-1 As others have noted in other answers and comments, this implies that you can't realistically get a good, fun and challenging job. In my personal experience this is not true. I have learnt a lot of new things in most of my jobs so far. IMHO it is a question of personal attitude at least as much as that of company culture. –  Péter Török Feb 17 '11 at 10:40
26  
If you like programming and don't enjoy your job, you should spend your free time looking for a better job. –  nikie Feb 17 '11 at 11:53
show 2 more comments

You shouldnt look at it as "Does it make me a bad programmer" because like every skill more practise only makes one better.

So if you want to be better than you currently are and learn new technologies and domains that your work doesnt allow, that is where the extra effort and time spent comes in handy.

But extra time spending coding (just to prove to someone that you code extra) doesnt necessarily mean you become a good programmer unless you learn what you do and do something different or improve upon what you already know, rather than blindly cut/copy/paste and putting together hacks. Putting extra hours and doing the same thing over and over in no way do I think is going to help you improve.

share|improve this answer
show 3 more comments

I've been in on a number of interviews to hire programmers recently. I've found that the candidates who most impress me, both as programmers and as people I wouldn't mind working with, are the ones who spend a significant amount of time on NON-programming pursuits (particularly music, but also pure mathematics, philosophy and literature). To be sure, most also do some hobby programming, but they have balancing interests as well.

share|improve this answer
show 3 more comments

Does this mean I'm not a 'true' software developer at heart?

Absolutely not. It just means that you like doing things other than coding. There's nothing wrong with that, and it doesn't make you any better or worse than anyone else, developer or not.

Is it possible to become a good software developer without doing extra outside your job?

Of course. Some of that depends on what your work environment is like. If you've got a boring, soul-sucking, job that sucks up all your time and then some doing boring maintenance work, then being able to use work time to develop your skills will be very limited. If you have the kind of environment where you have some latitude to do what you want to explore and learn, then take advantage of that opportunity to develop new skills that also help your employer or co-workers out.

If you find something interesting that you want to learn more about and don't have the time or possibility to use it at work, then you have to weigh that against the other demands on your time, be they family, friends, or hobbies.

share|improve this answer
show 1 more comment

It takes 10,000 hours of effort to become an Expert in anything. [Michael Gladwell, "Outliers"]

So, doing extra work before you get to that level will speed you along the path to real Expert status.

Once you are past that level, then spending more time will have small / diminishing returns.

share|improve this answer
3  
But what is a "thing" in anything? Is "programming" a single "thing", or are the things "haskell", "lisp", "java", "python", etc? Or "functional programming", "GUI programming", "Low level programming", etc? By itself, that tell us nothing. –  André Paramés Jun 17 '11 at 10:09
add comment

It doesn't make you a bad developer, it might not even make you a kind of "ok" developer it just makes you what you are. I think though, that you'll find most people that are really excellent hackers tend to like to try to new things. At any given time I will be investigating many different languages, databases, web frameworks, robotics, etc. I have two little kids and a wife, mortgage, all that stuff - but I look forward to the times that I can get 2 or 3 hours to hack around with stuff. Sure, C# and .NET is all well and good for earning a paycheck and I actually do I enjoy my work, but messing around with Scala and Lift has been a real blast for me these past few months. There are developers who would classify themselves as "passionate" and those that are just "getting by". I tend to find that developers who constantly challenge themselves tend to advance more quickly than those that don't.

share|improve this answer
add comment

My advice will be : Use your commute time to learn stuff, to keep you informed : read IT books, listen to Dev podcast, etc. Regarding your post-work activities : doesn't change anything. Otherwise, you'll become a boring person.

share|improve this answer
add comment

This is a great post.

I would say, no, it doesn't make you a bad programmer. If your reviews have been good and you complete your tasks well and on time then you are quite the opposite. In all honesty, I am envious of you that you get your fill of the code while at work.

The main reason I program in my spare time is that I don't really care for what I do at work and I use my spare time to do what I like. What I enjoy doing is video game programming. There isn't a valid games company to work for where I live (I have a family here now) so I help out with indie games on the side when I can. It's the only way to cure the itch. If I did what I loved all day then it would be highly likely that I wouldn't do it in my spare time.

share|improve this answer
add comment

In the big scheme of things it's all about finding the right balance in life.

What's important is whether you enjoy programming and whether you keep learning no matter what level you're at. Whether or not you program outside work does not automatically make you a "good" or "bad" programmer.

To give a personal perspective, I've been programming for about 25 years (first as a kid, then professionally). I absolutely love it.

However, I almost never program outside work. This has to do with several things:

  • I am very lucky in that at work I get to do what I love, every day, all day long.
  • Quite simply, there are other things in life and there are only so many hours in the day.
share|improve this answer
show 1 more comment

Is it possible to become a good software developer without doing extra outside your job?

For me it's all about balance.

Although I love programing it is just one side of me, I have other interests. As I see this if I'm happy (doing other stuff I like doing) and I find my work interesting and fulfilling (which I do) than, on the long term, I'm on the way to become a better software developer.

P.S. I admit I haven't read all prior posts on this page.

share|improve this answer
show 1 more comment

This is indeed an interesting post. I have been developing software for the pas 10 years and love my job! I too have a lot of hobbies and try to manage them properly. But I do get a kick out of trying new things spending an hour or two in front of the pc before going to bed. In my case, I am addicted to studying and writing game code. I don't always have time playing games, but I love reading code about games. To be honest, i think the best code I've ever seen came from games and I apply these skills to my code at work. I constantly learn EVERY SINGLE DAY, so IMO, if you are a developer, you'll never reach your peak, there is ALWAYS a better way of doing something....

share|improve this answer
add comment

There have been times in my life where I did a lot of coding outside of work, and times when I did none because I was working on other things. You should always be learning, but it does not mean you always have to learn about programming in your spare time. If you want to work on some other skill, be it carpentry, needlepoint, gardening etc in your spare time it will help you grow as a person.

Just don't fall into the trap of thinking you know all you need to know about programming so you can stop learning.

share|improve this answer
add comment

Being a good software developer in heart,depends really upon your heart. You can try to be a great musician and put a lot of time on music,but still that doesnt make you a good musician.You need to enjoy what you do in order to be good in that.Initially i was having the same questions you had, but now because of my likes i have started doing the extra things on software other than the normal work.It improved my performance in the normal work and also provied me with lot of time to involve in other activities not related to software. So the base line is enjoy what you do and you will eventually do what is required.

share|improve this answer
add comment

It doesn't make you a bad developer, but unfortunately, you still have to compete with the ones who do.

Read this, from Seth Godin's Blog:


Unreasonable

It's unreasonable to get out of bed on a snow day, when school has been cancelled, and turn the downtime into six hours of work on an extra credit physics lab.

It's unreasonable to launch a technology product that jumps the development curve by nine months, bringing the next generation out much earlier than more reasonable competitors.

It's unreasonable for a trucking company to answer the phone on the first ring.

It's unreasonable to start a new company without the reassurance venture money can bring.

It's unreasonable to expect a doctor's office to have a pleasant and helpful front desk staff.

It's unreasonable to walk away from a good gig in today's economy, even if you want to do something brave and original.

It's unreasonable for teachers to expect that we can enable disadvantaged inner city kids to do well in high school.

It's unreasonable to treat your colleagues and competitors with respect given the pressure you're under.

It's unreasonable to expect that anyone but a great woman, someone with both drive and advantages, could do anything important in a world where the deck is stacked against ordinary folks.

It's unreasonable to devote years of your life making a product that most people will never appreciate.

Fortunately, the world is filled with unreasonable people. Unfortunately, you need to compete with them.

share|improve this answer
13  
Yeah, its also unreasonable to work 8 hours a day and then go home to work some more. Who are you working for? And why? You need to answer those questions (who's paying? why? to get what?) If you are mentally worn out by the end of a day the best thing you can do for yourself is - something else! –  quickly_now Feb 17 '11 at 8:04
37  
You make the assumption that developers are'nt challenged at work and don't enjoy their work. It's not true. The people who only program at work don't program at home because they are fully satisfied already –  rmx Feb 17 '11 at 10:24
8  
-1 because a) the quotes are not directly related to this question, b) IMO (most of) these things are not unreasonable at all. Lots of reasonable people can think long term as well as short term. OTOH most of us are experienced in inventing nice (and fake) rational explanations for our lazyness / incompetence / carelessness :-( –  Péter Török Feb 17 '11 at 10:34
13  
-1 It's unreasonable to call a lot of reasonable things unreasonable. It adds nothing to the question and just sounds ok, mostly like a lot of things Seth Godin writes. –  Vitor Feb 17 '11 at 13:29
5  
"It's unreasonable to expect a doctor's office to have a pleasant and helpful front desk staff." No, it's not. What's unreasonable is doctors charging what they do and then subjecting us to rude office staff, long waits in their office waiting rooms, and being disrespectful personally. –  GreenMatt Feb 17 '11 at 14:47
show 8 more comments

To answer the question posed: Not programming in your spare time does not make you a bad developer, however, programming in your spare time can make you a better developer.

Programming in your spare time certainly won't hurt your skills, but you shouldn't feel obligated to do it. Programming seems to be a relatively unique field because for many people it is both their job and their hobby, so they enjoy programming in their spare time.

share|improve this answer
8  
Programming isn't unique in having it as both a career and a hobby. A couple examples: I once knew several airline pilots have their own small planes which they fly for fun. I've known professional astronomers who stargaze on the side. –  GreenMatt Feb 17 '11 at 14:43
4  
By "relatively unique" I meant that it is one among few, but certainly not the only one. I know many more people who, while they might enjoy their job, wouldn't spend time doing when not getting paid. It is often difficult to get a job doing what you are passionate about. –  shortkaik Feb 18 '11 at 21:06
show 4 more comments

I asked a similar question a couple of days a go. It seems that people seem that we are more passionate about our job if we devote not only all our day time to it, but also all time that we have available for our personal lives.

I do occasionally write some code on my spare time, but I do it for fun, not because I intend to gain some professional growth or recognition. I applaud the people who have the energy for it, but you are more like to burn out by working longer hours and on extra projects than to actually become more expert into anything.

At the end of the day, all that matters are your ability to learn new things (especially on the job), your ability to communicate well, and having good time management skills. That you turn you into a good professional.

share|improve this answer
1  
I think you hit the key point. If programming at home is like doing extra work then it isn't going to help much and is probably even detrimental. However, most (if not all) people I know that program at home do it because it is fun for them. It just so happens that those are the same people I want on my projects because they are far more skilled than those who don't. Is programming at home the reason they are more skilled, maybe, maybe not, but I would tend to think so because they are doing what they like. Also, it is quite hard to stay current in your skills if you don't put in the time. –  Dunk Feb 17 '11 at 15:23
add comment

You can become a good programmer just coding during work, especially if you manage your career well. However, the greatest programmers code during their off-hours as well. Having said that, a person who picks good jobs with lots of learning opportunities, uses their time at work well, and so forth will be a better programmer than someone who codes at home because he can't find jobs that provide interesting challenges during the work day.

While coding at home is valuable, I would say that maximizing the value of your work environment (by learning from coworkers, picking good jobs, managing your career aggressively) is often even more valuable. The greatest programmers do both, plus have great attitudes toward learning and mentoring others.

share|improve this answer
show 1 more comment

Between great and bad there are many levels in between. You can't become a great developer by doing it only 8 or so hours a day, possibly working on problems from a very limited field.

If your job is varied enough, you can become "decent" or "accomplished" or whatever adjective you prefer, but to be a great developer you'd have to be a bit mental, I'm afraid.

Another reason for doing hobby programming is that in a job you often have to adhere to suboptimal standards and make compromises in general and even when you do learn a new thing, you might not be allowed to use it.

And yet another, even more prosaic one is that whatever code you write at work is owned by your employer. You can't return to it and learn from your old mistakes years later, when you're working for someone else.

share|improve this answer
add comment

Is it possible to become a good software developer without doing extra outside your job?

Definitely.

It may take longer than if you were to spend extra hours honing your skill. I've also found it difficult to put enough time into self-improvement if I'm employed full time and do little programming outside of work hours.

When I was younger, I put in much more time into learning than I do now. The concepts I use day to day are deeply ingrained at this point, and it seems easier to acquire additional knowledge with this experience under my belt.

"Good" programmers seem to put in the extra hours more because they are obsessive by nature, tend towards the anti-social end of the spectrum, and genuinely enjoy programming and the whole solve problems cycle.

share|improve this answer
add comment

No it doesn't make you a bad programmer. Depending on what you do it may make you a better programmer in the long run. Early in your career it may influence how fast you learn the variety of skills you need. However, you may be picking up skills and information that will help in the long term. Getting some exercise wouldn't hurt either.

There is a fair amount of research that shows performance peeks around a 40 work week. While we can be production for a period of time working longer hours, in the long run we loose efficiency. The research I have seen shows people working 80 weeks are about as productive as those working 40 hours a week.

There are a few things you can reflect on off (or on) hours that may help you perform better:

  • What are you doing? Can you do it better? Do you need to be doing it?
  • What are you learning? What do you need to learn?
  • What problems are you running into? Who is best to resolve them? What can you do?
share|improve this answer
1  
@Heiko It the work is sufficiently different then you may be able to do both. My first couple of years after graduation, I regularly exceeded 40 hours a week, but applied a wide variety of skills. Learned a lot, and didn't appear to hit the performance wall. Thankfully, I had a friend who would drag me out of the office sometime in the evening. On another project I went home at 2PM when I realized I hadn't accomplished anything in since 10AM. Still billed the 4 hours. –  BillThor Feb 17 '11 at 15:40
show 3 more comments

If I spent time in the next six months developing a basic game in my spare time and you don't, and supposing all other things are equal (they never are), which of us would know more? Which of us would have more skills and experience?

This effect would be cumulative, as earlier off-hours knowledge would feed into new work and new off-hours knowledge.

And that's why people advise to program in their spare time, insofar as I can tell.

share|improve this answer
show 1 more comment

protected by Robert Harvey May 11 '13 at 16:54

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

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