I don't program in my spare time. Does that make me a bad developer?(programmers.stackexchange.com) |
I don't program in my spare time. Does that make me a bad developer?(programmers.stackexchange.com) |
When I'm interviewing people, side projects (especially successful ones) are _strong_ signals of a candidates value as a good programmer. This doesn't mean I won't want to hire someone without side projects, but candidates having them 90% of the time are very strong.
For example, the programmers that http://www.fastcompany.com/magazine/06/writestuff.html talks about are neither (at least not when on the job). They do have a strong desire to get better, though.
But it's more complicated.
You are not supposed to do programmng all day long, but ifbyou don't feel a need to expand beyond what you do at work its one of the following:
1) you work is so great and diversified that you simply get all the programming you could ever need. For most people it's not the case 2) you are already extremely great. I think Linus probably doesn't need to learn yet enother language/framework (although I wouldn't be surprised if he does sometimes). For most people it's also probably not the case 3) you just don't like it that much
For most people that don't program at home (3) is probably the reason.
If you enjoy programming as a job, then in your spare time you allow for tech, take the time to read a couple of pages here and there. If you don't read or get exposed to other talented programmers/architects then yeah, you are destined to be a bad developer!
Also, a few months ago I quit my job and I'm now making a living teaching people what I've learned during my "spare-time". I now have more free time than I could ever imagine, and the notion of spare-time is starting to disapear.
I'd like to learn 3d, develop simple games, learn new languages and algorithms while still working on the startup product and maintain my corp job. Do you think it's possible?
It's possible to have 'successful' side projects, if you define success as simply not failing.
It's not possible to have a runaway success like Minecraft while you have a day job, though. It takes too much of your time to keep it going.
As for learning, you can learn anything you want. Just go to it.
if your work is drudgery where you are maintaining old stuff and it isn't helping you keep your skill set current, then you should be programming in your free time as well.
Yet the quality of your work has nothing to do with the time you spend on it. Quality over quantity, as they say.
Either way, there is certainly some benefit to be had in being passionate about your work and in keeping on the bleeding edge of technology.
That type of person will always be reading and writing code and solving problems. Spare time and work time all blurs if you are focused on a problem.
good programmers do not have friends :)
and by the way do not forget to meditate on sarcasm, always make the other feel bad for being alive.
Regarding your post though, i think that no one is assuming extremes - you can easily manage a few hours a month to do some mad science experiments. You might even surprise yourself with the outcome or renew your passion that made you take up development in the first place.
You also don't always get the full perspective in your day job - even if you work at an amazing place.
Development isn't a music skill. It isn't about repeating a piece over and over to train your mind, motor skills, and dexterity until you can reproduce it perfectly.
Every day people are pouring tons of new and interesting ideas into this discipline and more often than not, they have excellent ideas which can be shared and studied to your benefit. Take advantage of it.
Example: I probably need to sit down and actually practice, over and over again, certain Regex concepts, because I need them at hand immediately.... which is what habit does.
Good programmer code if for satisfaction, contributes to open source, /., HN....
And a lot of them are good at what they do.
Could you elaborate?
Indians look at programming as a great way to make good money. And a way to move up to management after that. Thats about it.
Anyone who does less programming that what is mentioned above cannot call himself a "good programmer", I would have serious reservations in calling that person even a mediocre programmer.
Funny story - Bill Gates' first question to his wife was said to be "What was your math SAT?"
You should already know Haskell (and ML), and be writing your own research language.
When you're 30 and you're seeing the same thing with a new name for the 2nd or 3rd time it takes a lot less effort and time to keep up.
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."
Practically, you may be totally happy in your current niche, but you're at higher risk from technological obsolescence unless you diversify.
This is as much an argument for '20% time' as it is for programming at home.
Does this make me less of a mathematician? Of course it does. This is a tautology. I am a mathematician to the extent which I devote my time and energy to learning and doing math.
Sometimes I feel guilty about this, but on reflection, this is a sacrifice I am willing to make. We only get one shot at life, and we have to balance all of the activities we find valuable.
I once heard the terms "T Person" and "I Person" as ways to represent a person's skills (though I don't find any info on it with any Google searches; maybe I'll write about it someday).
An I Person is someone whose skills are very narrow (vertical). This person is a specialist and probably spends the majority of his/her time perfecting that skill.
A T Person is someone who also has a predominant skill, but it's perhaps not as deep as an I Person. However, a T Person has a horizontal bar that stretches across a range of skills.
I don't recall hearing about a "- (Dash) Person", but if I were to continue this analogy, that would be a jack of all trades, master of none.
Society needs all types of people, but I suspect T People are especially desirable in a startup. You want a person who can do a little of everything, but excels in one particular area.
EDIT: Found a reference to this concept - http://en.wikipedia.org/wiki/T-shaped_skills
I disagree. Burn out is a real thing and once it happens your capacity is drastically reduced. I suspect you've probably found the maximum output you're capable of producing long term.
-------------
Just about sums it all up
Using this as a way to compare different people, on the other hand, is foolish. Just spending time coding is going to do little to improve your skill assuming you're past the stage of just starting out. It's how much you're challenging yourself, and how you handle that challenge that makes a difference.
At that point, I realized that making a distinction between a hobby and a career path is a good move, and you have to know what you are pursuing. For example, I tinker with arduino in my spare time, as a hobby, and I don't intend to sell or make money off anything I make with arduino. There is nothing wrong in learning, say, Ruby in your spare time because you know that it will come in handy and that you could make money with it. But that's not a hobby.
Doing iPhone development (among other things) is my full-time job, and I am loving it -- mobile app dev was never my hobby, but a career choice, and I'm ok with that because I am happy at the place I work.
in my experience the people who say "you have to have side projects to be a good developer" are either people who do program in their spare time, or people who want to hire the type of programmers who voluntarily chain themselves to their desk.
this is one myth i'd really like to see die. good accountants don't balance checkbooks in their spare time, do they? lawyers don't hold mock trials, doctors don't do surgery on their friends as side projects, and construction workers don't pour concrete for kicks on the weekend.
Programming outside of work indicates that you like programming. If you are bad at programming you will not like programming, as it will be frustrating.
It also indicates that you are reasonably smart, probably get bored watching television, and are at least a little intellectually curious. If you are specifically programming something 'fun' to unwind after a long day of work, you are clearly comfortable programming, and you have interesting (enough) ideas about what to program.(It also indicates that there are no decent pubs within walking distance).
If you are programming in your free hours because some guy on stack overflow said 'this is what you must do to be the greatest programmer,' you are probably an idiot. No amount of outside work programming will help you.
Why do you think there are so many designers in bands? Hell, Feynman took up Samba.
So, do you have to program for joy to not be a bad developer? No. But if you don't love what you're doing, it's unlikely you'll ever be great. People who are the best at anything reached that point through a combination of natural talent and vast amounts of work. Chris Broderick ( http://www.youtube.com/watch?v=xkpZ645ztl0 ) wasn't born this way... when everyone else was hanging out with high school buddies or going to college, he had a guitar in his hands 4-8 hours a day. Loving what you do is more powerful than desiring the rewards. If you love what you do, learning to do it better can feel effortless.
On the other hand, having a passion for a topic to the extent that it consumes your work and personal time isn't always a good thing. When you do it in lieu of things friends, a romantic life, spending time with your children or simply resting your mind, you may regret that later on.
I've worked with a large number of people at a large number of companies, and the difference between the solid "B" developers and the amazing "A" developers is that the amazing developers are passionate about technology and coding, and always have a side project of some sort going on. They are excited to learn new languages/frameworks/ideas and bring that added knowledge to their day job with great effect.
when I finished uni and got my first job, I was back in the position of being given boring menial tasks and I programmed in my spare time for fun again. I left that job for something a lot more interesting and was quickly given enough responsibility that at the end of the day I didnt feel like programming so I didnt. After a few years there I'm on top of things at work again and I'm back to coding for fun in my spare time again.
I dont think that not coding in your spare time is a sign that you're a bad developer; it's more a sign that you're getting enough mental stimulation elsewhere. That said, I think if you've never coded for fun it's possibly a sign you're in the wrong career. You should love what you do enough that you'd do it even if you weren't being paid to do it; not necessarily the exact same work, but at least the same domain. No point spending 1/3rd of your waking life doing something you dont enjoy
Github (and the like) are becoming prerequisites. You should have a portfolio of personal code you've done that you can freely share. Stuff you are proud of and passionate about (or not so proud of, but are deeply interested in) and stuff you want to learn more about.
Would you hire a wedding photographer without seeing personal samples and talking to them about their interests and opinions on how to photograph your wedding? You'll interview a slew of photographers who just do it to make a buck (and that comes through very clear), but you'll also find a few guys (and gals) who do it with a passion.
Now I have a fiancee and we live an exciting new city (Brisbane, AU).
I've just outgrown it. I think both ways are normal. However, the dude that doesn't program during the day and yet paid to do so IS WRONG... Whoop, that would be me. Back to work!
So try follow your passion. If your passion is to write a novel, play guitar, do that. If your passion is to build a new web app, do that. Don't code just for the sake of coding. You cannot lie to yourself.
That's not to say that it is bad for people who do it, just try to expand your hobbies to something outside of technology.
The way I see it, the ultra-passionate, sleeps-eats-drinks code programmer is usually one who hasn't: a) learned to use his time parsimoniously; b) accepted there's a limit to how much you can do in one day; c) yet built a family. The last one, especially, if approached with gusto, will automatically make you ponder and weigh things -- and will also limit your time, fixing a and b if you don't fight it.
People are allowed to have more than one hobby. And I'd think that if your paid job is writing and maintaining boring internal enterprise apps, hacking on fun projects could prevent you from getting burned out.
But if your work gives you restricted oppurtunities to try new technology, or burdens you with outdated tech and boring work, working on a side-project can reignite your enthusiasm in programming, which can never be a bad thing for your career.
Also, theres nothing to say you need to spend huge amounts of time on a side-project, maybe a few hours a month just to try a few new things. Sure, you won't become an expert in those things, but you'll get a feeling of what it's about.
And choose something fun to inspire you, nothing is more mind-numbing that coming home to work on a side-project that actually bores the hell out of you.
The other thing I recommend is to do the kind of programming that YOU enjoy and NOT the kind of programming that you think is necessarily 'important' or 'difficult'. All you need is that ONE opening, that ONE gap into accessing the joy of programming.
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.
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."
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.
1. http://git.kernel.org/?p=linux/kernel/git/torvalds/tracker.g...
2. http://git.kernel.org/?p=linux/kernel/git/torvalds/pesconver...
3. http://git.kernel.org/?p=editors/uemacs/uemacs.git;a=summary
Annoyingly enough, he has the same day job as me. My side projects don't get used across the internets :(
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.
Automation of deployment or some menial task, sanitizing test data, gleaning statistics from a csv dump of the database, cron jobs, etc... I'm sure you could come up with more.
Pfft.
Any semi conservative workplace, anywhere: "What? No, who the hell would maintain it? Stick to <tools of choice>."
Although I like to think I'm a bit cooler and down with the times and the hip words the kids use would probably say something like, "So help me god, if I have to learn Erlang at three in the morning to fix some bullshit you cobbled together I will fucking end you".
Ok,it's menial.
We spent 95% of our time fielding calls from users (no first line, management's bright idea) and fixing bugs on old legacy code (vbscript when everyone else was on C#).
There were some developers who got a lot more support calls done than the others.
And then there were some developers who would refactor the code, write tools and other little programs and upgrade the in-house support system to make everyone's life easier and quicker to fix the bugs, learning while they did it.
It probably won't surprise many that those two sets comprised of exactly the same developers.
For the same reason that a developer can produce something using a new technology on spare time, the same developer can pick up a new technology, at work, in a brief period of time.
In other words, I think it's largely B.S. to talk about 'obsolete' developers. You could only be obsolete if you entirely forgot how to learn, which I think is impossible, barring something like singularly maintaining the same COBOL system since the 70's.
On the other hand, I think a hobby that could be something more is totally legit. For instance, I am learning Haskell as a hobby. I'm not really sold on it as a great language for business (yet), but I realize that if I get good enough at it I may be able to shift my career in that direction.
To answer the original question you were asked: If that happens I'll get a new hobby.
There are days of frustration, sure - but those pertain more to the business aspects of "monetizing" this hobby (such as dealing with clients when doing contract work), than to the art & craft of the hobby itself.
I don't think a hobby necessarily has to be less enjoyable just because you've made it your job.
This may be true in some rare exceptions. However, hobbies have no deadlines, no schedules, no management, no commute (ok, maybe not if your hobby is somewhere else), no feeling of "I have to do this", etc. All these reasons take away from the pleasure of doing your hobby, add to your stress -- which is the whole point of having a hobby in the first place, to take your mind off of stress of daily life.
So yeah, don't go home after work and write Hello World or re-implement bubble sort yet again. But do keep up with developments in your craft. If you don't have this opportunity at work, hopefully (for your own sake) you still do take the opportunity outside of work. Software changes so fast that most don't have time during work to keep up. If you let your knowledge get too out of date, your value diminishes rapidly. I think this speaks for a need for more work-sponsored learning opportunities, whether that's courses, conferences, or Google-style 20% time.
Personally, I wouldn't want to be operated on by a doctor whose knowledge of surgery stopped in 1960.
Just my two cents: I don't see programming in my spare time as, well, just programming. I see it mostly just as a tool that helps me with my hobbies. I like to read history very much, especially about my city, then why not build a heat-map based on the constructions years of its buildings? (thanks, gheat! http://code.google.com/p/gheat/). And how to get said constructions years? By just writing a small Python script that parses some big real-estate agent website.
And you can do the same thing if you like sports, going to the theater or if you like Medieval history (I have a home-project for each one of these domains). And while you're at it, why not learning a new language/technology when trying to implement them?
I can't speak for developers but almost all of the best designers or creatives I know experiment a lot outside of work. Myself, I do interactive side-projects all the time as I can execute sites that I would simply not be able to do in my full-time job.
Regarding medicine: My Dad is a doctor and spends a lot of time outside of work reading dense materials about certain diseases or findings, which is definitely not light reading nor recreational. I also have had friends who've volunteered their medical expertise to aid the homeless or less fortunate.
My father was a contractor (now a building inspector) and over the last 20 years he has rebuilt his house one room at a time.
He gets excited when a new dumpster is delivered so he can start tearing another room apart.
> good accountants don't balance checkbooks in their spare
> time, do they?
How much did balancing checkbooks changed compared to that of 20 years ago? > lawyers don't hold mock trials
IANAL, but I assume a big part of lawyers work is that would be considered "side project" in programming, namely going through different cases and looking for stuff that can be useful. > doctors don't do surgery on their friends as side projects
Doctors don't experiment easily on one hand, and on the other hand, if I am not mistaken there is some mandatory training once in a while to ensure that doctors are
informed of the latest best practices in the field. > construction workers don't pour concrete for kicks on the weekend
Are we talking about code monkeys there?The thing is: software development is still young and evolving field. Unless your employer sends you to the training courses, conferences, and has some kind of "20% for own project" rule the side projects is pretty much the only way to learn new things and experiment.
No, it's not restricted to programmers, although continuing to focus on honing work does seem to be far more prevalent in the creative professions.
By contrast, a software developer who codes recreationally for 5 hours a week, 50 weeks out of the year, is spending 250 hours per year coding outside of work. That's 10 times as much "continuing education" as the physician. If 10 hours per week, that's 20 times as much as the physician.
Of course, a good doctor probably reads medical journals in addition. But a good developer reads blogs, websites, SO, HN, etc. as well.
So does a software developer really need to spend 10-20x as much time as the physician in continuing education in order to be considered "good"? Why?
To look at this another way, a developer who wants to structure their life to match a good, passionate physician, would probably:
- Work 45-55 hours per week (and be on call for occasional emergencies) - In the evening/weekend, spend some time reading blogs, journals, books on programming languages and software development, etc. - Go to one week-long conference per year (e.g. WWDC)
And that's it. No github account. No contributing to open source.
Yet there are apparently a great many people on HN who would not consider the above developer to be good, who would not hire such a person, and would question their devotion to the profession.
But does a developer really need to spend 10x the time a physician does in continuing education in order to be considered good?
I don't actually think not programming in your spare time will make you a 'bad' programmer, though. Only that being interested in it hobby-wise is a good sign. Practice helps you get good at anything, for one thing, and keeping up with the industry/etc is a big deal.
I've worked for a law firm, they get round this problem by not giving their lawyers spare time if they can help it.
It's not that you won't be a good developer if you don't work on side projects; it's that as compared to anyone your own age who codes in their spare time, you're going to have less experience. You'll probably be way better at the guitar, or taking care of your dog, or whatever else you're doing instead of coding, but they'll be a better programmer.
Sure, the more time you spend practicing, you will likely be better than had you not spent that time. But to compare it across people is meaningless. There are countless numbers of those who have spent decades in the grind and aren't much better than they were when they started. Compared to someone fresh out of college who can code circles around most.
Experience itself means little, if anything at all.
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.
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.
I have hobbies outside of my "job" too, and perhaps sadistically, I give myself schedules & deadlines there too. I feel that if I do this, I can keep myself on track and even record my progress to a certain degree. I tend to get great satisfaction in a completed project, hobby or job. And I find the pressure of a deadline gives me this strange "high" - kind of like a runner's high - right before I hit my deadline and/or complete the project.
I totally hear you though. I can certainly understand how such pressure can totally take the joy out of a hobby for most people. And I never try to force anyone on my teams to think or behave this way, unless they naturally do already.
Investing in my skillset on my own time with my own rules is an investment in me. I don't particularly care if it makes me a better programmer - it's a contingency plan to make sure I can support my family in both good times and bad.
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.
PS Would that work?
This is actually true of software engineers as well. Sometimes you can convince management/clients. But you may have a hard job on your hands because people have come to believe that this sort of thing will be done on your own time.
Doctors do not blindly apply "stuff that is created by someone else". For the most part, they use known techniques within the context of each individual patient and each individual ailment. The techniques are mere tools, used to diagnose and treat cases. Some cases are routine, but some others are really challenging.
Programmers, not surprisingly, use known techniques writing the context of each individual project and each individual requirement. The techniques are mere tools, used to design and implement projects. Some projects are boring, but some others are really challenging.
A minority of physicians or programmers develop a career in research, where they push the limits of their respective professions. But most people end up working on operative, day to day, jobs. And the skills are not transferable. Excellent researchers do not necessarily make excellent practitioners, and viceversa.
That would be like someone at MS saying that their side project was a new feature in Word.