Monday 30 August 2010

It's a Team Game

Walking home the other night I happened to take a detour through Pencoedtre playing fields, which was home to the Barry Wolves football (soccer) team that I played for as a kid and it got me thinking about the team's ethos and how it could apply to teams in general.

Whereas pretty much every other team in the league had strict rules about passing trials in order to be able to join them, identified their stars who would play no matter what and would leave other kids on the bench on match day, Barry Wolves were different.  Their ethos was:

  • No trials
  • You turn up for training, you play on match day
  • You don't train, you don't play on match day - no matter how good you are
  • You don't always have to be goalie if you fancy trying centre forward
  • No stars, no blame - you win as a team, you lose as a team
We weren't the best team in the league, but the inclusive nature of the team meant that everyone felt involved, there was a real team spirit and we enjoyed being part of the team.

How could this apply to teams in general?

Give People a Chance
You don't necessarily have to make someone prove themselves before letting them join a team.  If they're enthusiastic then let them prove themselves as part of that team.

You Don't Learn from Being on the Sidelines
If someone is putting the effort in to learn and practice skills in their own time or outside of an official project then give them the opportunity of working on an official project as they will learn far more on a real project and "being in the game".

It's a 2-way Street 
Everyone should be working on developing and improving their skills and if someone isn't doing that then they have no right to complain about not being given a role on a project.

Mix it Up
Just because someone has been a developer it doesn't mean they can't have a go at being a system administrator or a UI designer if they want to.  You can learn a lot from trying different roles and giving system administration a go for a while can make you a better developer.

Never Point the Finger
If a project fails it's because the team failed and not because of any one person.  Sure someone may have dropped the ball on something, but a team will help that person pick it up to keep the project on track.  If you start pointing fingers you fragment the team and increase the risk of failure on the next project.

What I'm trying to say is being involved in team sports as a kid can teach you a lot, but having experience of teams that like to do things differently teaches you even more.

Monday 16 August 2010

Google Moderator + Confluence

I'm late to the party on discovering Google Moderator, but it looks like a very easy way to capture, vote on and then prioritise requirements, ideas and suggestions.  Which always seems to have been a problem for all the organisations I've worked for, as it was whoever shouted loudest or whoever was the "VIP" got what they wanted rather than development effort being focused on the features that would benefit the majority of users.

Posts on Google Moderator tend to be very high-level and the teams I've worked with capture more detailed requirements using Atlassian Confluence so I wanted to have a play with embedding Google Moderator into Confluence - which turned out to be really easy for a basic integration.

Here's what you need to do:

Add the Google Moderator Javascript to a Main Layout
  1. Login as the owner of a Confluence Space
  2. Navigate to Browse -> Space Admin -> Layout
  3. Select Create Custom next to Main Layout


Then add the following to the <head> section of the Main Layout:

<script src="http://www.google.com/moderator/static/moderator-embed-api.js" type"text/javascript">
</script>
E.g.


Create a User Macro

You don't need to do this, but I decided to create a User Macro so people could embed Google Moderator with a simple {moderator} macro rather than needing to know the Javascript code for embedding directly.

  1. Login as a Confluence Administrator
  2. Navigate to Browse -> Confluence Admin -> User Macros -> Create a User Macro
  3. Populate with the following information:
Macro Name: moderator
Macro Body: unchecked
Output: Macro generates HTML markup
Template:
<div id="moderator-embed-target"></div>
<script type="text/javascript">
var mod = new MODERATOR("http://www.google.com/moderator/[ID of your Moderator series]);
mod.hl = "en";
mod.width = 1000;
mod.height = 500;
mod.embed("moderator-embed-target");
</script>

E.g.


Use the {moderator} Macro on a Page

Just edit a page in the normal way and add the {moderator} macro to the page.

View the Results


Next Steps

The above works quite well for a basic integration, but I'd like to have more control over the look and feel of Google Moderator on a page so I'm going to see if I can create a Confluence plugin or OpenSocial gadgets using the Google Moderator API.