Developers Happiness
Development Noise
Features & updates
Developers happiness
Development noise

Handling top-down tech decisions as a software developer

Oct 25, 2021
 min read
Like it, share it!

The story goes like this: you are sitting at your desk doing your day-to-day job as a Software Developer, then out of nowhere you’ve got a meeting with the tech lead or the architecture team. The meeting subject is The New Exciting Fantastic Team Tool. If you’re a Senior Engineer, you already know what this kind of meeting will lead to. Sooner or later, as a software engineer, you’ll have to deal with decisions that you didn’t make, and the exciting news is that these decisions will affect the way you work, and you’ll have to deal with the consequences.

This article is about how you can handle decisions made by other people (usually those ranking higher than you) that you may or may not agree with. 

There were two situations in my life where these kinds of decisions directly impacted my day-to-day work. My role was the same for both. I was a Backend Engineer, and the only difference between these situations was the level of freedom that each contributor had when making decisions. This attribute can change the environment where developers work drastically, as you will find out later in this article.

They told me something that I will never forget: You have to focus on what you have, not what you don’t have. And this changed everything in my work environment.

The Total Freedom Scenario

In the first scenario, I worked in a team that made the authentication, authorization, and cryptography backend for a huge web portal. This company had an excellent tech environment; they always allowed the  developer to decide which technologies they used. As you can expect, the developers at the company had a great opportunity to build and test the most exciting technologies - we could run any number of distributed systems that we wanted. 

You might be thinking “OK, but there must be constraints, right?”

Yes, resources like virtual machines, proxies, and load balancers aren’t unlimited, and all developers were responsible for the resources they were using. Another constraint was the projects we’d work on; you couldn’t select which project to work on, but you were fully responsible for all the tech stack. Do you want to use GO plus PHP in the backend and Flutter Web in the front-end? Go for it; you will be accountable for the maintenance.

This scenario sounds like a dream for any developer, but it has its drawbacks. Imagine that you are not the developer who started working on the project but someone who was chosen to continue the project’s development. You have to decide whether you’re going to throw everything away and start developing your new shiny code from scratch or just continue with the first developer’s idea. This is why every developer needs to consider other developers’ opinions when choosing the tech stack for the project.

Three tips for handling the Total Freedom Scenario:

1. Choose the technology you will use wisely

According to the well-known Spider-Man principle: “with great power comes great responsibility.” Since you have the power to decide how to tackle the problem, you will be responsible for anything that might go wrong with it.

2.Communication is key

Even if you are working on the project by yourself, I strongly recommend discussing every technology decision with others within your organization. If this is not possible, find some discussion group to have more eyes on your ideas. At some point, you may regret some technology decision you made; if this happens, you must communicate with everyone involved and try to figure out how to handle it gracefully. Always stay open to feedback on your code.

3.Don’t try to reinvent the wheel

Most common problems have already been solved by someone else so don’t waste your time or your company’s time by attempting to create a gigantic complex solution for an issue that has a well-known and tested solution simply because you are able to. At the end of the day, you are responsible for delivering value to the business, not a technology case for some conference.

The Most Constrained Scenario 

The second scenario was when I was a Backend Developer at a financial technology company, working with payments. My responsibilities were to develop payment gateways for financial institutions. 

Sounds exciting, right? And it was, until I discovered that I wouldn’t have any freedom to choose the technology I’d be working with. I started experiencing stress when the architecture team decided that using queues structures as a communication pattern between systems was strictly forbidden. And this is just one example of the company’s restrictions. I had never faced such a restricted environment, and this taught me some valuable lessons.

I didn't have the freedom to exercise my creativity to create solutions or even to suggest new solutions because all the architecture was already done. 

In the first feedback cycle with my managers, I told them that with so many constraints, my work as a Backend Developer in the company was merely to follow other teams’ decisions and implement them. They told me something that I will never forget: You have to focus on what you have, and not on what you don’t have. This changed everything in my work environment.

Three tips for handling the Fully Constrained Scenario:  

1.Focus on what you have

As my manager said to me, if you focus on what you don’t have, you won’t be happy anywhere. Instead, you should think “with all these constraints, what’s the best I can do?”

2.It's yourresponsibility to help create bettersolutions

You might find yourself in a situation where the team's technical decision was wrong. Try not to point fingers at other people and teams; this attitude isn’t helpful at all. In The Art Of War, Sun Tzu said: "Supreme excellence consists of breaking the enemy's resistance without fighting.”

3.Never stop learning/trying out new technologies

I know you won’t always be able to deploy that new fancy frontend framework. However, you should at least stay up-to-date when it comes to new technologies so you are able to suggest other solutions and eventually create a better work environment as well as stay motivated.

Final thoughts

In any situation it’s good to have a strategy to help you handle your stress and responsibilities. The important thing to focus on is how to best manage the freedom and constraints in your work environment. Remember that freedom isn’t necessarily the best option, and that actually being under many restrictions is a perfect opportunity to exercise your creativity. You just have to find your way inside your organization. Finally, it is up to you to decide what environment you want to work in and what type of management you are willing to work for.

Like it, share it!
Leonardo Pugliese
iOS Developer, Haarlem, the Netherlands

I’m an Italian-Brazilian software engineer with 10+ years of experience developing software for a variety of tech stacks. I’ve being working in back for 7 years as a Java developer but for the last two years I’m love with iOS development. I had some experience in software management being scrum master for two years and loved study software development methodologies, but my real passion is to code. In my free time I like to hang out with my wife, write tech stuff online, read articles and chat about life, universe and everything else.

See all other articles
Stay updated!
Zigi’s blog is the place to read and hear from developers like you about happiness, noise, productivity and everything that is new at Zigi in one place.
*Enter a valid email
Thanks for subscribing!
Oops! Something went wrong while submitting the form.
No charge. Unsubscribe anytime.
Join our mission
to eliminate wasted time & burnout for developers
Join us! Be a part of our beta group and help us shape Zigi — a tool for developers, by developers.
Spread the word about Zigi, and win a prize
Get rewarded for your referrals and score the full Zigi sticker pack.
Get your referral code
Join our mission
to eliminate wasted time & burnout for developers
Join us! Be a part of our beta group and help us shape Zigi — a tool for developers, by developers.
Join UsAdd to Slack