Last weekend I had a chance to talk with some students who just got their degree. They are pursuing their first software engineer job. In conversation with them, I learned that they have a pretty wrong perception of this job.
This is because the reality for these new kids is so skewed. They only see good pay, remote work, team building, and pizza parties.
These are all good perks, but no one is talking to them about the real things that we do in this job.
As someone who spent a lot of years in this industry, I gave them a slap of reality in the face. I told them good things but also some hard-to-swallow truths.
After reading this article, some people will say I am talking overly negatively about it. but my opinion is that these things go together with the job and you have to accept it.
1) College will not prepare you for the job
This is the first thing I explained to these guys.
To precisely describe how college will prepare you for the job imagine that you are learning how to swim.
Your instructor spends a huge amount of time to describe you all the moves you need to make. He makes you recite all those moves, asks you questions about it and you have exams about it. But you never touch the water.
After 5 years, you get a piece of paper that proves your swimming skills. Then the day comes, and you have to swim now. The guys in the swimming place just kick you into the water.
You have a hard time breathing, you fight for your life. Maybe you will drown, maybe you will manage to swim.
That’s what the first 6 months look like for a freshly graduated student in a software engineer job.
The college will prepare you for some basics, but what most of the colleges teach is so far away from day-to-day jobs. Most of the professors who teach at universities are not good software engineers.
Only a small percentage of them even worked as software engineers. Also, the university curriculums are heavily outdated. They trot years behind the software development market needs.
You have to put in extra work while you are in college. Code more projects besides homework and seminars. Do some volunteering. Learn about business domains to prepare for the job that awaits you.
Most of the students don’t do that. They wait until they get their diploma to start working on their portfolio.
2) You will rarely get greenfield projects
In college or boot camps, you get a lot of smaller assignments that you write from scratch. Total freedom to express yourself. You can implement all the fancy stuff you learn, like algorithms or design patterns.
The time you spend on those assignments is at most a few weeks, but mostly a couple of days of work. Typically those assignments contain at most 500 lines of code.
In day to day job you are working with projects that contain multiple layers and thousands of lines of code. Multiple people work at the same time on those projects. You have limited freedom, you have to adapt to the project. The time you spend on projects is usually half a year to a couple of years.
Sometimes you spend a whole week fixing the nasty bug. The fix is just a couple of lines of code. You talk with your colleagues. You exchange information about the project. You collaborate with them to get approval for your solution.
New projects are rare, and most of the time you work on existing projects. You can consider yourself lucky if you get the normal project and not some old legacy project.

3) Nobody gives a f*** about your clean code
You can forget that your boss will tell you: “Congratulations on writing this elegant and clean code, I am gonna give you a raise!”. Quite the opposite, nobody cares about your clean code.
Don’t get me wrong, people will expect you to write good and clean code. Still, you will rarely get any praise for it. Except sometimes from your colleagues who will review your code.
This may be a shock for some new folks, but it makes perfect sense. As a software engineer, your primary task is to generate value for users. Writing code is just a step that accomplishes that goal.
You can think of it as the following cycle:
- software engineer writes code
- users get new features
- more users use your products
- company profits from products
So code is just a tool to get profit.
I have seen so many graveyards of projects, with horrible legacy codebases. Still, these projects are successful as they have fancy landing pages and solve user’s problems. So users are happy to pay for using them.
The user doesn’t know how the codebase looks. The user just sees what features that product is offering. So don’t get overly attached to your clean and elegant code. Focus on shipping the feature on time and bug-free.
4) You will sometimes work with incompetent people
People have prejudices that only smart and competent people work in the IT industry. Especially the software development branch. But this is far from the truth.
A