DEV Community

Cover image for Cold Hard Truths About Software Engineering I Understood After 9+ Years
Nick Bull
Nick Bull

Posted on • Updated on • Originally published at blog.nickbulljs.com

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.

  1. Business
  2. People
  3. Coding

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.

"What's this?"

Communication skills.

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:

  1. 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.

  2. 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.

  3. Corporate culture.

    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.

Nobody Cares

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”?

Probably “coding.”

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...

I’m writing a book “Nail The Technical Interview And Land A High Paying Job” where I reveal everything I've learned about interviews during 6+ years working as a software engineer (applied more than 110 times, failed 25+ job interviews, and got 17 job offers in summary)

What's in?

✔︎ A proven system of how to exactly prepare for each step of a job interview, pass it successfully, get an offer, and land a job.

✔︎ How to get a job offer even without a degree and work experience.

✔︎ The missing knowledge what ONE thing every employer is looking for in every candidate.

✔︎ Questions to ask recruiters that make you instantly stand out from the other candidates.

✔︎ The exact steps to create a resume that sells you enough to invite you to an interview and get a recruiter phone call.

And many more on how to exactly prepare for a technical interview and nail it.

Join here.

Have a great one!

– Nick

Also, every week, I send out my "3-2-1" newsletter with 3 hand-picked articles from me, 2 web development guides from others, and 1 useful Tweet I enjoyed.

🔥 Join 800+ developers here🔥

Top comments (37)

Collapse
 
johnkazer profile image
John Kazer

I guess a key thing missing from the post is the purpose to which the software you create is put. If there is a strong purpose or value behind the software then it can become more than "a job is a job".
Engineering is a broad sector but putting your creativity into using code to solve climate change or social issues might change your perspective.

Collapse
 
nickbulljs profile image
Nick Bull

Agreed John!

In the article, I just listed the ugly sides without listing anything good about software engineering.

If a person can find a strong purpose behind what they doing, the job will not be JOB for 100%.

Collapse
 
johnkazer profile image
John Kazer

Need a follow-up on the warm fluffy truths about software engineering :-)

Thread Thread
 
nickbulljs profile image
Nick Bull

I should :)

Collapse
 
ssimontis profile image
Scott Simontis

I think the problem is that many companies don't produce interesting software. At most enterprises, you will probably be creating endless variations of MVC apps so employees can fill out hideous looking forms or generate dashboard reports. There's also a lot of low-velocity teams which make it demoralizing to work because you know you'll fail yet another sprint because 70% of your week is spent in pointless weekends.

The meaningful jobs are out there, they are just harder to find. I did learn, much to my ego's disappointment, that finding an awesome recruiter will open up far more opportunities than weeks spent on job boards. And I cannot overstate the value of having a strong network, biggest mistake I made in my career.

Collapse
 
pysimplegui profile image
PySimpleGUI • Edited

What I learned in 40 years of software development and managing engineers.

SOME companies and some managers suck, but that does not mean "Nobody cares". Some do. More than you likely know do.

Your singular path is unique. Mine is too. I'm not sure it's accurate to extrapolate quite so much from your path to imagine it as being the same for everyone else everywhere. There's danger in labeling your experiences as "cold hard truths" as they are closer to opinions. While they're true to you, they won't be for everyone (I suppose thankfully given what you've surmised to be the truth).


I'm also having some trouble with your math.
In this article, written Jan 2021, you've got 9+ years in software
"I've learned over 9 years as a programmer."

A few days ago, on Dec 31, 2020, in the article "How I Effectively Overcame Impostor Syndrome As A Software Engineer", you had 6 years of programming experience
"I started my career as a programmer 6 years ago."

Something's not adding up. 3 years gained in 18 days doesn't compute.

Collapse
 
nickbulljs profile image
Nick Bull • Edited

I don't divide everything into black and white.

I know (and met) great caring people, but the point of the articles to show the ugly sides and not "the magical world of software engineering" so that people know the other sides as well. Appreciate your feedback, it also helps with that.


I got my first job in 2014 as a software engineer, but I'm in the tech field from 2011.

Collapse
 
pysimplegui profile image
PySimpleGUI

The title of the article "Cold Hard Truths" doesn't reflect what you've just stated.

A truth is black and white. A truth is that there are 24 hours in a day on Earth. "Nobody Cares", isn't a truth, it's not even your story. It's a recount of a friend's story. You've stated your opinions, based on limited first-hand experience.

I don't normally reply to Dev.to articles. Something about this one reminded me of why I left Reddit. There I experienced kids giving kids career advice that was terrible. Or told things that simply aren't true with the confidence and volume behind their message that it's "THE Truth".

The quote you used to close your article, "In the end, I want to quote the brilliant words of one software engineer:", Google reported 3 hits. This article, your blog, ...., and Reddit.

Thread Thread
 
nickbulljs profile image
Nick Bull

Good point:

"A truth is black and white. A truth is that there are 24 hours in a day on Earth. "Nobody Cares", isn't a truth, it's not even your story. It's a recount of a friend's story. You've stated your opinions, based on limited first-hand experience."

I'll work on my mistakes, thank you.

Thread Thread
 
pysimplegui profile image
PySimpleGUI

Thanks Nick... I'll do the same. I'm far from perfect, make plenty of mistakes, and will keep working on them. I appreciate you listening and having a conversation.

Collapse
 
ash_grover profile image
Ash G

I agree 100% that communication skills matter more than people think. Majority of the time I'm communicating with relevant stake holders to get the requirements down or get clarifications and feedback.

Collapse
 
gergelyorosz profile image
Gergely Orosz • Edited

When you say "FAANG Are Highly Overrated" - is this coming from personal experience? It's hard to tell from what you shared.

I'll share my two cents, as I have worked at Uber, where the work culture is very similar to "FAANG". I had colleagues who came from all of FAANG and the points you listed feel counter to my experience, or to the experience of people I know at "FAANG".

1. "You are a small cog in a big machine"- umm... not in all cases I've seen. If anything, at Big Tech, you know exactly how your team's work feeds into the bigger picture. What metrics you own, how much revenue you generate. This is especially the case for Apple and Netflix who run lean teams, frequently for Amazon and Facebook. Google has a few pockets of teams like this, but internal mobility is so good that it's rarely an issue.

"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" --> This seems made up. Google will shut down teams that do not do meaningful work and don't create value that can be quantified. You are right that there are many internal products and teams, especially at Google - like build systems for Chrome. These internal products usually have at least 1,000 internal customers (e.g. Borg, Dapper, Viceroy, Critique). More an more, they are more likely to be open sourced. And if you don't like it: there's internal mobility.

2. You are going to be putting the job in front of everything else in your life. - I don't know, maybe? At some places? At Uber, I got 4 months paid parental leave, that I took in full, not checking emails once (this is global policy). While work stress is probably higher than a small office with non-global products, I had more stress at a previous startup than at Uber. In general, many startups are often more stressful than Big Tech. And the most stressful of all is crunchtime at AAA game dev studios.

3. Corporate culture. All your points here describe any company with a certain size. When you're a place with more than 100 people, and someone has an idea they think others should do, they need to convince them. So they start to influence them. And this is what ultimately politics is.

In my opinion, it's actually a good experience to see what a place like this is. How can you, as a software engineer influence a bigger group? It's a very different skillset, and one that will serve you well. If you fail to do this, you'll find yourself leaving any successful small company and startup that grows to 100 people or more.

Collapse
 
nickbulljs profile image
Nick Bull

Hey Gergely, first of all, I listed the ugly sides, and my experience comes from ex FAANG developers with whom I worked in YCombinator startup and projects for Big 4.

I don't divide everything into black and white and know about survivor's mistake. I am very well prepared and know what I am writing about.

Second of all, I know that all experience is different and appreciate that people share in the comments their world view that is not similar to mine.

But Gergely, you write first "you listed feel counter to my experience," but in the second part of your comment you "half agree with me." So I can see that you can relate to some of what I'm sharing here.

Still, it's good to see you here and I agree with "it's actually a good experience to see what a place like this is" and know later benefits of it, but not for all.

Collapse
 
gergelyorosz profile image
Gergely Orosz • Edited

I still disagree with the notion of these large tech companies being “highly overrated”. I’d encourage everyone to find out for themselves and not rule them out. There are a lot of upsides not mentioned - engineering culture, networking, the alumni, compensation with equity and many others.

A gig at one of these places - even if it does turn out to be one or all the bad experiences you listed - will open up a lot of new doors for people. Like make it easier to get accepted into places like YC :)

Good luck with your book!

Thread Thread
 
nickbulljs profile image
Nick Bull

Highly agreed with this one:

"I’d encourage everyone to find out for themselves and not rule them out"

Thank you!

Thread Thread
 
gergelyorosz profile image
Gergely Orosz

And by the way, thanks for writing such a thought-provoking article! I'd much rather read one like this, than one that starts, continues and ends with "well, it depends" :)

Collapse
 
eonuk profile image
eonuk

Nobody cares. People you considered friends often stab you in the back for a promotion or more likely to protect themselves. If you have the misfortune to be laid off after 10+ years, you realise the only thing you are left with is the wealth you made during that period. Never have any unfound loyalty for a company - if they can get rid of you, then they will.

Collapse
 
rafiksamman1982 profile image
rafiksamman1982

You can either be a big fish in a small pond or a small fish in a big pond, or you can build your own pond and be the only fish in it.
That's the main difference in working for software companies. Depending on company culture, the perks can be great or they can be bad or non-existent.
This article is a little too negative. Not all managers are assholes. And you certainly have options when a manager displays such qualities.

Collapse
 
realtoughcandy profile image
RealToughCandy.io

Awesome post. The Nobody Cares section really made me stop and think.

Collapse
 
nickbulljs profile image
Nick Bull

Thank you!

Collapse
 
schmowser profile image
Victor Warno

Thank you for speaking about this! I share your points that more money will no necessarily make you happier and software development is more than writing code. And yeah, even that 90% of your code is pushing data around! But as long as we know these things, we can be honest with ourselves and determine what we really want and what to do to get there!

Collapse
 
nickbulljs profile image
Nick Bull

Thank you Victor!

Love this:

"we can be honest with ourselves and determine what we really want and what to do to get there!"

Collapse
 
b_bee_ate profile image
Satish Patel

Why do I feel that this article and the book you are writing contradicts each other. This article talks about Cold Hard Truths About Software Engineering making it a simple notion of why one should avoid as the first understanding but the book you are writing is about how to get a software engineering job.

Collapse
 
nickbulljs profile image
Nick Bull

The article is my reflection and thoughts. In it, I only listed the ugly sides without saying anything good about it. It's not a promo for the book.

Collapse
 
pysimplegui profile image
PySimpleGUI • Edited

Why not revise it to be balanced?

This page isn't your private journal where the purpose is to vent with the hope of you feel better as a result. You're publishing an article that may very well impact the decisions and actions of others.

Thread Thread
 
nickbulljs profile image
Nick Bull

Because I'm an author, and that's my writing style. I don't agree that sharing "balanced" thoughts is the "right way" to write.

I understand that very well: "You're publishing an article that may very well impact the decisions and actions of others."

Thanks for the feedback!

Collapse
 
itscoderslife profile image
Coder

Nice article. Exactly what I feel about big fortune product companies. I have worked in both consultancy and product. Big and small teams. I can clearly understand what you are saying. Thanks for the article :)

Collapse
 
amiamigo profile image
Ami Amigo

Interesting! Well if you stop thinking about money a bit...and examine your life...you will realize that life is way more than a paycheck. I had same experience as a developer and saw first hand how someone who was going through a surgery was expected to get back to work before his recovery. The sad thing though is the employees and their golden chains...they don't realize that they are in the cave.

Also I found it kinda ironic you a writing a book about getting a high paying job...most of those jobs unless you made them for yourself...will take the life out of you

Collapse
 
machineno15 profile image
Tanvir Shaikh

Real Truth Spoken.
but i want to know how can we come out of rat race & still have a good job..

Collapse
 
paugustinak profile image
Peter A.

A little depressive article, but basically truth. But I cannot agree with this point:
"[The companies] Don’t care about who you are, what you like, and what you stand for."
Lot of companies care about those stuff, and mainly recently (I'm talking what I can see after 17 years in IT) - as there is still more and more requests for IT jobs and still not enough people (at least not enough really skilled), the companies trying to care a much about your well being. Experienced engineer knows very good, that money is not all and there are many factors how to choose your job. Companies must care much more than your paycheck this times.

Collapse
 
bikash9609 profile image
Bikash9609 • Edited

The thing that people prepare themselves for competitive programming just for the sake of fame and to show their points or ranks on some website rather than programming itself is really not good. People should code not JUST to get into some big companies rather to find something creative which makes life more easier. And I am not saying people should not prepare for gian companies but only if they really want to. Not because it's a trend.

Collapse
 
nickbulljs profile image
Nick Bull

Wise words here

"people should not prepare for gian companies but only if they really want to. Not because it's a trend."

Collapse
 
jaydwayne profile image
Jay Dwayne

Hey Nick, what suggestions do you have for the Software Engineers to up their game in Communication

Collapse
 
nickbulljs profile image
Nick Bull

Hey Jay, 95% practice and 5% theory.

  • Practice speaking about the code (try to explain complex development concepts to 5-year-olds)
  • Go to local technical events or apply online during the Corona Virus era
  • Join Discord/Facebook/Telegram groups and socialize there
Collapse
 
aboutandre profile image
aboutandre

...buy his book. ;-)

Collapse
 
nickbulljs profile image
Nick Bull

I don't disclose this topic for 100% in the book, so don't buy it if you want to improve your communication skills