6

I have 7 years of experience as a software developer and I just moved from North America to Europe/Lichtenstein for this job. My visa doesn't depend on that job, I can stay in the country regardless. I live in a small city and don't speak the local language well enough to work, I interact in English with my colleagues; but that makes it more complicated because most jobs require fluency in the local language.

About five months ago, I had two offers and I took the one that sounded the most interesting at the time (and that paid more.) I was promised I'd be acting as a developer but also some kind of mentor because their employees don't know about best practices and modern techniques (but I do.) I also liked what the cooperative does in the sense that it wouldn't be just another SaaS or useless piece of software making some billionaire CEO richer, but actually useful software that makes the government better. Basically, I was excited about the job.

Five months later, however, I'm not so enthusiastic anymore even though I passed my probation period with flying colors.

The project I was initially hired for keeps getting delayed, and I don't think it will start for another 6-9 months.

Instead, I have been put on a small greenfield project where I was working on my own, and then abruptly re-tasked to modify the ugliest code base I have ever seen.

The application, which no-one has touched for the last two years (i.e. an eternity in JavaScript land), has no tests at all, copy paste all around, the people who've worked on it either moved on or switched to sales/other unrelated duties, and there is of course no documentation whatsoever (not even comments.)

I've been on this application for about 2.5 months now. I keep telling my boss that this is too big of a task considering the very low quality of the spaghetti code, my total lack of context regarding the business logic (it's very specific), which is compounded by the fact that none of the libraries have been updated, ever, and thus none of the versions in use are currently supported anymore. I have also told my boss several times that I am not enjoying this work at all and that I'd sooner be doing what I was hired for (mentoring etc.) I have also shared my doubts regarding a successful outcome because of the problems above.

I spend most of my days fighting bugs that come up in this application (no tests, remember), or issues due to libraries being outdated and not working well together anymore. That takes up a lot of my energy so I only really spend 30-50% actually working on the problem at hand and just procrastinating the rest of the time.

This company also turns out to be very backwards in the way they do software. It's rather waterfall in most things it does with old farts at the top that are stuck doing software like it was done 20 years ago and imposing it to everyone else below. Because we make software for the government and we are a cooperative owned by the towns and administrations we serve, this is not as a big of a competitive disadvantage as it might seem. But it sucks.

I can't decide what my best course of action is.

On the one hand, this is a large organization where my job is relatively safe (which is something I wanted after working for years in North America), it pays rather well, and it's not that demanding because the expectations are fairly low. But on the other hand, I'm dying of boredom and frustration. My boss doesn't seem to consider getting me off this project until my task of modifying it is done, and I am not sure I will ever make this modification successfully.

On the other hand, I could talk to the other company that made me an offer. The mission isn't as compelling but at least they're not operating their software business like if it was 2001 anymore. But I'm not certain it will be stress-free because they're a consultancy and we all know the kind of software that comes out of these. I'd also be taking a pay cut, and the job is likely not as stable. I am also worried that because this is a small town, word might get around that I'm looking to jump ship.

I'm looking for a solution to my situation from people who have had more experience dealing with this or from "the other side": HR, manager... I would also like an opinion from a European perspective (I have only every worked in North America where things are a little different.)

What is the most acceptable and professional way of handling such a situation?

5
  • 1
    How married are you to your location/Liechtenstein? Not being understood/understanding a local language can (majorly) suck. Have you tried looking at Switzerland, Germany or The Netherlands? Or maybe even the UK (if not married to mainland EU). If you don't mind a (-nother) country hop, I could write a small answer about (backend PHP) development in The Netherlands from experience. Reason I mentioned those (non-English) countries is because the people speak (very) good English in all of them, coding is done in English (as are docs). Switzerland the exception with many more languages.
    – rkeet
    Commented Jan 13, 2020 at 19:10
  • Switzerland also mostly speaks German though, except Zurich but I don't want to live there. I'd like to stick to very high paying countries so that leaves CH, FL, Luxembourg. And I have a partner to consider who also started a new job, we'd have to start over in a new country. Not totally off the table, but not super practical (our lease is one year.) Regardless, I'd be interested to hear your experience in NL.
    – Remy
    Commented Jan 14, 2020 at 7:04
  • 1
    but actually useful software that makes the government better -> turns out to be very backwards in the way they do software -> we are a cooperative owned by the towns and administrations we serve -> What you witness is typical for everything that has to do with governments. Tax payers are your indirect customers - a captive audience. As such your company gets arbitrary amounts of money and can live a century behind. The people working there are likely more akin to bureaucrats, and they live in a world of slow-motion. For someone like you boredom is guaranteed.
    – Battle
    Commented Jan 14, 2020 at 8:05
  • @Remy go to Luxembourg if you can, based on your list. NL isn't half bad when you put it on a salary/english-friendly/quality-of-life scale (I live there). Plus, as a developer in europe, you basically have guaranteed jobs in any northern country you wish for.
    – STT LCU
    Commented Jan 14, 2020 at 8:39
  • I had checked NL out, but figured out that it would take one full after tax salary to cover the (absurdly high) rent there. The numbers didn't work out.
    – Remy
    Commented Jan 19, 2020 at 13:59

3 Answers 3

11

First, you need to step back and evaluate what exactly you were hired to do. You stated that you were promised to be:

acting as a developer but also some kind of mentor because their employees don't know about best practices and modern techniques

If this is correct, then the work that you are currently doing is exactly what you were promised. One task of any developer is to review old code. And if you are supposed to be a mentor for best practices and modern techniques, this old code is the perfect way to start mentoring the rest of the company. Show your colleagues why the current code, in it's antiquated form, is inferior and teach them the modern (correct) way of doing things. Perhaps the nature of this work is not what you originally envisioned, but it is what you were promised.

What is the most acceptable and professional way of handling such a situation?

The most professional way is to do the work that is assigned to you to the best of your ability. If you are unhappy with the work and there is no possibility for the nature of your work to change then you should start looking for a new company to work for that is more in line with your expectations.

2
  • I was also promised to work on a greenfield project. If I had known I'd be working on this application (which scores very low on the Spolsky test, all it has going for it is a VCS), I wouldn't have taken the job. No-one else is working on this application anymore, and the people who did work on it are all in totally different non-technical functions now. I'm not reviewing any code, just trying to untangle the mess on an app no-one else will touch for another two years.
    – Remy
    Commented Jan 14, 2020 at 7:29
  • @Remy Well, if you don't shine at the task at hand, which seems to be part of the tasks you were hired for, they probably will change their mind about putting you on the greenfield project. Or the greenfield project is "just around the corner" and you need to identify it's blockers to determine if it's going to arrive in a few months or a few years, or ever. I worked in a bank once, their greenfield project eventually failed to justify the costs involved, but it took a year to figure that out, meanwhile we made the old project it would replace better.
    – Edwin Buck
    Commented Jan 15, 2020 at 17:10
9

As sf02 said, you are doing parts of your job description: Development. Working on old code is often no fun, but also reality of software development. As senior dev, come up with a plan to improve the situation! Not only for you, but also for the employee.

By your description, the current application is a source of never ending bugs. It seems, you have to solve the problem at the root:

  • Add unit tests (later even integration and end to end tests)
  • Separate the code into logical modules
  • Add documentation
  • Update all software dependencies
  • maybe improve stuff like logging and monitoring too
  • adding a deployment pipeline?

Come up with a Masterplan on how to do this, you will know better than me which of those steps is more important. Or which step gives you best bang for the buck. Also make up a convincing argument into a presentation why the current state is unsustainable and why changing it is the only way to solve it. I'd personally advise on informing people that you will make those changes, and explain why it is important. But don't ask for permission, you are the senior dev, you know what to do. Them not saying no to this change is enough. If you ask for permission, you shift responsibilty to whomever shall say yes. Which makes them reluctant to do so, because they got no clue. You got the clue, so do it and take responsibilty!

If you manage to achieve this task, you will be seen as the competent senior dev, maybe even a hero.

2nd part, the mentoring: Is this in your contract? Then the contract is permission to do so, you should search for ways to just do it. You could prepare internal talks/workshops to share your knowledge. You could sit by someone elses PC and just advise hands on. As long as this takes up just some of your time and you arguee that it's the best for the company longterm, you propably get a pass for doing this.

If you try this, and you see things improve for yourself: Great!

If nothing improves: Preserve your mental health. Every job has it's bad phases. If it's just bad and never good, at some point you have to look out for yourself. This is more important than the image people have of you, so even if the word spreads, this is prefarble to you loosing your sanity.

In the past, I changed companies because I couldn't handle some stuff at those companies. Later on, I learned new soft skills (social, interpersonal, orginaziational, self regulation, etc...), and now I am better prepared to handle those old problems. But I personally needed the change of environment to lean it. Sometimes, this is the case.

With that being said: I hope you are able to learn to cope with the challenges of your company at your current company.

1
  • Thank you. My assignment on this particular code is a specific modification with a deadline. Rewriting/refactoring the entire application would be a manjor endeavour and it wouldn't fit within the timeline. It took my predecessor 9 months to write it from scratch and I'd be starting over because there are no specs or documentation. I'll check if mentoring is in my contract because IIRC everyone gets a "software developer" contract on paper so it might not be in there. I have done what I can with this app: made the test suite actually run, added a couple of tests, ran prettier, etc.
    – Remy
    Commented Jan 14, 2020 at 7:33
4

It seems to me that your job is about how I would expect a (European) government job to be like (you said it is not directly government, but the government is their only customer, so this comes to the same). You have high job security (probably excellent benefits as well, especially compared to the US) and low stress but the technology used is decades out of date and the organisation is a strict hierarchy where the people at the top don't really know much about your job.

I don't think any of these things are going to change drastically if you complain to your boss or even change department within the company. Maybe you can achieve small changes but don't expect a start up atmosphere.

So this comes to a decision about your personal priorities. Do you want to keep the high pay low stress job at the cost of doing boring tasks? Or is the interesting new content of the work you are doing so important to you that you are willing to sacrifice the low stress and higher pay?

2
  • I guess I'm not used to this kind of environment at all, and it feels wrong to be mostly slacking all day because I'm stuck or not particularly excited about the task at hand. I'd much rather tolerate this job and live my life outside of it, but I'm stumped at how to handle the current situation... I've been stuck on a cryptic error where the trace all points to dependencies and none to the application code so I've been procrastinating since last Thursday because no one can help. Im not sure what my next move should be in that situation.
    – Remy
    Commented Jan 14, 2020 at 17:31
  • @Remy fork the dependency? Or move to newer version if it's required. Of course you won't make the deadline. But from your description it never was your fault.
    – jaskij
    Commented Jan 15, 2020 at 7:50

You must log in to answer this question.

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