Stopp staffing your Teams like Boy Scout Groups September 1, 2012
I really like the idea of mentoring programs in project teams, but too often this is a excuse to staff teams with too many youngsters and only a very small amount of senior developers. The seniors are accounted as 100% project member with all their normal responsibilities, in addition to the super nanny job of mentoring the new comers. As a result this is a 150% job they need to do.
The worst scenario was a project team with only one senior architect and a bunch of newly acquired developers from the university. The architect was in the role to take care of all code, the setup of the project and the architecture behind everything. At the end he worked 18h a days to get his job done and to take care of at least small pieces of the rest of the code.
These setups won't work very well in reality. The code quality was bad, even with unit and integration testing. Young developers have creative solutions to problems, but not every time the ones you really want to have in your code base. Most of the time the concepts and the workflow of the team are not clear to the new comers and they tend to mess around with the code.
That's not the way mentoring should work.
I really like mentoring and I had a great one who showed me a lot of concepts and explained what I was doing wrong in my code. This helps me a lot and gave me a really quick start in development. It easier to have someone explain everything at real live problems instead of hello world problems that are easy to solve. For me it helps me a lot to see my misinterpretation of concepts and my workflow are corrected at a serious project level. With this I got the best training of the internals of the project team, code quality and experiences my trainer made and I had the luck to had a good one. But a lot of companies tend to misuse this concept to safe money in projects.
So, stop wasting money with these kind of setups. Give your seniors and your young developers a chance to make a good job and give them time. If you are doing it wrong you get at the end a failed project, at least from the internal perspective with bad code quality and something that follows the mantra "at least it works" and not the new cool software you want to build. It's wasted money and doesn't make anyone happy.