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'll preface my question with a disclaimer - I am not an engineer, I'm just someone who works with them full-time, in a learning and development capacity.

Given that, one of the comments I get regularly from the engineers I'm tasked with developing is that they feel that they're having solutions (both technical and non-technical) for development "pushed" at them vs. anyone from my field consulting with them to determine what they really need.

So my question is - if you could give your company a list of the top 3-5 things they could do - in a classroom, or elsewhere - to develop meaningful skills that would help you be a better engineer, a better employee, and one more likely to STAY with the company for the long haul, what would make the cut and why?

Thanks in advance for your responses.

share|improve this question

closed as off topic by maple_shaft Mar 7 '12 at 13:29

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

add comment

8 Answers

Suggestion the first: create a central hosting solution for anything developers think is relevant to learning. At a minimum, videos of presentations & brownbags should go here; screencasts, workflow videos and so on are also nice to have. If someone wants to write up a text document outlining how a design decision was made, or how they think an optimal code review process goes, let them! Ensure all contributions are voluntary. Date all materials clearly so that developers can judge for themselves how out of date they may (or may not) be. This can be as simple as a directory page on the internal wiki (you DO have an internal wiki, don't you?) or as complicated as a StackOverflow-type solution that allows for voting and comments.

The thing that kills me - especially about the large corporation I used to work at, but even about the startup I work at now - is how much knowledge is generated and then lost within the organization. This strategy helps mitigate that somewhat.

Suggestion the second: create an internal calendar of technical events relevant to the company's mission. Seed it with as much stuff as you can find (everything from CocoaHeads / user group meetings to panels on mobile development to...), then allow developers to add events themselves as they stumble across them. Bonus points if the solution allows them to RSVP and see who else from the company is going (Google Calendar does this); it helps build a sense of community and helps the devs know who shares and can discuss their interests.

Among what's already been said - +9000 on sending developers to conferences. Also have a well-publicized process for developers to identify training and say, "Hey, you should send me to this!", as well as clear expectations for what a developer will do when this training is approved (do they need to share out their notes to the rest of the company? give a brownbag on what they learned? etc.). Good developers usually know what they need to learn. Great developers usually know the most efficient way to learn it.

share|improve this answer
add comment

I hate internal training. The best thing internal training can do is pay for external training of my choice. There is exceptional external training out there far better than any internal training could ever hope to be. Paying for external training will both benefit the company with more skilled employees and contribute to increased retention as external training is generally considered to be a perk.

Per comment: The absolute best training I ever attended was the Architect's Master Class. Period, full stop, there is none better. I also attended Guerrilla COM when it was taught by Don Box and Guerrilla .NET when it was taught by Mike Woodring and Keith Brown. Believe me, you will get more out of spending a week with Juval Lowey than you will out of a year of internal training.

share|improve this answer
    
My experience is just the opposite. Most external classes are a massive waste of money. Yes there are som exceptional training classes out there, but knowing which ones are those and which are drek? Not sp easy. Plus if no travel funds are avalible theere may be no exceptional training in your geographic area. Internal training can be far more focused on exactly the things you need. –  HLGEM Dec 8 '10 at 15:43
    
Both exist, and are largely dependent upon the original question - what do you value and is your company's learning function committed to making it available to you? JP - can you give me some examples of relevant and impactful external events you've attended and why they were valuable to you? Same question to you on internal events, HLGEM. –  MTR Dec 8 '10 at 19:37
add comment

Here are my suggestions:

  1. Help me understand myself. This can be tricky as well as quite costly to some degree as this is rather personalized, but the key here is to help me know what are my strengths, what kinds of things do I like to do in a professional setting, how could the company better utilize me, etc. Note that this can be quite psychological or spiritual so some sensitivity may be required. For example, some people may believe in a higher power that has a reason for everything that exists while others may think the bible is a book of fairy tales, just to give the extremes with most people being somewhere between the two. Another part here is finding one's passions and interests, which may not always be easy of course. Other areas under here could include MBTI, Enneagram, Strengths Finder, or F-Score to name a few tests one could take to try to learn more about themselves. The self-awareness part of emotional intelligence is also here as well for another idea of how to approach this.

  2. Let me know my path choices in the company. For example, if I am happy being a developer, could I be one for 25 years at the company? Do I have to find some career progression and walk down that road? This is partially about my knowing what the company wants and could use but also about my knowing what options do I have to explore. Some people may want to choose from a list of options rather than create their own out of thin air.

  3. Help me find the resources to advance myself. This is what comes after I know who I am and where I could go. Is there a mentorship program in the company? Are there volunteer groups that may interest me and show me that the company cares about the community around me? What is there to help me move from where I am to where I want to be. Another way to look at this is the question of how much assistance is there in setting goals that could be provided. I don't want to have to come up with all of the points on my own, but I also don't want this forced upon me either. Is there a peer recognition group? Are there athletic or artistic groups that I may want to join? Another side here is that beyond knowing what is out there, encouragement and emotional support may also be key points here in my attempt at personal fulfillment.

  4. Relationships and communication development. In a way this is covering some other areas of emotional intelligence where the point here can be to help me see what kinds of relationships do I have, how engaged am I, how well am I communicating what I do, want, or need? A tricky part here is that while this may come across as rather "girlie" the reality is that I'm pretty sure this wasn't covered in my Math or Computer Science classes even though part of the nature of my existence is to have bonds with other people and share stuff.

I'll admit to going down some of these myself in terms of what I'd like from the learning and development department. I suppose asking for a change on that development part may be asking too much, right? :)

share|improve this answer
    
JB - This is really great stuff. I will refer to your post when I get pushback from people who say that engineers don't care about the 'soft side' of profssional development. I've seen plenty of brilliant developers/testers sabotage their own careers by ignoring the relationship/communication elements of their jobs, and it's a totally avoidable and preventable mistake. It's not girlie. :) –  MTR Dec 8 '10 at 19:25
add comment
  1. Encourage lunchtime presentations of technology related to what your company does or new technology by and for employees. Provide lunch. Reward the speakers with some sort of token.
  2. Encourage lunchtime book discussion groups going through a particular technological book with lunch provided.
  3. Sponsor employees at industry conferences, but make sure that they are the very best that you can provide.
  4. Do not force employees to go to internal or external training that is below their level. Ideally let team leads pick appropriate training for employees, and absolutely don't let training companies or support guys just sell you something. I have gone to courses many times that were a waste of my company's money.
share|improve this answer
    
Relegating training to lunchtime is to emphasize that the company does not consider it important. No training should be done at lunch. –  HLGEM Dec 8 '10 at 15:39
    
@HLGEM - probably depends on how your company is set up whether or not this makes sense or whether other hours make sense. In my experience mandatory training is usually done on company time, optional training at lunch. –  justkt Dec 8 '10 at 15:44
    
I'm in the middle on this one. Mandatory training shouldn't even exist - because it will inevitably include people in its net that do not need to be there. That said, I think making optional, development-focused events available in non-work time is appropriate if it's focused on building your career outside of your current job. But few of us have standard, 40-hour work weeks, esp in high tech, so the work/personal time standard often doesn't apply anyway. –  MTR Dec 8 '10 at 19:27
1  
When would we actually eat? I like the idea, but I'd be too into taking notes, trying sample codes, googling stuff I didn't know that I wouldn't be able to put that precious piece of pizza in my mouth. my...precioussss... –  jellyfishtree Dec 8 '10 at 21:59
    
@jellyfishtree - usually the first five to ten minutes of the lunch hour are actually devoted to everyone scarfing down pizza. By the way - the quality of the food in lunchtime training definitely matters. –  justkt Dec 9 '10 at 14:37
add comment
  1. Sponsor courses for professionals available from CMU etc
  2. Have the entire MIT courseware and the likes downloaded on the local network
  3. Arrange for professional trainers for advanced training
  4. Get expert speakers like Steve Mcconnell et al to talk to the engineers
share|improve this answer
    
Fanatic - awesome. If you had to make the business case to do something like hosting the whole MIT catalog, what would you say are the key business drivers and ROI for doing so? Thanks in advance for your additional thoughts. –  MTR Dec 8 '10 at 19:28
    
@MTR: MIT OCW is easily one of the best in the business so accessing it should be welcome to the business unit. Hosting it on local network means that the streaming is a lot faster, you save bandwidth so ISP costs are less due to 1 time download etc –  Fanatic23 Dec 9 '10 at 6:42
    
Perfect, thanks. –  MTR Dec 9 '10 at 19:00
add comment

One of the thing to do will be to give the developers some free time to work on their favorite technology and/or personal project in the office time. Create a forum for such ideas and let the developers share their ideas with each other.

share|improve this answer
    
100% agree. From the most personal of projects can come key learnings or products that can have significant impact in the workplace. –  MTR Dec 8 '10 at 19:28
add comment
  1. Subsidize/sponsor conference attendance. Make sure devs have the opportunity for paid time off and expenses to attend tech conferences in their field -- a minimum of once per year.

  2. Community development time Let devs spend a few work hours per month on open source projects, so they can stay in touch with the development community and on top of the latest tech.

  3. Learning lunches This is when the company buys food and sets aside an extra-long lunch period for devs to eat together and take turns presenting on tech topics. Once or twice per month is ideal.

  4. Build a tech library. A corporate Safari subscription is a good start, but don't fail to also include classics like The Art of Computer Programming.

The thing about being a dev is that if you are really good at your job, the lag time between relevant tech being created, and that tech making it in to standard corporate learning avenues, makes those traditional methods fairly useless.

It's more effective to provide excellent reference resources, and most importantly, opportunities to learn directly from other devs.

share|improve this answer
5  
I'd give my left... uh... shoe... to work for a company that had a decent library and learning lunches. –  Steve Evers Dec 8 '10 at 6:13
2  
I hate Lunch and learn, lunch time is my time! If training is important, it is important enough to be done on company time. –  HLGEM Dec 8 '10 at 15:37
1  
Both answers here are correct - I'm not looking at building a list of solutions that absolutely every person will value or utilize, but to get a decent sample selection from which to pull (thematically) what people seem to want at a high level. Keep the thoughts coming! –  MTR Dec 8 '10 at 19:22
    
2 and 3 assume too much vested interest in their jobs - a lot of guys don't want to spend their free time (ie lunch) working on work-related things, nor spend their worktime working on non-work things (open source projects). I personally would love to have both, but Im just a big programming weirdo... –  jellyfishtree Dec 8 '10 at 21:56
1  
@jellyfishtree That's certainly a problem in many workplaces, and it's unfortunate. No matter what any of us do, technology will always evolve, so the status quo is an illusion. IMHO anyone who isn't interesting in learning new things isn't a good coder. –  HedgeMage Dec 9 '10 at 19:09
show 3 more comments

Provide a feedback and suggestion mechanism. Collect regular samples of what people want. Collect periodic samplings of our development goals (if any) and try to correlate these to possible courses. Use technical resources to develop your course list or lesson plans, etc when it is not in your domain and there is a high demand for a number of courses or classes on the topic.

share|improve this answer
    
This is a great recommendation, and fairly easy to do. Seeing what people are being asked to do developmentally is real-time and indicative of things that would be infinitely more relevant. Thanks for the idea. –  MTR Dec 8 '10 at 19:23
    
I see two types of corporate training - one-offs that serve as "enrichment" to current skill set. The accuracy and quality of these courses is probably enhanced well by feedback/suggestion mechs. Second type - courses that are part of a larger goal or career path - require feedback but also better guidance and a firmer hand to both ensure content relevancy and keep workers on track and moving forward on these larger study arcs. –  jellyfishtree Dec 8 '10 at 21:51
add comment

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