The World’s Leading Microsoft .NET Magazine
   
 
timstall

Donate Today!

Search Box

 

Calendar

««Jul 2009»»
SMTWTFS
    12
3
4
567891011
12131415161718
19202122232425
262728293031

My RSS Feeds








Mailing List

Most Popular Tags

                                                           

Does your team culture encourage learning?

posted Monday, 18 August 2008

In the ever-growing field of software engineering, continually learning is essential. While a lot of developers internally have the drive, they're stuck in a team that externally makes it difficult to learn. Here is a checklist of simple questions to gage how much a team encourages learning.

  • Spending money

    • Will managers buy a technical book without giving the developer a hassle? For management to spend $30 on a book, for which a developer then spends dozens of personal hours digesting and learning a whole new skill, is an incredible rate of return. If management is too short-sighted for that ("aw, can't you get it online", "did you check your local library first", "the project budget can't afford that", etc...), then your team is toast. Of course a developer could abuse this by requesting to fill an entire book shelf, so common sense applies. A book is month is very reasonable.

    • Will management provide adequate resources to explore a new task? For example, if you're investigating continual integration, you will need a spare build server.

  • Encouraging team collaboration

    • Can your team set up a wiki such that everyone can easily share trivia and knowledge?

    • Are code reviews encouraged by all the managers and influential contributors?

    • Do senior team members actively mentor junior members, or are developers too busy pounding out features to "waste" on mentoring?

  • Scheduling

    • Do most features allot at least some time for research and improvement - even 5-10%? That means if you spend a whole week plugging away at a feature, management is okay if you take at least a few hours to explore a tangent, or incrementally improve the system?

    • Microsoft, as well as many user groups, occasionally sponsor free local events. Management may not pay thousands to send you to fancy training, but will they at least let you occasionally take the day to attend a free training session?

  • Process

    • Do your processes display public results, and are those processes documented, such that anyone on the team can investigate and understand them? Or, are the processes cautiously guarded by some "builder master" guru or manager who doesn't want anyone else to see the big picture for fear that it would somehow "threaten" them?

  • Features

    • Are the interesting features shared across the team, such that everyone gets a chance to explore cool technologies, or does the architect/team-lead hog the cool features for themselves and leave the boring work to others?

    • When your team needs a research project, is it assigned internally so that your own guys get the opportunity to learn about it, or is it sold off to some external consultants, or is research forbidden altogether ("we don't have time/money to learn to do things  better")?

  • Management

    • Development requires innovation, which requires risk, which inevitably results in the occasional "failure". Does management allow developers to take a calculated risk (i.e. not belittling or embarrassing the developer when it doesn't work out)? If not, developers will be afraid to innovate, which means they're be afraid to apply what they've learned, which will reduce their incentive to learn new things.

    • Will management emphasize the total cost of ownership, which ultimately can only be reduced by continual education of the entire team? If managers only emphasize the current task ("we don't have time to do it right, we need to get this feature coded now."), and learning (even if it's for the current task) means you're not actually programming (i.e. "typing in keystrokes") at that moment, then managers will discourage developers from learning. In other words, is learning seen as a first-class task?

    • Does your promotion system emphasize career goals, which in turn emphasize some learning goal?

These things do not necessarily imply a good or bad learning environment:

  • Sending developers to expensive training - Back during the .com bubble, there was plenty of cash to send anyone to training. However, as mentioned above, there are still plenty of ways for a company to encourage learning without sending the developer to a fancy training session.

  • Asking you to handle an occasional boring task - Ultimately any engineering project will have something tedious and boring that needs to be done. This doesn't mean that the team is anti-learning. However, if every task is boring and hacked, then that's an obviously bad sign.

  • Emailing links to "best practice" articles - Any kid can email links to coding guidelines or best practices that someone else wrote, and for which it requires the discipline of other developers to actually adhere to. There's nothing brave or helpful about yet another checklist.

tags:  

links: digg this    technorati    




1. Dave Schinkel left...
Monday, 18 August 2008 8:50 pm

>>>Do most features allot at least some time for research and improvement

I have yet to see that one. It would be great wouldn't it?

Here is another one. Distribute the tasks evenly throughout the year to different team members as much as possible as well as the difficulty. Many times, there are other team members who should be developing their skillset in the same areas as your "stars" have been. And since your stars have pretty much been doing a lot of the same, it's time for them to rotate as well and maybe that means some less glamorous tasks for a while as you let your other team members have some fun and enjoy some of the most critical areas of the business. While your project may need a bit more cushion for the learning curve, you just added value to the business because they are learning more skills to help later on. But often times, management just gives the stars all the good stuff and the "standard" players the busy work. Not good. Team should have an even distribution of tasks and no favorites and it's the manager's responsibility to develop those skillsets not just "meet the business needs".


2. ton left...
Tuesday, 19 August 2008 10:50 am

This has been a HUGE PROBLEM everywhere that I've worked. An open book is almost treated as a crime. Pointy haired boss says 'You don't have time to look at that...just code up that feature." or "WHAT'S THAT YOU'RE READING". *Sigh*


3. Ivan left...
Wednesday, 20 August 2008 9:30 am

wiki's have questionable value in practice. this is because the concept of wikis is based on a crowd of people constantly updating it and refreshing it with the best source of information related to a topic. without leveraging a large user base, you have a lot more subjectivity, content that's easily out of date, ambiguous categorization/organization and a host of other problems.

i like the other points though.


4. Dave Schinkel left...
Tuesday, 13 January 2009 9:39 pm

@Ivan

I'd much rather have a wiki in place than no documentation or form of open ended communication at all. In fact, who cares if the information is not always up-to-date. A wiki is meant to be a lot of things. Not always "corretc" or "updated". If it's a standard, sure, make a standards area. Keep certain things updated, but do not worry about the rest. The point of a wiki is to share information. Does not need to be perfectly maintained. If ever in doubt, look at the date posted. If it was posted 10 years ago, chances are sure, it's outdated. And if you question a best practice or link, consult with the team lead.