top | item 10963401

Ask HN: How do prolific programmers go about their daily lives?

196 points| lollipop25 | 10 years ago | reply

When I read the interwebz, I see other devs pumping out code to open source projects like food-to-code machines. They manage open source projects, be on top of the latest trends and even drive the hype causing these other developers to follow suit. Part of me wants to become like one of these prolific developers. I want to learn a lot of things, do a lot of things.

However, in contrast, I find myself out of energy after work that I just drop dead in bed only to wake up the next day. People advise me to do recreational stuff instead of writing more code on the weekends. Even my boss advises against writing code even when deadlines are just right around the corner. Forcing myself a few times, I felt like I was inches away from becoming part of the zombie horde.

How do these prolific developers spend their time? How do they work, do open source while staying healthy and awesome, and not become zombies at the same time?

81 comments

order
[+] donatj|10 years ago|reply
Honestly until I met my wife, I spent the majority of my time at home building open source projects I knew would save me time later at work, and probably more time overall because the code will be less specialized to the project. This was almost every single night after work.

My wife came along and showed me though that there is more to life than programming and I have to thank her for that. She's a wonderful gruf woman who changed my life. I still code at night on occasion, but not very often. I've got better things to do. I really believe I am happier for it.

All that said, are you entirely sure programming is what you want to do the rest of your life? After a long day of coding I need to be ripped away from its siren song or I'd simply never stop, and I know a lot of developers that feel the same. The job takes a lot from you, imho, and it sounds like you may not enjoy it enough for it to be worth its cost.

[+] tjholowaychuk|10 years ago|reply
This is how I feel as well. I used to put more time into open-source and just code in general, now it's more of a means to an end for me, with the odd "passion" project. Life is short, don't waste it all working, even if it's what you enjoy, there are many other things to enjoy and experience. I refuse to work with companies now that put over 8-10 hours a day in, it's just too much, and fosters a competitive environment.

As far as being known, just do what you enjoy. If you enjoy it you'll produce quality work, and if you produce quality work then the rest falls into place. Play your cards right, get yourself into a position at some startup (or your own startup) doing what you're interested in.

I think it helps to be vocal as well, blog a lot, speak at conferences a lot, and so on. I'm not really this kind of person but I've seen others who get really popular from being "thought leaders", possibly more so than for any code.

[+] spotman|10 years ago|reply
This definitely resonates with me a lot. I have been on both sides of the fence with regards to needing to be ripped away from my terminal to go do something else.

In addition to just energy and whether or not programming is a good fit for you, I think it really really helps to have passion, i.e. Drink the kool aid, work in something you want to use yourself or can't stop thinking about, or is uniquely challenging to you.

I don't know any developers that are excellent that got there by working a mundane/boring programming job. Having said that I also don't any who have not had to work at several of those before they find one that keeps them awake at night in an excited state.

If you aim to improve your skills and work isn't doing it for you, do some side projects or contribute to an open source project. You would be surprised how excitement and passion can beat sleep. Don't get too hooked on it though or you will never have a social life.

[+] reinhardt|10 years ago|reply
Great post. What I find most striking is how does one's (future) wife just "came along" when spending most time at home building open source projects. I mean, I rarely code any more for fun after work (and to be honest, often during work), I am actively looking for someone to get together and let me tell you, it's a bitch. Granted, I'm only searching online but then again I'm not looking for marriage material necessarily; even a semi-casual affair that would last more than a few weeks or months would be an improvement but it remains an elusive goal.
[+] selestify|10 years ago|reply
How did you guys meet if you were most at home working on projects? Genuinely curious because I'm having trouble simply finding women.
[+] collyw|10 years ago|reply
Kind of curious how you managed to attract a wife with that lifestyle.
[+] Randgalt|10 years ago|reply
I'm on my computer, essentially, every waking hour. I've been this way since I was a boy. I have two passions in life: programming and playing the drums. If I'm not drumming, I'm programming and vice versa. This is what I enjoy and thus I contribute to many OSS projects, manage an Apache project, consult to two startups and have a full time job.

I do all these things because it's what I'm driven to do. I would go crazy without it. There's no shame in not being like me. Do what you enjoy.

[+] tluyben2|10 years ago|reply
Exactly. Often people try to guilt me into not be behind my computer so much because 'there is so much more'. I know there is much more but I don't enjoy that as much as coding. And that has been the case for the past 32 years. From the moment I wrote my first lines of code behind my father his luggable (1) I knew this was what I wanted to do and I never got bored of it. Do what you enjoy indeed.

(1) https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Co...

[+] eibrahim|10 years ago|reply
Thanks for asking this. I have always wondered the same and I look forward to the answers.

I am not as prolific as many of the people you are probably thinking of but I am slightly above average. Here are a few things that WORKED FOR ME:

- Learn & use GTD - life changing. I use omnifocus but you can do it with pen & paper

- Automate as much as you can - checkout keyboard maestro and many other tools

- Use your calendar efficiently - block time for reading, playing, OSS or whatever

- wake up early

- excercise (i don't do too much but the days I do, I feel great)

- keyboard shortcuts for everything

- look for productivity tips for whatever tools you are using.

- turn off facebook and distracting material

- monitor your time - I use rescue time

- outsource as much as you can. I use fancyhands.com to handle things like calling the phone company, cable company, making appointments and so on. It saved me tons of hours of BS tasks

- I have had some success with the pomodora technique as well, give it a shot.

- Don't work more than 8 hours a day

- Work from home as much as you can

- don't burn out

- for side projects, blogging, oss or whatever it is you want to do, i find it better to do 1 or 2 hours a day than try to crank 8 hours on sunday.

- spend time with friends and family - it's amazing how your productivit improves when you are refreshed

- take a power nap or naps

- sleep well

I am married with infant twins so I try to be as efficient as possible with the limited time I have infront of the computer. 1 hour of highly focused work yields more output than 4 hours of distracted, half-ass work.

forgive the self promotion but I think it is relevant. I put together a free ebook about mac productivity tips - might not be as helpful for techies like you but you might at least learn a trick or 2 or find an app that you never heard off - www.bestmactips.com

[+] Numberwang|10 years ago|reply
As someone who has tried GTD and failed. Do you mind me asking a few questions?

How do you deal with habits? What are projects and what are tasks? Is vacuuming once a week something you would schedule in a calendar? Would you schedule doing dental floss every night?

Also, for big projects which would have a task list of several 100 tasks, many of which would not be visible to you on the outset, how would you deal with those?

And what about all those halfbaked, barely logged ideas, sentences for things to write someday, concepts...

In essence. GTD stresses me out because it promises complete control over what to do and think about and when. Trying to implement it whilst dealing with the above questions induces anxiety and procrastination.

[+] cprayingmantis|10 years ago|reply
Starting out it seems hard just to work 8 hours a day when everyone else is in the office for 10 or 12. How do you balance this?
[+] jondubois|10 years ago|reply
I think that prolific devs are the ones who joined a particular community early and were able to ride the wave of success as that particular community grew. They often don't have a day job - Either they have enough savings that they dont need to work or they struggle on a daily basis to make ends meet... Or they are fortunate enough that their employer allows them to work on OSS during office hours.

Being a prolific developer doesn't have as much to do with talent as people might think - Developers become well known by blogging, speaking at multiple conferences or just being in the right place at the right time (whilst making lots of open source contributions).

Also, famous developers tend to own/maintain many (often several hundreds) of different open source projects instead of focusing their energy on just one project. There are rare exceptions like Solomon Hykes of Docker - But if you just made one popular open source project, then that's usually not enough to be known in the community.

Also, where you live makes a difference. Your odds are much better if you live in Silicon Valley. I know a developer who created/maintains about 5 projects each with 2000+ GitHub stars and he is still not well known because he doesn't benefit from network effects like devs who are living in the US.

[+] chill1|10 years ago|reply
Maybe you could make some life-style changes to improve your overall energy level and/or cure your tiredness. How do you eat? Do you eat right before you go to bed? Do you wake up with an alarm clock? Do you eat a lot of greasy, processed foods? Soda? Do you exercise?

Other than that, maybe you could try pulling back the number of hours you're at work. I've felt myself getting stuck in that cycle of work, eat, sleep in the past, but I am currently pretty happy with my routine.

If you want to make some life changes, I'd recommend starting small. Pick one thing to improve this week (don't eat less than 2 hours before going to bed). Then next week try adding another thing. Before you know it, you'll be doing these healthier things without even thinking about it.

[+] bad-joke|10 years ago|reply
Here is my go-to motivator for getting in at least 30 minutes of exercise per day:

https://en.wikipedia.org/wiki/Neurobiological_effects_of_phy...

It takes a few months for the flashy effects to kick in but you get a grab bag of other goodies in the meantime. I know some people who schedule morning time because they feel energized during the day, and another who does it after work to unwind.

Me? I just like having an excuse to take hot showers at lunchtime :)

[+] brianclements|10 years ago|reply
Yes, this is the other side of it. Make the hours you do have as productive as possible. Efficient problem solving and creative design (not just marathon coding) are also about getting your mind and body right. Get on consistent sleep patterns, eat healthy, exercise. Also, don't underestimate the importance of downtime for problem solving and planning. Bouncing off of another post from today, if you get the planning and design part right first, you can save yourself a lot of time in the implementation stages (https://news.ycombinator.com/item?id=10963229). It's also easier to know where your progress is toward a specific goal in concrete terms. That also makes it easier psychologically to take breaks and enjoy life a bit.

I would add to this too, a little life-hacking: Try to design your daily workflow (things that take time such as cooking, dishes, etc.) using the same strategies you use in programming. Modular food strategies so that you can cook once (on the weekend for example) and put together various meals by adding only little things here and there that round out the nutrition and quantity throughout the week with minimal dishes to clean after. Don't underestimate the efficiency of a good blender and protein shakes!

Get the right tools for the job too, maybe a standing desk to improve focus?

Lastly, I would add make sure you are picking projects that you find important and are passionate about. Thinking about them wakes you up. Aim for importance to you, not just # of commits. There will always be people who just work faster then you, or where money is not a problem for them, or where what seems like their hobbies are very tied into their actual work and the two overlap and they just seem more productive. That is where you have to focus on importance and not breadth but depth of where you spend you time.

[+] sotojuan|10 years ago|reply
Not sure if he comes here, but Sindre Sorhus[1] is quite prolific. The answer, though, is not satisfactory: He doesn't work. He moved to Thailand and lives off savings.

Here's the answer you are looking for: https://github.com/sindresorhus/ama/issues/167 and you can search more related questions in the issues.

[1] https://github.com/sindresorhus

[+] mofle|10 years ago|reply
I'm Sindre. I actually spent more time on open source when I did work. Some people cook or bicycle as a hobby. I code. I'm totally addicted to making things on the computer. I used to spend work lunches coding on open source projects. I lived in a remote place (Lillehammer, Norway) with few people around and not much happening, so I had a lot of free time after work. It definitely is tough working up energy to code after doing it all day at work, but it's different. Open source coding is the most exciting thing I've ever done. I'm so glad I accidentally got into doing open source. It changed my life.
[+] darthsr|10 years ago|reply
After reading all the comments I have a few questions. How long have you been programming and what are you running from? Prolific programmers are running from something. Loneliness, low self-esteem, etc. while programming you don't think about life. GTD sounds like a miserable existance to me. I've heard/read countless articles on how to become a better programmer while reading the same amount of articles explaining burnout. How many CEOs practice being a CEO when they get home from work. How many mechanics are being a mechanic for fun when they get home? Programming is a job. Every time I hear learn a new language a year I puke a little in my mouth. How many of you remember your code 6 months down the road. Please don't push being a workaholic on the OP. The OP is normal and all the people trying to convince him/her otherwise are dillusuonal.
[+] nunobrito|10 years ago|reply
Maybe relevant to watch this video for a first hand report of burnout from a coding rockstar: https://www.youtube.com/watch?v=UIDb6VBO9os

From personal experience think that programming pretty much crashes and destroys your personal life when you really, really want to go above the rest.

   Everything changes, except you and your computer.
That's how I feel anyways. Don't sleep much and pass every waking hour on and off solving some coding problem.

I remember when there was no computers. Existed more beer, fun and happiness. But at the same time didn't felt as happy as getting something epic solved.

Maybe one day it looks as it is all worth. Maybe. Enjoy your life OP, you only get one.

[+] andretti1977|10 years ago|reply
I love programming, really and since i was 6 and now i'm 38. I work as a freelance developer and i love it. My job is passion and then a job. But i know life is not just this so i won't give my life to computer programming: 8 full hours (really full ;) ) a day are enough to be a talented developer, work and create something really important in your job.

But life is not job or software development and you shouldn't sacrifice it to computer programming even if it is a passion and you love doing it.

One day you will leave this world: will you regret you should have worked more or will you regret you didn't live your life?

[+] yitchelle|10 years ago|reply
Sometimes, I get the same urges as well. To contribute to as many open source project as I can; to learn the a new language and be proficient in it; to attend conferences to talk to other like minded folks.

However, I came down to the realisation of several things very quickly.

1) Something in my brain causes me to grasp new concepts quite slowly, no matter how interested I am in the subject. So it takes me longer to work through things.

2) I also enjoy my family life, so it comes down to searching for time after the family has gone to sleep or before they wakeup to do some tech stuff. Kids are still a bit young to do tech stuff together.

3) There are only 24 hours in a day and I wont get any more days after I dead. I want to allocate some of the hours away from tech and experience humanities.

Sorry, I am sorry that this does not really answer your question, but I think that this side of the coin is important as well.

My advice is to find a job that you really, really enjoy doing. Once you have reached there, give it all you have got during the working hours. Your social life will thank you for it.

[+] TheMog|10 years ago|reply
I've been coding since we considered 8 bits a luxury and I'm still at it (I'm 47 now). I do it because I enjoy it and because I'm pretty good at it, plus it affords a decent lifestyle.

There are a couple of important points I've learned along the way that might help you:

1) Some people can code productively 24/7, but those are very few and far between. For starters, they have the skill to concentrate hard for a long time and work in an environment where that is feasible. It's not feasible if the next cubicle over has a sales person in it who spends ten hours a day on the phone. Second, most of them tend to do it in bursts as it's extremely hard and draining to sustain that level of concentration and effort for hours and days on end. What you see is often the output from the bursts, but you don't see that they're then spending a fair amount of time doing different things so they can recharge their brains.

2) It's easier to do this when you're young and pull a couple of all nighters a week. This makes you a hero, especially in places that thrive on hero-based development, but you have to realize you're burning the candle at both ends. As you age and build up experience, you tend to be more productive simply because of your experience, but you're also not necessarily that willing and suited to pulling 16 hour days for extended periods of time.

3) Most importantly, your brain is a muscle. Exercising it improves its function much like exercising your body improves its function, but it also needs rest. If you look at the way top athletes train, they push themselves hard but they also allow for sufficient rest periods. It's the combination of exercise and rest that leads to the improvement. Take one or the other away and you either overextend yourself (and injure yourself) or you don't grow as much.

Yes, I read about programming and play with languages during my off time, but I try to satisfy my need to build things (which is what initially drew me into software) by working on physical things instead. Things like building/restoring a car or motorcycle, gardening, working on the honey-do list etc. Oddly enough they're not too dissimilar from programming as you still end up solving problems.

TL;DR - find a way to switch off, be it through meditation or whatever else works for you. Get enough rest and exercise the other parts of your body. Learn to recognize the signs of burning out and stop the journey before you get there.

[+] dpflan|10 years ago|reply
I do not have advice on how to manage your time so you can be prolifically productive, but I do think you've touched upon motivation being one of the main factors for deciding to continue on projects after work, projects that may even become your work. But discipline is the hardest yet simplest piece: you may not always be motivated, by discipline / consistency ensures exposure, ensures you apply yourself to your project(s) very frequently.

I suggest you read Coders at Work if you haven't already. It is a good compilation of interviews with living legends of computer science and famous software projects, and the interviews give insight into how each approaches his/her life. You might find some of it inspirational and insightful.

http://www.codersatwork.com/

[+] wesleyfsmith|10 years ago|reply
If you don't feel compelled to code outside of work, it's probably because you don't love what you are working on enough. I find that programming itself is not enough for me to want to work constantly--I have to legitimately love what I'm building.
[+] munificent|10 years ago|reply
> it's probably because you don't love what you are working on enough.

This is worded, negatively, but I think the positive formulation is more meaningful: If you aren't coding outside of work, it's probably because you love doing something else more.

[+] zwischenzug|10 years ago|reply
I've automated large chunks of my life.

I have a JIRA for everything I do with customized workflows, and among many other projects I built this:

http://hnalert.tk

to mail me when subjects interesting to me come up on HN.

I recommend reading 'Getting Things Done' and working at your own pace. Focus on the things you're motivated to do, not what you think you should be doing - that's what a paid job is for!

[+] shinryuu|10 years ago|reply
I would totally be keen on reading a blog post about that :)
[+] AndyKelley|10 years ago|reply
One trick you can do is get a part time job or a consulting job where you can work fewer than 40 hours per week. Then you'll have time where you're not exhausted to work on open source stuff.

Exercising is for sure a net gain in time. It makes you feel healthier, happier about yourself, and helps you think more clearly.

Here's me: https://github.com/andrewrk

[+] zgardner|10 years ago|reply
We don't spend our time on HN
[+] honksillet|10 years ago|reply
I found that I can skim HN without getting sucked in hours. Reddit however I have had to block in /etc/hosts .
[+] akamaka|10 years ago|reply
John Carmack brought along a workstation on his honeymoon so that he could keep coding. I can't find the exact quote, but I recall him saying that he spent so many years coding every day that he was worried he might suffer from withdrawl if he had a week away.

I think the lesson here is that some people put their craft at the center of their life and make it the focus of every single day.

[+] i336_|10 years ago|reply
From the perspective of someone with the opposite problem to burnout - having been stuck on where to get started for literally months - this is a really inspirational anecdote.

I definitely want to hear more about how the marriage situation worked out in this case though. I expect I could learn a lot.

[+] jjuliano|10 years ago|reply
To be a prolific programmer requires time, effort and dedication. You can still be a prolific programmer if you are married and performing your family duties but the level of time and effort to do it would be less. It would require you to work smarter and have a solid-foundation that is built and have learned the fundamentals, before you are trying to dedicate your time to being prolific while slicing your time between work, family, personal, etc.

It is best for the single and young because it requires you to immerse yourself to learning, to solve problems and face difficult failures, it requires routine, and dedicated energy to learn, requires energy to go to the workshops/meet-ups/groups and be updated when new learning opportunity arrives. It requires spontaneity to still be interested in other things in order for you to refresh your energy.

[+] Mz|10 years ago|reply
A) Some of them do that until their body gives out and they suffer burn out.

B) Look to your health. If you want to be more productive without "paying for it" later, you fundamentally need to increase your ability to produce. Eat right, exercise, practice good sleep hygiene, etc.

[+] philippeback|10 years ago|reply
The importance of habits appears essential in order to maximize the available coding time. The modular food idea in one of the replies is indeed a great one that I do apply. Getting enough quality sleep is a must, especially when learning new things. Add at least an hour. Taking 20 min naps works wonders. If course, nothing beats putting in the hours, provided the above is taken care of. One useful thing I do is walk the dog daily without any music/podcast. Looks like it puts my brain in a kind of freewheel that helps me a lot in figuring out solutions. I do that when it is dark outside, stars, moon, night noises seem to have an impact. An additional noon walk doesn't hurt. Being part of an open source (http://pharo.org) community makes me aim for higher than I would on my own. These people are very inspiring and deliver awesome things. So I want do to it too as I see that it is feasible. I am married and having a partner who understands the peculiarities of the line of work helps. We have a huge wall calendar to schedule it all.