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.

I've been working as a software developer for about 2 years by now. It seems obvious that in a field so rapidly evolving as software development, you need to spend time on learning new technologies, frameworks, etc.

I always thought I could take it for granted that if I need to learn something to solve a problem at work, I am free to spend the hours needed learning that at work as well. However, I have had discussions about this topic with various colleagues, and we were holding very different opinions, apparently on the span of two extremes:

Your employer pays you for knowing stuff. You got hired for having knowledge on the field of expertise required for doing this job, and if the field emerges so that you need to aquire more knowledge, it is only natural that you do so in your free time.

And the other extreme being

Whatever makes me more productive at work in the long run, is worth spending the time on at work, because the employer will eventually profit from that. This does of course apply to learning new techniques, but also, e.g. learning VIM to get faster, etc.

But even when discussing how long to spend time on something with the guys tending to the second extreme, we were of vastly different opinions, ranging from "an hour every now and then is okay" to "however long it takes".

Does your workplace encourage learning new skills and if so what processes do they have to encourage this? How much time do you spend learning new things (and not writing production code) during your day as a programmer?

share|improve this question

closed as primarily opinion-based by gnat, Jim G., MichaelT, gbjbaanb, Dan Pichelman Aug 7 '13 at 15:49

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

19  
What does your boss think? –  MarkJ Aug 6 '13 at 11:40
1  
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. –  gnat Aug 6 '13 at 11:43
2  
@gnat I'd argue with that - I'm not asking what people think is the right thing to do; I want to know what experience people have made with this issue to get a better picture of this, because obviously I did not have the chance to look into many companies and their ways of handling this. –  nijansen Aug 6 '13 at 11:46
1  
see help center: "avoid asking questions where … every answer is equally valid" - that will be exactly what you are looking for, want to know what experience people have made –  gnat Aug 6 '13 at 12:37
2  
Very related question about learning at work, on The Workplace. –  enderland Aug 6 '13 at 15:38

7 Answers 7

up vote 29 down vote accepted

Managers (like me) are hesitant to specify explicit training budgets. According to Parkinson's Law, such a budget would be consumed or even exhausted regardless of the actual needs in knowledge development.

If you just call your learning time project work and keep it in reasonable proportion to your overall work and your overall achievements, nobody will object. The percentage varies and depends on your age, experience and working area. I would regard between two and 15 days of training per year as normal. New employees often need more.

In a very innovative environment, the learning and researching percentage is typically higher than usual. We have a mentoring scheme for junior developers. Whenever somebody changes his/her working area, additional training is obviously required.

The learning issue is a matter of self marketing. No team would tolerate a member who is constantly unavailable due to demonstrative self-study or extensive absence in exotic training courses. Try to appear well-informed without utilizing excessive resources for your learning. The project time needed to experiment and learn is mostly treated discretely. Would you personally pay a craftsman for getting to know your brand of car?

For knowledge-deficiencies which are in contrast to your job description, private engagement would be taken for granted. Example: If you are supposed to be a Senior Java Developer, you should not ask for a basic Java training.

share|improve this answer
1  
A very good comment. As an aside, this sentence 'Would you personally pay a craftsman for getting to know your brand of car?' made me think of car manufacturers such as BMW or Mercedes Benz who give their engineers training with regards to each model they sell, and include that cost in the price of their cars. –  Daniel Hollinrake Aug 7 '13 at 11:36

The problem with doing stuff in your free time is that you need to actually have some free time. Try being a father with a young baby! Try working 14 hours a day and then find time. Taking time to learn new skills needs to balanced with time to relax and re-charge. Also I find that having time to relax helps me solve problems at work. I quite often find solutions when doing the washing up!

At previous firms I introduced the idea of a trade. The company provided an hour a week for us to learn and we matched it with an hour of our own time. Sensible firms should welcome the opportunity for its employees to learn new skills. At the same firm other programmers introduced the idea of 'brown bag' sessions, where we would spend a lunch-hour getting an introduction to new ideas and skills.

share|improve this answer
    
I've had good results with 'brown bag' sessions as well. They are a great way to learn the details of what your coworkers or their friends are doing. As Daniel said sometimes you don't have much free time at home so the time at work has to be used to learn as well. –  Michael Shopsin Aug 7 '13 at 19:02

I tend to just plan some extra time for my projects in order to get some learning done. I also see spending time on sites like Stackoverflow etc. as learning new stuff for a certain task.

I couldn't put my finger on an hour a day or rules like that. Just some days are very productive and highly efficient and other days I just hit the books or read up on stuff. Mostly the 'learning days' fall into my planning stage of new projects.
Also I have a long commute to work where I read up on stuff.

Basically just try and find out what suits you best without feeling guilty or just wasting time at work. As long as you can explain and justify time spent not programming you should be fine in most cases. I think every developer or engineer should know quite a bit regarding their field of expertise and especially know where to find deeper knowledge when needed.

share|improve this answer

In the book The Clean Coder, the author, Robert C. Martin, says that you need around 20 hours per week to practice and acquire new skills. This is on top of your job and it's your responsibility to train yourself up. Why? Because most workplaces will not train you for your next position or even your current position. Most workplaces aren't equipped for that.

As this blog post says,

It is your own responsibility to keep training yourself by reading, practicing and learning - actually anything that helps you grow as a software developer and helps you get on board with the constant industry changes.

An important note is this should be done on your own time, not on your employer's. It is not their responsibility to train you, but your own. However, do not mistake this with you should be doing your job during this time. This time should be dedicated for you and your own enjoyment only. You should do anything that interests you.

share|improve this answer

Learning at work falls into 3 main categories:

  1. training the employer explicitly trains you on, eg training courses.
  2. training you get as part of your job, eg the employer requires you to learn technology or product (this includes internal technologies and products) and allocates you some time with internal mentors/trainers.
  3. everything else you can get away with, eg time spent surfing SO or other tech sites, reading up about technologies.

number 3 is far and away the most common - if you can get away with learning something new on company time, without the boss noticing, then go for it. Just be aware that personal improvement is almost never a part of your contractual employment. You get paid to produce products for your employer, not to train yourself. Welcome to the world of being a wage slave :-)

share|improve this answer
10  
An enlightened employer will realise that a permanent employee needs to improve themselves in order to maintain & improve their productivity, and will encourage it. An enlightened employee will work with the employer to strike the right balance between personal improvement and actually delivering products by deadlines. –  MarkJ Aug 6 '13 at 11:42
    
yes, but an enlightened employer will provide you with that improvement so you can deliver better products, or deliver them faster. Not general training in whatever happens to be the latest hot tech subject on the internet this week. A lot of places I've worked have internal training such as lunch-n-learn, or coding dojos etc. None have had 'do your own thing for "as long as it takes" to learn something that may be relevant to your job'. –  gbjbaanb Aug 7 '13 at 10:00

I think this problem is too various to abstract it in a small set of simple rules, so I'll try to make some examples to show what my opinion is. (Maybe some scenario is not very realistic, take it as an abstraction).

  1. Case A:
    Your project: Develop a J2EE enterprise web application of some kind
    Your knowledge: You know about "Java Enterprise", but it is the first time you actually get your hand on it (obviously you are a Junior)
    You should: Probably spend a good amount of time learning best programming practices and experimenting before starting the "real work"

  2. Case B:
    Your project: Develop a parser from a language to another, in a more-or-less trival way
    Your knowledge:You are a formal-language/parsers specialist with tons of experience.
    You should: Probably not spend any time (or very little) studying what you already know or learning other things

  3. Case C:
    Your project: Develop a p2p library for android
    Your knowledge: You know about networks, sockets, and TCP protocol, just you happen to not know the UDP protocol
    You should: Spend an average amount of time learning what the UDP protocol is and how to use it, if you know that it will help you in your project.

I think that in the IT world, some kind of learning while working is a natural fact in most of the cases, for the facts that technologies continue to evolve, and that even though you can be a professional, you may not know every single technology you are required to use or task you are required to do always at 100%, since there really are a lot.

The employer should also be aware, that computer scientists are not oracles, and that requiring to develop an e-commerce web application is not the same thing as buying a shower-box (I am sure they all are).

That said, given that an employer always has a project to work on, i think he should probably concentrate his learning and experimenting on the purpose of the project, or at least on the field of the project, so that his knowledge can grow aligned with his achievements.

share|improve this answer

I know some people in the office that have been researching new technologies for years now.
Yet they haven't presented something new, I guess as in everything, people tend to abuse,
And where there is abuse, there is control measurement.

share|improve this answer
1  
Just because you study something, doesn't mean that you will learn it. Learning depends on your state of mind, how difficult the material is, and how well aligned the education method is compared to your own best way of learning. –  Juha Untinen Aug 7 '13 at 12:13
    
@JuhaUntinen if you were the owner of a big corporation, would you buy that what you have just said? Would probably need to ask you when you do –  Rockster Aug 7 '13 at 19:39

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