tl;dr In short, I feel like I am slowly being pushed out of my position and lost authority due to being weak and avoiding confrontation. I know the product we are using should not be used in the way it is (no supporting examples/documentation etc.) yet I do not know how to argue this argument. I typically stutter so my argument will sound weak.

I am the lead software developer at my company (a position I fell into due to the length of time serving - i.e. I worked my way up) and I am a pretty quiet person and avoid confrontation. Also, I typically follow open-source communities and I am of the opinion if something is designed the way it is, in, say, a framework, it is designed that way for good reason and usually it's better to follow community guidelines, rather than implement your own way (I hope to illustrate this with an example below).

Back to the question, I am in a tough situation and I do not know the best way to handle it - it might sound trivial, but I am questioning whether the role I am in is for me as a result of this situation.

A little background to the situation: my background is Computer Science, and I have been developing for roughly 12 years (5 years at the current company). I try to keep up-to-date with the framework I am using and feel knowledgeable enough. I feel like I have enough knowledge to be able to advise and carry out the duties which are expected of me.

A few years ago, somebody joined the company as a trainee developer. Their background was not Computer Science but is Chemistry (and has a Master's in this subject) and so it was my job to train them: explain why we do things the way we do, programming practices and guidelines - the general things you are taught at University, how to code.

Within a year or two, he was promoted to the counterpart of my position and since then I have been questioning whether I want to continue with this company (this may seem extremely selfish of me, but I will explain why) - effectively his promotion became my demotion in terms of responsibilities and advising on best practices.

At the beginning of the year, we embarked on re-coding our application from an old, deprecated framework to a fresh, brand new framework. This could have gone better - it was rushed and we have not had a break since the beginning of the year (in fact, I have not had more than 2 days off since this time last year due to the way holidays work, and we did not dare to take time off during the project). At the time of original training, I taught this person the old framework when training them, but since the very early beta stages of the new framework, I have been involved with the community and learning best practices etc. so I feel equally as knowledgeable in the new vs. the old framework, the difference is the lack of experience. The other developer has not been quite so involved but has had training in the new framework.

Since coding the new application, when I try to reason why we should be doing something one way (typically a way I have read about which is popular in the community, or is a documented way), usually they have a reason why we should choose their way - their reasoning typically revolves around their perception of UX - which usually requires hacking the framework to achieve this.. Sometimes this can be a very contrived way of doing it, and based on past experience, I know it will be a nightmare to develop as the application grows. There have also been instances where we have been developing things in unsupported ways by the framework. For instance, component X should be used alongside component Y, yet we are using component X in a different way, not alongside component Y. This causes weird bugs, and, as an example, jerkiness in animations which I know is a result of these unsupported usages. My ideas do not align with theirs on what the application should look like. Yet because they are the bolder person, they typically win the conflict. I know this could be met with "Speak up, then." Which is easier said, than done.

The real issue is the application does not align with my expectations on how an application should be because of these "customizations" we have put in, I have lost all passion for developing it (something I was very passionate about in the past), and whereas I was the lead on this application previously, I feel like I have now lost all control. I cannot find a supporting reason as to why we should not be using the framework in the way we are, hence presenting a weak argument. I have raised this with my manager in the past who is responsible for us both, and the general response is it is how it is, and there is no time to change it. I do not know what to do. Whether to face my fear of confrontation and take this head on and how to handle the lack of confidence (which will ultimately result in me stuttering and delivering a seemingly weaker argument) (probably stressing myself out in the process) or admit defeat and look elsewhere? I feel lost.

  • 4
  • @OnoSendai I see your point. I think there are a lot of similarities. And I like your answer. I fear I will lose respect going that route though – devops101 Jul 27 '17 at 16:01
  • How do you lose respect by standing up for doing things the right way? – Dan Pichelman Jul 27 '17 at 16:04
  • 2
    You may have outgrown your position there - a management attitude of "it is how it is, and there is no time to change it" is a red flag. They're willing to accumulate a boatload of technical debt in order to get a product marginally quicker. You are (correctly) objecting to that debt – Dan Pichelman Jul 27 '17 at 16:21
  • 2
    "If something is designed the way it is in a framework, it is designed that way for good reason" - You have that wrong IMO. It's unfortunately often designed that way because the beginner who originally created the framework (who really shouldn't have been designing such things in the first place) ended up designing it that way from lack of knowing better. More experienced software architects who would have known better tend to have other things to do in life, like taking care of their family. – Denis de Bernardy Jul 27 '17 at 18:28

there is no time to change it

The situation you're describing with the current software is called technical debt. At some point, you're going to have to let stuff go. It's not perfect, and may never be.

I think you may be more used to working by yourself and having complete control over a project, but now you're working with someone else underneath the same manager. Relax a little! You've described how the project was rushed, like a big wave at the beach crashing on the sand; and when the wave came, you didn't do anything to get yourself out of the way.

The best thing you can do RIGHT NOW, that you can actually control, is take a nice vacation away from work. Step away. Regroup. Rejuvenate yourself, take some of the stress off your brain, and do a self-inventory to figure out what's really important in your personal life. Things at work will always eventually come to a compromise (which may or may not agree with your 'values'), but if you're getting a paycheck regularly and the ultimately responsibility falls on your boss' shoulders, WHY STRESS OUT ABOUT THIS?

So for now, forget about reasoning with your colleague. Try being reasonable with yourself.

| improve this answer | |
  • 1
    +1. Technical debt is development-applied entropy: As much as you stress over, you can never get completely rid of it. – OnoSendai Jul 27 '17 at 17:14
  • @xavier-j - thank you! You are spot on. I'm beating myself up over something I don't need to it seems. That was a refreshing view of the situation. :) – devops101 Jul 28 '17 at 9:02
  • 1
    As this meme goes: (it's a joke please don't take it bad) pics.me.me/… – sh5164 Jul 28 '17 at 9:33

The real issue is the application does not align with my expectations on how an application should be because of these "customizations" we have put in...

As your background is Computer Science, you should remember that when developing applications (either web or mobile) you are creating products for your users (not for you), and more specifically, your power users: the ones that truly use your app and are the ones you should strongly consider when designing your project.

It is really common (a "community best practice") to take into considerations fields of study like Usability, User Cendered Design, Human-Computer Interaction, and others when developing apps. And all of those considerations usually involve capturing the actual needs of your users so you can correctly materialize them into functionalities. This most times means that you will have to do "magic" so the users see what they want/need to see.

Therefore, you need to align those needs with the technical capabilities of your team and the tools (in this case frameworks) used in the making of those apps. If you feel your actual framework is not fit for the kind of projects your team is doing you should strongly consider finding one that does.

...it is how it is, and there is no time to change it.

This could be a good argument you could use with your manager. Maybe your manager is taking the easy way now, by not wasting time in refactoring your projects and adopt a new framework. But stacking up those, "weird bugs" and "unsupported practices" could lead to greater difficulties in the future (as other mention, formally known as technical debt). Rushing things now could end up being more harmful in the long run. You could even note down all those bugs and the possible drawbacks of continuing doing things that way, so you have evidence to back up your argument...

Now, regarding your authority, that is something that is really up to you to enforce. You should be confident in your background studies; you worked hard to get them and the make you better fit for your position.

You should also be confident that you have more time in the company than your mentioned coworker, even though he was promoted to your counterpart; you have at least a better understanding of how things are and should be in your company. All these things you should have in mind and will surely help you speak out more effectively. I hope you can manage to solve this situation, best of luck!

| improve this answer | |

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