It's really that simple. We live in cities and work in groups and/or at companies because the benefits of collaboration and casual exchanges of ideas outweigh the detractions.
The article talks about two types of programmers. The passionate type and the type that programs because it's a way to make money to fund life outside of work. Then it points out that many of the latter type write poor code.
I've found that if you engage your non-passionate co-workers and try to educate and inspire, you can really help them improve their skills. Nobody wants to be bad at what they do. A guiding hand can do wonders.
It makes their life better and it makes your life better.
If I program 9-5, go home, eat, program more, program some more, and then go to sleep, I get fat. Fast. My social anxiety mounts. Fast.
I need at least 1-1.5 hours a day of gym time, .5-1 hours cooking time, some social time squeezed in there somewhere. I do have side projects - but I don't have kids, and I don't have another hobby - what if I enjoyed woodworking, painting, writing, or music? Devote a decent amount of time to that, to your health, and to a 9-5 job, and squeezing a meaningful programming project in there starts to get difficult.
I'm with you on this. I've taken to seeing everything as "stages". Instead of trying to fit my music, writing, or x hobby in I assume to undertake it as fulltime project in segments over the years.
Two years ago, I stopped working, lived off of savings and pursued my self-education and personal projects for nine months free from the distractions of "work". I go on and off with these phases.
I did it on the spot within a matter of three weeks. I had already saved up enough to support my lifestyle at the time for three months plus I have a consistent source of passive income.
My lifestyle was extremely frugal. I never ate out, only bought the food that I needed, no TV, layered up instead of turning on the heat, didn't buy anything I didn't need, etc...
At the time, I was living in Las Vegas - cost of living wasn't too bad. For a time I considered living out of a tent (urban camping) but decided that my budget was capable of supporting me without resorting to that. (it is much easier to maintain a structured self-education and side-project routine when you live in an apartment vs. a tent!)
In nine months I completed a book on college level rhetoric, a college level course on philosophy and reasoning, re-taught myself how to perform arithmetic on fractions (my weakest point in math), algebra 1, geometry, and half way into algebra 2; I studied a few classics too: Aristotle, Ovid, and Emerson. I was a core committer for a popular open-source project, put a lot of time into that; I also finished two of my personal projects/ideas. The projects were academic interests and at the time I didn't really have the knowledge nor network to monetize them, so they've just gone into the personal history book as "experience".
Once I was done with my nine month stint, I moved to San Diego (from Las Vegas) and began doing contract work under my own sole-proprietorship for about six months. After that I co-founded a startup (8 months ago) which is now paying my salary entirely and very close to profitability.
I like this new job much better :) I got the idea to pursue nine-months of structured personal focus from the dissatisfaction I was experiencing with the "work for someone else" thang.
The article says he doesn't understand how someone can code at their job, then not code when they go home.
Here's how: even if you are very excited about programming, you can realize that there are other things in the world besides being a workaholic perfectionist who stares at a computer screen 16 hours a day. Things like spending time with your significant other, enjoying nature, exercising, concerts, volunteering, etc. I love coding and trying to improve, but have you ever just got tired of looking at a computer screen?
I agree with you Larry. I do like to enjoy life as well. There are the type of people who are so passionate about their work that they would love to stare at a computer screen 16 hours a day. When I was younger, I had the time to read, grow and get better at my work. Nowadays, I have a fiance and a marriage to plan so hence I have MUCH less time to learn outside the job. However, I still try to sneak in as much as I can in my outside work hours ;)
same here - in my early days I was more interested in screwing around than I was working, but as I get older I find that I'd rather work than do anything else.
Call me a workaholic, bad father, bad husband, but it is what it is.
> The article says he doesn't understand how someone can code at their job, then not code when they go home.
That's not what the article says at all. He doesn't understand how someone can just code at work, and then shut off from the world of coding, never working to advance yourself in your chosen career. Part of that is coding, sure, but that in no way implies coding every time you come home and only coding.
I'm currently helping my wife through some classes she's taking at the local community college towards a computer science degree. It's good fun. I get to help her, and I learn a little more along the way from having to explain it clearly to another person. It will be a while until I force Haskell on her though.
The best part is we get to spend all evening in front of our computers together. This is part of why I married this woman.
I'm really surprised by this mentality, especially evident in the comments, that if you're not spending all of your time outside of work doing projects related to development that you're suddenly a "bad developer." Others have said it but it really bears repeating: at some point even the best developers realize that finishing one extra feature on a side project isn't as important as spending some quality time with your spouse our children.
Moreover, I don't want to be in a situation where my job owns my life. I enjoy software development and I've been doing it now for 14 years. I certainly spend some of my time at home tinkering on personal projects and continuing to learn. But work for me is generally 9-5ish--and by work I mean the job for which I'm paid. Speaking as someone who will be a father in just a couple of weeks, I can say that at 8:00 pm I'd far rather be putting my son in bed than working on anything related to work.
Life is short, and there's more to it than software development. Understanding that doesn't mean you lack passion or aren't good at it--it just means you believe in going beyond one-dimensional.
I think you're taking things a bit farther (though I haven't read all the comments).
Chris is referring to the people that treat it as a job, and nothing more. They don't advance their knowledge outside of work. He isn't just talking about work. He's talking about tinkering with code, working on fun projects, etc.
He isn't suggesting that you should program all the time. Rather, it's the people that treat it merely as a job. This isn't something unique to programming.
That all being said, I think when you understand it's not unique to programming, you finally understand it: these people aren't doing something they are passionate about. They are there for the paycheck.
I think it's fair to say that people exist in all fields of work that don't enjoy the work they do. I feel bad for them; but there's a (false) generalization being made that just because you don't spend your time outside of work doing it means you're not passionate (or, to take the generalization further as was done several times in the comments, a "bad programmer").
I spend 8+ hours per day sitting at my desk at work slinging code. I love my job; I learn a ton while I'm here and I believe I'm helping in building great software. My skills improve daily during my time at the office and most days, when I get home, I'd rather do just about anything than sit at my desk at home doing exactly what I've been doing the past 8+ hours.
I think the generalization is fair. Their are always exceptions, but overall, the generalization is spot on. You might be one of those exceptions.
At the same time, I also think we are taking 9-5 to literally. He isn't talking about 9-5 exactly (otherwise, anyone working from 8-4 is safe!). Rather, it's the people that treat the job like a 9-5 job, and that's it. They go to work, do the job, and go home. They don't try to learn, they don't try to advance themselves.
You don't do this, so even though you might work between 9-5, you aren't just a 9-5 coder.
I understand what you are saying but I think the author is targeting PHP programmers that simply pound it out for the sake of a "job" - to me, he is talking about the difference between "coders" and "programmers". I will agree with you and disagree with the author on the argument that because you do or don't program outside of your daily work routine it will define your character (coder? or programmer?) as a developer.
I personally do my best not to program all the time. I like to get out and socialize with people outside of my primary intellectual niche. I love to engage myself in sports and activities that exercise different aspects of my personality. That, plus a healthy love for what you do, is what makes a focused and intelligent person.
I don't understand it either, as in why don't most people have any concept of time-off? I guess many Americans depend on 100% of their salary to pay their bills and so can't afford to take any unpaid leave. But why not take sabbaticals if even for coding something interesting to yourself?
I find that I cannot write code at top quality for more than about 6 hours a day. IMHO, most programmers aren't able to write at their top skill level for more than that, but don't realize this about themselves.
Factoring in time to handle my mails, some meetings, and that 6 hours adds up to a working day. If I program private projects after hours, I get grumpier and less focused. For my own health and sense of accomplishment, I need to stop coding at the end of the working day.
I don't switch off entirely. I do read tech books during my evenings, but that's a non-creative activity, so my coding doesn't suffer from it.
Don't take this the wrong way; but a potential short answer is that there is more to life than programming. Or doing a single thing non-stop, for that matter regardless how passionate your are about it. Taking your mind off of it is not necessarily a bad thing - in fact, it might help you acquire a different perspective which ultimately might assist you in becoming a better problem solver in the long run.
Also, "those" people might have different, additional and probably more important obligations such as family or children. Yet some others (as pointed above) might have hobbies which require some time investment.
Dude, you can make the same statement about anything in life that fires you up. Take cooking, millions of people go home and put a frozen meal in the microwave, some cook indifferently the same stuff over and over, and some are totally into their cooking.
I am sure there's a person somewhere putting together an awesome meal with fresh ingredients thinking "How can people eat spaghetti with sauce from a jar every night".
Embrace your passions, but don't be surprised if others don't share them.
And if you want to understand how others feel, think of all the things you do in a day that don't bring you a driving urge for self-improvement.
This guy sounds like he would be astonishingly dull to talk to. Both on a personal level (he has no interests outside coding PHP) and on a technical level (he has no interests outside coding PHP).
I don't understand 9-5 either, why start so late? I do 7:30 to 4, and get out in time to go surfing, sailing, or skiing depending on the season. Or maybe just hang out on the beach with my girlfriend. Or maybe BBQ with some friends. Or get a nice book at the library. Or hop online and play Starcraft. Or watch a good movie. Or maybe, spend some time working on my sideproject or programming in general.
> I don't understand 9-5 either, why start so late? I do 7:30 to 4, and get out in time to...
Woah there Mr. Personal Responsibility Man[1]! Clearly the reasonable solution is to capaciously adjust our definition of what time it is twice a year so that we can have "more daylight".
[1] Or woman, of course. Curse our lack of fully developed gender neutral language. (Ohh, sure, Person, but what about the Mr. bit? Bah.)
Another big variable in all of this is just the natural variability of time. There are times when I have side projects that I'm totally engaged with and passionate about, and times where the same projects don't hold my interest as much as other things in my life, and times when I just don't have any side projects at all. Just because you're not developing on the side now doesn't mean that you never do or never would.
Also, I find that it's hard to serve two masters. When I do have a side project I'm engaged in, it tends to bleed off any enthusiasm I have for doing paid work where, by definition, I have only so much say in things. It could be that the developers not developing at home are the better ones for being smart enough to save themselves for the big game, as it where.
As developers, we also have to be careful about having too much of this attitude in ourselves, because it makes us, in many ways, rife for exploitation by people who expect us to be so passionate about our jobs we'd do them 12 hours a day if we could.
I'm kind of halfway inbetween. I like to code several hours a day. Often I don't get to do that at work, since there is more to writing software than programming. When that happens I code on side-projects, or not really side-projects so much as recreational coding.
For example, the other day I wrote several implementations of the burrows-wheeler transform, just because it's neat and there is a non-obvious way take the simple N^2logN algorithm and turn it into a more inscrutable linear-time algorithm.
Well, if you spend all your time programming, then when would you have the time to learn design & composition, color matching, copywriting, blogging, customer relations, viral architecture, business modeling, customer development, investment tactics and everything else you need to know to build a great product?
Why is this on HN? It's clearly written by some kid who hasn't yet realized that there are people who think differently than he does.
He also probably doesn't have a family, a house, or other responsibilities. There are only so many hours in a day and once you have all of those things, you can't spend every waking minute working on code -- if you want to or not.
What's disappointing is the 9 - 5 job that doesn't teach your anything nor provide much time or ability to learn it on your own. That actively discourages on-the-job self-development and innovation. And yes, they exist. A lot of "grow our employees" language is, when the rubber meets the road, hogwash.
I don't advocate endless additional work off-hours, unless you are really into it. And in the latter case, I'd suggest it be for your own, personal benefit and not simply to make you better at your job. Unless it's a job you love and you otherwise have what you need.
But, when the job's a dead end in terms of personal growth, you're going to have to invest in off hours (self) development. Or be prepared to: 1) Move to management, if you can get on that career track (given the precondition, not a good sign with respect to the quality of your organization, BTW); 2) Stay in a very protected niche; 3) Face the end of your career before too long.
As well as the other valid points, I think he is looking at it bass ackwards.
The two types of programmer do the job for different reasons and came to the job for different reasons.
There are the types like me and presumably him, who are into that sort of thing and enjoy it. When it came to finding a way to pay the bills it makes sense to do what we enjoy and get paid for that, especially at times when the economy offers us good rates for our hobby. We'd program even if there was no money in it (though we'd probably chose to work on very different projects!)
The other type come into programming because they need a job to earn the money to maintain the lifestyle they want, and programming jobs pay far better than many others that are readily available. So those with the ability to learn at least the basics do so and try make their way. It isn't their hobby. It just pays the bills. They want to go home and do other things at the end of the day/week.
Sometimes the second type of programmer will catch the bug and become the first. Sometimes the first becomes completely dissolutioned and becomes the second. Or they can go half way: works 9-5 on work projects then goes home and does something completely unrelated but still programming, like being a C#+MSSQL developer 9-5 and a Linux+Python+Other person in their own time - this can be quite useful for developing new experience that will help you move away from the area you are dissolutioned by.
32 comments
[ 8.2 ms ] story [ 52.6 ms ] threadIt's really that simple. We live in cities and work in groups and/or at companies because the benefits of collaboration and casual exchanges of ideas outweigh the detractions.
I've found that if you engage your non-passionate co-workers and try to educate and inspire, you can really help them improve their skills. Nobody wants to be bad at what they do. A guiding hand can do wonders.
It makes their life better and it makes your life better.
If I program 9-5, go home, eat, program more, program some more, and then go to sleep, I get fat. Fast. My social anxiety mounts. Fast.
I need at least 1-1.5 hours a day of gym time, .5-1 hours cooking time, some social time squeezed in there somewhere. I do have side projects - but I don't have kids, and I don't have another hobby - what if I enjoyed woodworking, painting, writing, or music? Devote a decent amount of time to that, to your health, and to a 9-5 job, and squeezing a meaningful programming project in there starts to get difficult.
Two years ago, I stopped working, lived off of savings and pursued my self-education and personal projects for nine months free from the distractions of "work". I go on and off with these phases.
How long did it take you save up enough?
How frugally did you have to live to stretch your savings for 9 months?
Does your geographic location have a high cost-of-living?
What were you able to accomplish in 9 months' time?
Did you have to quit your job or were you able to convince your employer to take an unpaid leave of absence?
If you quit, how hard was it to get a new job?
Do you like this new job better?
My lifestyle was extremely frugal. I never ate out, only bought the food that I needed, no TV, layered up instead of turning on the heat, didn't buy anything I didn't need, etc...
At the time, I was living in Las Vegas - cost of living wasn't too bad. For a time I considered living out of a tent (urban camping) but decided that my budget was capable of supporting me without resorting to that. (it is much easier to maintain a structured self-education and side-project routine when you live in an apartment vs. a tent!)
In nine months I completed a book on college level rhetoric, a college level course on philosophy and reasoning, re-taught myself how to perform arithmetic on fractions (my weakest point in math), algebra 1, geometry, and half way into algebra 2; I studied a few classics too: Aristotle, Ovid, and Emerson. I was a core committer for a popular open-source project, put a lot of time into that; I also finished two of my personal projects/ideas. The projects were academic interests and at the time I didn't really have the knowledge nor network to monetize them, so they've just gone into the personal history book as "experience".
Once I was done with my nine month stint, I moved to San Diego (from Las Vegas) and began doing contract work under my own sole-proprietorship for about six months. After that I co-founded a startup (8 months ago) which is now paying my salary entirely and very close to profitability.
I like this new job much better :) I got the idea to pursue nine-months of structured personal focus from the dissatisfaction I was experiencing with the "work for someone else" thang.
Here's how: even if you are very excited about programming, you can realize that there are other things in the world besides being a workaholic perfectionist who stares at a computer screen 16 hours a day. Things like spending time with your significant other, enjoying nature, exercising, concerts, volunteering, etc. I love coding and trying to improve, but have you ever just got tired of looking at a computer screen?
Call me a workaholic, bad father, bad husband, but it is what it is.
That's not what the article says at all. He doesn't understand how someone can just code at work, and then shut off from the world of coding, never working to advance yourself in your chosen career. Part of that is coding, sure, but that in no way implies coding every time you come home and only coding.
The best part is we get to spend all evening in front of our computers together. This is part of why I married this woman.
Moreover, I don't want to be in a situation where my job owns my life. I enjoy software development and I've been doing it now for 14 years. I certainly spend some of my time at home tinkering on personal projects and continuing to learn. But work for me is generally 9-5ish--and by work I mean the job for which I'm paid. Speaking as someone who will be a father in just a couple of weeks, I can say that at 8:00 pm I'd far rather be putting my son in bed than working on anything related to work.
Life is short, and there's more to it than software development. Understanding that doesn't mean you lack passion or aren't good at it--it just means you believe in going beyond one-dimensional.
Chris is referring to the people that treat it as a job, and nothing more. They don't advance their knowledge outside of work. He isn't just talking about work. He's talking about tinkering with code, working on fun projects, etc.
He isn't suggesting that you should program all the time. Rather, it's the people that treat it merely as a job. This isn't something unique to programming.
That all being said, I think when you understand it's not unique to programming, you finally understand it: these people aren't doing something they are passionate about. They are there for the paycheck.
I spend 8+ hours per day sitting at my desk at work slinging code. I love my job; I learn a ton while I'm here and I believe I'm helping in building great software. My skills improve daily during my time at the office and most days, when I get home, I'd rather do just about anything than sit at my desk at home doing exactly what I've been doing the past 8+ hours.
At the same time, I also think we are taking 9-5 to literally. He isn't talking about 9-5 exactly (otherwise, anyone working from 8-4 is safe!). Rather, it's the people that treat the job like a 9-5 job, and that's it. They go to work, do the job, and go home. They don't try to learn, they don't try to advance themselves.
You don't do this, so even though you might work between 9-5, you aren't just a 9-5 coder.
I personally do my best not to program all the time. I like to get out and socialize with people outside of my primary intellectual niche. I love to engage myself in sports and activities that exercise different aspects of my personality. That, plus a healthy love for what you do, is what makes a focused and intelligent person.
Factoring in time to handle my mails, some meetings, and that 6 hours adds up to a working day. If I program private projects after hours, I get grumpier and less focused. For my own health and sense of accomplishment, I need to stop coding at the end of the working day.
I don't switch off entirely. I do read tech books during my evenings, but that's a non-creative activity, so my coding doesn't suffer from it.
I am sure there's a person somewhere putting together an awesome meal with fresh ingredients thinking "How can people eat spaghetti with sauce from a jar every night".
Embrace your passions, but don't be surprised if others don't share them.
And if you want to understand how others feel, think of all the things you do in a day that don't bring you a driving urge for self-improvement.
Work to live. Don't live to work.
Woah there Mr. Personal Responsibility Man[1]! Clearly the reasonable solution is to capaciously adjust our definition of what time it is twice a year so that we can have "more daylight".
[1] Or woman, of course. Curse our lack of fully developed gender neutral language. (Ohh, sure, Person, but what about the Mr. bit? Bah.)
Also, I find that it's hard to serve two masters. When I do have a side project I'm engaged in, it tends to bleed off any enthusiasm I have for doing paid work where, by definition, I have only so much say in things. It could be that the developers not developing at home are the better ones for being smart enough to save themselves for the big game, as it where.
As developers, we also have to be careful about having too much of this attitude in ourselves, because it makes us, in many ways, rife for exploitation by people who expect us to be so passionate about our jobs we'd do them 12 hours a day if we could.
For example, the other day I wrote several implementations of the burrows-wheeler transform, just because it's neat and there is a non-obvious way take the simple N^2logN algorithm and turn it into a more inscrutable linear-time algorithm.
He also probably doesn't have a family, a house, or other responsibilities. There are only so many hours in a day and once you have all of those things, you can't spend every waking minute working on code -- if you want to or not.
The world is a lot bigger than that - in and outside of programming.
I don't advocate endless additional work off-hours, unless you are really into it. And in the latter case, I'd suggest it be for your own, personal benefit and not simply to make you better at your job. Unless it's a job you love and you otherwise have what you need.
But, when the job's a dead end in terms of personal growth, you're going to have to invest in off hours (self) development. Or be prepared to: 1) Move to management, if you can get on that career track (given the precondition, not a good sign with respect to the quality of your organization, BTW); 2) Stay in a very protected niche; 3) Face the end of your career before too long.
The two types of programmer do the job for different reasons and came to the job for different reasons.
There are the types like me and presumably him, who are into that sort of thing and enjoy it. When it came to finding a way to pay the bills it makes sense to do what we enjoy and get paid for that, especially at times when the economy offers us good rates for our hobby. We'd program even if there was no money in it (though we'd probably chose to work on very different projects!)
The other type come into programming because they need a job to earn the money to maintain the lifestyle they want, and programming jobs pay far better than many others that are readily available. So those with the ability to learn at least the basics do so and try make their way. It isn't their hobby. It just pays the bills. They want to go home and do other things at the end of the day/week.
Sometimes the second type of programmer will catch the bug and become the first. Sometimes the first becomes completely dissolutioned and becomes the second. Or they can go half way: works 9-5 on work projects then goes home and does something completely unrelated but still programming, like being a C#+MSSQL developer 9-5 and a Linux+Python+Other person in their own time - this can be quite useful for developing new experience that will help you move away from the area you are dissolutioned by.