As a mentor to a junior programmer

Does anyone have any suggestions on how to instruct a junior programmer? If you inherited from someone, did you follow any process, or was it pretty informal?

If you have been mentors in the past, what things do you find most useful?

+43
language-agnostic
Aug 24 '08 at 14:05
source share
12 answers

Try to set aside 30-60 minutes a day to view their code together. If you cannot do this, try to get together to see your code when they commit code commit, unless it is very simple. Ask them to explain why they chose the approach that they used instead of others. Such a process helps to establish excellent relationships, as well as really stimulate the student to think independently and be able to defend their decisions. A student not only gets access to someone who can be trusted, but you will immediately notice an improvement in their code quality and logic.

Change In addition, if you cannot do this a lot of time for sharing with your youngest, then you probably should not instruct them, but instead see if anyone else has a schedule, this will allow. The whole point of mentoring is to actively promote the professional development of the student, and they are not going to learn much if they are not given due attention and guidance.

+42
Aug 24 '08 at 14:14
source share

I had the opportunity to work as an intern (one of two) in a small software company and had the opportunity to work on an “almost new” project that they had. They made me tune into everything I needed and gave me an idea of ​​what the project really was (basic things, for example, what requirements were there, etc.).

At first, we had to perform secondary tasks, such as researching things that matter to the project (they gave us a list of topics). It was, I think, to see how much we could deal with ourselves, because the things that we needed to look for and explore were not so trivial, and it took two weeks or so (considering the main demos that we had to create for him), This phase of testing was actually carried out without much “coaching”.

However, after this period, we could work on the project itself. It was also at that moment when we started training together, in the same style, pair programming , with the exception of three of us (2 trainees and 1 'trainer').

We learned a lot from him, but it was informal, and he did not act like an all-knowing-listen to me guy. When we had suggestions, he listened and thought with us whether they were good. or give your own view on why the idea should not be made this way ... Now that I think about it, he actively encouraged us to make suggestions and think about the best ways to do something, and not just sit there orders "from someone who probably knows what to do better than you.

In short:

  • Let the junior programmer work (mostly) on his own to study the materials at hand, give him a list of TODO small things, such as finding information or creating small demos.
  • Check the work that he did regularly, and advise him if there are better ways to do something. Also indicate the points that he actually did well, so he will remember them later.
  • Let him work on a real project and mentor him, working together in the same project, giving him advice when he has questions.
  • Efforts should come from both directions: encourage him to ask questions, challenge "how it is being done now." Ask him questions about how he thinks it needs to be done and give him his opinion.
  • Make it “enjoyable” - don't let it look like you are giving an order.
+17
Aug 24 '08 at 14:37
source share

During an internship with a large company that had many IT services, I was paired with a mentor. Practice definitely helped me in my career development, both in terms of technical skills and business skills. Here are some of the reasons mentoring is so good:

  • Credibility . The mentor had 8 years of experience and experience that could be used in leadership and training. He experienced various problems, worked in different environments, so he had a great perspective.
  • Genuine . Mentoring was encouraged by the leader, but not so formally as to do this exercise when passing movements. The mentor wanted a mentor, and I wanted someone to learn.
  • Passion The mentor loved the field in which he was, the problems that he solved, and the technologies that he used. When I came under his wing, I discovered that it was contagious.
  • Sharp and Articulate . The mentor approached them critically and briefly formulated them. There was not much confusion in our discussions; we got to the bottom of the matter, and he directed me to the wise ways of solving problems and actions.
  • Meaningful . The work that I did with the mentor was a significant job, and not just an exercise to engage in or build up a skill. Together, working on a task that significantly helped the organization, it helped to focus my interest and legitimize the mentoring process.
+12
Aug 24 '08 at 20:48
source share

In my first place of work was this really patient , who would always help me solve my immediate problem, and then taught me some important basic principle. I liked it because it helped me stay productive by teaching me how to become a better programmer.

+4
Feb 01 '10 at 2:42
source share

I would be the youngest, I think :) I think I appreciate the informal approach. It probably depends on your characters and your characters, but I would say that you learn better if you do not have ego in the way. Break the ice, make sure that there is feedback in both directions. Things like looking at code (in both directions?) And random pair programming can work, and if there is a good match, it can also be a lot of fun!

+3
Aug 24 '08 at 14:16
source share

Since I had to explain why I wanted to collaborate (besides the fact that I needed money) during my interview, my manager was convinced that my first project allowed me to work on what I called weak: very little Linux experience (I chose a group R & D is only for Linux, so I would have to learn) without knowing a useful text editor (I really wanted to learn Vim) and how to learn a different programming language (a very different approach than learning a language how do you learn to program). He told me that they paid me for some time.

I learn most by reading books, so when I laughed at Unix for dummies (yay!), I was not the only one who thought it was obscure and sometimes crazy). I started with Unix in a nutshell and in Sobell A practical guide to Linux commands. After that I printed out the Vim documentation and started looking at it. Then I looked at a couple of books in Python, the language of my first project. All the time I had to feel comfortable with these things (this was a real problem, as I now understand), and then began to add functionality to the previous joint project.

I understand that it would be awesome to meet with someone every day or two to check the code, as the mercenary Kamikaze said.

+3
Dec 24 '08 at 17:45
source share

Ask them what they will put next to the task. This can give an idea of ​​where from “I don’t know what to do” to “Well, I would try this, but ...”, they refer to an idea that can be useful for a starting point.

Take a look at what they want to do and offer tips so that they understand the problem. It’s rather than giving the answer “Just take this line of code”, ask them to see what is, and all this is necessary

+2
Apr 15 '12 at 16:57
source share

I would recommend starting to give parts of the real tasks that you have, and doing everything to use its code. In other words, teach him a replacement for yourself.

Thus, you undertake to allocate time for work with the younger one, and he will be able to see "real life". By working on real tasks and listening to lively feedback, he can quickly get speed.

The disadvantage of this approach is that it is possible that it will be too narrowly focused on your specific project. Therefore, be sure to show students the possible alternatives and try a compromise analysis to expand its professional horizon.

+1
Aug 24 '08 at 14:52
source share

A few years ago I worked in a small company, where on the first day I was given a list of small tasks to complete - make small changes to the code, find and fix a small error in the project. It really helped me ask the right questions from my mentor and become familiar with the environment, the core of the code. These tasks were easy to complete, so I had a little confidence in myself before addressing the larger tasks.

This mentoring method really worked very well with me, so I plan to do the same with our new colleague.

+1
Aug 24 '08 at 15:06
source share

Here is my short list:

Steam programming is useful for many things, such as reinforcing various ideas and practices. Getting used to Resharper is a lot easier when you meet someone who uses it often.

Unofficial chats. Here we will have a drink, go outside so that someone can relax, go to dinner together, etc. Away from the tables, the discussion may be related to work done immediately or it may be an abstract philosophical thing that can help bring someone a game a step or two. Talk about various upcoming technologies or changes in what can be exciting and help shape bonds.

Feedback and suggestions. This is what happened in both cases. Books such as How to Make Friends and Influence People by Dale Carnegie can help in understanding the dynamics of different human relationships, which, although it sounds pretty technical, is just how to motivate someone else differently. The key point here is to know how to leave a trace of breadcrumbs in order to raise some practices, for example, give a hint after a hint of something, and not just give an answer. I had different math teachers who had a gift for this, as I developed some of these skills.

Thus, part of this simply motivates the other person and tries to direct them in the same way as when someone does something for themselves, it can be a reinforcing and enlightening experience. "I did it! It's true, my, yours!" The kind of self-promotion is pretty good when this happens.

+1
Dec 01 '09 at 17:11
source share

In my experience, when mentoring someone, it is very important that the mentor really WANTS to know more.

Never feed them with a spoon. Instead, point them to valuables and ask them to use the new information that they learn in the projects that they use. Knowledge is useless if it is not put into practice. Therefore, encourage your mentoring code, code, code, code.

+1
Feb 01 '10 at 2:27
source share

I have instructed several younger people for myself before. My approach was somewhat different from a person based a little on how they learned.

In short, I gave younger people small, self-sufficient projects when I could, and gave them a relatively fixed time to complete the task. Upon completion of the task, I will consider their approach, code and solution, and also make suggestions for improvement or the best way to deal with this problem. I think that they do not feel depressed, being part of a much larger project.

Hope this helps a bit.

0
Aug 24 '08 at 14:37
source share



All Articles