I mentor the web team at work and recently I have also started mentoring a couple of students from the local university. I know its a cliché but when you have to show someone how to do something you have to know what you’re talking about and so being a mentor can be a great way of learning; either learning something new or learning something you thought you knew all about.

I try to not have all the answers, if I just give them away then I feel learning isn’t taking place – memorising is what’s happening. The goal is not to have all the answers because then you stop thinking, but to learn how to solve the problems. Mentoring means giving someone a place to try something while being supported and guided along the way.

Focussing my attentions on just a few things, for example how to avoid using magic strings or just focussing on 1 person at a time means they get more out of it. Of course the flip side to that is that you need to be careful not to seem to be showing favouritism. Nevertheless there are times when it is essential that you do focus on just one person, pair-programming is one way to achieve this and recently, at work, we have been having some success with informal pair-programming.

A few days ago (before the trouble with my hosting provider) I spent some time pair-programming with one of the developers, it can be quite hard to remain hands-off as I know what I want to do but that’s not the point, the point is to help the developer grow and that means experimenting, finding what works and what doesn’t. I will show them where to find answers, or places that I think are going to help but I will not simply dictate code as I feel there is no value in doing that. At the end of the session the developer had written some pretty slick code and our team had grown a bit stronger because he now knows how to deal with that type of code. It is also good for me to remember the problems I had when learning to do things. The first time I used version control I had to work it out for myself but doing so has given me a good understanding of the process, writing my first unit test was a big hurdle and took me months to do, there was no one there to help, but with a helping hand to show you past the tricky bits you can get up to speed on something really quickly.

Personally I would encourage people to find a mentor, someone who can help show them the ropes, and I would also suggest looking for ways to mentor others because it really helps, it helps them and it helps you – plus you get a warm feeling from knowing that you’re giving something back!

Tags: | Categories: TeamLeading | Musings

February 1016

Learn to trust your team

Trust is important in a team. Without trust you do not belong to a team because if you cannot trust your teammates then you’ll end up checking up on them, double guessing them or playing political games to out manoeuvre them and this is counter productive.

I got to be lead developer because my managers noticed my contributions, that is the work I was doing made me stand out from the other individuals. One of the harder lessons I’m (still) learning is to rely on my team. I want to make sure that every project is as successful as it can be, that all code satisfies my own set of standards but unless I’m prepared to actually do all the coding of 4 people (and there is really no way I could do that – with CodeRush you can code faster with a guitar than a qwerty keyboard, but not faster than 4 people!). To achieve the same degree of ‘success’ I am now no longer measured purely by my own contributions but by those of the team I lead and so I must trust my team.

The flip side of this is that trust doesn’t just happen. I can’t just expect or insist that there is trust so I try to make sure that I never ask anyone to do something I wouldn’t do myself, and that I don’t keep all the good work for myself – we are a team so we all get our share of fun (and less fun) jobs.

Tags: | Categories: TeamLeading

February 1010

Listening to others

As lead developer part of my role is to ‘know’ the answer to things and to identify solutions to problems. Also part of my role is mentoring other developers on my team, to nurture them and help them grow as developers. Sometimes the two sides of my role would seem to be at odds with each other, on the one hand I’m expected to be the authority and on the other I need to step out of the way to allow others to shine. I have to say that I don’t see it this way, yes I do need to know the answers but I also need to listen to others their answers may well be better than mine.

Yesterday a problem with one of our websites was reported to us – it was to do with a new access role that had just been added to the system, people in this role were getting access to part of the site but then being unceremoniously blocked when they tried to access the restricted section. I say unceremoniously, what I mean is they got a nasty error (but that’s another issue). I discussed the problem and agreed a solution, then went to discuss the solution with a member of my team. I began explaining the situation and my solution but this developer had already become aware of the issue and had thought of a different solution to the problem.

We chatted about the different approaches; neither of which was a clear winner, both solving the problem but from a different angle. I left the decision as to which approach to use up to the developer and was a little surprised to be asked whether that was ok! I trust the decision. The developer was able to sum up the pros and cons of both approaches but favoured their own approach – that’s fine by me, I’m not precious about my code if there’s a better way of doing something then I’m open to hearing about it and trying it out. This shows others on my team that they can make their own decisions and choices on how to do things and that I’ll support them and help them when they do. My role is to support them and their learning and that means handing control over to them.

Tags: | Categories: TeamLeading

I am going to start a new blog category about leading a team.

I don’t claim to be a great Team Leader or have all the answers, but these posts will be my thoughts and experiences as a working Lead Developer. I expect to write posts about adopting new technologies and approaches, streamlining work processes and mentoring / helping developers grow.

If you have any suggestions or comments I would really love to start a discussion, I have a lot to learn but hope to be able to lead my team well.

Tags: | Categories: TeamLeading