Mentoring Other Developers

Last night I was finishing up an article on “Persistence Patterns,” and I was using a VB6/COM project I did years ago as a negative example (and not because it was VB6).  On that project, every time we needed to access data or write data back to the database, we would do the whole rigamarole of “get connection string, open connection, build command object, execute sql, close database connection” and, oh yeah, try to remember to throw some error handling in there somewhere.  We wrote a stupid amount of repetitive code.  I bet 75% of my time on that project was devoted to data access.  On the next project (VB6 as well), my friend and I came up with a crude “Xml to Sproc” mapper that isolated the ADO manipulation to a very small area of the code.  I still wrote a lot of PL/SQL, but I realized a major savings in time spent fooling around with ADO objects.

My point is this, I had no mentorship from more senior devs on the first project, and I bet that that’s still the situation for many of us today.  Centralizing that kind of data access code is considered to be a standard best practice on any halfway experienced team, yet nobody told me that on my first project.  I was the “technical lead,” but I was as green as you can possibly be.  How much easier would that project have been if I had just had someone more senior involved in the project to guide me towards a better design?

We constantly gnash our teeth over how our industry just isn’t “mature.”  We propose certifications and guilds and brown bags and whatnot.  Maybe all we really need to do to start is just help each other out with bare bone basics first.  Like teaching developers to eliminate repetitive code in your data access layer like I did and this guy did in an MSDN article.  Or, and I know I’m shooting from the hip here, we find a way to get junior devs directly exposed to somebody willing and capable of mentoring. 

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Frank Black

    Sometimes one needs to make the same mistake as everyone else to truly appreciate the value of a good solution :)

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller

    @Michael,

    I’m kinda hoping you can come back later and tell us how it goes.

  • Michael Mann

    I just saw this article and it made me laugh because we had a conversation about this recently at work. We decided to give the more complex work to the more jr folks and have the sr folks mentor them through the process of design, development and testing. This is starting next Monday at the start of our next sprint

  • codemnky

    I am new to the OO paradigm. I have worked in the procedural world for the last 9 years. I have followed the alt.net crowd for over two years now. I understand all the OO principles of separation of concerns, DI, SRP, OCP, and a 100 other three letter acronyms. My position might be unique or maybe I speak for the whole industry. In these harsh economic times, it is about survival. My company is transitioning from a legacy system to .net. I don’t have time to architect a PERFECT solution. things need to get done and the product needs to be shipped or else I am out of work! Over the last few years, this alt.net movement caught my interest. I am beginning to wonder as to the legitimacy of the whole movement. I am thinking it is largely for personal gains. I think the ALT.NET crowd is largely an army of consultants who would love to have Microsoft throw in the towel in the ORM space. Thus allowing these consultants to reap the benefits of NHibernate projects. I heard Ward Bell just recently on .net podcasts talking about using Entity Framework in his product. Not long ago he was alongside you in another podcast talking about the No Confidence Vote.

  • Darren Hale

    This is a tough topic. Direct interaction with a mentor is a must to truly develop a junior developer. Practices like pair programming help to force this interaction.

    Unfortunately, just interacting with a mentor isn’t enough. All too often, senior-level developers haven’t learned how to read people so that they can interact with other developers in a way that helps the person learn. Ideally, a mentor should get to know their protege and guide the person in ways that are complementary to the protege’s learning style.

    Maybe the way to make strides in growing junior developers is by senior developers working at being better mentors.

  • http://www.devlicio.us/blogs/tim_barcz Tim Barcz

    Good post.

    It interesting how software development shrugs off the practices in place by other, more “mature”, industries. Want to be an electrician, you enter an apprenticeship for a number of years under another electrician. Wanna be a doctor, you first go to school and as part of that schooling you do your residency.

    Often times we expect too much from developers, that is learn, on the job, while building a highly scalable/reliable application that will solve our problems with no bugs….when the reality is that it takes a lot of effort on the part of management and the company to build up developers and create a culture where learning and growth are emphasized, which ultimately leads to better developers and better applications by extension.

  • Örjan

    If you don’t have any mentor at your work available. There’s a good resource on the web in form of blogs like this one and reference projects like:
    http://devlicio.us/blogs/billy_mccafferty/archive/2009/01/19/s-arp-architecture-beta-1-0-now-available.aspx

  • sross07

    What open source projects are out there that could possibly help developers get mentored?

    Regards,
    Scott

  • http://www.jphamilton.net J.P. Hamilton

    I agree with @Eric. I am trying to be a mentor in my company. I have organized events like coding dojos, roundtables, and other classes.

    But what do I ultimately know? Should I be doing that when I don’t have a mentor myself? Finding one is easier said than done. Programmers are not known to have balanced egos. Maybe that is something else we should all work on changing, so that we can grow as programmers in public…instead of privately.

  • http://mokhan.ca mo

    So… where should I go to get good mentoring? What does a good mentor behave like?

  • http://codefromwithin.blogspot.com/ Eric Geiger

    An excellent point. Mentoring, formal or otherwise, is something I’ve been wanting to see more of in our industry. I find it strange, and even a bit naive, to expect juniors to simply bootstrap themselves into a state of sublime technical proficiency.

    The other point about mentoring is that it benefits the mentor as much as the apprentice. In my view, it works as a feedback loop that allows the senior to continue learning, whether from re-examining topics already mastered or from simply having a junior full of questions to work with.

  • Ian Chamberlain

    I think part of the problem is that many organisations do not understand the real costs and benefits of their software development activities. This means they don’t invest properly in their staff with training and mentoring because they just see it as an additional cost. Until we can communicate the real cost of Technical Debt and what can be done about it I do not see that situation changing.

  • http://martinsantics.blogspot.com/ Martin

    With out trying to message your ego J, I’ve gotten most of my pointers from the likes of you and the other guys at codebetter over the last couple of years or so.

    I only realise how little I know when I come across someone who knows lots more. Keep on going guys. I’m doing what I can to keep up!

  • http://www.clear-lines.com/blog Mathias

    One practice I really found helpful in sharing knowledge is pair programming. It’s a great way to see a process in action, and to get a sense for how people think through the problem at hand. If anything, it’s a great way to pick small tips and tricks – it’s amazing how everyone uses 10% of their IDE, and no one uses the same 10% :)

  • Chen Li

    Can’t agree more:) I still remember the tough days when I was the only developer at my previous job, and Internet wasn’t so prevailing at that time in my country. I had to go to book stores frequently to find my answers.

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller

    @Darren,

    I *was* you, but all I had was AspToday and CSharpToday

  • Darren Kopp

    Could be like me. I’m 23 and I am the senior level dev (work at a startup) so I have no one to mentor me, so i just glean what i can from the internet :)

  • http://blog.fohjin.com Mark Nijhof

    I have enjoyed some great mentors at my previous job and it is really the difference between night and day.

    We are in the process of getting the developers at the company I work for at a higher common understanding of how to write quality code and for that purpose we have a few knowledgeable seniors that will randomly drop in on a project to see how things are going and when needed do some coaching. In other words be proactive towards knowledge sharing and such things.

    And we have monthly sessions about various things like technologies and practices, the problem with these is the low turn-up.

    An other thing we started is a internal twitter feed so that everybody in the company can see what is going on and can be used to ask questions easily (low level knowledge sharing). Not sure how that will work out?

    I personally feel that many developers (the 9-5 guys) don’t want to learn, not like those reading your blog. So what to do about them. Making some stuff mandatory like lectures… probably not going to work. I think the only way for them to be converted is to see the light and that can only be really done by solving a problem they are facing in an appropriate way.

    -Mark

  • http://www.brianmavity.com Brian Mavity

    It’s along the same lines of the “I don’t have time to sharpen my saw, I’m too busy chopping wood” mentality, but on a business level instead of a developer level. Mentoring and developing mentors should be a priority in companies, but in my (admittedly limited) experience, this seems to be pretty rare.

  • Adam A

    As a self-taught developer, and the only dev at our company, I totally agree. I would kill for the opportunity to sit next to a knowledgeable programmer for a week or two, watch, and ask lots of questions.

    Blogs and books work to a point, but the real-time interaction is what makes the difference, IMO.

  • http://blogger.forgottenskies.com Steve

    I agree so much.

    In all crafts there is a mentor/mentee relationship. A good friend of mine is an electrician. He learns his skills working with a master electrician who has been in the trade for a long time and knows a ton.

    To me development is the same. It’s a craft – and part of growing developers is putting them together with those that are masters.

    I’m not a big fan of certifications – I went through all that to get a MCSE back in the NT 4.0 days – and honestly, that did little for me, the biggest learning was walking into a job my first day as a network admin and having a senior admin, take me by the hand and showed me the ropes – all the tricks of the trade.

    I can recall my first development project in C++ where I didn’t know I had a memory leak closing an app with a treeview – but a master developer with 18 years showed me how to clean it up and taught me the right way to do it.

    Priceless

  • http://bartreyserhove.blogspot.com Bart Reyserhove

    That’s damn good point you have here. Certifications will not solve the issue.

    In my opinion things are made worse because too many good senior developers take up other roles in a company (analyst / project manager) and their experience is pretty much lost for the juniors.