I completed my graduate scheme at M&S in 2015. It was a great experience and I learned a crazy amount! On reflection, these are some things I’m glad I got to experience but also things that I wished the people I worked with could have supported me with.
1. Help them to develop their skills
This is a pretty obvious one and if it isn’t happening something is going seriously wrong! When you’re literally at the bottom of the food chain, one of the things I wanted (and the other grads in my cohort also wanted) was to not be at the bottom of the food chain. A great way to start climbing the food chain is to get integrated into teams and start adding value where possible. This was the main issue for me, I felt I didn’t know enough to be able to contribute sufficiently. All I wanted to do was improve my skills as quickly as possible.
I wanted to contribute, have some responsibility and be able to pick up tasks without thinking “WTF I have no idea what I’m doing”. Pairing is great for this, but I can imagine it would be a lot better if I had some intelligent things to say.
Personal and technical development is key to improving this situation, for me, improving my skills as a new developer is a combination of having the technical skillset and confidence to put ideas forward that may not be the same as those in your team who are more senior.
Give us access to learning tools like Lynda or Pluralsight with some guidance on useful topics to look into. Or point us in the direction of blogs and articles that you’ve found useful. Then I can take the time to get clued up on topics I don’t know much about. M&S was really good at this and I had great guidance.
2. Pay them what they’re worth
Salary is always an awkward subject for me and only on a graduate scheme can you get away with putting everyone into the same bucket and paying them the same amount. This is because it’s a short term training programme. Graduate schemes are supposed to be an intense kickstart to your career. Not everyone seems to understand that. Each graduate is completely different. Different interests, skills, experiences, has a different impact and level of contribution. Assess each graduate individually based on what they’ve achieved throughout the scheme and reward them accordingly when it’s over.
3. Personalise the program for each unique developer
So this goes back to us all being different. I love front-end development, sticking me in a front-end dev role for the entire scheme will make me very happy and very comfortable (which is what happened!), but it’s not very stretching. If you’re part of a smaller company this may not be an issue as I hear everyone tends to pick up a bit of everything. In bigger corporations rotating grads around different roles has so many benefits for me as the graduate but also for the organisation. You’ll have graduates with a wide network and a better understanding of what is happening across the department than others in your team.
I didn’t get the chance to do this on my scheme, but I think I would have benefitted from working in teams that look at APIs or the iOS and Android mobile teams. It would have been a great opportunity to understand the architecture of systems completely different to the ones I got used too. Fortunately this has already changed for the new cohorts of graduates and they are rotating around lots of great teams, each with a different focus.
4. Place them in high performing teams
I’ve been fortunate with this one. The team I was in as a grad covered a range of skills and worked together really well. This was great for picking up tips on ways of working and getting support from lots of different people with different roles. I could work closely with back-enders to get a better idea of the kind of technologies they use and what problems they faced. I paired with engineers in test and learned about what their focus was, which in turn made me better in my role because I could anticipate their concerns and adjust my code accordingly. The other front-enders in my team also had skills covering a number of different areas (accessibility, maintainability, progressive enhancement, writing SOLID code…) so I spent lots of my time learning about all the buzzwords from them.
5. Give them work that makes a difference
I’m pretty sure most graduate schemes in big organisations have the standard graduate project. When you throw all the grads together from different disciplines and get them to work together on something “important to the business”. Don’t get me wrong, this is great for improving networking skills and conflict management, but would be even better if we were given an actual project that needs to be delivered to clients/customers. I for one would complete the work with a much higher level of interest if I know the work I am doing will have an actual impact.
Off the topic of the graduate project, the same idea applies in our teams. Give me a low priority task to tackle by myself to get used to the codebase. Something that needs to be done, impacts our customers but isn’t number 1 priority, maybe a bug fix or small feature to break up constant pairing sessions, or if we’re pairing let me drive (only if you are patient — the worst thing is when you’re unsure of something and the impatient person you’re working with feels the need to takeover to get it done quickly — massively demotivating). Back to the main point — get me doing something worthwhile.
That’s all have. It’s not too much to ask for… Right?