What’s Your Team Building Budget? – Creating and Recognising Team Building Opportunities

Team Building

Original image courtesy of http://www.mainevents.co.uk

It sometimes amazes me how much emphasis the corporate world places on teamwork without actively doing anything about facilitating the team forming process. Teams are often expected to form “naturally”, because surely if a bunch of random people are thrown together they are bound to start cooperating effectively eventually, right? In million dollar projects, the amount of money allocated to team building is effectively zero, the attitude seems to be – “team building require budget, that’s unpossible!” – and that’s when team building is even on the agenda.

On the other end of the scale, it also sometimes amazes me how overly concerned with facilitating team building the corporate world seems to be. Huge budgets are allocated to various activities for the sole purpose of possibly creating a better team. Awkward corporate retreats, contrived team building activities, hokey trust exercises those are all a staple of the team building junky and no amount of money is too large to get more of that kind of stuff happening.

I guess the point I am trying to make is that the right question is not:

What’s your team building budget?

but rather:

Are you spending your team building budget wisely?

You do have funds allocated to team building don’t you? Since you now know how to retain your employees, you do want them to work effectively in teams, don’t you?

The funny thing about putting groups of people together is that they WANT to form teams (humans are herd animals after all). However depending on the numbers of people involved and the different personalities the natural process can take a long time and it is not unknown for a team to form “badly”, with tension, backstabbing and undercurrents of mistrust.

What you need to do is stack the odds in the favour of a team forming well. You also want your team to become a unit quickly, so you need to give the “natural process” a helping hand. Surprisingly enough this can be very inexpensive, but you need to be alert and energetic, you need to recognise team building opportunities when they present themselves and you need to occasionally create them. Most importantly you have to be willing to bend the rules and be unconventional once in a while. Remember, if you stick to a path well-travelled, you will arrive at your destination when everybody else does!

Here are 5 ways you can turn a collection of individuals into a team without spending inordinate amounts of money. These are common sense, but it is surprising how many people don’t recognise these for what they are (team building opportunities) and even when they do, don’t handle the situation sufficiently well to give maximum benefit.

1. Finish work an hour or two early on a weekday and take the whole team out to the pub for drinks

Remember what I said about bending the rules? I can’t believe how much the lowly is underestimated as a team building tool. I seriously can’t think of too many things more effective than an hour or having a few drinks and shooting the breeze at whatever watering hole is closest to your work. Ever noticed how in a large team, often small groups of people can become friends very quickly while the rest of the group are still find their feet, 9 times out of 10 I bet you that small group of people have been to the pub together after work a time or two.

You can’t expect your whole team to come to the pub after work, people have commitments and families, but if work finishes an hour or two early, there is nothing much else to do. There is not much more you need to do after everyone is at the pub, bonding will happen naturally (alcohol facilitated). You can however allow yourself to be convinced to buy everyone a round or two at the company’s expense (don’t worry someone will bring it up). You should have been prepared to do that anyway, but spontaneous generosity works even better. Then again you know what they say, the best way to be spontaneous is to plan for it beforehand.

2. Do something interesting, unexpected and out of the ordinary for your team, that will get people talking and shaking their head at your audacity

I found a really good example of this when I was reading “Peopleware: Productive Projects and Teams” by Tom DeMarco and Timothy Lister (at least I think it was Peopleware, I don’t recall for sure). They were talking about how a project manager on a large project went out before lunchtime and hired a hot dog vendor to come and serve hot dogs to his whole team where they worked. The trick was that the team was located on the umpteenth floor of a high-rise building, so the hot dog vendor had to bring his cart up in the elevator to reach the team.

You can imagine the site of a hot dog cart trying to maneuver inside the corporate offices and you can imagine the amount of fun people would have had with the whole experience, especially after they got their hot dogs.

This kind of stuff is great for team morale and bonding. Shared experiences especially fun experiences, moments of hilarity, opportunities for gossip (people love gossip), all of these will bring your team closer together like nothing else will (except perhaps the pub trip from number 1). Trust me, people will still be reminiscing about the sheer amount of moxie it took for you to accomplish something like this in 6 months and even in 12 months. You will have helped forge lasting relationships.

3. I simply can’t understate the team building value of organic social activities at the expense of the company and what better way than a fun weekend outing

This is as distinct from enforced social activities at company expense, such as a team building retreat. People don’t often miss an opportunity to do something they like when someone else is paying for it and if the family can tag along as well, that’s even better.

You have very little chance of getting the majority of your team to come together on a weekend at their own expense, your chances improve almost 100% when the same activity you were planning is sponsored by the company. Allowing family participation not only increases your participation chances even further but will also take the whole team bonding thing to a whole other level. Think back to the least time you made a good friend, how much closer did you feel to that person when you had a personal experience to share (e.g. you met their family, you went on a fun camping trip etc.). There aren’t many things more personal than getting to know someone’s family.

Of course getting the company to sponsor weekend activities for employees and their families would not be an easy thing to accomplish. But hey, that’s what your mad people skills are for, right? And what did I say about moxie? Anyway, remember, unconventional approach and bending the rules, and hope your boss appreciates initiative because he/she is bound to appreciate the exponential increases in productivity that your happy, well-oiled machine of a team will no doubt achieve.

4. You may not think of this one as a team building activity, but one of the best things to bring a small group of people closer together is to send them to a conference

This works very well for smaller groups of people. When a small group of people who know each other even a little find themselves among hundreds of strangers, they tend to draw together, it is a natural psychological reaction (herd instinct at play or something). Even if they’ve only know each other a little bit, it is still more than they know everyone else there, and noone wants to be the odd guy out at a conference. It makes no sense, since most people at a conference are the odd guy out, but it is true nevertheless. If you are not convinced, just think back to the last time you were at a conference by yourself and met someone you knew there, did you end sticking together with that person for the whole day? I think I just proved my point.

The other potential upside to this whole idea is if the conference is boring, your people will probably leave early and having nothing to do they’ll go to the pub and gossip about how great their boss is(that’s you) for doing all these cool and quirky things lately and all paid for by the company to boot. For other benefits of this, see number 1 again.

5. When your team is surrounded by enemies on all sides, when everyone is on your back and even a duck could tell the expectations placed on your team are unrealistic, you are potentially in team building nirvana

This is, of course, an extremely dangerous situation to be in and you certainly never want to try and generate this kind of situation, but fortunately or not – corporate world being what it is – these kinds of circumstances arise often enough by themselves.

Shared adversity can bring even the most unlikely set of individuals together and getting through adversity can form bonds that last decades and create a very tight-knit group out of people you never would have expected to work well together. And adversity doesn’t have to mean trekking through the desert, the kind of adversity you will find when your team just can’t seem to cop a break will do just fine.

In this kind of situation it is very important to balance “shielding” the team with involving them so that they are aware of the state of affairs, so that they feel that they are collectively trying to improve their situation. Do this well and you can sit back and marvel at how quickly people will find common ground and be willing to take on all comers to try and protect each other and the team.

Of course the downside of this kind of situation is that it may not improve and only get worse no matter what you do. One thing you can be sure of however is that the relationships your team forges during this time will undoubtedly last, unfortunately if will probably have to last over e-mail from the various new places that you will all be working at. However, if the situation does improve and you team is able to stay together you are very likely to find yourself not only on one of the most productive teams you’ve ever worked with, but also one with the best atmosphere as well.

The important thing to remember in all this, is that there is no need to be constrained by conventional “wisdom” when it comes to getting a team to gel and generate a cooperative and productive atmosphere. All you have to do is:

  • create team building opportunities from everyday events (use your imagination and have some fun with it)
  • be alert for natural opportunities in your day-to-day activities (dozens of everyday events have team building potential, you just need to learn to recognise them)
  • actually put some effort and energy into forming your team into a cohesive unit
  • bend the rules occasionally and as much as you can try to be unconventional in your approach

The results will speak for themselves.

The Real Measure Of Code Quality

There was a comic going around a few weeks ago about code quality, you remember the one:

image

Pretty amusing, but it got me thinking, what IS a good measure of code quality? Quality after all is very subjective, what I might perceive as being great, you might perceive as crappy for a host of reasons. A pet pattern wasn’t used quite right, the unit tests aren’t “real” unit tests, you know of a library that would have made the whole thing 10 times easier, etc.

There are all sorts of different measures that might relate to code quality, the level of coupling, the testability of the code, the test coverage, adherence to standards and many others and yet all of these are still subjective to a degree. There are times when not adhering to standards is best, just as there are times when a low level of coverage is good enough, it is all different from system to system, situation to situation. So is there no one good measure of code quality?

I contend that there is only one measure of code quality that is worth anything. We can argue all we want about numbers and patterns but in the end, one thing will always be true for every good developer:

Every good developer intrinsically knows if his/her code is good enough!

That’s right, you already know if your code is good enough, if you think that you don’t then you’re deceiving yourself and need to ask yourself the following questions.

If you were to think of a developer you admire, would you be proud to show your code to that person or would you cringe in shame if they were to see it? By extension, if that person were to criticise your code for whatever reason, would you vigorously defend it with all your heart or would you put in a token defensive effort for appearance sakes?

Due to the nature of our work, developers are part artist, part craftsman and part scientist and the one thing that all those people share is the ability to know if what they’ve produced is worth anything. Therefore, before we go and try to find an external way to validate our code for quality (and that includes getting it reviewed by other people) we need to be completely unequivocal about our answer to the question:

Do I think the code is good enough?

If the answer is not unequivocally yes, then there is no point going any further and you have some work ahead of you. If the answer IS yes, it doesn’t mean the code is perfect and can’t improve, it means that only more knowledge and/or experience can make it better. This is when involving someone else is a good idea, sharing knowledge and experience is (partly) why we work in teams after all.

The above works even better for pair programming, but the question becomes:

Do we as a pair think the code is good enough?

This works better because as a pair your internal threshold for quality will most likely be higher than it would be for each of you individually and you’re already sharing knowledge and experience. The threshold becomes higher still if you regularly rotate pairs. Although I do believe there will be diminishing returns if too many people have a stake in the code, but if the story size is small enough, this should not be an issue.

Well, those are my thoughts on measuring code quality I wonder what everyone else thinks. Do you agree with me or do you perhaps think that I am way off base? Do you know of a better way of measuring code quality (no, WTF per minute doesn’t count)?