1

I'm a web developer that has been working for my current employer for just over one year now. The company sells desktop based project management software, and they hired me because they needed a web developer to basically write a web based version of their software as they want to move away from desktop based applications to web based applications. Currently, all clients get a custom desktop application written from the ground up using our framework however during the interview my boss said that the plan was to also create a standard non-customisable web application for small clients. so, I was hired because of my web experience to work on web projects.

We are a small team of 4 developers, and there is only one other developer who has any web experience (we will talk about this guy after).

So I started last April, and about a month or so in they asked me to work on their only web application that needed finishing. After starting on this project, I soon realised that the other developers who wrote this application had absolutely no experience writing web applications (or were very bad developers) as there were issues everywhere with the code and none of the standard practices had been followed. It took me a good few months to fix all the issues with the code. My boss got very angry one day before my probation (3 months in) and shouted at me in front of my colleagues and said we need a meeting urgently. The next day he said he wasn't happy because I was always reporting problems (the code was horrific) and he couldn't understand why I was taking so long to finish the project, and that he was going to extend my probation. I agreed to the extension because by this point I was so angry I was happy not to have a 3-month notice period stopping me from looking for a job and leaving in the near future.

The day after I spoke with one of my colleagues who I get on well with, and he basically said that even though it's not the right thing to do, I should drop my standards and do things the quick and dirty way because that is basically what my boss wants. He needs things out the door ASAP. I took his advice on board and began doing things the quickest way possible even though I felt bad about knowingly dropping my standards because I always want to better myself and the codebase and improve standards where I can, so this was difficult to swallow.

About 4 months in they put me to work on their desktop based projects. I got to work assuming that the web work would come soon. Around this time my boss then asked my colleague with the web experience (alleged experience because he is one of the devs who built the app from hell mentioned above) to build a POC for the web based framework I was hired to build. I was quite annoyed by this because I was the one who had been hired to do this work, instead they have me working building desktop apps, which isn't where my experience is. Months go by because he is told to only work on it when he has spare time. We get to about November and he finishes. My boss asks me to look at it, and yet again I see no end of issues with it. I don't want another re-run of the first project (wasting months of my time fixing it). I say that I will fix any issues.

So, I am not really given any time to do this at work but by this time I am just fed up of writing desktop apps. I wasn't hired for that, so I spend my evenings and weekends writing it using standard practices (e.g. applying SOLID principals).

In January, I show my boss and the other developers my work. The only other web developer starts kicking up a fuss saying that it is too complicated, our other developers won't understand it, that our interns won't be able to work on it, that we don't unit test here etc. I argue my case that this is the proper way to write a web application yet he continues to argue that it is too complicated, that we don't have time etc. At this point my boss asks all developers to build a small POC project using both mine and his versions of the web frameworks and then give him the pros and cons of each. A week or so goes by and we have another meeting. The other devs basically say his version is closer to what we currently do (e.g. quick and dirty) and that mine while more complicated seemed to be of a much higher standard and more maintainable.

Anyway, a long story short a few more meetings like this, my boss ends up choosing this other developer's version. Even though he knows it is not the proper way to do things. So now I have been here a best part of a year, basically working only on desktop applications wasting my time not gaining any valuable experience. I try to help and get things built properly but clearly nobody is interested.

It is now July (7 months later) and we still haven't started a web project with this guy’s subpar framework. They keep mentioning projects coming up that will be web based, but they never are. I feel like we are never going to start.

Now we have just landed a giant client and this project will take until October to complete. This is also desktop based so clearly, we are all going to be working on this project and not on anything web based.

I think the answer is to leave, however the reason I joined this company is because the software they sell is being sold to NGOs and the charitable sector. I love knowing that what I am working on is helping the world out and that I am not just working for some huge faceless company that's only looking out for its own best interests.

I really feel like I have valuable experience and knowledge to help this company out, yet I feel really limited by them.

Is there a way I can turn things around there or should I just move on?

4
  • 1
    Change jobs as quick as possible - your career is short and you need to move ahead quickly.
    – Fattie
    Jul 9, 2017 at 17:08
  • 1
    WHY ON EARTH ARE YOU STILL WORKING THERE? Jul 9, 2017 at 20:13
  • 1
    There are more NGOs and charities out there, you can definitely find another job working on something personally meaningful.
    – Mel Reams
    Jul 9, 2017 at 20:14
  • Sounds like a "standards" mismatch. JavaScript is a Dynamically Typed, Prototype language. You are describing standards used by Blueprint OO/Strong Typed languages. Dynamic programmers find Blueprint/Strong typing solutions to be "overly complex and overkill". Blueprint OO/Strong typing programmers find Dynamic language solutions to be "quick and dirty". Different approaches have different "standards".
    – user45269
    Jul 10, 2017 at 14:50

3 Answers 3

4

Your current boss has shown he is not open to your way of doing things after a year of your efforts. It's highly unlikely, then, that the situation would change in the future. Move on! In fact, if you are required to deliver terrible products to NGOs and the charitable sector, are you actually helping them out or hurting them?

0

You are approaching your situation all wrong. You've made your case based on "my way" and "his way", rather than explaining the benefits to the team, the product, or the business.

In January, I show my boss and the other developers my work. The only other web developer starts kicking up a fuss saying that it is too complicated, our other developers won't understand it, that our interns won't be able to work on it, that we don't unit test here etc.

Well, I understand where they are coming from. Complexity is the number one killer of software projects. Developers enjoy over-complicated solutions because they value elegance, flexibility, and creativity. Those goals typically bring about complexity. I'm not saying your approach is too complicated. I don't know enough about it. But it is worth considering.

If you are passionate about it, spend time making sure that your code has strong test coverage, then show the team the benefits and costs to what you did. Lead by showing them the way. Do not dictate "the right way is to unit test, so if you don't do it, then you are wrong." That attitude will not go anywhere.

I argue my case that this is the proper way to write a web application yet he continues to argue that it is too complicated, that we don't have time etc.

Not having time to do something right is the most common excuse. Be understanding, accepting, but also assertive when necessary. Sometimes, businesses really do not have time. Sometimes, getting something out the door is more important than clean code. However, generally, businesses over-inflate their urgency. What you need to understand when then these decisions are being made is what is the downside to shortcuts. Express the problem in terms of tradeoffs. For example:

  • We can release sooner, but the software has no test coverage, so the next time a developer changes something, they may break functionality and it will make future changes take longer.
  • We can release sooner, but we will be giving up maintainability.
  • We can release sooner, but as we gain more customers, the software will not scale.

By knowing what you are giving up, those costs can then be weighed against the benefit.

It is also important from a leadership perspective to have the discipline to follow-up on shortcuts and address them. I am essentially describing technical debt. Technical debt is not inherently bad, just as a mortgage on a house is not necessarily bad, and borrowing money to buy a new car isn't necessarily bad. You need to be able and willing to repay those debts, however. Or they add up. And that is how you get unmaintainable poor-quality software.

this guy’s subpar framework

This is bordering on finger-pointing. You're all on the same team, yet it seems like you are trying to compete with your co-workers by showing how they are inferior. The truth is, even if you are a better developer, people don't want to work with somebody who keeps trying to put them down.

I spend my evenings and weekends writing it using standard practices (e.g. applying SOLID principals).

Good job taking the initiative on your own personal time. Sometimes refactoring needs convincing, and it's hard to convince people that refactoring is worth the time until they see it done, so by investing your own personal time, you could be breaking the cycle.

So, I am not really given any time to do this at work but by this time I am just fed up of writing desktop apps. I wasn't hired for that

The web versus desktop programming issue is a personal choice. I hear you on that one. I have no interest in building desktop apps because it is not where my passion lies. But what is not constructive is to get upset that you are being asked to work on something which isn't your personal favorite subject. People who are unwilling to learn or grow can be toxic to a team. I've worked with many developers who refuse to learn new things and one of them, who only works on backend code and will only use Java, was asked to work on a frontend task, and his response was, "is my job on the line?"

I find it very frustrating to work with people like that, and your approach to your desktop versus mobile assignment sounds similar.

That said, it is totally fair and appropriate to evaluate what you are working on against career goals. If I was asked to work on a desktop app, I'd say "Sure!" and treat it as a learning opportunity. But eventually, if I found myself working on desktop apps indefinitely, I would start looking for a new job. It wouldn't be personal. I wouldn't be upset that the company isn't assigning me to what I was hired for. I would leave because my current position does not benefit my career and there are other positions which would.

0

Is there a way I can turn things around there or should I just move on?

Not really, at least in my experience.

You are in a company/team that does not really value your skills. This is blatantly obvious both by the fact that you are almost only working in desktop applications - despite being Web Development your field of expertise, and by the fact that your peers are not following proper development practices (and your manager is discouraging them actively).

IMHO, these kind of things are quite difficult to fix, specially when your manager is against you. Which means that yes, you should move on. With your experience, it should not be difficult to find true Web Development roles, maybe even in a company which mission you like.

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