A small amount of backstory; I work at a small company part-time, helping with their IT/networking needs, as well as managing their database. They use an older, fairly obscure proprietary software that was previously managed by a man I'll call Tom. Before I was hired, whenever my company needed to make changes, they would call him in make changes to the database at an hourly rate. Since then, I've taken on much of his workload in regard to programming the database (which he has told me he is more than happy to offload, as he is nearing retirement).

For the most part, it is simple software, but occasionally when I have a question, I will email him the snippet of code that I'm working on and ask for advice. Typically, he'll quickly reply with his own snippet, or he suggests coming in for an hour to go over what changes he would make (presumably to get paid for helping me, which he is absolutely within his right to do).

I'll preface this by saying that I have no traditional training in programming aside from a handful of introductory courses and what I've learned on my own time. My problem is, almost 100% of the time when I send him an email with the portion of code I'm working on to ask for advice, his reply will be something along the lines of "You could be doing this much more efficiently". He then sends me a completely re-written version of that code without any comments on what I could have done differently, or what to watch out for next time. I get the impression from our interactions when he comes into our office that he is interested in seeing me become more proficient with the database software, and he is always willing to answer any questions I have. I do realize that he has no obligation to teach me anything, being that it's not really what he's paid to do. But, due to the obscure nature of the database software, I also find myself in the difficult situation of him being the only person I can look to for help, aside from some lack-luster documentation and the long-dead forums.

My question is this: Is there a way to ask him to be more in-depth in our emails about what I'm doing wrong without seeming like I'm trying to heap work onto him? I'm not worried about him thinking I'm trying to get him out of a job, so much as I'm concerned that I might be over-stepping my boundaries with someone who is not paid/obligated to teach me. He is compensated fairly well when he does come in, but I don't believe he's being paid for our emailing back & forth.

  • Can I ask what type of database? There wouldn't be a problem if you could ask other people. If the dB is something like Pervasive that only one person in the world knows then convert it to something better. If its a dB like MS Access or something, do some more training. Training yourself up on the latest technologies and sharing your new training experience with the old timer may be just the thing needed to change the dynamic of your relationship... – Jeremy Thompson Dec 5 '17 at 0:19
  • 1
    Closer to the former. The database in question is Sesame 2 from Lantica. It came out in 2003 and can be pretty difficult to find information on these days. The conversation about changing databases has definitely come up before. Management has been reticent, as it'll probably cost a decent chunk of money (but probably less than we're spending working with our current dB). A change will likely happen in the next year or two which I will be more than willing to take a class for in preparation, but I still need to wrestle with Sesame in the mean time. – A. W. Dec 5 '17 at 0:26
  • 1
    Perhaps some of your Sesame 2 questions can be handled via stackoverflow. It is often surprisingly helpful to construct questions that avoid disclosing company information - sometimes by doing so you find answers yourself. There is also codereview which might be helpful with algorithms and efficiency. – RedGrittyBrick Dec 5 '17 at 12:09
  • Sesame has its own tag on S.O Only about 300 questions though, so not mainstream, but certainly still worth trying – Mawg May 18 '18 at 14:36

Back at a previous job, I worked with a guy who always made an effort to say "thank you" to anything I did for him. I don't generally expect to be thanked, but if someone expresses appreciation to me, it makes me want to do more the next time. If it's something he's not getting paid for, that would be really important to show gratitude. Additionally, learning what he's telling you (ie changing what you do based on his feedback, incorporating what he says, asking questions) may be motivational to him.

I'd suggest communicating directly with this person. Acknowledge that he's not obligated to help you and that you appreciate what he's done. Then I'd advise him what you want - do you want to learn how to do this when he leaves? Do you want to learn programming? Is this just fun until you find something more? Whatever it is, I'd explain what you're looking for and ask how willing he is to help. Then, accept the answer. Don't argue or try to change his mind; accept what he is willing to do and learn from that.

Generally knowledgeable folks are happy to share that with people who want to learn and ask good questions. I think that if you treat him like he's doing you a favor, he'll be more willing to help. To do that, I'd suggest asking questions for clarification. "I see you want me to be more efficient in my code. What did you mean? Did you mean I should...." As long as you're not badgering him or asking him to do your job for you, he should be willing.

Also, I'd suggest clarifying this with your boss and see if he should be paid somehow for teaching you this.

  • especially the last Point: Ask your Boss if he is willing to pay for half a day or something of Toms time to have him show you the DB a bit more in depth and generally teach you a little. (If Tom is willing) – RealCheeseLord Dec 5 '17 at 8:36

Asking Tom for an explanation

You're already handling the day-to-day well. You and Tom seem to have a good rapport, and he's happy to help. I don't see any conflict here, currently.


It's mostly a matter of phrasing. Instead of asking Tom to elaborate; point out your problem and ask Tom if he has any input. I would try to remain vague about what input to expect. That way, you give Tom the option of taking the easy way out (referring you to a good source of documentation), but also leave it open for Tom to write his own explanation.

A quick suggestion:

(1) From your earlier emails, I gather that my approach isn't the most efficient. I've been trying to expand my understanding of [tool], but the existing documentation is either sparse or nowhere to be found, and the forums don't see much activity lately.

(2) Are there any resources that you know of which help with explaining how to use [tool] efficiently? Or did you learn through experience? If so, do you have any tips on how I can get more experience with [tool], e.g. example exercises for common problems?

(3) If you have the time, could you maybe show me some examples of better approaches, so I can see the difference to my usual approach?

Notice the three paragraphs. They each boil down to a specific statement:

  1. I'm having trouble with learning more about [tool].
  2. Can you offer any tips/help with learning about [tool]?
  3. (optional) Here's a suggestion that I think would help me.

This leaves Tom with a range of responses to choose from:

  • If Tom is willing to put in time and effort, he could draft you some documentation from his knowledge.
  • If Tom knows anything relevant, he can quickly point it out (tips, references), in a way that his answer does not commit him to having to train you.
  • If Tom knows nothing relevant, then he has the option of sympathizing with your issues in finding good documentation. This option allows him to essentially say "no" but still create a good rapport with you (instead of him coming across as unwilling to help).

But I think the interpersonal issue here is caused by a workplace issue. I'll add that in the next chapter. If it's not appropriate for your scenario, let me know and I'll remove it if you want.

Where is the management in all this?

You mentioned that Tom is willing to offload the work onto you; but you've been eerily silent about the company's involvement in the process.
Are they involved in any capacity? I would assume that you're their employee, and Tom is not (since he's hourly). That means that Tom is officially an external purchase, and I doubt you have the autonomy to make company purchases.

This is an inference, but I get the feeling that the company has tasked you with a job you're not well-trained for, and is leaving you to your own devices.

Keeping a good rapport with Tom, while beneficial to your job, is only a patch to the existing wound. It refers back to the old adage:


You're asking Tom for fish. The company should be buying you a fishing rod and sending you to a fishing course.

Especially with Tom's impending retirement, will it become more important for you to become self-sufficient at using [tool]. What's going to happen when he does retire?

Anecdotally, this is the current situation I'm in. An employee who singlehandedly ran a software development department has retired, his work is passed on to someone else after they retired. The new person is nowhere near self-sufficient, and the client contracts supported by this software are a sizable chunk of the company's income.
Since the work needs to be done; the company has had to resort to hiring me as an external consultant to rework the old guy's work, and I'm costing them three times more than an internal employee to do so. It's not my job to tell them to not hire me, but objectively speaking, my presence is a financial punishment for the company's failure to plan ahead.

If the company does not involve itself in your situation now, they're likely going to end up in the same situation as my current company. Their infrastructure is relying on a tool that no one really knows how to manage (no offense intended to you :)), and if Tom is out of the picture, who's going to fix things?
This isn't even retirement related. What if Tom gets hit by a bus tomorrow?

If you come across a problem that's insurmountable, and Tom isn't there to help you, then what? THe only other option they have is replacing the tool, and that's not only going to cost them a lot, but the effects of the change will be felt in every part of the company that relies on [tool].

I think you need to take this to the company. Don't complain about a current problem, but do pull attention towards the future viability of maintaining [tool].

There are ways to solve this, which will be cheaper now, compared to when Tom is no longer there:

  • If training courses exist for [tool], suggest that the company sends you on these courses.
  • If Tom is still available for work, they could e.g. hire him to train you. Note that this is not the same as hiring Tom to work with you. They should dedicated time to lessons that are not hinging on active current problems with [tool].
  • If no training is possible, they can allot some time for you to set up a sandbox environment so you can get some hands on experience. If you're an autodidact; that is.

But I do think it's essential that you approach the company. They're supposed to manage you; so it's their job to steer clear of future problems. You can only warn them of the future problems, you can't solve the problems if the root cause of the issue is that you're not equipped to solve the problems.

Failing to approach the company and warn them about this, can be a source of great interpersonal conflict in the future (between you and your boss), and can affect your employment and career as well.

The step-by-step approach is the same as when you asked Tom for help:

  1. Outline the future problems.
  2. Ask the company for their input.
  3. Offer any suggestions that you can think of.

For example:

(1) I've been working with [tool] for some time now. I find myself relying on Tom often, because I lack the needed documentation to be self-sufficient here. Sadly, there is not much documentation (nor support) to be found in the public domain. Tom has been helping me so far, but he is going to retire in the near future; and I currently do not feel sufficiently equipped to deal with the problems that arise with [tool] if I can't rely on Tom's guidance from time to time.
If we address this issue when Tom has already retired, I worry about coming across insurmountable problems. As our infrastructure relies on [tool], I feel it's imperative that we ensure its operability.

(2) Is there any internal documentation that I'm unaware of? Is there anyone else in the company experienced with [tool]?

(3) I'd like to get ahead of this problem, as postponing a solution will likely only compound the problem down the line. Would it be possible for us to hire Tom, not so much to have him solve the current problems, but rather to train me on effectively using [tool]?
[If applicable to you] Would it be possible to set up a sandbox environment for me, so I can tinker with [tool] and learn about its workings? It will require me to dedicate some time to it, but I could do this ad hoc, i.e. when there are no pressing issues that need to be resolved.



So you are working on a database without any training in how to do so?! You have to rely on your autodidactic skills and the help of Tom.

My first step would be to communicate very very clearly to Tom your skills and situation. Maybe you can ask him for books, online tutorials, online courses or even better a personal workshop with him.

If he gets paid to help you, he will get paid to do a workshop, where he can explain the most common programming paradigms, coding conventions, etc. You can in return prepare specific questions to ask him afterwards.

Second step might be to communicate this also very clearly to your boss. I guess he knew about your expertise in this field when he hired you, but maybe you still need to remind him, that everything might take a little longer and you might need a little help from Tom. And make sure your boss is on your side on this.

On the other hand, if this database is so NOT up-to-date, he might consider hiring an actual database programmer to get him a newer, more efficient database. This could - in the long run - save money and workload. A well-designed, fast and organized database keeps all of you happy, trust me. If the time and place is right, make this suggestion to your boss ;-)

Your Answer

