Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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

share|improve this question
5  
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 Apr 14 '11 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 Apr 14 '11 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. –  kivetros Apr 14 '11 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. –  aceinthehole Apr 14 '11 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 Apr 14 '11 at 21:57
add comment

12 Answers 12

up vote 119 down vote accepted

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.

EDIT

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.

share|improve this answer
13  
+1 - red flag for me too. –  P.Brian.Mackey Apr 14 '11 at 13:09
8  
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. –  Wayne M Apr 14 '11 at 13:10
    
Essential, but very difficult. –  Brian Knoblauch Apr 14 '11 at 14:03
4  
Very difficult to get a company to realize that it's essential ;) –  Wayne M Apr 14 '11 at 14:32
9  
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 Apr 14 '11 at 14:45
show 6 more comments

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.

share|improve this answer
3  
+1 for the last paragraph alone. I wish more companies thought like that! –  Wayne M Apr 14 '11 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 Apr 14 '11 at 13:21
    
a complany can definitely increase loyalty of its developers if it follows the advice in the last paragraph. –  make_sense Apr 14 '11 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 Apr 14 '11 at 22:04
    
Books - yay, training - nay –  Arnis L. Apr 15 '11 at 0:19
show 1 more comment

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.

share|improve this answer
    
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 Apr 14 '11 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. –  Steven Ellliott Jr Jan 26 '12 at 13:34
add comment

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.

share|improve this answer
10  
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. –  Wayne M Apr 14 '11 at 13:15
add comment

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.

share|improve this answer
1  
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 Mar 29 '12 at 14:44
add comment

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

share|improve this answer
add comment

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
share|improve this answer
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 Apr 15 '11 at 7:31
1  
@Newtopian results matters –  Arnis L. Apr 15 '11 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 Apr 15 '11 at 10:26
1  
@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. :) –  Arnis L. Apr 15 '11 at 11:02
    
@Arnis L: what would you do if you hired a plumber and she spent one hour updating her facebook account before fixing you sink because "plumbing is an art and sometimes she just can't do it"? I share your view, I'm just curious how you would decide if you were in the position of the pointy-haired boss. –  nikie Apr 15 '11 at 14:41
show 3 more comments

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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!

share|improve this answer
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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