Do you spend your working hours learning new stuff, reading tech blogs, books on programming etc.? What's your opinion on it? Can an employer have benefits allowing developers to spend about 1-1.5 hrs a day on learning. Will it be repaid in future (with better productivity etc.)?

  • 6
    I personally spend about an hour a day on reading new stuff, articles etc if I don't have urgent tasks and I believe it's useful. You can say it's better to do it in your free time but often it's quite difficult to allocate time on it though it all depends on your priorities.
    – make_sense
    Commented Apr 14, 2011 at 13:00
  • 4
    I've noticed that Programmers.SE get's much less active in the evening (subject to timezone variance), so I would guess that most of us do.
    – Craige
    Commented Apr 14, 2011 at 14:39
  • 3
    I spend a good deal of time on SE... half of the time, it's saving my life - and the other half I spend trying to participate in the community. Either way, it's an investment in my company's long-term goals, because I learn vital new things here every day.
    – eckza
    Commented Apr 14, 2011 at 18:51
  • 3
    If you are a consultant or a contractor then you do not have too much of a choice in the matter, you have to spend 100% of your billable time toward a project. Commented Apr 14, 2011 at 20:03
  • 1
    I think this question could have been better if it had clarified whether it was referring to learning in an area that is intimately related to the job or learning in an area which is only related to programming in general. Is it "I need to learn this SQL syntax to solve our database issues" or is it more like Google's 20% time? I think if the OP was asking about 20% time then a loooot of people would change their answer.
    – Neil Traft
    Commented Apr 14, 2011 at 21:57

12 Answers 12


I am of the mindset that it is essential for a good development environment to allow for an hour or two at most for exploration and learning, barring when it's "crunch time" on an application of course.

An environment which doesn't do this is a red flag in my book because it tells me they don't value improvement.


Worst of all is the place that reprimands it's developers for reading blogs/technical sites instead of "writing code". That, to me, indicates an environment that doesn't care about it's developers beyond what they can squeeze out of them.

  • 10
    The sad part is I've met many, many, many companies that fall under that and don't allow any "downtime" at all for developers. Hearing "there is always something to work on" is the worst thing ever for me. Commented Apr 14, 2011 at 13:10
  • Essential, but very difficult. Commented Apr 14, 2011 at 14:03
  • 6
    Very difficult to get a company to realize that it's essential ;) Commented Apr 14, 2011 at 14:32
  • 10
    Explain that's it's like laywers, they need to know all new laws. Or better, doctors, they need to know all new techniques and studies in order to be a great doctor. References are constantly evolving, just like in programming.
    – user2567
    Commented Apr 14, 2011 at 14:45
  • 1
    @jwenting That's my point; a good company knows that "learning during office hours" is a good thing; a bad one doesn't know or expects it to be compensated. Many more companies fall under the "bad" category than the "good" in that regard, sadly. Commented Apr 15, 2011 at 12:04

I think that almost all employers end up paying people for about 1 - 2 hours of learning at least a few days out of every week. Even if you are just searching documentation, you are still learning something that you didn't know before.

I personally dislike setting up 'slices' of time for others, it feels a little too much like managing someone else's time. If I hired you, I did so because I have a pretty good feeling that you know how to manage your time better than I do. You set productivity goals and the occasional deadline, but other than that, let the employee do what makes the employee most productive.

If you need to spend six hours figuring out how to best approach a problem by studying several different algorithms, that's fine. If you need to spend 20 minutes going through a reference of a language implementation, that's fine.

In short, just encourage people to learn and get better as they see the need and opportunity to do so. Pay for training when it makes sense and don't cheap out on books. That usually ends up in great productivity and keeping great employees.

  • 5
    +1 for the last paragraph alone. I wish more companies thought like that! Commented Apr 14, 2011 at 13:12
  • 3
    +1 because I agree that you shouldn't have to setup "slices" of time to learn. Learn as you need to, and if you've learned what you need to know and should be working on implementing it then get to doing that instead.
    – Rachel
    Commented Apr 14, 2011 at 13:21
  • 1
    a complany can definitely increase loyalty of its developers if it follows the advice in the last paragraph.
    – make_sense
    Commented Apr 14, 2011 at 13:23
  • I really don't think this is what the OP was asking about. Of course all programmers learn in the course of the job, that's not even a question. The question I would ask is, "Do you spend your working hours learning something that will not help you solve any immediate problem (but which may make you a better programmer)?"
    – Neil Traft
    Commented Apr 14, 2011 at 22:04
  • Books - yay, training - nay Commented Apr 15, 2011 at 0:19

I spend a few hours each morning focusing on learning something new. This can be either something related to my main technology stack (.NET, WPF, ASP.NET MVC, Linq, etc.) or I will play around with new languages, web frameworks, or even do some calculus and other hard math to keep the mind limber. Of course, I get to work at 6:30 AM and do this until 9:00 when the work day starts. When you have small kids at home like I do, you have to do your work early in the morning away from the house so you can totally concentrate. This also leaves my evenings open to be Dad. So, yes I think its important for an employer to give time to its knowledge workers to attain new knowledge. I always tell my developers to take time to learn new stuff and even encourage them to attend conferences and seminars to always keep their mind limber. Even if they don't write anything in Erlang, it may possibly manifest itself somewhere conceptually later and prove to really useful in another project.

  • 2
    So, you learn from 6:30-9:00 and then work from 9:00-5:00, and therefore you don't learn during working hours? I'm glad you have the right attitude, and I think you're the first person who has actually answered the OP's question, but I can't help but play devil's advocate a bit. :-)
    – Neil Traft
    Commented Apr 14, 2011 at 22:14
  • @NeilTraft - Ha, I get your point. I think I was referring to pure academic learning and exploration of new concepts. Of course we continue to learn while we're working too but it's more of an applied knowledge, at least for me. I might learn how to use something new with ASP.NET MVC or write some killer Linq queries or something, but there's not too much time to check out Rust or Go or some new technology. Commented Jan 26, 2012 at 13:34

That's why it is called the "Reading Room" :) Set up an RSS reader or whatever you like that can aggregate postings from various places that you find valuable and then print off a few articles per day and take them with you.

But beyond that, if you are doing something that you already know the answers to and are not spending at least part of your day tracking down the answer to something (which is also learning) then you need to change jobs. Complacency is a killer in this profession.

  • 12
    Also very true. Complacency leads to stagnation. Stagnation leads to laziness. Laziness leads to obsolescence. Path to the dark side, they are. Once you start down the dark path, forever will it dominate your destiny. Commented Apr 14, 2011 at 13:15

I commonly didn't really get into writing code until after lunch. Commonly my days would go something like this:

9am-10am: Stackoverflow(including interesting blog links, etc), email, maybe review some of the recent changes in source control to get a feel for where the project is headed as of late.

10am-12pm: usually spent doing "light" coding. Refactoring, small bug fixes, and designing how the implementation for whatever will work, with sometimes a bit higher-level designing when needed

1pm-3pm: usually heavy coding. Tedious coding fits in here.

3pm-3:30/4pm: A bit more learning as a "break".

4pm-?: If I was really in the zone, I'd be known to stay an hour late or so. This is oddly probably the most productive time for me. Namely because usually I get left alone after 4pm, and I'm a natural night person so anything before 12pm seems "early" to me.

Now, I say it's unfair for the company to pay you for writing blog posts and such. This includes Stack Overflow answers sometimes.

  • 3
    It's important to know the best time for you to work on "hard" coding or work on "hard" problems. I find that when my mind is at the sharpest (in the morning), I can solve something in 10 minutes that can take hours at other times.
    – B Seven
    Commented Mar 29, 2012 at 14:44
  • 1
    I get a lot out of StackExchange. Community sites like this only work if people put something back in. If a manager was to complain about my contributions then I would respond that this is the cost of doing business: you get what you give.
    – Underverse
    Commented May 13, 2015 at 0:53

Learning, eh? I'd say I do that most of the time at work. To me, learning is the core essence of programming, and a natural corollary of the fact that you're always solving new problems (i.e. not doing the same thing twice). 

If you are not learning during your working hours, you're either doing it wrong or you should look for a way better work environment.

(That said, for blogs and books I mostly tend to use my free time, except when it's closely related to the work at hand.)


From a management point of view, employers generally do want their employees to be constantly learning. This could be formal classroom training or e-learning, catching up on your RSS feeds, reading technical journals, watching videos, having a mentor, mentoring others, etc.

The rub comes when

  1. your manager thinks you should know this stuff already
  2. you've got a deadline on a project
  3. you start forcing your new-found learning on business without it going through the proper channels (e.g. I just learned all about ObservableCollections and think it's great so I'm going to start doing that in my part of the codebase.)

All of that said, the general expectation is that you need to drive your own learning against the 70-20-10 model

  • 70% should be on-the-job learning, like fixing your code with something more efficient
  • 20% should be informal learning, like being mentored and reading blogs or attending a conference
  • 10% should be formal training, like a 2-day classroom event or e-learning modules with SCORM tracking

If your company doesn't have the 10% formal training portion, ask for it.


For me, programming is learning. Every time I write a method I can learn something:

  • Is this the best way to do this?
  • What is the memory/CPU usage?
  • What are the trade-offs?
  • What are the potential problems that could make this method fail? (deadlock, dropped connection, etc.)
  • Does this method need to be part of a library so I can reuse it later?
  • How can I explain this system in non-technical terms so that anyone can understand it?
  • How will I remember and organize everything I just learned?

Every time I go on Programmers.SE or Stack Overflow I learn something.

I think that being a programmer is all about learning. And, everything that we learn can be used to make us better programmer and help make the projects that we work on succeed.


I'm spending around (of working hours):

  • ~5% of time to write code
  • ~10% of time to watch Starcraft2 videos on YouTube and drink coffee
  • ~20% of time to think about current problems project is facing
  • ~65% of time to learn new and exciting stuff
  • 3
    careful posting stuff like that... Some employer may not take lightly that you spend half of a paid day per week watching starcraft stuff on youtube. Unless that is you actually work on the thing !
    – Newtopian
    Commented Apr 15, 2011 at 7:31
  • 1
    @Newtopian results matters Commented Apr 15, 2011 at 9:49
  • @Arnis : don't get me wrong here, if I were your boss and you delivered the goods I could not give a rat's ass if you spent some time on you tube. I might see it as a sign I am not challenging you enough but that's it. For many other pointy hair boss you are effectively stealing from them and they will not like it one bit. That said, my comment was more because people got fired for a lot less just by posting silly stuff on their facebook page for example. I was just hoping for your sake your boss was not of the pointy hair type :-) cheers
    – Newtopian
    Commented Apr 15, 2011 at 10:26
  • 2
    @Newtopian as I see it - programming is an art. You can't force it. if You do, You end up with lousy pop music. it's not that I don't want to work, it's that I sometimes just can't. and I'm completely shameless and honest about that. :) Commented Apr 15, 2011 at 11:02
  • 1
    @nikie o_0 why on earth programmers should work next to Your kitchen sink?! sorry, can't answer that. I think it's biased and bad analogy. Commented Apr 15, 2011 at 14:53

Reading technical articles on web has been a habit for me for the past 2 years. Everyday, I spend at least one hour or more jumping through articles. In the beginning, I used to hop on every article and try to learn. That was my interest and it seemed unproductive due to the vast amount of articles and topics that one could go through. Probably, "Jack of all trades, but master of none" fits this situation. Over time, I have found many good resources and identified my interests. Post that, I have narrowed down one the topics and started to be selective.

What I gained from all the reading is finding about good resources like stack overflow, Y Combinator, smashing magazine, etc. What I will gain is expertise in the topics that I am reading. So, my point is that one should also be selective about the reading. Reading is always a good habit. Selective reading is a great one.

Also, one other observation is that almost all the people around me that I feel are good programmers, keep reading and pointing me to great stuff. It is like our reading helping others become better - The social part.


I prefer the learning time in the morning. I start the day by learning new stuffs that have been in my mind and/or read tech news feeds I follow in Google Reader. Sometimes I also spend some time after lunch. If I feel to learn anything new which is not blocking my current task, I put it up for the following morning.

Well, I also avoid writing blog during working hour since it may take more than the estimated time. The best time for writing blog or participate in the community (for me) is after office hour.


one can find the problems around or from the projects he is working on. Just create or device some problems for your karmic endurance. Look deep as much as you can. One will find his way to the glorified paths of autodidactic work-life. When one become more productive, one will find time to learn to become more productive than he is. Evolutionary intellectual nourishment of oneself, i say, is always do good even if you are not a programmer. It just enhances the thinking process. There are different ways to approach the problem. Go for the option to dig more. Never be satisfied with the solution. Even after the committed delivery, one can review the output again. One has to do sharpen his tools. Better place for developing your own flying saucer, is definitely at your own personal dark room!

Not the answer you're looking for? Browse other questions tagged or ask your own question.