Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've started mentoring a junior developer. I've read the community wiki on how to mentor and have been following many of the suggestions in there. The developer has a couple years experience, mostly with modifying existing programs or transitioning code from our legacy system to our new system (a lot of cut and paste).

I'm teaching her about our infrastructure which has much more complex programming inside of it, eg: reflection, pointers, multi-threading, dynamic objects. Once I have explained to her what needs to be done she is able to write working code, usually copying similar code and modifying it.

I'm concerned that she doesn't understand why or how the code is doing what it is doing. When I ask her to explain the code to me she usually paraphrases the requirements that I originally gave her.

So my question is: how can I measure how well she actually understands the business logic and programming structures being used? What should I be asking, what should I be looking for?

share|improve this question
1  
What do you expect to gain? –  JeffO May 3 '12 at 16:38
    
@JeffO We want to increase this developers knowledge and skills. Part of that is knowing if she's actually learning the concepts behind the code or just parroting back what's already been said. We don't want to put anyone on a new project that could be too complex / difficult for them. –  briddums May 4 '12 at 14:21
    
Too late now probably but I'd say you have to get that kid over the fear of revealing ignorance. –  Erik Reppen Jun 17 '13 at 0:44

3 Answers 3

up vote 8 down vote accepted

Start giving her small projects with well-laid out requirements, and don't hold her hand through the process. See how she does.

At the end of it ask yourself,

  • Is her project working?
  • Was her project done in a timely fashion?
  • Was her work easy to understand?
  • Was her work easy to maintain?

If the answers are yes, then she is doing great. She might need to gain more experience, but providing she can actually get stuff done in a timely fashion, and that is easy to understand and maintain, then she'll do fine.

If they are some variation of "no", then you know what needs work :)

Here's some suggestions of what to work on if the answers are no:

  • Is her project working?

    Work with her to improve her core programming skills, her ability to think logically, and her ability to teach herself

  • Was her project done in a timely fashion?

    Work with her on using reusable code and libraries, calculating estimates, and possibly time management

  • Was her work easy to understand?

    Work on documentation before coding, documentation while coding, and naming conventions

  • Was her work easy to maintain?

    Work on her coding style and standards. May also want to work with her on design patterns and architecture decisions.

share|improve this answer
    
She only seems to be getting stuff done in the context of being told what to do. If the goal is to get her to a more senior/independent position, there seem to be doubts. –  JeffO May 3 '12 at 16:45
    
Great comments Rachel. I'm still running into the case where the code passes all of those tests, but I'm not sure if the developer understands why the code is working the way it should be (had help from other developers writing it). I'm not sure how to validate that she understands the data structures and business analysis. The only thought I've had is to sit down and have her explain some of the more complex procedures to me line-by-line. –  briddums May 4 '12 at 14:37
    
@briddums Some things can only be learned through experience, and this might be one of them. If she can complete her own projects with well-built data structures and business logic, then chances are she's on her way to being a good developer. Give her some other small projects and keep an eye on how much help she needs from other developers, and what sort of help she asks for. If she's asking them for her same thing all the time or to give her the code, then you might need to step in. But if she's just asking to validate her work or because she's stuck on something new, then she should be OK –  Rachel May 4 '12 at 14:45

To see if she can build something from scratch (complete program or sustantial part of another program) she needs to be given an opportunity do just that. I think that would be a great way to see if she can go beyond the cut and paste level. Without this kind test, it is hard to see if she is.

share|improve this answer

Developers who don't fundamentally understand the code usually make blatant mistakes belying it, whether they are copy/paste/modifying or not. For example, people that don't fundamentally understand pointer code will add random references or dereferences that make the code compile, but otherwise make absolutely no sense. People who don't fundamentally understand multi-threading will make bizarre workarounds for synchronization issues. People who don't understand complex business logic will hard code a change to fit a single example test case, without considering other obvious flows through the code. You get the idea.

The only way to truly know if someone is capable of handling more difficult tasks is to give them more difficult tasks. Every programmer, regardless of experience, does copy/paste/modify if the task is amenable to it. It's just that experienced programmers don't get assigned many amenable tasks. You can't fault her for handling simple tasks in a simple way.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.