views:

661

answers:

10

I'm currently hired on a temporary basis at a company to help out with some low-level integration with certain IM services. Their current programmers are all C# programmers relying heavily on that framework, without a lot of knowledge about low-level concepts like the Win32 API, pointers, assembly, and the likes. They hired me because I've already done a few freeware projects that involved the kind of integration they need.

The current problem is that I'd never planned on working here for a long time (just a break from my current CS study), but they have a lot of projects they want me involved in. Too much projects for me to cope with in the month I have left on my contract.

My boss is quite a reasonable person and is trying to help me out by attempting to do some of those projects, but in the end this just backfires as he's constantly asking me for help, I end up holding his hand through the entire project, and it ends up costing me even more time. Paired with other problems like a language barrier (their native language is not english), this is a real annoyance, and I'm unsure how to cope with it.

I asked earlier "How to deal with someone else completely ruining a project?" on this same subject, but after some of the answers there (and a walk outside to calm down) made me realise that this is neither the problem nor a real solution, and the best way to go would be to just tell them. However...

How do I subtly tell them, and my boss in particular, that their help is appreciated but only slowing me down, and that "just teaching" them all of this is not an option[1] ? I've been trying to put my feelings in an e-mail towards them, but everytime it ends up being much too complex in language (e.g. they might not even understand what I'm saying), or way too blunt.

[1] Teaching them would involve explaining most of the low-level workings of a computer, and have them practice a LOT of reversing. Given that currently they have no clue what a pointer is, have never done their own memory management, and keep refering to my code as "Black Magic", I'm really not up for the task of educating them.

EDIT: Don't get me wrong, I love to teach people things, but given that I'm currently swamped with work, I'm really not up for taking someone completely from basic C# knowledge to low-level C, Assembler, and Reverse engineering skills. That stuff took me several years to learn for myself, and several more to practice enough to become good enough at.

A: 

You could try to scare them off by making it seem even more dangerous (or difficult) than it already is. Another approach might be to suggest they read some specific books (there are a ton of relevant questions to that elsewhere on this site)

tomjen
+3  A: 

Aren't you charging by the hour? As long as this manager verbally acknowledges his questions are taking away from your dev time (therefore pushing the deadline) then this is a non-issue. It only equates in more money for you, I call that a win.

You work in the real world, you'll have to deal with subpar managers, poor devs and bad designs all the time, it's only a question of how many of these items you need to deal with at the same time.

And to be honest, your standard .NET devs writing CRUD style apps don't need to know what pointers are, this is the point of newer languages, to take more of the inner workings away from standard developement. Perhaps if they were coding something much more system intensive or in C++.NET I would agree with you about pointers, but I highly doubt these people need to know and your comments reek of "back when I was a kid we had to code on monochrome in assembly and manually assign every byte". Also keep in mind most CompSci education (assuming that's your major) still focuses on low level education which rarely applies to the real world. You come off with a hint of arrogance and many good devs in the field never took CompSci.

Finally, you should enjoy the fact you are qualified enough that your code is like magic to them, this means you should be making a decent rate/salary and will lead to a very promising referral (hopefully written on LinkedIn.com before you leave by your boss & coworkers).

PS: Absolutely DO NOT send off an email to your coworkers or boss about your feelings of their understanding of the technology, you will only look like a jerk no matter which way you go about it. If you write too much, they won't read it, if you write too little they can easily take it as being rude. You need to realize some things are left unsaid and the very fact they still need you and call your work magic is all the acknowledgment you need to know you are a valuable asset to them. Rubbing their nose in it makes you a jerk, even if you are correct. I think what you lack in social skills & experience, you have in technical skill.

TravisO
Tthe apps they're trying to integrate with either have no API or one lacking in functionality. The only way to get what they want is through low-level interaction and reverse engineering, and for that, you *will* need to know how it all works on a low-level. There are simply no .NET APIs for that.
Frans-Willem
Perhaps you need to write a wrapper to their code to function as an API then write your work to use this wrapper you build. Real life is messy, from my experience 99% of the existing projects I walk into are severely mis-designed.
TravisO
This isn't really helping. I'm asking for help here because I don't want to come off as arrogant. All I want is to make it clear to them that trying to help me out (and ask me questions every hour about, to me, the most basic things) is not helping me at all, but still remain friendly and civil.
Frans-Willem
Re: wrapper: One of the projects is already designed like that. this one had a wrapper, but it needs updating. My boss is trying to help me out by trying to fix it himself, but in the process is keeping me from my other work by constantly asking everything.
Frans-Willem
+14  A: 

Ask your boss what is his priority - to educate the team or to get your work done. Let him know clearly what is your time availability and make him determine what percentage of that time you should be doing what.

Otávio Décio
To amplify this point: Frans-Willem, it is not *your* responsibility to worry about the best use of resources. Let your manager do that. If you start taking on his worries, then you're starting down a road to a world of agony. Everyone on the team should focus on doing *their* job well - and that includes your manager.Oh, and don't plan on going back to work there. Find somewhere where you will be working with equals and learning, not teaching.
Tom Anderson
+1  A: 

Pretty much all you can do in these situations is let them decide which projects take priority.

Clearly define how much time you have available and how much time you think each project needs from you to finish.

List training one of thier top programmers on the basic concepts of the reverse engineering, pointers etc. as a project and allocate plenty of time for it.

Then let them prioritize what they want you to work on in order, up to the end of your available time.

If you finish something early, you might get more done on the lower priority tasks but if not they won't get finished and you'll have to pass them off to the other programmers to deal with as best they can.

It might very well be more worth it to them to get one "internal" person trained on the basics of the "black magic" coding than to finish any of the projects by the end of the month.

Ron

Ron Savage
+8  A: 

Well, the problem with being good at a task is the burden of becoming the mentor -- If you are learning this early in your career it may be a blessing in disguise -- the real fact is that this is more often the "norm" in today's business environment.

A few pointers;

  • Become a little less "visible" -- eek out some private time

  • Offer to reschedule your time with them; tell them you are currently engaged in a task and as soon as you complete this phase you will get back with them ... Then, don't forget -- follow up as promised.

  • Recommend alternate sources for base level information -- if you find yourself delving into deep subject matter, recommend a book, seminar or other resource to aid in the information gathering -- take control of how you present information; giving a resource is often better than trying to teach ... unless, of course, your studying to become a teacher -- :)

It's all about setting (and meeting) expectations ...

You've made yourself available (a good thing) -- now, set aside time for dealing with the interruptions --

It's time management 101 and something you will face the rest of your career -- well, hopefully as it means you're gainfully employed ...

hope it helps ...

Borzio
Thumbs up from me, your answer is the answer the OP is looking for, I kind of went off subject in my lengthy answer.
TravisO
Excellent answer Borzio. Time management and people skills is one things that programmers *tend* to be poor at, yet this problem is clearly in the soft skill domain.
Godeke
A: 

I agree with ocdecio -- at some point when you do not feel your defensive haunches come up, for instance after you have helped your boss to do something and he's understood what you've told him, pause for a moment and then say, "You know, I'm happy to help out in whatever way I can, but it seems to me that although I was originally hired to [do a certain thing (i.e., tackle integration services, programming, etc)], I'm spending about half my time doing that and half my time training people as they come to me with questions. I'm just concerned because I want to make sure that in the time I have left, I can help you out in the best way possible. What should the priority or priorities be?"

It sounds like you've got a classic case of non-profit hives -- you work somewhere for a short amount of time, or part-time on a low-hour schedule, and everyone's so happy with your productivity that they (a) become used to having you around, and forget that you will not be around forever, and (b) think you can work miracles.

You shouldn't be pissed that they're asking you for help. If the job description changes, it changes, you're being paid to help them how they ask for it.

If what's really bugging you is that you feel like they want more hours out of you than you're willing to give them, all that's necessary is a gentle reminder that you'll only be there X longer, or you can only give them X hours per week, wrapped in the sentiment of "What's the best way I can help you?"

Also-- Some bosses have styles that involve jokingly asking for an impossible amount of work to be done, without expecting ALL of it to be done. They do it as a method of motivation by pressure of expectation. These types of bosses don't actually expect anyone to be capable of doing all that they ask, they're just happy with whatever amount you've done.

aesdanae
+1  A: 

Success isn't always about creating new code, or even getting existing code to work. Consider what happens after you create your black magic and then leave...

It's far better for most teams to be stable in the long-run then it is for them to get work done in the short run. The most important thing you can add to a project is stability, not code.

If in doubt, then ask nicely (but for a short term contract, there's probably little point).

Paul.

Paul W Homer
A: 

Other posts have correctly emphasised that an e-mail will be unhelpful. I also heartily agree with the "this is a positive sign of your respect" within your organisation.

Having too much to do and too little time to do it is a cliche for a reason - everyone operates like this. (It forces you to prioritise - if have too much time, you're probably going to do some very marginal activities).

The tactic I use at my workplace is to draw up a fairly extensive list of activities, with indicative times (be generous - it's amazing how rarely you overestimate) and then go to your boss and ask his direction / guidance as to what are the activities to begin now.

Fabian
+1  A: 

I end up holding his hand through the entire project, and it ends up costing me even more time.

Point of clarification: it isn't your time, it is the company's time. You are selling them your "time" (and effort) in exchange for cash.

If they want to bounce you from project to hand-holding and back to project, then that is their prerogative. As a professional, you can (gently) point out that you might not be able to finish your primary project if you keep getting pulled off to do other things. If they are okay with pulling you off, then that's their right and theirs to live with the consequences.

they have a lot of projects they want me involved in. Too much projects for me to cope with in the month I have left on my contract.

You have a responsibility to let them know what you can reasonably get done in the time you have left. You might also inform them that you are only available until the end of your contract, if this hasn't been made clear already.

In the end, this is business, not friendship. I would advise that you stick to the terms of your contract, keep your karma intact (i.e., tidy up all the loose ends that you can), and avoid doing ANY WORK for free (analysis and estimating are okay, as long as you have time for them), lest you fail to learn from my past mistakes and end up as a galley slave shackled to the oar of guilt.

BryanH
+2  A: 

It's your boss's job to set priorities. Competing for your time are

  • All the projects they want you to do

  • Helping individuals (including your boss) with their own projects

  • Teaching some of your skills to other members of the team

The first step is to know which of these things you are willing to do. (It sounds like you are willing to do all of them.) The next step is to ask your boss to set priorities. You may have to explain that "if everything is important, nothing is important", "there can only be one top priority", and other unpleasant facts of life.

It is quite possible that your boss is unable or unwilling to set priorities. In this case, you will have to set the priorities, then go to your boss and say "these are what I think are the priorities; do you approve". If this happens, I urge you to set the priorities in your employer's best interest, as opposed to what you think is easiest to get done or will lead to the fewest interpersonal misunderstandings. Make it explicit what you think your employer's interests are and why those interests lead to the priorities you propose.

It's a pity you've got a gig where you may have to step in and do your boss's job. On the bright side, if you're leaving in a month, they're unlikely to make you a manager :-)

Norman Ramsey