-1

I'm a software developer and currently working for a small scale-up company that builds hardware products and delivers them to customers with companion software.

I'm hired to expand the companion software since it's build mainly with .Net and I have a background in this. (I must add that I'm actually a freelancer but my assignment evolved in me working long term fulltime for this sole client so the way I'm working could be compared to an employee really.)

There is no analyst, product owner or anything that could provide any layer between me and the founder of the company...

He and one of his employees give me tasks to complete.

In the beginning these were clear programming tasks for the companion software but now they have transformed in all sorts of stuff...


example 1

I get asked to build software solutions for use cases that have not been described and are unsure that will work...

For example: The hardware they build is controlled manually but I'm asked to have it work automatically based on camera's. (no details given, I have to figure it all out)

I end up not only programming but also doing quite some research and actually working as an inventor of sorts..


example 2

I'm automating a big part of their marketing flow with their internal office software.


example 3

since I'm the only IT'er here.. any IT problem lands with me... you can't print.. I'm solving it...


example 4

I have to deliver support on problems they have with clients while I have barely any idea how their hardware product functions...


meetings are unstructured and there are never any items on the agenda... things get made up on the fly (really strange features that break standards) and I have to make sure they get done... Every single time, they manage to surprise me with the things they want in such a way that I don't know what to say...

Because of all this:

  • I can't finish things and am jumping around between whatever is needed at that time.

  • I cannot deliver the quality I'm used to because of the broad responsibilities.

  • I feel like I'm never prepared for a conversation with them and no longer have any new input because I have too much on my plate

Next to all the things above, I've been noticing things on the workfloor...

  • the founder recently started to put employees on their place when they start early at work causing one of them to quit but he still keeps doing the same... But he tells them I'm an exception because I'm self employed...

  • One of the employees was complaining about the founder... the founder overheard and I saw him closing in to spy on the conversation

  • People are obviously afraid of the founder.... apparantly he handles them harshly in private if they do not comply. one of their employees recently told me he was yelled at untill he cried.

  • last year one of his most prized employees quit and went on to work for the competition. The founder immediately took legal actions. Perhaps that's not very strange but The founder tends to become emotional whenever someone quits. Only last week he came to complain to me that his employees needed to be pet on their heads regularly after someone quit because of non flexible working hours.

  • ...

I can't help but to think what will happen if another software developer starts to work here and starts to complain about my work...

The combination of out of scope work and company drama makes me want to leave....

Is this a valid reason? If yes, how to handle this?

2
  • 3
    Yes, it's a valid reason. Trust your gut. In either case, you don't need to explain anything when you leave. Just keep your future client/employer secret (don't tell anyone or the founder will find out by bullying them). And carefully read your contract. You don't want to get sued as soon as you start at a new company. Jan 22, 2020 at 11:13
  • I worked for a company like this once. It was terrible, but it feels so good to give your notice knowing how much they rely on you.
    – prieber
    May 5, 2021 at 23:55

6 Answers 6

2

What you've described is every small company I've ever worked for. Sure they didn't all have all of those problems.

As I grew professionally, I learnt not to see problems and annoyances, but opportunities and was able to apply the maxim "if you touch something, make it better than it was".

Now I'm working with mainly legacy stuff, fixing tedious problems and your place sounds like a dream job.

There is no analyst, product owner or anything that could provide any layer between me and the founder of the company

So you have to wear many hats; that's fairly normal.

I get asked to build software solutions for use cases that have not been described and are unsure that will work

Again, very common. People don't know what they want and can't describe it until you deliver something...and then they know they don't want that.

I end up not only programming but also doing quite some research and actually working as an inventor of sorts..

Coool.

meetings are unstructured and there are never any items on the agenda... things get made up on the fly

OK so you can fix this. Don't attend meetings without an agenda. Make sure you tell them in advance. Take notes ("minutes") and email them afterwards, together with a list of action points. As its just you, keep it to a small number.

... But he tells them I'm an exception because I'm self employed... Well, you are.

...The founder tends to become emotional whenever someone quits

That's common.People become attached to their dream and cannot understand why their employees aren't (no investment/risk). Your founder is probably under an enormous amount of pressure and is likely aware of many of the issues you describe, but is unable to fix them. (Of course s/he may just be an ass hat, but I would give them the benefit of the doubt, as I only have your post to go on). The founder needs to hire professional management and stick to product vision / raising funds / overseeing the company etc, although I suspect any such hire will also have several hats. Again....think of the opportunity.

@Virolino's list is a really good summary of what you need to start doing.

Action Point: Go and have a look among the 1000+ articles written by Joel Spolsky ("The Founder" here). What you're looking for is a way to explain the issues to your founder and how to fix them. Don't just turn up with a bunch of observed problems. If you have no solution, say "still thinking about it". Present them as "costs", e.g. the cost of task switching (Here's a starter for you Human Task Switching Considered harmful)

Summary: I think you have a really great job, but like any it's not without problems. Roll up your sleeves and fix them. Get Management onboard with this. You can change your company, and in the years ahead you'll hopefully have a great life.

1

Some words:

  • estimating;
  • planning;
  • prioritizing;
  • tracking;
  • reporting;

It is quite obvious that your manager does not understand very well the stress he lays on you. So you can handle it by doing it yourself.

Maintain a clear list of things you have to do. For each item, make a break-down structure (WBS) if it more complex. For each item and each element in the WBS estimate the effort and other resources needed (including cameras, recorders, cables, racks...).

Then ask your boss to provide:

  • the deadline for each activity;
  • the priority for each activity;

When they do not fit in the amount of time given, ask him again to revise the deadlines and the priorities.

In this way, you have a good chance to make him understand that he needs to hire new people. You will do "inventing", the other guys will plug back loose Ethernet cables.

Additionally, you may want to normalize the work performed. Examples:

  • setting up a new computer;
  • reinstalling all software on a computer;
  • installing a printer driver;
  • ...
  • performing analysis on customer complaints;
  • debugging;
  • "inventing";
  • implementing new features (sub-groups probably exist);

In this way, the boss will know beforehand what to expect when he asks something from you.

Do not forget that you spend time traveling between your desk and the desk of the colleague who needs support. Include that into the estimation / normalizing. If you need to travel across several floors and wait for elevators, the traveling might takes minutes - sometimes comparable to the time needed to actually do the work.


The combination of out of scope work and company drama makes me want to leave....

Leaving might be a good solution. But do not do that just because the founder is just (temporarily) lost in his job. Before you give up and quit, work with him as I described above. You might be surprised to find a very nice person behind the mask that you saw until now.

Please remember that "founder" does not mean empathic, experienced manager, leader, or any other quality. "Founder" means "somebody who had an idea and started a company". He might actually need a lot of learning to become a good leader / manager. He might not even know what and how much he does not know. Providing kind and informative feedback can work miracles.

0

Any reason is a valid reason is it's something you care about. However it doesn't mean you can't improve the situation.

What you need to reflect upon is:

  • Did I try to improve the situation and how?
  • Am I satisfied with the actions that have been put in place to improve the situation or do I foresee any improvement in the near future?
  • Why do I care about those point that much? Should I really care that much about those or should I take a step back.

Once you have taken a step back from the situation to check why you feel that way you'll have a better understanding if you should leave or not.

0

I must add that I'm actually a freelancer but my assignment evolved in me working long term fulltime for this sole client so the way I'm working could be compared to an employee really.

You are a freelancer. You should have a contract. The terms of your contract should specify the length of the contract, deliverables, how to extend it, or how to provide notice.

Review the contract, and make sure that you have met all the provisions of terminating the contract and then do so.

Of course you need to start looking for another customer, or find an employer. If you can complete the search before ending the contract, that makes it easier for you financially.

The combination of out of scope work and company drama makes me want to leave....

Is this a valid reason? If yes, how to handle this?

Freelancers fire clients all the time. They decide that the pain and suffering have to be factored in, and they decide that there are either more lucrative or less stressful options.

How to do so? Review procedure, search for customers, provide the specified notice, and then leave. Don't forget to collect your final payment.

0

This sound fairly typical of a startup company and particularly a startup tech company founded by someone who has no idea how technology works. As a result, your problems can more or less be solved by educating the founder ("CEO"), providing he is willing to learn.


Regarding asking you for features but described very vaguely: Explain that he (the CEO) probably has a picture in his head of what he wants the feature to do, but he needs to convey that picture to you, and until you understand it then you can't build it. There's a term in common parlance, "ELI5", that is useful here. It means "Explain it to me Like I'm 5 years old". You need to know in great detail what it is you are building so that you don't have surprises down the road. If the project that is being requested is big enough, you may want to ask for a "DevSpec", or "Development Specification", which is basically a document written by the project manager (in this case the CEO) for the developer (in this case you) to explain the project in detail, and to also have a documentation log of what needs to be built, so that 3 months into the project you don't forget what it was you were doing, and so that random asks don't get added to the project and add scope creep.


Regarding asking you for features you don't know how to build: Learning is always part of software development, in any job at any time. Simply "I don't know how to do this" is not a good reason for not doing it. On the other hand, you also have to be realistic. If you don't know how to do something, say so: "CEO, I'd love to implement this feature and it sounds like a great idea, but I don't have the expertise to do it. It will take me X time to learn the required skills I will need to begin working on this (ALWAYS overestimate this, because you will probably be wrong if you try to give a realistic estimate), and then it will take an additional Y time to implement. Is that OK with you?". The CEO will probably try to negotiate you down, like "Why can't you learn this faster?" or "it's probably not as hard as you think", or something like that. The reason is, he doesn't know any better; to him a computer is a magic box that does magic things, and you're a wizard with a spellbook who does things with the magic box. To him, learning any skill is "just flip to page 327 in the spellbook and there's the answer", but that's not actually how it works and he needs to understand that and you need to explain it to him. If he tries to push back on deadlines and estimates with you, explain to him that this is how long it will take; maybe you can do it faster but that will be a good surprise and not an expected thing. Then he can either accept it and you can work on your schedule, or he can reject it and forget the project.


Regarding reprioritizing your work: Whenever you get called for an "urgent task", if you are currently busy, ask the priority of the task and explain that you can't multitask. For example, if you have to fix the printer, explain that will take an hour (or whatever) and that's time taken out of your current project. If you have to take a support call, explain that's time taken out of your project. If you feel you need to, you can make notes of the times, dates, and lengths of these disturbances, so when the project is inevitably delayed, you can point to these disturbances and say that you are owed this time on your deadline due to these disturbances. Another thing to be aware of is to ask "let me finish this first". Don't get up in the middle of writing a feature to fix the printer; the printer can wait. Finish your current task and get to a point where you can stop and fix the printer; you will cause many more problems if you just get up mid-line-of-code.


Regarding people leaving: You are working at a startup, and it sounds like your CEO doesn't understand how startups work. People go to startups so they don't have to be in the corporate world. The corporate world provides job security and stability at the cost of elasticity and increased bureaucracy. Startups provide less security and stability but in exchange you get a lot of perks like more flex hours, work from home, easier time taking vacation, and so on. It sounds like your CEO wants to build a startup but run it like a corporation, and that's the worst of both worlds. You may want to bring this to his attention that this is causing attrition among his employees, but if you do be careful not to phrase it in such a way that he thinks you are thinking of leaving as well. Make sure to make the conversation about the health of the company and not your personal situation.

0

You've brought many things to the table here, and are trying to condense them into a singular "should I leave?" decision.

First of all, "should I" decisions should only be answered by yourself. Don't let strangers on the internet make decisions for you.

I've written this answer to separately address the different things you've brought up, because you might encounter a subset of these issues at other workplaces and that doesn't inherently mean you should make the same decision to leave those workplaces.


Leaving when unhappy

The combination of out of scope work and company drama makes me want to leave

If you want to leave, then leave. There is no bar other than the one you set for yourself. Forcing yourself to work in an environment you don't want to work in is not going to generate happiness for you.

That being said, if there are ulterior motives, e.g. if moving jobs means taking a huge pay cut, then it becomes a matter of balancing whether you'd rather leave or have the extra pay. No one can make that judgment call except you.


The work

since I'm the only IT'er here.. any IT problem lands with me

This is not uncommon. To non-IT people, IT is alien voodoo magic, and of course they're going to visit the local shaman to help shake the chicken bones.

That being said, this can devolve into a matter of laziness, at which points lines need to be drawn.

I must add that I'm actually a freelancer but my assignment evolved in me working long term fulltime for this sole client so the way I'm working could be compared to an employee really.

Consultants tend to have a stronger standing to contest jobs outside of what was initially agreed upon. You can stick to that line if you want, but it's going to cause a dent in their opinion of you. As this is a small company, such reputational dents carry more weight than in larger companies.

I get asked to build software solutions...
I end up not only programming but also doing quite some research and actually working as an inventor of sorts..

Building software solutions entails more than just writing code. This is why "developer" is different from "programmer". Think of it like writing a novel. It takes more than just typing. You need to come up with a story, plot, narrative, characters, ... (= development) it's not just about the letters that you type (= programming).

There is nothing wrong with wanting to be a programmer and not a developer. But working at small companies tends to entail needing to be a jack-of-all-trades in your field.

I worked as the sole employee in a software studio. This meant I had to maintain our infrastructure, plan technical meetings with clients, server maintenance, deployment, ...

I didn't mind that, because I like that. I personally wouldn't enjoy solely programming. But you might be different and that's okay too.

If you're looking for a code-writing job with clear set criteria and not many sidejobs, look for work in a larger company, where the workload tends to be categorized in specific roles more. More staff tends to mean more specific roles.

you can't print.. I'm solving it...

This goes back to the "not my job" argument you can make.

However, as a consultant, I find that I'm often considered a source of expert information, even on matters that are trivial or not really part of my job. I don't mind it, as long as my time is accounted for.

If my client sidetracks me two days having to help someone, I don't mind helping, but then they have to accept that the deadlines for my planned job also shifts by two days (unless there was already open time in my schedule). In other words, I don't mind doing different work for a short time, but I do refuse to do extra work.

The thing is, your client clearly is in need of help, and you are in a prime position to provide that help. That is a very good business opportunity, if you're interested. It may involve some more hand-holding than you would like, but there is good money to be made by providing a service that the customer needs you for.

I personally like this (up to a healthy degree) because it fosters a long term stable relationship, which is nice as a consultant since you always run the risk of not finding a (nice) new contract.

But again, if you don't like it, then don't work there, or set very clear lines on what you will and won't do.

meetings are unstructured and there are never any items on the agenda... things get made up on the fly (really strange features that break standards) and I have to make sure they get done... Every single time, they manage to surprise me with the things they want in such a way that I don't know what to say.

I consider myself a passionate developer. I love the feeling of writing an elegant piece of efficient code.

But whenever a client asks for a silly feature, and ignores my suggestion to do it differently, I simply give them a projected timeline to completion and think to myself that as long as they're paying for my time spent on this, whether it's BS or not, I'm achieving my job of working as a software developer.

As a contracted employee, I agreed to work a specified amount of time for a specified wage, within some reasonable role. If the client wants to pay me to make silly or uncool things, then I will make them silly or uncool things. After all, I'm not the one running the company or deciding what the company should do.

And again, if you are negatively impacted by building something that you feel isn't the best that could've been built, then consider not working for them. But I'm hardpressed to agree that you're easily going to find a job where you're never going to have to build something that you don't 100% support.


Coping strategies

These are just some suggestions on what you can do to manage your work for this client, assuming you want to keep working with them.

I can't finish things and am jumping around between whatever is needed at that time.

Resist being sidetracked by explaining the current planning, the urgent nature of your current task, and the consequences of putting off the current task (e.g. "I promised Bob to get this done before lunch because he's stuck right now").

When someone tries to sidetrack you, judge whether it is truly an emergency, or if this is something that they failed to plan appropriately.
Help out when true emergencies occur. When non-urgent things pop up, defer them to a time where you are free to discuss them. Or, if you can, take the time to discuss them but only promise to pick them up after your current tasks are finished.

If you are pressed into doing this new thing first, discuss this with the management who is affected by both the old task and the new task, and let them decide which takes priority.

I cannot deliver the quality I'm used to because of the broad responsibilities.

One thing I very quickly learned is that you cannot rely on non-developers to grant you extra time to do developer-specific tasks (such as ensuring code quality), because these people don't understand those tasks, and that's not their fault.

Instead, you should account for these tasks in the deadlines you project. If I'm asked to make a change, which takes me 2 days to implement and 1 day to test/refactory, then I will tell them it will take 3 days.

I don't tell them it takes 2 days to write and 1 day to test, because this somehow suggest that they have the freedom to decide that I should skip that third day, which in my opinion they don't.

At a push, if there is a true emergency, I will agree to push out a dirtier workaround quickly, but only on the condition that extra time is taken to clean this up as soon as possible (usually the next sprint). I treat those deferred tasks as a hot potato and I refuse to let such technical debt grow on the backlog.

If the client keeps pushing new emergencies, I remind them that they agreed that I needed time to now clean the quick and dirty fix they had me push out as a favor to them.

If you don't budge on issues of code quality, you will find that you will find much less resistance from others in not giving you the time you need

I feel like I'm never prepared for a conversation with them and no longer have any new input because I have too much on my plate

Tell them that, in a professional manner. Try to set up a meeting for later, even if that's only 30 minutes later. It means you can prepare for that, instead of having to drop everything at their beck and call.

Software development is sensitive to unplanned interruptions, best exemplified by this comic. A minute-long interuption can cause a 30-minute slowdown because the developer has to get in the proper mindset again.

The best analogy is trying to interrupt someone who is doing mental arithmetic. Some non-developers very much understand that scenario and will learn to not interrupt you for no good reason, but there are many non-developers don't understand it (or reject it), and there are some tools to get them to respect that boundary even if they don't understand it:

  • Ask for things to be put in email. So they can be looked at in due time. If they approach you, apologize for being busy and tell them that you'll look at their email as soon as you can. This gives you the opportunity to look at it when you are inbetween mentally complex tasks, rather than in the middle of one.
  • Plan meetings, even if these are 10-minute long visits at someone's desk. It doesn't have to be scheduled for a specific time slot, but at least get them to wait until you are able to discuss their problem with them.
  • If you are prone to distraction or work in a distraction-heavy environment, wear headphones (if allowed of course). Not only do they block out the distractions (I love my noise cancelling headphones), but they also signal that you don't want to be interrupted for trivial matters.

The drama

Yeah this is not a place I'd like to work. I have actually quit jobs for similar reasons, and will continue to do so when I encounter them. The only reason I stuck around was if the contact with the problem manager was minimal and the working relationship with the actual daily colleagues was better.

However, you may be at less of a risk of getting the stick here since you're an external. I have met the most horrible micromanagers who somehow treated me like more of an equal just because they weren't technically my boss since I'm a consultant.

I leave these kinds of places on principle alone, but if you're mostly worried about the founder turning on you, it depends on whether the founder is actually going to mess with consultant the way he messes with internals.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .