Open Letter to a Software Engineer
Dear Software Engineer,
This is highly adapted from a long slack message I sent two of my engineers
We have recently spoken about some difficult topics, tech debt, what are we doing to fix it (are we even fixing it), the quality of our code, those processes which have never been automated, and how this is affecting your happiness and joy at work.
Your expression and comments made me feel like you’re hopeless about the situation. So I would like to address that and remind you that these problems, like all problems, have a solution.
What mechanisms of control do you have? What beacons of hope can you have to guide you through the swamp?
1 – The solitude of your mind and keyboard.
When you are in front of your screen coding, no one is watching, no one is listening, and no one is talking to you. That is your moment. That is your space.
And in those moments you have tremendous power: you can decide to change things, you can actually improve your condition. You can fix some small tech debt, write more tests, refactor something, improve what you touch, fix that “broken window”. Change starts in that special place in an Engineer’s mind, when looking at some crappy piece of code you think “hey, I think I could try to fix this, let’s consider this idea for a moment or two” and that idea take form in your mind.
Now, not all changes are that quick to do, but I don’t want to spend too much time on that in this letter. I’ll just briefly mention here that if what you have to change is small enough, you don’t need permision. Go ahead and do it.
The bottom line here is recognising that you are the prime mover, the trigger for change. Your first step in finding hope is yourself, your time, your moments of silent conversation with the code in front of you.
2 – The whole is greater than the sum of its parts.
Unless you have very specific circumstances, it’s very probable that you have more Software Engineers working on the same problems you are. That means more people with varied skills, different backgrounds, and most probably all available to help out a fellow Engineer.
So before keeping your problem to yourself, before deciding that the situation is hopeless, your obligation is to reach out to one of these people, and say “Hey, I need another pair of eyes looking at this problem. Can you spare 15 minutes with me?”. This is what it means to work in a team.
In a team, you work as a group of people rather than separate individuals. If you have a problem, you go find someone who can help you and give you feedback because all of those people are the closest to you, your situation and your problems. They have similar fears and concerns and so they’re in the best position to help you.
This is the meaning of working in an Engineering team, to reach out and think of your work as work you do with others.
3 – There is a person whose job is you.
The final beacon of hope is the person whose job is you, usually your Tech Lead or CTO or Lead Engineer. Whether it’s in the form of your career planning, or in the form of changing the tech side of your company, or thinking of architecture, bugs, proccess or anything else, ultimately this person’s job is you.
So, if you’re blocked, worried, unsure about how to approach a hard problem, lacking knowledge, lacking clarification or confidence, or feeling overwhelmed and unable to proceed, your responsibility is to make your concerns become the concerns of your Tech Lead.
I (and many other Tech Leads) take a lot of pride and effort in ensuring that we can be approached in any circumstance. But this is more than just availability – Tech Leads get to where they are because they have both a broad and deep experience, and we can always take our management hats and put a systems hat, or a backend hat, or a databases hat. That’s our super power – we know many many things and can play many roles, which makes us great “people-problem” solvers.
So this is my message to you – there is hope and you are not alone.
- Hope starts with you and accepting your privileged position as someone who can identify problems and have a go at fixing them.
- Hope comes also from the recognition that you are part of a team, and you should rely on your team to help you.
- And lastly, hope comes from the fact that there’s someone in your organisation whose job is to support you.