If you had a student or junior developer who was competent but just had no real world experience how do you think it would be best to mentor them or what information could you give them that would ease their transition from newbieness into leetness?
|
closed as off topic by bigown Dec 29 '10 at 17:27
Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined in the FAQ. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about closed questions here.
|
Hm, there are many things to mention, but I think the most important would be:
In other words, don't be pretentious. Understand that you are as "lame" as he is, only on a different level. He will make mistakes, and you need to explain why are they mistakes, not simply shout at him for making them. I guess you have to keep in mind that you make mistakes too. Make him realize that mistakes happen and that he should not blame himself, instead, he should learn from his mistakes to avoid repeating them. Also, try to learn from him. Be modest in your teaching. He may lack experience and technical proficiency you have, but he may have insights you don't. As with any teaching, listen, then talk. It is very important to figure out what's troubling him and what are his strong points. I'd probably start by giving him a smaller project and review the code with him, then gradually introduce complexity when I feel he's ready. Even if it fails at first, he'd gain something from it. But try to instill some values of course, things like discipline, consistency, communication etc. Let him know he can ask any question, no matter how stupid it seems, without feeling like an idiot. If he's afraid to ask, he may never learn... |
|||
|
|
|
i would teach him design... and the rules behind the design (see the book Head First Design Patterns) and SOLID principles (see wikipedia) and basics like encapsulation, information hiding. and also some clean code (see Clean Code the book) i would basically give him 4 articles, 2 books and 1 site:
this list refers to object oriented programming languages, but most languages out there are object-oriented. if, on the other hand, you're teaching him functional programming, you'll have to search for some materials yourself anyway, the idea remains the same: mentor him to write clean code that adheres the core principles of the language; you will make his life easy |
|||
|
|
|
|||
|
|
|
I'd point them to a list of books and tell them to come to me with questions. The Mythical Man Month This question on SO can give you some other ideas for good books. Beside that, I would spend time with them discussing various topics as they warranted, asking them questions and reviewing their code. |
|||||||
|
|
One thing I let people know when I mentor them is that I learned some of these things by making the same mistakes they are making. I think this makes my level of expertise seem more attainable and makes it seem less as if I'm saying, "Ha, I'm smarter that you." |
|||
|
Have them write unit and integration tests for one of the projects. This will improve their coding abilities and greatly advance their understanding of your system. Most importantly, have review sessions with them, where the first several times you review each line of code. This will hopefully identify some areas where they could improve. Also, never judge, but politely point out best practices of doing things as you review their code. |
|||
|
|
|
The first step to becoming smarter is realizing how dumb you are. |
||||
|
|
|
The best person to answer that would really be the student. Show him the project you're working on, give him some minor bug to fix, and turn him loose. Any competent developer should be able to use basic debugging tools to locate the part of the code for the user interface section where the bug is reproduced. Once he hits that point, he'll probably have a few questions. Answer them as they come up, and try to answer in a way that not only answers his question, but helps him to develop a way to figure out the answer to related questions the next time they come up. |
|||
|
|
|
In this order:
|
|||
|
|
|
I'd focus first on creating the right "posture of mind". Once one has that, the rest is much, much easier.
|
|||
|
|
|
I'd likely ask them how well do they know the tools and process that are used where they are. I'd probably want to warn them of a baptism by fire coming though I'm not sure what use that serves. While some ideas like pair programming are good, there can be limited use to this in some cases. In some places I've worked new developers tend to get the support tickets rather than the sexy projects, unless they are consultants of course. That would be my starting point, aside from the usual getting the backstory like I would with anyone new in my team. |
|||
|
|
