Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: How do prolific programmers go about their daily lives?
196 points by lollipop25 on Jan 24, 2016 | hide | past | favorite | 81 comments
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?



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.


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.


Also, I would say, even if you think coding is fun or enjoy it, ask yourself if that's what you want to be remembered for, or if you had a year to live would you be happy with having blown it all away on software. I'd bet the answer is likely no. It makes me sad when people in the community pass away and it seems that everyone is just talking about their work, there's so much more to a person (and life) than that.


Substitute "coding" with "painting" or "philosophy" and suddenly it becomes OK to be remembered solely for your masterpieces.


Yeah, I disagree with the sentiment of the gp. I wouldn't mind being remembered for my code at all.

> if you had a year to live would you be happy with having blown it all away on software.

yes, honestly.


If I had a year to live, I'd probably go about writing that physics (game) engine idea that keeps nagging me, but has way too low profitability prospects to put months/years into it.


If I had a year to live, I'd quit my job and finish what I've been working on at night. Plan one month to visit family & relatives.


> I think it helps to be vocal as well, blog a lot, speak at conferences a lot, and so on.

This takes a lot of time too. I always get stuck trying to think about what to blog about, and someone advised me that I should do more projects so I have something to blog about. But then the projects take all my blogging time away.

Same goes with speaking, for me at least.


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.


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.


Looking online is your problem. Sure, donatj met his wife on Ok Cupid, but online dating is mostly luck. I have girl friends with an account... they get tens of messages a day, if not more. Even if you do everything right, you can get lost in the inbox (kinda like applying for jobs!).

Online dating works as an "extra" way to find someone, not your sole source. Despite all the talk about online culture, most couples of any kind (serious, affair, etc) meet in person.


Usually people get banned for mentioning this, but google for Reddit RedPill.


That's a toxic place full of butthurt loosers many of whom seem to hate women. At least the seduction reddit is a bit more light hearted.


How did you guys meet if you were most at home working on projects? Genuinely curious because I'm having trouble simply finding women.


OKCupid. She made fun of me, I teased back. Went from there.


haha... that is exactly how I met my sig-o as well. I like your style.


Damn. I am on okc and I am ball-busting women all the time. Ok admittedly I got lucky a few times but they didn't stick for long and most of them were meh anyway. I think the crucial difference in the GP's case was that she initiated it; she had already preselected him for whatever reason. This almost never happens to me and when it does it's not from women I'd be thrilled to get together with. Sigh


Kind of curious how you managed to attract a wife with that lifestyle.


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.


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...


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


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.


Great question. Here are some answer and again, this what works FOR ME.

inbox/collection: everytime I think of something i add it to my tool's inbox (omnifocus), so if we are talking and you mention a book or movie, i would hit a shortcut (or on my phone) and enter "watch american history x" done...

process: once a day, I would go through my inbox and categroize stuff... takes very little time... so the movie might go into my "movies to watch" project. implement signup page might go into my "App x project" etc... I usually add context as well so "call Joe about insurance" will have a "phone" context

review: this was the MOST important step in my process. I review my projects once a week on friday and make sure i don't forget anything. I have a recurring task to remind me to do a weekly review. This step was essentially the biggest improvement I did in my process. Omnifocus makes it easy because I can set when i want to review each process... so my "books to read" project is reviewed once a month but my "launch taskorami" project is once a week, etc...

Answers:

- I add some habits like workout every other day, or pray/meditate in the am, but i don't go crazy and add "brush teeth", "wipe butt", etc... - projects = something with multiple tasks or longer duration e.g. "baby proof house" with tasks like research cabinet proofing, outlet proofing, padding for table corners, buy gates for stairs, door handle proofing, CO sensor, etc... but sometime i don't turn things into a project so "replace sink", i will probably just add multiple tasks instead of a project like "find plumber", "buy sink" and so on. - the large projects get reviewed during my weekly review so i get to skim through the tasks and priortize accordingly. - for half-backed ideas i have several "reference projects" such as "movies to watch" "startup ideas" "places to visit" "open source ideas" "things to checkout" "blog posts ideas" and I usually set these projects to be reviewed once a month or even more.

The key is, it's a pretty flexible system, you just need to find what works for you. and like i said, you can use pen and paper a thousand other online tools - my favorite is omnifocus

Tool: I use omnifocus and I love it but the one thing I hate about omnifocus is that it is mac and iphone only which is the reason i built taskorami.com - it's in private beta but I haven't really worked on it for a while - been busy with baby twins. You can check it out and use the invitation code "vip" to signup (private link: https://taskorami.firebaseapp.com/a/) . It's built on ember and firebase and has a responsive/mobile site but no native apps.

PS: sorry for typos and bad grammar - too tired to edit :)


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?


Do it from day one and set their expectations right away. But of course do a good job and get stuff done. Make the 8 hours count. That's why I said work from home then you don't have to pretend to work for 10 hours. You will be more flexible.

Under promise over deliver is the best tip I ever got.


What's GDT?




Getting Things Done, I presume?


Probably meant GTD (Getting Things Done)


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.


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.


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 :)


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.


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


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.


Hi Sindre. You have me blocked on GitHub and I'm not sure why. As far as I'm aware I've never interacted with you directly. I tried to submit a bug fix to one of your projects, but I wasn't allowed to even fork it. I also tried emailing you but I got no response.

I hope that if I said something offensive in some other context that gave you cause to block me, you'll give me another chance.

-andrewrk https://github.com/andrewrk/


Just looked at your GitHub profile and you're not blocked. Couldn't find any email from you either. Don't see why I would block you. Can't remember us interacting before.


Well, that's good news. I found the email and forwarded it to you again for your reference, but it sounds like whatever happened is fixed. Cheers!


Thanks for clearing it up Sindre—wasn't sure when you got into OSS/when you travel or move around. I also would spend less time on the computer if I was in Southeast Asia :-)


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.


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.


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?


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.


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.


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/


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.


> 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.


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!


I'm getting an internal server error when I try to set up an alert on http://hnalert.tk


Fixed; apologies.


I would totally be keen on reading a blog post about that :)


Thanks, I did give some talks on it at my last corp, but it's so difficult to write about your own life.

I do blog on technical stuff here:

https://zwischenzugs.wordpress.com/

Most recently:

https://news.ycombinator.com/item?id=10963646


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


We don't spend our time on HN


I found that I can skim HN without getting sucked in hours. Reddit however I have had to block in /etc/hosts .


largely the same (also have twitter and facebook blocked in hosts file, if I want to check them I use my phone, it's less convenient so I end up spending less time on either).

I think it's because HN only has "one" frontpage which changes relatively slowly rather than each subreddit I track, some of which change very rapidly.

Also half the stuff on the frontpage isn't relevant or isn't something I'm interested in so I tend not to disappear down the rabbit hole so much.


Same here. My old job had a very feast or famine tempo which ended up with me getting stuck in a nasty facebook + reddit + arstechnica feedback loop between the feasts.

Blocking all 3 via /etc/hosts broke any interest I had in FB and Ars but I eventually added Reddit back to the list permanently.


Truth


Like never


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.


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.


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.


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.


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.


I find that for me, coding and writing docs during the work day is enough. I used to spend my evenings coding on my ideas also, but now, married, my wife is not technical so we do a lot of other things. I actually really enjoy a lot of the things we do. I am less stressed and I can give a solid days work the next day.

On weekends, I experiment with making music, reading, playing in the snow, etc.


Three tips come to mind:

1. Get enough sleep. You've only written three paragraphs and there are already a lot of suggestions that you need more ("I don't feel as productive as others", "I just drop dead in bed" when well-rested people usually take 15-30 to fall asleep, "I felt like I was inches away from becoming part of the zombie horde.")

Coding pretty intensively uses your short-term memory: "I need to take this query which I prepared above and execute it on those variables, wait, this key from the database gets renamed to that on the front-end, okay, test it... dictionary does not have the right key on line 189? What's over there? Oh, I forgot to do this critical preprocessing step, jump back to my code, 3 lines before, add the function call, test again -- what the crap is that, switch back to editor, aha, missed a semicolon here...". Each of those actions requires you to not be overwhelmed by the number of details you have to remember, whether it's where your tool for testing is located, or what the preprocessing function was called, or what have you.

When you're even a little sleep-deprived, your short-term memory decreases dramatically -- if most normal humans can only juggle 7 balls (7 big details or crucial tasks occupying their memory), missing a few hours of sleep brings it down to 4 or 3. So of course everything looks two times bigger.

Sleep deprivation also causes you to lean on substances like sugar and caffeine, and those substances tend to cause procrastination "I'll browse Reddit until this kicks in" -- until their effects wear off and leave you right back where you started with a bunch of nothing done. You can mitigate this somewhat by giving yourself a short task to do before the caffeine kicks in, even if it's an asinine one like "write down what you want to do today." Speaking of the which...

2. Write shit down, set alarms, otherwise use harebrained tools.

Those 7 balls that you can juggle need to incorporate just about everything that is happening in both personal and professional life -- not just code. If those things are in the mix, then you're not as effective. Just like how you should set an alarm for "time to start brushing my teeth and getting ready to go to bed" so that you can get enough sleep, you can set an alarm for "at this time I need to stop everything and call the couch company to send someone to fix the couch at home." Write those things down somewhere, set an alarm to look at that list and do the things on it.

3. Kill context-switches. Either lie your ass off about them or say "no" up front or be honest -- whatever is necessary to kill them.

Take your hands, open them in front of you, spread out your fingers, interleave them. That is 8 work tasks spread out over some distance L. Maybe it's 8 hours of the day working on two projects, Right and Left. One gets concluded at 4pm, the other at 5pm. We'll assume you got started at 8am and ignore an hour for lunch.

Now separate your hands and collapse your fingers. Put your right hand above your left hand, touching. Still 8 fingers in a row, but now you notice that your Left project is released at 12pm before lunch, while your Right project is still released at 5pm after. You just improved your average time-to-completion by 2 hours with no stress, and no improvement in efficiency: you just rushed one project out, then focused on the other.

Now interleave your fingers again and remember how each of those switches between projects feels. You've got 7 in there, yes? Each one doesn't feel good, does it? Because you've got to stop juggling one set of balls, put it all down, and slowly start juggling this other set of balls. Each context switch eats up mental energy. (It also eats up time -- if you need 15 minutes to really get up to speed, then the 7 context switches eat up almost 2 extra hours of your day. So there is an undisclosed efficiency gain here.)

If management forces on you to be working on the two things at once with constant status updates, strongly consider lying your butt off. (Of course, first show your boss the trick with the fingers, it usually convinces them.) Because if management is asking you to do worse work slower so that they can be polite to two of their separate clients, then management has failed. They're supposed to buffer you from all of that crap.

If you can't lie and you can't convince your management, try a firm "no." Just say "I'm on this high-stakes Project Left right now, I can't take on Project Right right now, maybe when Project Left is over I can. Fortunately I think Project Left will be done by end-of-day today, possibly before, so if you really can't find someone else, I may be able to start Project Right today." A "no" always goes better with a nice timetable that suggests that the task will still get accomplished in a timely manner.

Similarly, ignore those "trends" when you're coding. Trends are another project with another context switch. Don't interleave it with anything else.


As others have been saying, the "prolific programmers" have a passion to program that doesn't get satisfied by coding from just 9 to 5. Personally I tend to have waves of intense programming around the clock followed by a cooling down period with either part of the cycle lasting days to weeks. Sorry for the shameless self plug but you should start small and try making a "One Hour Side Project" http://kolodny.github.io/blog/blog/2015/03/03/the-one-hour-s...


Your comment glosses over the fact that many open source developers do this for a living. It's not some side project that they just do after work. Sure, they could put extra hours in, but open source is not just a hobby


I wouldn't know about that. It sounds like the OP is specifically asking about people who contribute to OSS as "just a hobby"


When it comes to making headway on important projects, there is no substitute for putting in the hours. It requires extended periods of uninterrupted time. Unfortunately, you only have a few hours a day available to you in which your mind is firing on all cylinders.

The answer, then, is to find a way to work on these projects in the course of your job. That's what I do, and my best guess is that that's what the people you've heard of do as well.

Find some project that your employer really, really needs, get permission to open source it, and spend your most productive waking hours on it.


I'm a relatively successful coder and entrepreneur. My one tip for you that can change your productivity by an order of magnitude:

Stop wasting your time reading/posting/liking on sites like HN, Facebook, etc.


How do you keep up with what's going on in the community?


You either have to grind it or love it. If you love it, then you don't feel the grind.

Exercise helps like everyone is saying.

Recently I read a book called Pragmatic Thinking and Learning. Great tips in there.


- Work only on what you want, when you want to (as a rule, exceptions have to be made) - No TV, no (general) news - No kids, no girlfriend - Socialize mostly around projects (not neccesarily dayjob related) There are some tradeoffs to the above, one could say. Staying healthy is also a challenge.

But don't worry about 'being one of those people', just try to do what like/love. And if you don't know what that is yet, find out!


But there are some simple tricks without much drawbacks. One of them is to write/publicize everything you do. Don't consider something done until you've released and documented it.


I would recommend reading the 4-hour workweek book from tim ferris. http://www.amazon.com/The-4-Hour-Workweek-Escape-Anywhere/dp...

Great advice for time management, works well for IT positions.


I measure my coding time in hours I'm truly concentrated and that's about four hours a day. My main focus is to use these hours as effective as possible and fill the rest with easy tasks. This way my mind stays fresh every day.

And exercise, best way to clear your head!


I am at university and in most part of the year I can't spend how much time I would like to programming. My mind is too tired after several hours of studying, especially during final sessions. Am I the only one?


"like food-to-code machines"

Great phrase - I'll be using that !


A related quote you might also enjoy: "A mathematician is a machine for turning coffee into theorems" - Paul Erdos




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: