An Open Letter to Software Engineers
Dear Engineers,
Whether you have been in the industry for a day or a decade this letter is for you.
The software industry is one of the toughest industries out there from an intellectual perspective.
Unfortunately, many who begin their computer science degree with high hopes drop out, or even complete the degree only to go a different route because the challenge of the industry is surprisingly overwhelming and demanding. In spite of the fact that the market is so enticing and the demand for engineers is so high, the field is intimidating. With the mix of math/logic-based science and a need for a highly creative mind to be a successful computer science engineer, a high percentage of would-be programmers leave the field. This is so unfortunate because the market is designed in a way that is exponentially expanding everyday as enterprises, small and big businesses, governments and every entity imaginable become more and more digitized and computerized. Everything from our airplanes and cars to our trash cans and vacuum cleaners are now programmable.
Being lucky enough to be a successful engineer is better than being a kid in the candy store – it’s like solving puzzles and racing against time every single day.
Deadlines, designs, retrospective meetings, stand-ups, defects, features and tasks and many more terms and methodologies that govern the day of a software engineer and while that may sound daunting to some, to the true software engineer with a passion for programming, this is a dream come true.
You’re being paid a tremendous amount of money because you are some of the smartest people on the planet; you are one of the few 0.25% of the population of the planet and the entire population of the planet relies on your work to run their day to day lives!
I’m writing you this letter to help you understand your worth, your true value, and the huge contribution you make to this world. At the same time, I want to tell you how you should ensure your continuous growth wherever you work and whatever you do in this industry.
There are three important conditions you need to make sure your current position satisfies.
If even one of these conditions isn’t satisfied, you are wasting a finite resource, which is your life.
Your Professional Growth
No, I’m not talking about the autocratic junk that people call promotions, neither am I talking about moving to a shiny office or having a fancy new title. None of that matters in our industry. You know what matters? How relevant you currently are and how adaptive you can be to a forever changing and viciously competitive industry.
I’ve seen people who have been working in this industry for over three decades and their knowledge remains something from the stone age. The very corporations that hired them as young ambitious engineers are also the same companies that left them aged bare-boned useless cogs who have no idea how to keep up with technology. Sadly, the best thing they could do is to find some vague similarities between what they did twenty years ago and what people need today, then ramble their tales, sending everyone in the room yawning as they peruse their phones for more interesting content.
If you don’t want to end up like these outdated engineers, or fear you may already be one, keep reading.
Let’s talk about how these cogs ended up like this in the first place.
If you find you have been tasked with maintaining an archaic system with no plans in the near future to modernize, or rewrite the system, know for a fact that you’re being used as a cog. Your time is being terribly wasted over something that you’ll never need again wherever you go within the same organization, or in any other software company.
If you’re tasked with fixing data without tackling the actual problem that’s causing that data to be buggy, know that you’re going down the road of being just another cog in that system.
You and the data producing code that’s producing that data are the same.
In other words, you’re a machine, a toaster! You will soon be tossed away for another “toaster” to replace you!
Staying relevant in the software industry requires a lot of self-discipline, and a desire for continuous self-growth. That means reading books, perusing articles, watching videos, attending conferences, practicing coding, and contributing to projects to stay up to date with the changing industry. Yet it also has to be a part of the best eight hours of your day, the most productive hours when your brain is actually ready to do something great, but instead it’s tasked with doing something that can be automated.
If you’re tasked during the best eight hours of your day with dull, non-challenging repetitive tasks, you’re wasting your time, and you have two options:
1.Push for a serious change in the projects you’re working on. Ask questions about why, in an industry that’s automating everything in our lives, you have to do the same tasks every day. Find out the root cause some dull task keeps landing on your desk (or anyone’s desk) and see if it can be eliminated. Ask why those tasks exist and see if there are solutions to eliminate or at least minimize those tasks.
There will always be some tasks that no one likes to do, like a bad code that caused bad data to happen, or a failure that resulted in some damage. It’s okay for that to be a part of your day, we’ve all been there.
But if that’s the *only* thing you do, then something is seriously wrong and you need to start pushing for a change now.
In this case, when you push for change you might run into one of two scenarios:
a. People listening to you and starting to support you and encourage you to find a better solution. If you run into this scenario, you’re in a good company, your voice actually matters and you can inspire change, and you should continue the effort and learn as you go about the domain you’re working with – but be careful my friend from fake promises and deceiving leadership, these are worse than the ones who shut you down and say no to your face when you try to start a discussion about change and modernization.
They are worse because they’ll waste your time, and give you fake promises and deceive you to go pursue your success, they will have you continue to do some random cog-like work whilst you’re thinking there’s some light at the end of the road … there isn’t!
b. The second scenario is when people simply say, no we can’t afford change, we’re “too busy doing the real work” or “let’s just keep the business running” – these people are a good example for you to know immediately that every minute you spend with them is a complete and utter waste of time and I can’t tell you how much it irreparably damages your career.
Did I scare you? I’m sorry. Here’s a funny picture for you:
2. The other option you have if you don’t want to push for a change is to start exploring a different place, but this time you have to learn to ask your interviewer the right questions.
Talking about how to find out whether your interviewer is trying to sell you a “coggy” job or not might need another article, but for now, just follow your gut and be vigilant when you pursue another career, make sure you don’t jump ship too much, it gives even good employers an impression that you are unwilling to stay long enough, which will make them question whether it’s worth the investment to hire you in the first place.
Every engineer needs to understand that software engineering isn’t exactly an eight to five job and your brain doesn’t really stop thinking about the code you were writing, or the design problems you were solving during the day when you go back home.
Engineering is actually a lot deeper than that. The software problems become your problems and you take not being able to solve them very personally. You cheer up when you fix a bug or implement a new feature, these are all great things to have as an engineer.
Because engineering is that deep into our lives, we need to ensure we nurture it, sharpen our skills, continue to learn new ones, engage in discussions with friends and colleagues about the best solution to the biggest problems.
It’s your responsibility and the responsibility of those with whom you work to allow these discussions to happen in order for growth to be accomplished.
If I were to summarize that first condition for you, I’d say; don’t let anyone waste your time or undermine your potential. The very fact that you’ve made it that far and actually landed a job as an engineer makes you one of the tough 0.2% of people in this entire planet that could actually make it that far – so you’re an absolute superhero. Don’t let anyone make you think otherwise!
Your Value
The second most important condition is whether you’re being valued on your team and by the company for which you work.
Don’t be just a number, and don’t let anyone undermine your opinion, or make you think your ideas on any certain subject don’t matter. Demand respect and in turn, be very respectful to others as respect reciprocates.
Make sure your voice is heard by as many people as possible among your team and within your organization. Do not let anyone silence you, or phase you out of the picture.
If the place at which you work doesn’t respect you, listen to you, or value your opinion by at least giving it a chance to be examined, then you have to do two things:
1. Bring this issue up in meetings, ask questions about why your opinion wasn’t considered, or at least discussed. Make sure you research and proof-of-concept your ideas before representing them.
Provide data. Data always wins for those who follow practical ways of making better solutions. Also, have evidence – show previous experiments with other places that used the same solution, or similar to the same problem.
Be diligent and make sure everyone hears your concerns about not being heard, valued, or respected. Take care never to put yourself in a place where you’ll be undermined.
2. After doing the first step, watch, wait, and observe change. See how your organization and management/leadership reacts – if they care they’ll change, if they don’t care then neither should you and you’re better off going somewhere where every employee’s opinion is valued and respected.
Don’t tell yourself to wait for just a little while until something better comes, or there may be something better around the corner. The psychological toll on you from being marginalized will hurt your self-respect and confidence for a long time, and maybe irreparably – so be careful there. The downward spiral can be a dangerous, fast, slippery slope.
If you’re respected in your organization, but you see others not being offered the same respect, say something. Maybe one day it’s going to be your turn, so make sure everyone gets treated fairly and all voices are heard, respected, and given fair opportunities.
Your Well-Being
You should feel cared for in every way – in terms of compensation, health, education, and such. Do you work in a good place? Are you comfortable in your environment? Are you offered better ways to commute?
In short, does your organization actually care about your well-being and satisfaction.
In this industry, any distractions might hurt your productivity. It’s the responsibility of your employer to make sure you have as little distractions as possible, in life, at work, or any other way as much as they can.
As a software engineer here are just a few of the things you should expect from your employer:
1. You’re being paid fairly, based on your position and responsibilities, but you should also check out the market and consult with recruiters in the area and ask them about the average salary for your position. Demand a salary that’s fair and equivalent to your skillset and the market. Recruiters are your best bet when it comes to understanding the market, so make sure you stay close and communicate with them – they are always helpful.
2. Your workplace should be comfortable. Don’t ever settle for poor chairs or small desks. Your work space should fit you ergonomically so your body does not experience pain or discomfort. Your job is very important and requires a ton of focus, and that requires comfort. If you’re not comfortable you will not be able to perform your job the way you should, so demand properly fitting chairs, correctly adjusted monitors, keyboards, desktops, footrests if necessary, and any other accessories you may need. Your workstation should be set to your comfort on your first day of work – expect nothing less.
3. Are you being taken care of from a health and education perspective? Does your work take care of your health issues? Does it allow you to have a proper vacation time for yourself, or when you have a baby or needing sometime to mourn a loved one? In other words, do they care about your mental health and well-being as a human? All of these things play a big role of whether you should continue to be where you work. You should never have to fight to make it happen – find a place where they respect and value your skills enough to offer perks that show respect to you in every way.
Software engineers are the money-makers in the software industry, everything and everyone else revolves around what engineers create. Marketers, designers, managers, administrators, vice presidents, and CEO, none of that matters if there’s no software. And guess who makes the software? You! Therefore, you should be treated with utmost respect and provided the best comfort levels your employer can afford to offer. Never forget that. You are a very, very important component of your company, ergo, that should reflect on the tools and amenities you are provided in order to do your job well.
At the end of the day, remember that your time is very limited, and your life and genius is best spent on something that matters and with those who value your talent, and invest in your growth and look forward to what you can be.
Don’t sell yourself short. Don’t be fooled. Stay vigilant and informed.
Be kind to everyone, but remember there’s a fine line between being observed as kind and weak. Make sure you make that abundantly clear and don’t think about ways to be the best in your team, but rather think how to be the best for your team.
After all, it’s those who work with you every day who are the ones that know everything about what you can do, and decide to continue to work and grow with you!
It’s their implicit way of saying, we like to work with you. Therefore, make sure you communicate with your team, voice your concerns, create a public opinion, and engage in positive discussions to change everything for the good!
Remember that when you try to push for change, you’ll be faced by those who try to silence you, intimidate you or shut you down or accuse you for not being grateful or thankful for what you got, Even though you work for their own benefit not just yours. But if you’re patient, fearless and kind good things will happen, because in every successful organization out there, there will be those who feel what you feel, and aspire to what you aspire to, so all it takes is just for you to shout a little louder, so they can hear you and help you get to where you want to go.
Sincerely yours,
Hassan Habib