15

I work in a consulting services firm. We do most of our work in the Microsoft tech stack. Over the last 5 years I feel like my team as REALLY been inundated with new technologies. These days we need competencies in not just a few, but MANY technologies and it really helps to be deep in them too!

I feel like we could all use a little help when it comes to not only staying current, but getting up to speed on new technologies as well. There's SO much to learn these days.

Beyond subscribing to a ton of blogs and doing certs every now and then, what else can we be doing to stay current? What does your team do to stay ahead of the curve?

13 accepted

We organize our own internal 'conference' once in a while. Very informal and relaxed.

We appoint two or three speakers and select a couple of fun topics to talk about, for instance Ruby on Rails and programming Windows Presentation Foundation were two of the last ones.

We have found that it is great for everyone:

  • The few people who are already interested in learning something new can devote time to it in order to prepare the presentation.
  • The rest of the team, sometimes people that don't have the habit of self-learning, at least learn about something new and with luck they become interested and try to give something back in the next 'conference'.

Although this certainly takes a bit of time, we have found that it is worth it because of the team integration and educational results.

10

give them 4 hours a week to test out new technologies. you can read about them all you want, but unless you try them a bit, you can't really see their strengths/weaknesses.

4

Allow them to expense books and other learning material within a reasonable limit.

3

Encourage hobby projects.

A good dev will probably hesitate to try to write "production quality" code in an area that's new for him. There needs to be some way for the dev to "scout ahead" without being married to the outcome.

In terms of motivation, the employer can really only facilitate the learning. If the dev isn't self-motivated, there's little the employer can do to foster real growth.

3

What you really ought to look into is a Personal Development Plan. I searched, and searched but I couldn't find where Joel talked about this - I'm almost certain I remember him discussing this and providing guidance (worksheets, etc that he goes through with his employees).

It was a really good one, too. sigh

Such is the internet, a harsh and ephemeral mistress...

1

When creating non mission-critical apps (that is, if something goes wrong, you can fall back to the tech you already know without serious consequences), start using the new tech you hear about. Encourage your employees to play around with the new tech while building internal tools. As Darren Kopp answered, give them a bit of time to experiment with things -- some companies give 20% of time to work on open source projects, so if you encourage them to use this technology, it can boost your team's skill and morale at the same time.

1

Keep a wiki or even a whiteboard with what programmning blogs and podcasts people follow and who follows them, in addition to being a good discussion point, it might just shame a few slackers into at least reading codinghorror.

Other idea: Give some sort of prizes out for programming reddit or stackoverflow points?

1

I would suggest that you share the load around the team and have fortnightly or monthly teaching sessions. You provide a list of possible topics and let each developer choose a topic that they're interested in. Have them prepare an hour-long tutorial, with the emphasis being enough competence to walk into a project and be productive (not expertise).

This way, everyone has to occasionally do a deep-dive, but into a technology that they're interested in, as well as having exposure to a number of different technologies.

1

I run a weekly dev meeting to discuss whatever we want to discuss. Often I end up presenting on some cool new .NET technology or tool, such as Code Contracts, Unity, jQuery, etc. I also encourage everyone to bring up subjects, and I even put people on the spot, which forces the quiet ones to interact and grow.

The best way to learn new technologies is to use them. I generally begin by using a new technology to implement one tiny little part of the system, and back it up with rigorous unit testing to make sure I'm doing things correctly. Once this proof of concept is in place, I present my findings to the dev group and encourage them to start experimenting with it.

Most of the time my dev team ends up sticking with the same familiar old technologies they are used to. But I do hope that by exposing them to new things I can help them grow and expand their awareness of programming patterns and practices.