Correlation does not equal causation. Asking whether not programming in your spare time makes you a bad developer is the wrong question. The right question is, What is it about certain/many good developers that leads them to program in their spare time?
Pursue that something and you may end up programming in your spare time. Or starting a company such that your side project is your job. Or finding something really exciting to do at your current job. Or whatever. In words much older than our civilization: "Do not follow in the footsteps of the Sages. Seek what they sought."
The right question is, What is it about certain/many good developers that leads them to program in their spare time?
This is a good question, but it does lead me to a thought... why does it seem like most side projects are done by people for whom the predominance of their work appears to be side projects? Let me explain.
Most of the programmers who produce large products, don't do much in the way of side projects. Carmack seems to be heads down on Rage. I don't see a Carmack GitHub project. Nothing from Tim Sweeney either. I don't see anything from the devs that did GTA or Halo or RDR or the latest Mario game.
What about David Cutler? Linus -- he did Git, I guess a side project(?) -- other stuff? Any of the iOS architects have GitHub side projects? WebOS architects?
It seems like we have two classes of devs. Those that ship large products. Whether its iOS or Grand Theft Auto 5. And devs that ship little projects. Small startups, little tools here and there. The overlap between the two seems rather small.
why does it seem like most side projects are done by people for whom the predominance of their work appears to be side projects?
It's easy to see why most side projects are done by people for whom the predominance of their work appears to be side projects: This is a trivial consequence of the fact that the vast majority of the software developed on this planet is "dark matter." It's developed inside companies, and even if you know I work for IBM on DB2, it's hard to see from the outside whether I'm a coding machine by day or whether I write emails from 8-5 and code side projects from 5-8.
In the universe of software projects, we're mostly talking about side projects that are visible things like Github repositories, and mostly talking about day gigs that are invisible. If we want to drop the word "appears" from your first statement, we need to include side projects that aren't on Github (like startups being developed on nights and week-ends while the authors go to work "for the man" M-F 9-5).
We then need to compare all of the side projects to all of the code these people write during their day gigs, whether it's highly visible stuff like Linux or "invisible" like the internals of an ATM locator for an online bank.
If we don't include all of the side projects and we don't include all of the day gigs, it is very easy for our skewed sample to have many examples where the authors appear to do most of their work on their side projects.
Please don't assume from this that I disagree with where you seem to be taking the conversation. If we see that things are not always as they seem, we also must accept the idea that even if people with side projects appear to be good programmers, it might be that the high-profile examples we find on HN or who blog are not representative of programmers as a whole. It is very dangerous to draw conclusions about the correlation between a side project and talent based on an incomplete sample. I think we agree on this here and in another thread elsewhere.
As they say... The plural of anecdote is not "data."
If we don't include all of the side projects and we don't include all of the day gigs, it is very easy for our skewed sample to have many examples where the authors appear to do most of their work on their side projects.
Absolutely -- I think that's where I was trying to go, but not as eloquently. If you look at the thread, I define "side project" in, what I consider, an odd way. Basically something that is on GitHub, because that has become what so many mean by side project.
In a roundabout way I was trying to say that people learn and grow in ways that are less visible. And while others may question your programming skills as a result -- you shouldn't.
I'm not sure you can count those as side projects (the games, not the aerospace company, which is a side project -- but it is an actual company!). Those are products shipped by some of the biggest publishers in the world.
That would be like someone at MS saying that their side project was a new feature in Word.
Wolf3D for the iPhone was supposed to be programmed by a different team. He simply found it to be a poor port when they presented it and wrote his own version in a couple of weeks. Seems like a side project to me, regardless of its distribution.
But that's not how a side project is typically defined. Again, if I did a new feature in IBM DB2 that took me a day, would you consider it a side project?
The issue at hand is if someone doesn't program in their "spare time" or have "side projects" are they a bad programmer.
So what is a "side project" and when people ask you questions in an interview like, "what are some of your side projects?", what are they asking?
They're not asking what did you ship as part of a corporate entity in most cases. They want to know, specifically what did you do outside the context of your job. If you work for EA, its hard to claim that an EA game is your side project. Just like someone at MS isn't likely to claim that a new Word feature is their side project, even if they did all the coding for it over the weekend.
And if he ported Emacs to the iPhone that would be a side project, by most measures. He'd have to release the code since its GPLed and ID is not likely to sell it.
Linus cooking up Git - that's not a side project; that's what he does for earning a living. They needed Git as a replacement for BitKeeper. I do admire Linus, when he sets his mind on something, he gets things done.
But, about people working for big companies, since you are talking about iOS / WebOS, etc... these people do many times have side projects, but they are internal and in the context of the company they work for, not public. And the cool thing about a big company (versus a startup) is that deadlines are more relaxed (you do have more free time) and you can switch projects when bored to death.
Git is Linus's real job? Slacker. He needs to do an HTML5 app some weekend, and put it on GitHub, to show he has actual dev chops.
these people do many times have side projects, but they are internal and in the context of the company they work for, not public
I don't think most ppl would consider them side projects, at least not in the discussions ppl typically have. For example, I've seen people say that it literally has to be on GitHub.
It seems like your point is that if you have side projects, your job is probably not hugely fulfilling. I can sort of go along with that, but that's going to be true for the overwhelming majority of jobs. For every Carmack or Linus, there's hundreds of developers doing necessary but unglamorous and non-cutting-edge work like B2B SOAP services or SAP integrations or yet another J2EE storefront. It's not reasonable to expect that most intellectually curious developers will be satisfied with their day jobs.
Side projects are not a matter of "having an unfulfilling day job". A side project is simply scratching an itch.
That itch could be something that bothers you, or it could be simple curiosity.
I have a very fulfilling day job (I'm a co-founder of an awesome startup, which makes it more of a fulfilling day&night job), but that doesn't mean I won't explore other things, try out new technologies, find something that sucks and make it better, latch onto an idea and build it while thinking "how hard can it be?" (Answer: it can be VERY hard)
Side projects are an outward expression of people who are hopelessly creative and just can't help themselves. The CONTENTS of those side projects demonstrate how organized, focused, and disciplined they are.
"The right question is, What is it about certain/many good developers that leads them to program in their spare time?"
I think there's another way to look at this.
The fact is, programmers who program in their spare time are usually better than average (). That doesn't mean a programmer can't be just as good if he/she doesn't* program in their spare time. It doesn't even mean that programming in their spare time helps these programmers get better, or that better programmers tend to program in their spare time. It's the other way around - programmers who program in their spare time tend to be better (and one direction being true doesn't mean the other direction is true).
The only reason people care about whether others program in their spare time, is because this correlation exists. If I know someone programs in their spare time, that's a positive signal that they are a good programmer. And it's a perfectly legitimate shortcut, when interviewing someone, to see whether they're good. People take offense at the suggestion that they're "worse" because they don't program in their spare time, when in reality, it's just a shortcut.
* I think most people will agree, at least in terms of averages. Nothing about any particular programmer.
Pursue that something and you may end up programming in your spare time. Or starting a company such that your side project is your job. Or finding something really exciting to do at your current job. Or whatever. In words much older than our civilization: "Do not follow in the footsteps of the Sages. Seek what they sought."