I am mentoring an Apprentice who has never done C# before and this is his first programming job. So this is a diary of some-sort of his progression and my ability to mentor.
I haven’t written about my Apprentice in detail for a while. After spending a bit of time with him, he then got involved in more form-filling and exams for his Bootcamp company. It seems weird that we probably paid a premium for the Bootcamp company to train him, but yet he has been working with us for about a year now (I think) and we have barely managed to do anything with him. I really hope we don’t hire from those Bootcamp companies again. You may as well just hire someone and train them up yourself.
The good news is that my Apprentice has now “passed his apprenticeship” which means he has no more dealings with the Bootcamp company and now can work with me full-time.
At the moment, I’ve given him some Junior developer tests that employers normally give before an interview, so he is working his way through those. Ideally, he should have done them in an hour, so I guess he is a long way off from a Junior standard since he has had them a few days. But hopefully, I can train him well, so I’m quite excited for that.
Another complication is that my team has been assigned another Apprentice and my manager asked me if I could also train him. I made a great point that we have loads of Seniors in the team, so why aren’t they being asked? He said it was a good point and would look at promoting me. We will see how that goes.
Here’s a small summary of aspects I have gone through with my Apprentice. These are C# or Visual Studio topics:
- Use some shortcuts like F12 to navigate methods
- Ctrl+t “Go to type” shortcut that seems way better than Ctrl+f to find code
- Use the “Rename” feature to easily rename variables/methods/classes setc
- Break large methods into smaller ones – use Visual Studios “Extract method”.
- Using breakpoints, the watch window, immediate window, “tracepoints” to debug. This is very important, you can never be a good developer without being good at debugging.
- What the “Call Stack” is, and how to navigate through the method calls using Call Stack window.
- How to create a branch in Git, push it to the server and create a Pull Request.
- Class inheritance and polymorphism.
- When to use Abstract classes and methods.
- The difference between “hard” casts and “as” casts.
- Using some basic Linq (Select, Where, OfType).
- Creating basic Winforms, and how to use Dock and Anchor to automatically resize controls as the form resizes.