views:

339

answers:

14

I will soon be taking on the role of mentoring a fairly new programmer. I have so far been the lone programmer at a quickly-growing small company. Are there any good resources I can check out that could help me transition into this role? Specifically, I am looking for resources on how I can be a good mentor, rather than resources for the new programmer.

+11  A: 
David Basarab
I found Code Complete a little long-winded. I know everyone likes it, but does it really have to be 1,000 pages long?
Steve Rowe
@Steve Rowe: If it were shorter, it wouldn't be complete, now would it?
Michael Myers
No, it could be (a) complete and (b) concise while still running to less than 1000 pages. CC is fairly verbose but it is a fairly good example of its type. A 'reader's digest' version wouldn't go amiss, though.
ConcernedOfTunbridgeWells
@Steve Rowe: I liked the long winded nature. He doesn't just say it should be this way, because I am the author and you are reader. He presents you both sides, and facts and you can see why one way is better than another.
David Basarab
-1 for posting a pointless image
anon
I really like McConnells's other books, like Rapid Development see http://www.stevemcconnell.com/rd.htm, but if you need to read Code Comoplete, you should be in another profession.
anon
Boy, some people have a bug up their rear tonight!
Rob Wells
@Steve Rowe, For me Code Complete is not a book to sit down and read in one sitting. It's a book to consult when you have specific issues, e.g. variable naming, program composition, testing, etc. I've found it's a book that you can come back to and just read a chapter, or even a section, and you get reminded of aspects and good habits of programming that you sometimes tend to drift away from.
Rob Wells
I actually just bought this book this week and am really liking it. For me it's like the missing manual on the process of designing and building software. I agree it may not be a read from front to back kind of book but it's a great reference.
Marplesoft
I am voting -1 on this one because I would like to see something more focused on the teaching point-of-view.
Jeremy White
+3  A: 

The Pragmatic Programmer and Programming Pearls are good books for beginning-intermediate programmers because they go into technique. If you've got a new programmer, the 'good advice' aspects of these books may be a good influence brought in at the right time.

The only suggestions I can make on books to help with mentoring are to see if there are any resources on general teaching that might give you some inspiration. Many software engineering books, such as Code Complete (as suggested elsewhere) contain sections on code reviews. You may be able to pick up some inspiration from there as well.

If you can make it work you might get some mileage from pair programming. It's not for everyone but it can be used as a teaching aid.

ConcernedOfTunbridgeWells
+1  A: 

I would use Martins "Clean Code" as a base. It's one of the best general purpose programming books out there. Even beeing an experienced programmer, it's often hard to tell somebody why you do something in a certain way. You just know what to do, but the "why" is hard to express. "Clean Code" will be very helpful in teaching this kind of knowledge - and I'm sure you will learn something new too! ;-)

Achim
Not a few people (myself included) think that Martin couldn't find his own arse in broad daylight with both hands.
anon
I've read some of Clean Code, but found it only slightly less dull than an average coding standards document.
Kyralessa
@Kyralessa I predict your muted praise will be on the back page of the next edition: "A top Stack Overflow poster raves!"
anon
+9  A: 

I would recommend "The Pragmatic Programmer: From Journeyman to Master" by Andrew Hunt and David Thomas

Uplate
A good book... a little dated.
Chuck Conway
@Update and @Charles, I totally agree with you both. A great book, but now a bit dated. My only qualm is the fact that The PragProgs still charge major bank for it. $41 is ridiculous!
Rob Wells
@Rob, I think you're right about the price being too high. It would be nice if publishers would give a discount on their titles that are no longer cutting edge. (Although, I tend to be somewhat forgiving with PragProg because I like several of their other recent titles so much.)
Uplate
+2  A: 

Practices of Agile Developer by Venkat Subramaniam and Andy Hunt.

Also How to be a Programmer: A Short, Comprehensive, and Personal Summary

Practices of an Agile Developer was ok, but mostly common sense.
Martin
A: 

It may not seem directly to follow from the request about mentoring, but I genuinely believe that Code Complete could be a great asset for you. It helped me when I was mentoring junior developers, because it made explicit the things which I thought "good" or "bad" about particular development practices and thus it became easier to explain them to the junior developers.

In a similar vein it's good to have books about the particular technologies you'll be using together to hand, these can act both as a backup to justify what you're teaching to the junior as well as a shield to deflect low-ball questions - that sounds a bit callous but it's surprising how much time you might waste answering questions which are better dealt with in the literature.

Look for information on the Kolb learning cycle too; see if you can identify where on the cycle you start when you're learning and where the junior starts on the cycle. I found that I frequently had moments of cognitive dissonance with one particular junior because I taught starting with abstract ideas but he learned best from reflecting on real experience. Once I'd identified and adjusted to that our relationship became much smoother.

Graham Lee
A: 

Joel On Software by Joel Spolsky. His blog also offers most of the book for free.

jordan002
This is a great read, but not for a beginner. If you wanted to start a software company or understand the business of software it is a fantastic read.
David Basarab
+7  A: 

G'day,

I'd highly recommend the excellent book "Mentoring: The Tao of Giving and Receiving Wisdom" by Chungliang A. Huang (sanitised Amazon link).

I know most people have posted technical resources, many of which I agree with, but mentoring is definitely an art!

HTH and good luck!

BTW I love mentoring others!

An excellent book on helping nurture programmers is Pete McBreen's excellent book "Software Craftsmanship: The New Imperative" (sanitised Amazon link) which is concerned with the art of teaching programming.

cheers,

Rob Wells
+1 - specific resources on mentoring, which may well have been what the OP wanted.
ConcernedOfTunbridgeWells
But why not wait a bit to find out what the OP actually wanted?
anon
Wonder if that's how Jon "Lightning fingers" Skeet got to the top end of "The K Club"? (-:
Rob Wells
+1 for answer which fits with my clarified request
Jeremy White
+1  A: 
  • Karl Seguin's free Foundations of Programming Ebook
  • Also for .Net/Java development I really felt like I learned a lot from Jermey Miller's Build your own CAB series (Its not what it sounds like - it IS incomplete however)
  • Oh and the least intimidating yet the most practical resource out there: Dimecasts
George Mauer
+2  A: 

My personal preference is The Practice of Programming by Kernighan and Pike. It's like Code Complete only about 20% as long. Much more accessible that way.

Steve Rowe
+2  A: 

What is the single most influential book every programmer should read?. I guess whether you are a beginner or senior level, this is a great list of books too read. Also, here is a list of non programming books.

SwDevMan81
+4  A: 

Peopleware by DeMarco and Lister is a great book aimed at just the person you are about to become: the new team lead.

Norman Ramsey
+2  A: 

Check out this video, starting at about 18:30 (before that, it's some end of course administrative stuff). He's talking about the way he views teaching/learning. He's in a university professor role, but my impression is that he'd make a great mentor too:

Richard Buckland UNSW: Lecture 47: Learning and Teaching Computing

Anon
A: 

This isn't a book but one thing that will turn a mentoree off faster than anything is if you assume he or she knows nothing and that you know everything. Listen as well as coach. When they suggest something that is a good idea you had not thought of first, then go with it and tell them that it was a good idea. If the idea isn't so good, don't just say, "no we aren't going to do it that way", but explain why the other way is better or what factors they had not thought of. Or better yet ask them questions to get them to see for themselves why it might not be the best approach. Young people and new employees are often frustrated because they want to make a contribution and anything they suggest is shot down with no explanation. And somtimes they will have a good idea but one which isn't practical at the momement. Acknowledge that it is a good practice but tell them why it is not possible at the moment. Young developers also need to learn that politics plays a large role in decisions.

HLGEM