Cold Hard Truths About Software Engineering I Understood After 9+ Years
Software engineering is not a magical place where everyone has a six-figure salary, works on projects they like, and changes the world.
Like any job, software engineering has its good, bad, and ugly sides.
Today I'm going to talk about the ugly sides that I've learned over 9 years as a programmer.
Communication Skills Matter More
Many developers confuse the terms programming and software development. It’s two different activities that have one main thing in common – coding.
Programming is about solving problems with code. It is often a solo activity.
Software development is about design software from an engineering perspective with consideration for end-users, clients, and business needs. It is often a team activity.
To be successful in programming, you need to be great at solving problems with the code. But it takes a lot more to be successful in software development. Coding is not the main priority here. Actually, it’s number 3.
That’s why coding skills are not enough to lead to a successful career.
"What to do? Learn about business or people?"
Good idea. But here is the better one.
Learn one skill can give you significant improvements in all three areas.
Very few software engineering jobs are 100% or even 70% or 50% technical, most teams spend a lot of time in meetings, planning, coordination, and team buildings, where communication skill plays the main role.
Until I realized this, communication was my Achilles heel and kept me from growing in my career. After I started to improve it, my position, responsibilities, and salary began to grow.
FAANG Are Highly Overrated
FAANG companies (tech giants like Apple, Facebook, Google, and others) have money for marketing companies and big salaries to make developers from all over the world fighting to work at one of them, and it's obvious why. You work in a “famous” company, have many bonuses like health insurance and free meals, and the line "Worked at FAANG" on your resume gives you a great opportunity right after quitting it.
But not everything is as magical as it seems.
Here are big 3 disadvantages I realized about FAANG that stopped me from wanting to work for them:
You are a small cog in a big machine.
Many developers have wet dreams that they will work on significant and famous products when they get a job at Google, like YouTube or Google Search. But in reality, it’s often not. There's a good chance you'll be working on a small part of some internal Google product that no one will ever see outside of your team of 10 people. Your area of responsibilities may be so small that it will be almost invisible. That feeling of a small cog in a big machine can make you miserable in the long term if you're not suited for it. I personally hate this feeling. That’s why I’m not ready to trade freedom for the opportunity to work for a large and well-known company.
You are going to be putting the job in front of everything else in your life.
After reading tons of articles where people working in FAANG complain about their real working hours and how they don’t have time for their families, I realized that it’s not for me. Before applying for a job in some big tech giant, I suggest you read this great article, where the person who is working in Apple and getting $625.000 per year, questioning what he trades for money.
Corporate culture is not for all. It’s often a rat race, whether you work at Google or in a traditional bank. Corporate culture is a systematic structure for benefits, pay raises, and promotions. In such a big system, your work can easily become invisible no matter how good it is or disregarded because of management ambitions, even with the best intentions at all levels. Decide for yourself, is it worth it to work at FAANG and play political games or not.
Working for FAANG companies has its benefits, but it’s not the best possible job you could get. Always learn about the pros and cons of the company before applying for a job.
I have a friend who was working as a software engineer in a big company and one day he had a personal problem during the workweek, so he needed to take a couple of days off to solve it.
He went to his manager, told him about the situation, and asked for a day off. The manager easily approved it.
After a couple of weeks, when my friend and his manager have a 1:1 meeting, he was blamed for wasting work time on personal problems, even when he took a day off, in his free time.
After this situation, he thought it is not okay to place his needs above the company’s needs. That job must be the #1 priority in your life.
And it’s not a single case. After 9 years of working in the tech field, I heard dozens of stories similar to this and realized that most companies don’t care. Don’t care about who you are, what you like, and what you stand for. Companies only care about one thing, whether you can solve their problem or not.
When my friend told me this story couple of weeks after it happened, I told him these words that changed his mind about priorities by 180 degrees:
“You will change many jobs in your lifetime. You will forget 90% of the people you worked with. Your managers will change every couple of months, and everyone will have a different leadership style and strategy for developing the product. You will meet dozens of different company cultures, and every company will claim that only their culture is authentic.
A lot of things will come and go from your life, but they are temporary things. The only permanent thing is you.
When you realize this, the number one priority for you will become not some job or some product, but you.
Do your best job, but do it for yourself, not for someone else.”
Not Everything You Will Do Is What You Love
What is the first association when you hear the words “software engineer”?
But it’s not the first association for companies.
Their association is “can solve our problem with code.”
Both associations are very similar but at the same time absolutely different.
The truth is you are paid not for “just coding,” you are paid to solve business problems with the code. And if you can solve them without coding, companies will still pay you.
I know inside most software engineers are programmers, and we love coding. We love building things with the code. But as I said, programming is not the same as software engineering.
In software engineering, business and its problems stay in the first place, with all its downsides. It’s not a side project you are passionate about. You will do things you don't agree with, you will work with technologies you don’t know, and you will meet people you don’t like.
Job is a JOB.
It’s an adjustment to get used to working every day for 8 hours. It’s an adjustment working with different people with different personalities.
What you are doing is pays you very well, but it’s still a job.
In the end, I want to quote the brilliant words of one software engineer:
“In the end, all software engineering projects boil down to "get data from here, build some pipes for it to get to this other place, maybe transform it a bit, and maybe display it" ad infinitum. 90% of the code you will write isn't interesting, just necessary.”
In the end...
Right now I’m writing a proven and reusable system for any developer who wants to go from being unemployed and fearing a job interview person to getting multiple job offers and having a crystal-clear understanding of how to ace software engineer job interviews. It’s a book where I reveal everything I’ve learned during 6 years working as a software engineer (applied more than 110 times, failed 25+ job interviews, and got 17 job offers in summary)
- A proven system on preparing for each step of the job interview from A to Z, successfully acing them and getting a dream software engineer job.
- How to get a job as a developer without having a degree and work experience.
- What exact 4 things every company looks for in every candidate for a software engineer position.
- The exact steps for creating a resume that makes you stand out from the crowd and gets you an invitation to interview.
- My Deep Preparation System to productively prepare for a technical interview in a short period of time (no, you don’t need to prepare for months)
- 8 steps framework to negotiate an offer and get the best deal possible (you could easily be leaving $10K, $40K, $90K+ on the table if you don’t know how to negotiate)
And many more on how to exactly prepare for a Software Engineer interview and nail it. Add your email here and I will notify you when I release it with bonus for you.
If you like this article you need to know that every Monday, I send a letter to 4,000+ Web Developers with 3 hand-picked articles from the tech world, 2 web development guides, and 1 best Tweet of the week
“Your newsletter is f**king awesome, really Nick. It gives me a great start to the week with a lot of great knowledge.”
Join smart developers who get short and full of knowledge letters for free here.