How to train a new development team member
A new member is joining our development team in a few weeks and I am thinking about the best way to introduce/train him. He'll need to get familiar with the code base and the overall development process.
Do you advocate pair programming (we're currently not using this) and what other methods have you used to get new members up to speed?
I'd be grateful if you would share your experiences.
We use mentors, mostly. The mentor (a senior developer), assigns bugs for a few weeks and makes themselves available for questions / coaching. When comfortable enough with the code, some pair programming is used, although it's mostly assigned programming by the senior developer. This type of relationship can go on for a while (a couple of months) and then depending on the confidence and skills of the new person, they're ready to go on their own.
Can you please elaborate how is the current development process?
Knowledge transfer via pair programming is the most efficient way ( read system documents if any is also recommended but not efficient when it comes to large scale enterprise application). However, Seniors should be aware of the importance of this and have the willing to share their knowledge and time with new team members, otherwise his velocity will not increase, he can't creates any value or it will takes him too much time to deliver something.
If the team is self organized it's important to have the team lead or the agile coach enforcing theses practices ( not all the persons can collaborate together or love pair programming or even like interacting with people luck of soft skills or task oriented persons). Typical situation : talented programmer with many years of experience pair with senior developer in the company ( not necessary talented or have many years of experience). This latter, may not share his knowledge openly for job security purpose or for competition between members etc. that's why a person with enough authority will enable and enforce theses practices .
@Joshua. We have an iterative process with sprints but are currently doing more of iterative waterfall than "pure scrum". fetures/stories are usually implemented by 1 or 2 developers and there's a lack of collaboration between members. Team does not self-organize but are expected to be told what do etc. I want to guide the team in this direction and avoid that the new member adapt our current process and get the collaboration/self-organizing/self-managing going.
It looks like the team needs coaching more than anything else. Pair programming works only if the team is very committed to the work and already self-organize. I have seen Junior team members are able to get up to speed when we involve them in Sprint Planning and let them self-organize during development. Yes, they will ask a few questions and some times they will only take tasks that they think is easy for them but it's worth it because after a few Sprints they are able to get up to speed.
Are you taking the Scrum Master role for this team?
Yes I am taking on the SM role for the team and indeed they do need coaching/guidance. We're having a company-wide Scrum training in a couple of weeks that I hope will kick this off, but they will of course need continuous coaching.
Why is it that pair-programming only works with very committed and self-organizing people?
Good to hear that the company is taking a Scrum training. Someone who is not motivated and under command and control will do pair programming just for the sake of it. It may become unproductive in the end.
Thanks all for sharing your thoughts and experiences.
No worries. The first thing you want is they understand the values of Agile first. Forget about the mechanics if they don't understand the values first. Once the team understand the values, you may get more than you expect.
All the best.
I think allocating each new joinee with a mentor is the best way.