I imagine that anyone who has worked for a small company as a developer has probably encountered this before.

I applied for software developer position, I interviewed for a software developer position, and my "title" is Software Developer but after a few months here it seems that the company really wanted a do-it-all-IT-Guy. Anytime someone has a problem, it seems, if they saw a computer somewhere in their peripheral vision when it happened - I'm the person to fix it. So far I've had to duties within the realm of:

  • Software developer (The job I want to be doing)
  • Project Manager (I suck at providing time estimates and writing specs)
  • DBA (I can see this being a logical extension of writing the software - so I can deal with it)
  • Network admin (I have been asked to create/modify AD user accounts/priveleges amongst other things)
  • Hardware Technician (should I really be installing office for whatever user needs it or replacing broken mice?)

It's not that I'm incapable, fortunately I've tasted plenty of computer-related pies in my day, but my education, training and the work I enjoy doing is developing software.

What do I do?

edit> my manager is the owner.

+3  A: 

It is obvious from the question that you are unhappy about the situation. That being said, you need to change the situation. The two choices I see you having here are to ask whomever you are accountable to to modify your responsibilities. If that fails, and you truly find the situation intolerable, then you should look for a different job that is tailored more to your needs.

+4  A: 

Talk with your manager/boss and express that you are interested in software development, not IT work. While you have the skills to fill the role, it isn't something you want to do. You will either be doing less IT work, or looking for a better job.

If your job isn't satisfying you, talk to those in charge or get a new job.

+9  A: 

You need to communicate the cold, hard, unemotional mathematics of how much time you spend on each concrete task and what it will cost in deadlines being pushed back, etc. Avoid whining and being frustrated in your communication.

You should be ok with doing all those tasks, so long as your management understands the concrete facts of how much time and distraction each one consumes. Communicate that ramp-up time and context-switching are not free.

If you have a problem being jack-of-all-trades, then maybe this job/environment isn't for you.

Doug T.
+2  A: 

I don't see that you'll be able to get away from any of the top three (especially the top one which you want to do). If the company is small they will be relying on your ability to plan and predict your work also.

The last two seem to be clearly out of line with your job description. If the company is growing quickly you may just want to do the tasks until they hire someone more directly responsible. Otherwise, you could offer friendly, helpful advice to the requestor on where they could go to get more information and do it themselves. Or just prioritize that stuff way down on your list.

Most of this depends on what you feel you can "get away" with given your managers and the company culture. In this economy and industry, you should probably just play it safe...

Jeff Kotula
+49  A: 

Here is what you do. Put up a whiteboard next to your desk with your todo list on it. You only work on the topmost item. If they come along and try to cram something else onto your plate, you tell them to go to the whiteboard and add it somewhere in the list depending on how important it is, and you do it when you get to it.

From experience, they will often realise that what you're working on is fairly important, and either put the new item somewhere further down the list, or go away for a while.

EDIT: If they email their tasks to you, email them back and invite them over to place it on the whiteboard.

Fritz H
Or they will email their problems.
In all seriousness evena virtual whiteboard on the intranet works for this. If people see your queue and you insist on first-in-first-out to management it'll soon be clear.
This is a great idea. I wish I had thought of this at my last job.
Austin Salonen
It works a treat. If they email it to you, tell them to come along and decide where they want to put it on the board. :-)
Fritz H
ooh! I really like this!
@Fritz - I do this too. Avoids an argument if someone wants to bump down an item on the list then they have to get permission from the person who is being bumped -- instead of arguing with you. Also answers the inevitable question: "What have you been doing this week? Why isn't 'foo' done?"
Additionally, helps with your time management -- if it isn't on the list don't do it!
A web-based virtual "whiteboard" would work well, too. You could make it a bigger app, and have it e-mail you when people update it (and e-mail everyone who just got pre-empted), and you can use it to track when you finish tasks. Everyone wins!
Keith B
Whiteboard is a great idea. Big key is they have to know if they want you to do something new, a previous request will get delayed.
Jeff O
Also keep in mind that Management may not be too happy to use a virtual whiteboard - from experience, they just tend to go around electronic management systems, or they don't let the system deter them and load you up anyway. For some reason a physical whiteboard and marker is daunting to them. :)
Fritz H
@Fritz - You make a good point there, but at least it would affect everyone else, and I could manually put up the things that the boss wants on the board even if he won't.
I love it -- this is going into my mental 'swipe file' of great work practices
Jens Roland
The problem is, if all the crap work really is the most important stuff to the company, that still doesn't make it enjoyable. The guy is a programmer and should be treated like one.
Ok, I know that this was a while back, but I'm basically reporting on how this worked out. I did something very similar, but I used FogBugz instead of the whiteboard. I created a 'work request' project in fogbugz. And Each time a work request comes in I have my manager prioritize it against the highest priority task in the other development projects in fogbugz. It's not perfect, but it works quite well and has helped with tracking the time I put into different types of work.
+3  A: 

You put all those things on your resume is what you do. Then you start shopping it around. If your current employer has any appreciation of what those skills are worth, which I highly doubt, he'll do whatever it takes to keep you. But don't let on that you're looking elsewhere until you have another offer in hand. Never bluff. This ain't a card game.


Yeah I've been there and done that and it was at a small company. I had to not only write and maintain applications but I had to setup networks, run wiring, install software and hardware, help people print documents, etc. It was annoying and yeah I didn't get paid the combined salary that the 5 or 6 people a large corporation would have paid to do those things. On the flip side, I was in charge of everything. Need a table in a database to store something? I could create the database, create the table and away I go in a few minutes. Where I am now, it can take weeks of meetings, database modeling, and documentation just to add a simple table.

If you feel you are paid enough for what you do then you might want to stick it out for a while just for the exposure to other aspects of IT that you could get. I used to love writing stored procedures and coming up with great SQL queries. I haven't been allowed to do that since I started working for large corporations 10 years ago. DBA's write stored procedures and SQL queries and alas I am not a DBA.

+2  A: 

I would try to use the situation as a learning experience if you can, although for things like installing Office I don't know how much you can really learn there. I was originally a front-end developer though and learned SQL because I was the one willing to learn it of the developers that we had at a small company. Now that's how I largely make my living.

As for the time estimates and such... I'd get used to it and get good at it if you can. That's always going to be a part of being a good software developer.

Ultimately, if you're stuck doing a lot of things that you don't want to be doing, you always have the option of looking elsewhere for work. That's a judgment decision on your part though, based on your own personal and financial situation.

Tom H.

It reminds me of a day in which the 4 in a chain managers above me came each one with a different and conflicting request. For me it meant I'm free to do what ever I like most!

+2  A: 

I've been that guy -- as a company founder. This being a small company, it was probably created by people whose entire mindset had to be doing whatever was necessary at any given time, just in order for the company to survive. This leads naturally to expecting that mindset from employees. But being natural doesn't make it reasonable.

IMAO, If they want a stakeholder level of personal investment from you, then they should be making you a stakeholder -- stock options, profit-sharing, what-have-you. If they are doing that, then I'd say you should be less concerned about job description and more concerned about growing the company you have a stake in. If they're treating you as a disposable asset but demanding stakeholder behavior, though... well, let's call that an impedance mismatch. In a down job market, that can likely get suckers who will do that for them, but that doesn't mean you should be that sucker if you can find other options.

+1  A: 

I've worked there before.

The owner/boss basically wanted me to work in a co-founder C-level capacity, but get paid on the lower end of the scale with no equity.

Not to mention that there were a lot of grandiose statements made on the company website and literature that turned out to be false and/or very stretched.

Never take responsibility without also acquiring the appropriate level of authority to go with it.

Screw the authority, get the equity.
+2  A: 

I'd likely suggest talking to your manager to see if you are doing what is expected. Sometimes being helpful can cause issues if you get into doing things that others should be doing as that is their job and not yours, e.g. is there a systems administrator that should be handling active directory requests. I have had it where some of the top brass get wind of this and call an "all hands" meeting to insure that everyone knows not to ask for things from the developers. It went over OK I think as it may not have been clear to folks what we were getting paid compared to others that could also do the troubleshooting/technical support for someone's PC that had problems with Office or that needed a new network card or something.

JB King
well, there IS a sysadmin that is supposed to do that, but they've contracted out everything before me (both to a software developer whose projects I've taken over and to a sysadmin whom they don't want to continue paying for "little things")
I don't suppose they realize that if you spend a few hours on something basic and administrative just how much $ it cost the company to have you do that, eh? Would you rather take my salary at $x/hour or take the contracted person at $y/hour to do it?
JB King
+3  A: 

The beginning of the end for me at one company was when I was told I needed to learn Quickbooks because "it runs on a computer" (however it wasn't the first time he said something where the first response should've been "do you honestly believe what you just said?"). I explained that logically meant I had to do every job because everything we did "ran on a computer."

As for advice...
...if they're serious about building software explain what that takes.
...make sure they pay for your cell phone and home internet if you're required to be on call.
...use this job as a resume line item. I used the Joel Test for mine -- took Company X from a 2 of 12 to a 7 of 12.
...realize that this role means your company really wants on-site tech support, not to build great software, and that they have no idea what "software developer" actually means (they probably refer to you as a programmer, don't they?).

I'm pretty sure you work in a place much like I used to. A job like that is a 3-year gig max. Stabilize the product(s) as much as you can, provide users the power to do things on their own, and get the fudge out!


Austin Salonen
>they probably refer to you as a programmer, don't they?Indeed they do. And no, I don't get the impression that they want to develop great software - the want SOMETHING and they want it now. Which I can respect, they're busines people - so I just increase my time estimates by about 40%
The +40% will only last so long. They'll catch on soon enough. If you're by yourself, the whiteboard idea is the way to go.
Austin Salonen
+1  A: 

Seems pretty obvious to me. It is unfortunate that they misrepresented the job when they recruited you, but they need what they need. If you aren't happy with the responsibilities of the actual job then both you and the employer would probably be better off if you parted ways.

I'd suggest having an honest discussion with your supervisor about your career goals and ask for then to hire a tech for the non-programming tasks. If they don't go for it inform them politely that you are giving notice and offer to stick around long enough for them to recruit a replacement in exchange for a good job reference.

+1  A: 

You need a workflow system. Everything you do should be in your workflow. If somebody wants you to do something, they need to add a task to your workflow. How you manage the workflow is partly up to personal preference. One company where I used to work, we wrote our own system with 10 priority levels. Software bugs were automatically added as top priority by our error-handling routines. Anything we were actively working on was second priority. Things to work on next were third priority, etc. We had statuses and percentage completion per task to see at a glance how things were going, and a comment system to record more detailed information about each task. We were usually working on the top three or four priority tasks simultaneously (often waiting for people to get back to us about higher priority items).

Once you have your workflow under control, then you need to get your time under control. Try to schedule your day, only immediately responding to urgent requests. Schedule one or two timeslots per day for IT tasks and try to push IT requests into those timeslots if they can wait a few hours.


I've seen such problems as well. At one time, the problem was solved so that the poor guy's superior started acting as a proxy. Anyone that wanted even to talk to the work-overloaded guy had to go via his superior. His superior would then often just say "no can do" or "maybe next week". Of course, that only works if your superior is willing to cooperate.

+4  A: 

I spend years in that type of environment. I was the CTO, architect, lead programmer, lead tester, system administrator, network administrator, pre-sales support guy, post-sales guy and occasionally I had to run out and buy the coffee.

Now, I've returned to the rat race, where they keep telling me "everything" is impossible, and I need to wait. Man do I miss being able to do everything!

Advice: Enjoy it while you can.

Also: if there is too much of one thing, document it, and hire someone new to fill it in. (Gradually you'll get rid of the crappy stuff and keep the good stuff).


Paul W Homer
+1  A: 

Is any of this logged or tracked via a bug system? Having that data can be handy when things are overwhelming or during review time.

In either case try to program / automate your way out of it. Don't like creating domain account? Create a web form that the new user's manager can fill out to create the new account. This info is probably getting to you via email anyways. Don't want them to have the final say on the actual creation? Make the last step an approval from you.

Don't have time to make it all work? Do a piece at a time. Start with a database table you can use to keep track of requests. Put a web page on it. Add the Active Directory stuff later after you get some help from SO.

This pattern can be applied to a lot of nagging ad hoc requests that get dump on us.

For the physical stuff start limiting the extent of your involvement. Hand out a new mouse but don't connect it. Next time you have to clear a paper jam don't run to the rescue. Show the user what you did so they can try it out if it your response time is not fast enough. Stuff like that people don't care who does it as long as it happens quickly. You can also look to recruit other tech savvy office users that are more than happy to help out in exchange for elevated access or random tech talk. Scratch that last one some time the cure is worse...

I've setup fogbugz here, and I'm slowly getting people to use it, but that's only for the bugs/features in the software projects that I'm working on (every 10 mins: "Oh! SnOrfus you should really add x to the software - do that next") and it's working out well so far.
With FogBugz your next project should be integrating bug reporting into you projects. It's quite an undertaking but the reward far outweighs the labor.
Austin Salonen
Setup a "office issues" project. Answer that queue before responding to random emails. When project deadlines are not met you can show this is why and that you would rather be working on the real projects to begin with. I know it's uphill battle. Good luck!

Much has already been well answered, but a couple of points/questions from one who has been there and fought the good fight (as they say).

First - I agree that the first 3 tasks are really part of the job of software developer in a small company. That's just life. However, the final two tasks are not (at least not in my opinion).

SO - In your original post you describe these last two duties as being given to you.

Given by who?

Ultimately, someone signs your paycheck. They may delegate your management to another, but you should have one manager. Is that person getting you to do all this extra stuff, or are you just getting "buttonholed" in the hallway and dragged off to do the task?

If your manager is giving you all this work, then they really cannot be much of a design house. No-one TRULY involved in program/product design asks this of their only programmer. IN that case, polish the resume - fast.

If it's not the manager, then see if you can route all requests through the manager (i.e. "I'll see what I can do, but I have to clear it with my manager first" or something similar). Your manager needs to know that you are being "distracted" by all this stuff, and (hopefully) intervene. If so, problem solved. If not, again with that resume.



+2  A: 

Cumulation of my comments on other people's answers:

  • Manage-up : make sure you are working on the items that your manager think is the most important.
  • Make sure that every item on the list has high value to the company.
  • Spread the knowledge. Explain everything you are doing (document) so the next time the same request is made you can just forward the "how-to"
  • Make sure you are always working off a publicly visible list. No one gets to go before someone else without their permission.
  • Be flexible and cheerful - not disagreeable - just be adamant that people making requests respect the others that were "first" in line.
  • Document, document -- so if something isn't don't you can show that you were doing what was asked of you. Send an email every time something has changed on list. This way no one can claim to be surprised. (CYA)
  • Be willing to take the shit jobs and be very willing to point this out come review time.

Remember every job has shit attached to it. As the CEO of my own company, I can tell you I get all the shit.


Your company doesn't have the mindset to push tasks down to the lowest denominator ($$$). Find the best candidate for a power user and convince them of the benefits of their learning the tasks you don't like (Don't phrase it that way.). Offer to mentor them.

If they bother to ask, show your boss how much money he/she saved by having this lesser paid person do this type of work, but you'll also need to show an improvement in your production.

**I love the whiteboard Idea! On the email problem: set an auto responder during a few hours a day indicating you are programming and will respond when completed. They'll come by and you can tell them to put it on the white board.

Jeff O
+9  A: 

Realistically, this kind of "jack-of-all-trades" stuff is the rule for everybody in a small company. Chances are the CFO is also the HR person and the office manager and stocks the supply cabinet. If you aren't willing to put up with a fair amount of "off-topic" stuff you shouldn't be at a small company.

Put differently .. you will not have to tell the owner "I really don't think that is my job" very many times before he is telling you that nothing there is any longer your job.

Personally, I love working for a small (100 employee) company. No two days are the same, and there is great variety in the problems and challenges. A trade off is that sometimes I have to hump PCs or change toners.

The various "logical" approaches (workflow system, talk about costs, etc.) won't work in this kind of environment. The owner needs help getting a truck out the door so that he can bill and get paid. The fact that a fix to the order system is on the top of your list is irrelevant .. the truck has to get out. So, you help with the truck.

Today: do what you are asked, with a pleasant disposition and a smile on your face.

Long term: decide if this kind of environment is where you want to be, and act accordingly. If you decide to stay, work on shedding those duties you like least. Be aware that you will never be a pure coder .. you are "an IT guy". You may be able to teach them to change their own toners, but you will be administering SQL Server and resetting passwords forever.

+1  A: 

I've been in this exact situation, and how I dealt with it was to communicate what was going on. We had Friday progress meetings, and in these meetings I would print emails I received from everyone, including the owner, asking me to do things which directly delayed other responsibilities. Eventually they will get it. Or you will find a new job. I eventually moved on, not for those reasons, but primary because it was a family business. My advise, NEVER WORK FOR FAMILY!

On the other hand, look on the bright side. People who make decisions and control the money are asking you to do these things because they do not know how. They are trusting you to help them, and see the business though to success. You boss isn't a technical person, obviously, so it's YOUR responsibility, not theirs to communicate your job role and how many areas you're being pulled into. You can directly relate that back to the software development part of your job and show them how it's hurting their bottom line. Approach this situation with kid gloves and understand that you may receive back lash.

Business people listen to dollars and cents, not to lines of code, or job responsibilities.

You can run away, but what would you tell your next employer? More importantly, if you needed a reference, would you get one considering your attitude?

When it comes time for a performance review, you can use all these peripheral tasks as a bargaining chip to negotiate for a salary increase.

The digital whiteboard is a great idea. But you will never get away from grunt work in your situation. If you are truly unhappy, then quit, no is stopping you.

EDIT: As for the whiteboard, if you have Windows Server 2003 or above, you have SharePoint, use it, make other use it, and only do tasks which are posted there, people will learn.

+11  A: 

What do you do? Three suggestions for you:

  1. Suck it up and get on with your job(s). You are in a small company. Small company people wear many hats and do what needs to be done. If you're not down with that, then you will always find the small company mentality frustrating.
  2. Go work for a big company. There you will have the luxury of a well defined role in the company.
  3. Turn that frown upside down. Find the silver lining. Change the way you think about what you're being asked to do. Learn to delegate and/or outsource.

(3) is really important. When your boss asks you to do something, he cares about the outcome, not the fact that you actually did the work. For example, if you were asked to do some system/network admin task that would take three days, why not suggest that you find a contractor to do the job and that you will oversee the work? Keep doing this for a while and you'll probably be able to justify hiring a junior to do most of the grunt work, freeing you up to get on with the parts of your job that you enjoy.

For many years I was "Number 1" to the boss in a small company. It took a while, but I finally got him to communicate what problems exist rather than just telling me to do stuff. I was then free to get to be quite creative with my solutions too his problems. This improved our relationship and productivity immensely.

Daniel Paull
+3  A: 

Haha, That sounds exactly like one of my old jobs. Trust me in time to come you will find yourself with so much skill you wont know what to do with it. From my experience, I was also given tasks that were totally irrelevant to my graphic design job and since then I have worked as a web developer, project manager, and now run my own successful business as I now know what is what and can manage things properly. I think you are lucky to have these side tasks as you will be able to build confidence and take your career further with ease. from my experience you will become a key player in the company and when you decide to move on, will probably be asked to stay with a better salary.

Take this an opportunity!


The reality is the value you hold depends on problem solving. If you do not want to do other tasks, find a bigger company. The smaller and more entrepreneurial a company, the more different tasks you have to do. On the other side of the coin, learning the different tasks makes you more valuable.

When management starts pushing you into 60+ hour weeks on a regular basis, however, you need to fight back. The best way is to make a concrete accounting of your time and show what you are doing. If they do not get it, find another job, as this workplace will always be hell. I generally find they get it, at least partially.

the best way to move up in a company is hire someone who does your job better than you do. :-)

Gregory A Beamer
+2  A: 

Turn it into a simple question of cost efficiency

I find that whenever I've been in a situation where someone in management is making bad decisions about how I spend my time, I put on my (robe and wizard hat) bean counting goggles and lay it out for them as a bad-for-business equation. Any software developer worth his salt can learn how to do it:

Example: You are hired as a software developer, but are asked to do IT 'monkey work' like installing software, adding email accounts and plugging in projectors.

Solution: "Mr. manager. I am spending on average 12 hours a week doing simple IT handyman jobs like [blah blah], and I just want to remind you that you are paying me 80 dollars an hour (or whatever) to do that. The reason you pay me that amount is because I am a highly skilled, highly specialized software developer, and frankly, any high school kid could do those things - for 9 bucks an hour. If you let me (or HR) hire a bright kid part time to take care of all those things, my time could be freed up to focus on [high-priority IT project], which is really a better use of my time and the company's resources. What do you say?"

If the situation is more complicated or your boss is kind of a retard, bring a spreadsheet that makes it impossible to refuse, like this:

Current (monthly):

Time spent on:        Amount:      Actual cost:
Project Foo           152 hours    152 * $80 = $12.160
'Janitor tasks'       48 hours     48 * $80 = $3.840

Total cost: $16.000 / month
Monthly development hours: 152
Cost per development hour: $105.26

Proposed (monthly):

Time spent on:        Amount:      Actual cost:
Project Foo           200 hours    200 * $80 = $16.000
'Janitor tasks'       48 hours     48 * $9 = $432

Total cost: $16.432 / month
Monthly development hours: 200
Cost per development hour: $82.16

Relative development speed (productivity gain): (200-152)/152 = 132%

Managers are used to this kind of talk from business school, and most of them will immediately recognize and compliment your keen eye for cost-efficiency (just don't overdo it or they'll promote you to management), and let you have your way. Of course, some managers will just see it as an added expense that they can't afford inside the budget and totally miss the point. If your boss is in the latter category, I suggest you start looking for a new job right away.

Jens Roland
Where can you get 'IT janitor' for $9.00 per hour, I will pay him out of my own salary.
Hehe, I was just throwing numbers out there. In Denmark where I'm based, the minimum wage is around US$15/hour, so you couldn't legally hire someone to wait tables or bag groceries for less than that. In the U.S., I'm thinking you could probably hire a high school kid for less than that
Jens Roland
Also, why is this IT janitor only working 9 hours/month? I'm not sure a total monthly take-home pay of $81 is going to allow him the kind of lifestyle he might want! Even small IT companies want full-time support of this kind.
He's working 48 hours/month, which is perfectly normal for a part-time student position, for a total sum of $432/month. Hardly a fortune, but it beats flipping burgers (I hope), and looks better on a resume too
Jens Roland

Sorry , i know this will only make an attempt to make you feel better, but unfortunately, it is a choice between your salary and your ambition or goal. I was told this previously by an experienced coworker: "They are paying you for your time now why does it matter what you do in that time?" but I dont quite agree with that theory. Hope this helps. Regards, andy


If your company can only see you as an IT guy who deals with IT stuff then unless you're willing to stay there for the rest of your career, I'd bail now.


related questions