Jeremy D. Miller -- The Shade Tree Developer

Sponsors

The Lounge

Wicked Cool Jobs

Syndication

News

Advertisement

Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at imagehelp@codebetter.com
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. 


Posted Mon, Jan 19 2009 4:39 PM by Jeremy D. Miller

[Advertisement]

Comments

Bart Reyserhove wrote re: Mentoring Other Developers
on Mon, Jan 19 2009 5:31 PM

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.

Steve wrote re: Mentoring Other Developers
on Mon, Jan 19 2009 5:36 PM

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

Adam A wrote re: Mentoring Other Developers
on Mon, Jan 19 2009 6:14 PM

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.

Brian Mavity wrote re: Mentoring Other Developers
on Mon, Jan 19 2009 6:41 PM

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.

Mark Nijhof wrote re: Mentoring Other Developers
on Mon, Jan 19 2009 6:55 PM

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

Darren Kopp wrote re: Mentoring Other Developers
on Mon, Jan 19 2009 7:51 PM

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 :)

Jeremy D. Miller wrote re: Mentoring Other Developers
on Mon, Jan 19 2009 9:02 PM

@Darren,

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

Blog | Rubyyot :: Re: Mentoring Other Developers wrote Blog | Rubyyot :: Re: Mentoring Other Developers
on Mon, Jan 19 2009 10:06 PM

Pingback from  Blog | Rubyyot   ::  Re: Mentoring Other Developers

Chen Li wrote re: Mentoring Other Developers
on Mon, Jan 19 2009 10:29 PM

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.

Mathias wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 12:38 AM

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% :)

Martin wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 4:47 AM

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!

Ian Chamberlain wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 5:48 AM

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.

Eric Geiger wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 7:41 AM

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.

mo wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 9:37 AM

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

Dew Drop - January 20, 2009 | Alvin Ashcraft's Morning Dew wrote Dew Drop - January 20, 2009 | Alvin Ashcraft's Morning Dew
on Tue, Jan 20 2009 9:52 AM

Pingback from  Dew Drop - January 20, 2009 | Alvin Ashcraft's Morning Dew

J.P. Hamilton wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 10:46 AM

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.

sross07 wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 1:25 PM

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

Regards,

Scott

Örjan wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 2:54 PM

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:

devlicio.us/.../s-arp-architecture-beta-1-0-now-available.aspx

Tim Barcz wrote re: Mentoring Other Developers
on Tue, Jan 20 2009 10:42 PM

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.

igorbrejc.net » Fresh Catch For January 21st wrote igorbrejc.net » Fresh Catch For January 21st
on Wed, Jan 21 2009 2:06 AM

Pingback from  igorbrejc.net » Fresh Catch For January 21st

Darren Hale wrote re: Mentoring Other Developers
on Thu, Jan 22 2009 1:21 PM

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.

codemnky wrote re: Mentoring Other Developers
on Sat, Jan 24 2009 12:01 AM

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.

Jack of All Trades - How does Mentoring work ? wrote Jack of All Trades - How does Mentoring work ?
on Tue, Jan 27 2009 11:59 AM

Pingback from  Jack of All Trades - How does Mentoring work ?

Michael Mann wrote re: Mentoring Other Developers
on Thu, Jan 29 2009 7:08 PM

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

Jeremy D. Miller wrote re: Mentoring Other Developers
on Thu, Jan 29 2009 7:12 PM

@Michael,

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

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Devlicio.us