Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am the only developer/DBA in a small IT department. There is another guy who can do it, but he's more of a backup as he spends his time working on IT support stuff.

Anyway we have a new hire and I've been training him on the IT support side of things. Seems like he is eager to learn and be productive, but nobody is going out of their way to show him anything. He's been asking me to teach him database design, SQL, etc.

For some reason, the boss has him working with me. He is also sending him to meetings that I go to, yet he hasn't said outright that I have to teach him anything. Meanwhile, the boss insists on doing a lot of the support work himself (i.e. he hoards information and doesn't delegate to anyone).

I'm a little bit on the fence. First, the new guy doesn't yet have a strong foundation on the IT support functions which is where we really need help at this time.

Second, I paid thousands of dollars for classes and spent many hours learning this stuff. Is it my responsibility to teach others skills that I had to learn on my own? Others here really aren't quick to share information so I'm not sure that I should either in this environment.

I do know that if I get him involved, and get him started on projects, then I'd be responsible for his mistakes. I had to take the heat for the other guy when he made mistakes.

OTOH the guy wants to learn something, is motivated, and I don't want to stop him. We've had our share of slackers in the group and it's nice to have someone who is willing to work for a change.

So what would you guys do? Would you teach him the skills that you spent all of that time learning? Set him up with a test database on his PC and recommend some books for him? Encourage him to get a strong foundation in IT support first and ask later? We haven't had a new hire in years, let alone one that is interested in what I do, so this is new to me.

share|improve this question

closed as not constructive by Michael K, maple_shaft, Caleb, Anna Lear Oct 5 '11 at 20:47

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

5  
I'd train him. You'll find enjoyment expressing your mastery of subjects you're passionate about. Its likely that explaining things out loud will help you understand things better as well. Just make sure you keep up with your other responsibilities. –  coder Oct 5 '11 at 16:50
3  
It took me 50 years to learn everything I know. How long have you got? –  Paul Tomblin Oct 5 '11 at 17:16
54  
That is a horrible attitude to have that you feel the junior guy has to suffer without direction just because you were unfortunate enough to not have a mentor. I want you to think about that the next time you are struggling with a problem and post a question on a stack exchange site. If everybody thought like you, why would anybody bother to help you? –  maple_shaft Oct 5 '11 at 17:21
29  
I know the answer to this question, but I'm not going to tell you. –  Scott Whitlock Oct 5 '11 at 19:13
3  
The correct answer is: OF COURSE YOU SHARE IT. Like... how could anything else even occur to you? –  Helgi Hrafn Gunnarsson Oct 5 '11 at 20:52
show 6 more comments

19 Answers

I am only going to answer part of the question - in that you should devote as much time to training the new person as your direct supervisor will sign off on.

In general, I am very much for training people. While I too paid for my own degree and training since then, I find that sharing helps more than just that other person, it can help to clarify things for myself, as well as making the workplace a better place to be.

That said, you definitely do not want to spend time training, and then fall down on your own projects and commitments. I strongly suggest discussing with your manager how much time you should devote to training, and work up some sort of plan.

share|improve this answer
add comment

One way to gain a skill important to moving up the career ladder (technical or management) is to learn how to mentor more junior employees.

A great programmer makes the other programmers around him/her better.

share|improve this answer
show 3 more comments

Knowledge sharing is one of -the- most important things you can do with other team-members.

Whether or not you want to give the new guy some advice on what not to do with regards to database design, queries, etc, depends on whether or not you want the new guy to be more useful or not.

I'm not suggesting you take more than a few minutes here and there - but giving (and receiving) advice and tips from colleagues makes everyone more productive.

share|improve this answer
add comment

Teach him whatever he's able to learn!

A great programmer is one that not only codes well, but also one that can effectively pass on his knowledge to others. There's only so much one person can do, and a truly valuable employee can not only code well, but can also teach others to code well.

I would hire someone any day that can make junior coders efficient, over someone who has a higher skill level, but won't share that knowledge.

I feel my boss is a little similar to yours... he doesn't share his knowledge easily. I don't know if it's because he feels threatened, or if he just doesn't have the time, but in either case it is rather annoying to always have to go to him to fix the same problems that I know he could just teach me to fix instead. He's constantly swamped with stuff to do because "no one else can do it", which means he's always behind on his work. And trust me, management notices this kind of thing.

So I would say teach him whatever you can in the time you're allowed. With him capable of handling some of the issues you normally take care of, you'll have time to expand your knowledge base. If he does an amazing job at something, you can take partial credit. If he fails at something, well you can always say you can only teach someone so much so. And who knows, he may even teach you something.

share|improve this answer
add comment

Let's break this problem down.

Are you worried about your job, in case he gets really good at it?

If you are, and you're not willing to keep making yourself better than him (having a good head start), I wouldn't rush to help him. It's simply not a strategic decision. And it's not your job!

If you want to help the guy, but worried about taking heat for his mistakes, talk to your boss about it. Do not agree to do it unless your boss explicitly guarantees that you won't be held responsible for his own mistakes (that is, mistakes that you didn't lead him into making). It's fair. It's just. It's what you should do if that's the case.

If you agree to take him under your wing and guide him, you shouldn't really babysit his work or lecture him about various topics. You should definitely refer him to sources of knowledge (websites, books, articles, etc) and be ready to advise him when he needs it. But be sure to advise, not tutor.

And the most important part - even if you do take him under your wing and everything - make it conditional to his continuing education in his field. Make it clear to him that it's not instead of doing his work, but in addition to.

If he agrees to all of this, then he indeed isn't a slacker and possibly deserves your gracious treatment. And then you may feel good about helping him, and about doing the right thing.

P.S. Feel free to ask for a raise, because you did not sign up to tutor the company's staff. You signed up to do your own bit of work. Any other engagement is blessed, but you should not be criticized if you ever have enough of it, if you didn't sign up for it in the first place.

share|improve this answer
1  
If the OP is worried about the kid making him obsolete then he/she should focus on his/her own skillsets and improving personal knowledgebase. Witholding information from a junior is scummy. –  maple_shaft Oct 5 '11 at 17:17
show 2 more comments

Do you share the information or keep it to yourself?

Now that's a weird question to ask on a site like this.

Personally, I never paid any money to learn what I know, except for the occasional book here and there. University didn't really work for me, but even if it did, it is free where I live.

I learned a lot from various things. Trying, failing and getting better is one thing. And it is irreplaceable. And you can't buy that for money.
A lot of information I got is freely available on the internet. Sure, the authors of academic publications are being paid for them, but a vast part is really just a bunch of guys willing to share what knowledge they have.

That being said: All the knowledge they shared, all the knowledge that I really understood, came at a sizable cost in both time and willpower. If I multiplied the time I spent on working to be a better software developer by even just a fraction of my hourly rate, the result is far more than a few thousand dollars.

So while you have been unfortunate, to not have a mentor and to even have to pay for your courses, this doesn't mean others should. If you find no pleasure in sharing knowledge, then doing so is clearly the wrong thing for you to do and that's ok. However, many people do and they are the ones who should do it. Personally, I haven't met anyone so far, who won't passionately explain to you all the little grains of wisdom he picked up on his way.

The alternative is simply not to teach him. The net result will probably be, that you spend a lot of time fixing his shitty work - possibly even more, than teaching would cost you. And there is no way to guarantee such a situation will improve any time soon.

Nobody is asking you to spoon-feed him everything you know. But with your formation and more importantly with your work experience, you can point him in the right directions. You can get him on track in a couple of minutes, when he's stuck. You can teach him a lot in code reviews and pair programming sessions.

Try to see it as an opportunity. You can actually shape a coworker, which is likely to result in a formidable basis for working together. Don't be afraid to consider time-consuming measures (e.g. the mentioned pair programming, which might be a good way to kick off a project for him) but also don't forget to discuss them with your boss prior to execution.

And last but not least: When you're passing on knowledge to others, this forces you to explicitly express things, you implicitly take for granted. It is a process, that usually deepens your understanding of your own knowledge.

share|improve this answer
40  
+1 for "that's a weird question to ask on a site like this" :-) –  Péter Török Oct 5 '11 at 17:06
1  
+1. Agree with Peter. In fact, I'd say you could rewrite everything that follows your first sentence with "Don't be an ass". –  haylem Jun 20 '12 at 11:22
show 1 more comment

You should be proud to help him out and teach him what you know especially if others are failing to do this.

As for mistakes... so what? They'll happen anyway. Assuming the mistakes are reversible and not excessively costly, I find it unfathomable that you'd get much heat for an occasional fumble from the new guy doing new things.

share|improve this answer
add comment

I share knowledge. Sometimes someone will ask me how to do something and I tell them, if I know. Sometimes I offer a neat little script that I think they will find useful. I do it because I hope they would share to me similar pieces of knowledge, and I find that people do try to reciprocate this.

If you are talking about formal training sessions, that's a little different, it may require some prep time and planning examples. This takes up more time but could still be beneficial in the long run as you will have someone that can be your backup (if you don't have one now). Also, you need to schedule both of you to have a few uninterrupted hours for the work, and the boss has to be OK with this.

In your specific case, I'd say that first thing to teach him is what he needs for the job he's actually assigned to. For the rest, you can send links, book recommendations, tutorials, and maybe even some one-on-one when you both have time for it. You're right - it's good to have someone that's enthusiastic and it would be bad to spoil that attitude.

share|improve this answer
add comment

I personally would teach him what he needs to know to do his job. I would point him at websites where he can learn and answer questions that he has that are at least somewhat specific and relavent. I would not tackle open ended questions that are not relavent to the job unless it is something you are enjoy talking about.

I constantly get people asking me to teach them to program. I Ask them what do they want to learn and they answer programming. It is an unrealistic expectation and more likely than not they will end up not wanting to learn it once they get into it. There are plenty of tutorial sites on the net and books that will teach from scratch. If someone really wants to learn they will start there. I love helping people who really want to learn but if they can not take the first steps themselves then I do not want to waste my time and energy teaching them to do something when what they really want to know is how do i sit at a computer all day doing nothing making big money because I am tired of doing meanial labor but I do not want to think any harder.

share|improve this answer
add comment

Yes, you do.

Apart from all the other excellent reasons already given above: Teaching a willing subject what you know about a subject is hands-down the very best way of understanding it better yourself. Trust me, you may think you know all this stuff perfectly, but you don't. So you needn't even be an altruist for the answer to be "yes".

share|improve this answer
add comment

So what would you guys do? Would you teach him...

Well myself I would first to think about how could I benefit most, not about that other guy.

If by teaching him, I'll acquire a skill to teach others as an addition to what I already got then this alone might eventually turn out well worth the efforts spent. At least it'll open me an additional career path as a trainer (if I'm good enough at teaching).

Another skill one may acquire dealing with issues like this is how to handle a boss that sucks difficult boss. I'd try and learn various ways to get what I want from him - like clear statement on what he expects from me in teaching, like squeezing the information he tries to hide etc etc

share|improve this answer
2  
If you insist on a cold, Machiavellian calculation, you should also include the likelihood that this coworker would be grateful to you, and in a better position to help you in the future. –  PeterAllenWebb Oct 5 '11 at 18:41
show 1 more comment

Sounds like your boss is breading some real bad practices by not sharing information. He has an entire team that is unwilling to share their knowledge with each other. What a waste.

I would go ahead and train this guy on anything he wants to learn, then get the hell out of dodge. This place is going to make you a bitter old man if you stick it out there much longer. Find a place where people readily share their knowledge with each other and enjoy helping each other grow.

share|improve this answer
add comment

Second, I paid thousands of dollars for classes and spent many hours learning this stuff. Is it my responsibility to teach others skills that I had to learn on my own? Others here really aren't quick to share information so I'm not sure that I should either in this environment.

It's not like you're doing it for free -- Your company is paying you to do it. Just because he's not paying you doesn't mean you're not getting paid.

share|improve this answer
show 1 more comment

Think about what's in it for you if you do share your knowledge.

Sooner or later, you will have to maintain the code he produces. You can sit back and let him pick up bad habits and produce messy code, but you won't thank yourself for it when he's away and you have to make a change to some of his code.

You also won't thank yourself when your stuck at work at 1am because you're behind on a project, because your colleague was not as productive as he could have been had you shared your knowledge. Or when you have to be pulled off a project to do something he can't do, when he could have learned it from you.

share|improve this answer
add comment

Yes. By all means, be a teacher. It will be good for him, and even better for you, in the long run.

share|improve this answer
add comment

Einstein said...you never really understand something, unless you can explain it to your grandma.

So here is it your chance, but slightly easier.

share|improve this answer
add comment

The sooner you teach someone else to do your tedious work the sooner you can move on to more interesting things.

share|improve this answer
add comment

Teach him what you know that is relevant to what he needs to know to do the job and support you. there are details that you have learned in school and by reading on weekends that he will have to do on his own, as we all have had to do as developers. I would not write his code for example, but I might show him how to back up and restore a database. One time I wanted to learn XML from a coworker, so he set up time weekly and I paid him $35 dollars a lesson. Just like I would a piano teacher. I did learn XML and he felt he got compensated. I did not take that guys job, he and I became close friends. Always answer their questions, lead him in the right direction, if he needs it. Use your own discretion on how much you want to help, but no I would not write his code.

share|improve this answer
add comment

If what I'm inferring from what you've said is correct, then I'm going to counter what everyone else is saying... in this case: No. From what I can tell, the person that you're considering mentoring has zero training, zero education - basically some random person off the street who's 'interested' - and you were hired as a developer/dba - not a mentor or teacher.

Personally, unless I'm hired/tasked to train someone by my employer, then I expect a certain amount of pre-requisite education (formal, or informal - I don't discriminate here) before the knowledge sharing begins.

Knowledge sharing is one thing; training is another. The first is expected, the latter is assigned and budgeted for.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.