Programmers at my company have moaned that they don't get any training. I suggested to management at my company that all programmers sit down with a senior programmer to discuss their training needs. If any training was identified then the programmer would be given a couple of hours of work time a week to study (e.g. by reading a book, doing a little project in a new technology, etc.).

The response I got was that a programmer should "learn on the job" and management didn't want to see programmers sat around reading when there was work to do.

They did say if a programmer had no projects to work on they could do training, but this very rarely happens. The company are happy to buy books and pay for exams should employees want to study in their own time.

I'd like to think educated programmers write more maintainable code, with fewer bugs which would save the company money in the long term. For example by understanding OO principles we wouldn't end up with classes with thousands of LOC in a couple of methods which are difficult to maintain.

Has anyone found business reason for programmers to do training?

  • 12
    All I have to offer is real life experience: no amount of hard evidence will cause a manager to change his idea about training. If they are convinced that cutting the next tree now is higher priority than sharpening your already worn axe... Let's just say that this is relevant, just replace equipment with training: workplace.stackexchange.com/questions/15290/…
    – user10483
    Oct 28, 2013 at 17:01
  • 2
    This question appears to be off-topic because: While the problem is real, the question culminates in a request for a resource (i.e. evidence), which is off-topic.
    – Jim G.
    Oct 28, 2013 at 18:34
  • 7
    Somewhat related Dilbert: Keeping Training Costs Low
    – Daniel
    Oct 28, 2013 at 21:09
  • 3
    I don't think there will be a change unless management let go of their way of thinking of programmers as pure "code monkeys". An ideal workspace would probably allow for a day a week to work on something of your own choosing but still something meaningful for the job. Example: maybe you learning how to master your SQL-indexes would take you a day but would make your website or application appear to be much faster for years to come. Google and many more use this.
    – Alex
    Oct 29, 2013 at 9:13
  • 2
    @Renan I have no problem with "cutting the next tree now is higher priority than sharpening your already worn axe", I would just like there to be plan to sharpen each axe every X number of trees, not just plough on through the forest until the axes get bored and go looking for new jobs. Oct 29, 2013 at 16:43

5 Answers 5


IF you're going to advocate for training, do not advocate for time to read books or work on little projects. Those are in fact things you can do on the job. When you need to write some code to do X in the big project, you can go read about X in a book (or online) and make a little proof of concept (or spike, if you prefer) that does X to get familiar with it before you integrate it into the big project.

What you need to advocate for is actual training. Taking courses (online, video, or in-person), going to conferences, that sort of thing. Learning about things that you didn't even know existed. Being led through a path from "never heard of it" to "I know how I can use this at work" and then doing that. The most expensive component of this is time - entire days or even weeks taken away from billing - and that's also the most valuable.

I promise all my people two weeks a year of training but it has to be in big pieces that are reportable and trackable. Not half a day here and two hours there. If the developers want to use online at-your-own-pace training like Pluralsight (disclaimer: for whom I write courses) then it should be fairly intense. Eg complete a 7 hour course in less than a week. That level of focus is key for really learning rather than just sitting around half listening.

Why do I spend that kind of money (two weeks of bill rate a year, plus the expenses?) Because my people get better, much better, as a result. They also get happier and less likely to move on to another employer. The hardest part for me has been remembering to do the same for myself, but in 2013 I attended both ACCU in April and GoingNative in September using the same reasoning I apply to everyone else and I'm so glad I did. I learned that things I thought I could ignore were actually relevant and important (and how to do them.) I strengthened relationships and made new ones. I'm better in my role for those two weeks away and I will be doing it again next year.

  • 4
    wow I would join your team every day! Oct 28, 2013 at 20:59
  • 4
    I agree, forget about the books. Most developers read books for the fun of it (at least the good ones I know). Training means you get a real class or conference, otherwise it is just "free-time". I look at sending developers to training/conferences as a company provided benefit that is yet another data point to consider when looking at compensation packages BEFORE taking a job. Companies that want to retain employees will provide the perk. If retention is a problem, then this might sway management as you can probably "sell" that developers are leaving because their skills are becoming stale.
    – Dunk
    Oct 28, 2013 at 21:36
  • 1
    @Dunk This sadly is not my experience. In very busy companies getting time to sharpen your axe is at a premium and something that often has to be done in your own time. Some programmers are understandably reluctant to do this due to family commitments etc so formal training would really be the only way.
    – Robbie Dee
    Oct 29, 2013 at 9:37
  • 3
    @Robbie:Every company is very busy. Especially software people. If training and keeping up to date is important to you then you need to ask at your interview. If the answer is NO, we don't generally send people to training/conferences then you should expect to be compensated in some other way (ie. $4000-$5000 more) to make up for it. I keep saying, pay is only a part of the compensation package, you have to see everything before you know if you are being paid fairly or not. Training is important to me, so I have never worked at a company that did not send me to conferences/training.
    – Dunk
    Oct 29, 2013 at 13:15
  • 2
    ....And yes, it always seems like the wrong time to go because we are always so busy. But guess what, the company always manages to survive anyways. For me, I have 3 non-negotiables, extra vacation time, flex-time and a training/conference once a year. I'd like to add that I did become a guru in my particular area of expertise thanks to a conference I went to, which opened a new world for me.
    – Dunk
    Oct 29, 2013 at 13:16

The current workload will unfortunately always be the priority. The ideal might seem to be for training to happen when there is nothing to do, but this presents obvious problems. Programmers that aren't busy get to do training whilst those who are snowed under with work miss out.

Consider also whether an idle programmer training themselves is even desirable. It is preferable for training to happen with a project in mind rather than some kind of scatter-gun approach where you're trying on various technologies without knowing which ones are likely to be useful going forward.

It is a difficult sell: Management want to know what tangible benefits there are for projects that haven't happened yet! A better idea might be to look at past projects and issues and then take a look at how newer technologies might have helped.

  • 2
    Actually, I think you have it the wrong way round. Programmers who know what they're doing don't get snowed under (in fact most places have a hard time keeping them in work), whereas programmers who are struggling to even do the job will never have time for training. Oct 29, 2013 at 11:42
  • 2
    That would of course be true if work were allocated evenly but there is an old saying: "If you want something done - give it to a busy person". This of course is for the exact reason you've outlined - they never get snowed under (as they have excellent planning and task execution skills).
    – Robbie Dee
    Oct 29, 2013 at 11:50
  • 2
    @Amy:I guess it depends on the size of the company. Because in my experience, every project wants the good developers and there's always a tug of war going on for which project gets the good people. There's never enough of them to go around. Meanwhile, the less skilled people tend to find a fair amount of idle time between assignments because nobody wants to take them because they are hoping to get the good developer.
    – Dunk
    Oct 29, 2013 at 13:31
  • 1
    In organizations that do not value training, they often don't know the good people from the less skilled ones. Oct 29, 2013 at 17:16
  • 1
    There's a whole lot that goes into recognizing skilled developers--it's not just who can hack something together that sort of works right now, but also who can build something that can stand the test of time (flexibility, maintainability). Organizations that have their heads together enough to see that sort of thing over the long haul also tend to notice things like the impact of whatever training happens and/or be comprised of people who have received training or just go train themselves. Oct 29, 2013 at 20:55

There's different kinds of training and there's different kinds of ways to offer it.

If you need training for a specific tool that you're team is using, or would like to use, you'll have to show that:

  1. This tool/technology will make the whole team more efficient and less costly and benefit the whole company in a direct or indirect way.
  2. Learning the tool/technology is not trivial.
  3. The developers would benefit from formal training as it would reduce errors introduced when learning on the job.

This might not apply to all new tools or technologies, but if formal training reduces the learning curve and possible errors that might be introduced by the trial-and-error approach often found when someone just learns bits and pieces as they need them, that could be a strong argument.

If you want more general training, such as "best practices of JavaEE web apps" or "effective unit testing", you might have a harder time with this. You could try a less formal approach, such as having "lunch-and-learn" workshops where developers listen to a talk/demo over lunch hour given by one of their peers who is expert (or at least more so than everyone else) in the subject.

This approach might not teach as much, but the informal nature makes it easier to organize, and if management is willing to buy pizza and let the developers organize their own training talks it can still be effective. Management may also like this approach since it runs over lunch so they don't really lose any working time - although they should be nice and spring for lunch. Also, I'd say it's important to not make these sessions mandatory but try to get people to participate voluntarily. Offer incentives such as a quiz with prizes (extra pizza or something - doesn't have to be too glamorous, but should be fun).

And finally, there is training for business-related subjects that could be of use to programmers. For example, an insurance company or bank might want its programmers to take some basic training sessions in the business side of what the company does. This is usually done to make it easier for the programmer to understand business requirements and to interact with other people (business analysts, testers, end users) when discussing non-technical aspects of the system. Usually this would be done if the programmers are expected to understand more than the absolute basics of the subject area in which they are programming.


It's not evidence but:

You should ask management if they think that carpenters/plumbers/electricians should "learn on the job" while building their house, or if aerospace engineers should try out a new technique when building their plane.

Or you could ask how programmers are supposed to innovate when they're on average X years behind state of the art. "I mean X years ago, there was no iPhone/Facebook/Internet!" "Look at Competitor Y, do you think they learned to make [new product Z] on the job?"

  • 5
    Or you could ask how programmers are supposed to innovate when they're on average X years behind state of the art. Careful when you say that. A bad manager may responde by firing you and hirinng someone who is 0 years behind the state of the art. I know two companies where firing a lot of people and hiring many new ones every three or four years is part of their business processes. So as "to keep knowledge fresh".
    – user10483
    Oct 28, 2013 at 17:50
  • 1
    @Renan - Companies are free to do that. The OP would be well served to know that's their plan sooner rather than later.
    – Telastyn
    Oct 28, 2013 at 18:03

I'm wary of programmers who say they need to be "Trained" in order to do something--you should be able to research and solve just about any problem--that's your job.

Also, I'm even MORE wary of management that doesn't recognize the fact that exposing engineers to concepts, languages, libraries, patterns and communities keeps them fresh, inquisitive, happy and productive.

If Management really needs a business reason, they might look at some big successfull companies (Google, Microsoft, Amazon, ...) and consider how much they spend on this sort of activity and why.

  • 4
    Your answer doesn't really answer the question. I think it would have been better as a comment.
    – Dennis
    Oct 29, 2013 at 3:52
  • If a programmer has a certain way of doing something, that tends to be the way they do it unless they're actively engaged in training themselves.
    – Robbie Dee
    Oct 29, 2013 at 9:31
  • 1
    @Bill:You obviously must work on basic CRUD applications in order to have the opinion "you should be able to research and solve just about any problem--that's your job". The reality is that if it has been done many times before then sure, a little research and the problem is solved. However, for those of us working on things that don't have a ready made answer on the web, it is a different story. Also, knowing what something is and how to apply it are very different things. Think Calculus. Most sw people think it wasn't useful. They are wrong! They just never learned how to apply it.
    – Dunk
    Oct 29, 2013 at 13:37
  • @Dunk Actually no, I've had to research quite a bit of tough stuff. I've done of assembly programming (Drivers), worked with quite a few languages, programmed Windows in C way back in 3.0 (insane back then--macro based madness!)--look at my SO questions and answers if you like. I've never needed a class but a few have been useful I admit. I've only seen a few engineers say they "needed" a class to do something new and every time it was something ridiculously simple. What did you need classes for? (That would make an interesting thread)
    – Bill K
    Oct 31, 2013 at 3:18
  • @Bill:Yes you can learn on your own. However, wise people understand that they can learn the "right" way AND more quickly from people who already have experience doing what you are trying to learn.
    – Dunk
    Oct 31, 2013 at 19:32

Not the answer you're looking for? Browse other questions tagged .