10 hard-to-swallow truths they will not let you know about software program engineer job

Final weekend I had an opportunity to speak with some college students who simply obtained their diploma. They’re pursuing their first software program engineer job. In dialog with them, I realized that they’ve a fairly flawed notion of this job.
It’s because the truth for these new youngsters is so skewed. They solely see good pay, distant work, staff constructing, and pizza events.
These are all good perks, however nobody is speaking to them about the actual issues that we do on this job.
As somebody who spent a whole lot of years on this business, I gave them a slap of actuality within the face. I instructed them good issues but additionally some hard-to-swallow truths.
After studying this text, some individuals will say I’m speaking overly negatively about it. however my opinion is that these items go along with the job and it’s a must to settle for it.
1) School won’t put together you for the job
That is the very first thing I defined to those guys.
To exactly describe how faculty will put together you for the job think about that you’re studying methods to swim.
Your teacher spends an enormous period of time to explain you all of the strikes that you must make. He makes you recite all these strikes, asks you questions on it and you’ve got exams about it. However you by no means contact the water.
After 5 years, you get a chunk of paper that proves your swimming expertise. Then the day comes, and it’s a must to swim now. The fellows within the swimming place simply kick you into the water.
You’ve got a tough time respiration, you combat in your life. Possibly you’ll drown, possibly you’ll handle to swim.
That is what the primary 6 months appear like for a freshly graduated scholar in a software program engineer job.
The faculty will put together you for some fundamentals, however what many of the schools train is so distant from day-to-day jobs. Many of the professors who train at universities will not be good software program engineers.
Solely a small share of them even labored as software program engineers. Additionally, the college curriculums are closely outdated. They trot years behind the software program growth market wants.
It’s important to put in additional work if you are in faculty. Code extra initiatives moreover homework and seminars. Do some volunteering. Find out about enterprise domains to arrange for the job that awaits you.
Many of the college students do not try this. They wait till they get their diploma to begin engaged on their portfolio.
2) You’ll hardly ever get greenfield initiatives
In faculty or boot camps, you get a whole lot of smaller assignments that you simply write from scratch. Whole freedom to specific your self. You’ll be able to implement all the flamboyant stuff you be taught, like algorithms or design patterns.
The time you spend on these assignments is at most a couple of weeks, however principally a few days of labor. Usually these assignments include at most 500 strains of code.
In each day job you might be working with initiatives that include a number of layers and 1000’s of strains of code. A number of individuals work on the similar time on these initiatives. You’ve got restricted freedom, it’s a must to adapt to the challenge. The time you spend on initiatives is normally half a 12 months to a few years.
Generally you spend an entire week fixing the nasty bug. The repair is simply a few strains of code. You speak along with your colleagues. You alternate details about the challenge. You collaborate with them to get approval in your resolution.
New initiatives are uncommon, and more often than not you’re employed on current initiatives. You’ll be able to think about your self fortunate in case you get the conventional challenge and never some previous legacy challenge.

3) No person offers a f*** about your clear code
You’ll be able to neglect that your boss will let you know: “Congratulations on scripting this elegant and clear code, I’m gonna provide you with a increase!”. Fairly the alternative, no person cares about your clear code.
Do not get me flawed, individuals will anticipate you to jot down good and clear code. Nonetheless, you’ll hardly ever get any reward for it. Besides generally out of your colleagues who will evaluate your code.
This can be a shock for some new of us, nevertheless it makes excellent sense. As a software program engineer, your major activity is to generate worth for customers. Writing code is only a step that accomplishes that objective.
You’ll be able to consider it as the next cycle:
- software program engineer writes code
- customers get new options
- extra customers use your merchandise
- firm income from merchandise
So code is only a software to get revenue.
I’ve seen so many graveyards of initiatives, with horrible legacy codebases. Nonetheless, these initiatives are profitable as they’ve fancy touchdown pages and remedy person’s issues. So customers are comfortable to pay for utilizing them.
The person does not understand how the codebase appears. The person simply sees what options that product is providing. So do not get overly connected to your clear and chic code. Concentrate on transport the characteristic on time and bug-free.
4) You’ll generally work with incompetent individuals
Individuals have prejudices that solely good and competent individuals work within the IT business. Particularly the software program growth department. However that is removed from the reality.
As in each job, you’ll generally have incompetent individuals in your atmosphere. Working with them may be very irritating. They waste a lot time and create a poisonous atmosphere. On prime of that, they’re extraordinarily unproductive. All this displays on deadlines and produces delays. This prices firms cash and assets.
Sadly, I additionally had expertise working with these varieties of individuals. I’ve to say, they examined my nerves so effectively that I spent a great period of time considering of the way to get round their incompetence.
Listed here are some recommendation:
- attempt to be environment friendly and productive as a lot as you’ll be able to, concentrate on your self and never on them
- attempt different choices/options that do not contain that particular person within the course of
- doc every part you do. If issues go flawed, you should have proof of their incompetence
- in case you have a blocker as a result of that particular person did not do their job, attempt to ask another person to unblock you (if it is attainable)
- speak on to them, be skilled however not imply, and inform them what and the way they will enhance
Do not forget that there is no such thing as a should be a jerk to them.
Generally you do not know the entire story. I’ve seen some instances the place an individual simply cannot do their job correctly. They’re burdened with tons of duties and doing work for two individuals.
5) Get used to being in conferences for hours
Conferences are an vital a part of the software program growth job. A few of them are good, however a few of them are simply time wasters.
There are recurring conferences scheduled on a each day or weekly foundation. Most of those will not be productive. The vast majority of them are compelled by an individual who’s organizing them as a result of that is the one “work” that that particular person is doing.
It is simply an empty protocol to show their objective of existence within the firm.
Then again, there are productive conferences. These conferences guarantee data alternate between staff members or completely different groups.
The vast majority of software program engineers hate conferences. However do not forget that your job can also be to speak about issues brazenly and proactively.
Sharing data is essential for initiatives to maneuver ahead. While you share data it may possibly assist different groups to raised perceive what you might be doing and the alternative.
6) They’ll ask you for estimates a whole lot of occasions
Enterprise revolves round numbers. Each challenge has its value, and to calculate the price, administration must estimate how lengthy it should take to construct a sure characteristic.
Then, it goes all the way down to software program engineers to estimate their work. Often, estimates are time-based, however generally in addition they ask for complexity estimates.
In a whole lot of conditions, you should have no clue how lengthy it should take to construct one thing. You learn necessities, perform some research and also you give a quantity.

Later, while you begin to work on that characteristic, you encounter many issues that you simply weren’t conscious of while you gave time estimates. Then that you must compensate for the wasted and hope to not break the deadline.
That is why it is at all times good to underpromise however overdeliver.
For instance, when your challenge supervisor asks you to implement characteristic X by Friday, you will not say “Oh, I can end it by Tuesday”. As an alternative, you’ll say: “Positive, no downside”.
Why?
As a result of in case you promise to ship it by Tuesday and also you run into some issues, you will not be capable of fulfill the promise. As an alternative, in case you settle for Friday as a deadline, and also you end it by Wednesday, you’ll be able to ship it 2 days earlier.
There are a whole lot of formulation on methods to do estimates, and everybody has their very own guidelines. I even have my very own guidelines.
If I must ship some characteristic, and I believe it should take 2 days, I add roughly 40% extra time to it, simply to be secure. So, on this case, the estimate will likely be 3 days. Later, if I’m carried out in 2 days, I can simply ship it earlier.
7) Bugs will likely be your arch-enemy for all times
The extra you code, the extra you might be conscious that bugs within the code are in all places. When you’re simply beginning with programming, you assume you’ll code one thing, it should work tremendous and it is the top of the story.
However in actuality, it is a completely different story. There are numerous issues that may produce bugs:
- your personal code – people make errors, and you shouldn’t belief that code is working completely. You’ll be able to write assessments, however bugs can happen after that as a consequence of varied causes that you simply aren’t even conscious of.
- third get together libraries – these libraries are additionally written by software program engineers such as you and me. All the time look ahead to exercise and the way steadily these libraries are up to date.
- {hardware} failure – software program depends on {hardware}. Mark Hanna defined what your software program is with out {hardware} in his quote: “It is fugayzi, fugazi. It is a whazy. It is a woozie. It is fairy mud. It does not exist. It is by no means landed. It’s regardless of. It is not on the basic chart. It is not f***ing actual.”

- electrical energy – yep, {hardware} wants electrical energy to run, with out it, it is ineffective. I labored on one challenge with Raspberry Pi. The shopper had fixed issues with the gadget turning off at random occasions. After days of investigation, we lastly came upon the problem. He used a special energy provide than the unique one supplied. Due to that gadget was turning off at random occasions.
So the reality is it is best to assume that every part has bugs. That is why skilled devs by no means belief their code if it runs efficiently on the primary attempt. Even when the QA engineer reviews a bug, assume that the bug ticket has a “bug” and test for every part.
8) Uncertainty will likely be your poisonous buddy
On this job, you’ll really feel uncertainty virtually on a regular basis.
I already defined the estimates instance above. That is only one instance the place you’re feeling uncertainty. You give your greatest shot however you aren’t 100% certain you’ll be able to end the work in that estimate.
In addition to that, there are numerous different issues which are unsure. Listed here are some examples:
- implementing one thing in your challenge you by no means labored with, eg. third get together API – how are you going to implement one thing you are not acquainted with
- switch to a brand new challenge, with new applied sciences – you’ll take into consideration how you’ll be environment friendly and productive with one thing that you must be taught
- transfer to a brand new firm – you might be not sure how you’ll settle in and vibe with new individuals
- bug report on the day that you must end the work – you concern that you’re gonna break the deadline
- job safety – financial conditions, pandemics, wars, and different components closely have an effect on this business which leads to layoffs
- the evolution of expertise – you might be by no means certain if tomorrow you might be gonna get replaced by some new applied sciences like AI
The benefit of uncertainty is that drives you to be a greater software program engineer. It calls for enhancements and studying if you wish to keep within the recreation.
9) It is going to be virtually not possible to disconnect out of your job
Every now and then, I catch myself fascinated about my job, issues, and bugs. Or issues I’ve to do tomorrow once I ought to calm down and chill.
Generally, chilly water within the bathe wakes me up from my fascinated about how I’m gonna repair the nasty bug I labored on yesterday. I had numerous squabbles with my girlfriend about why I’m on Slack once we are on the seaside.
So I publicly admit, that I’ve a tough time disconnecting from work.
It is particularly onerous to disconnect if you end up working from dwelling. In case your laptop computer is on, you’ll be able to at all times test emails or Slack messages.
So to keep away from all this:
- I flip off my laptop computer after I’m carried out with the work,
- I put quiet hours on my cell phone for my enterprise emails
- I pause Slack notifications after working hours. I disable them on weekends.
- When my thoughts will get into this “take into consideration work” loop, I attempt to instantly reduce it out. I remind myself that relaxation and leisure are vital to be productive.
- I take lengthy walks after work. On some days I do sports activities like padel or soccer.
- I attempt to have interaction socially as a lot as I can, avoiding display time after work.
Nonetheless, with all these steps I do daily, I fail a whole lot of occasions.
10) You’ll revenue extra from good mushy expertise than from good technical expertise
Technical expertise are those you’ll be able to be taught simply. With completely different initiatives, you’ll be able to perceive a selected programming language. You’ll be able to be taught its syntax, professionals and cons. It is only a matter of observe.
Then again, mushy expertise are a lot more durable to enhance. Enchancment takes a whole lot of psychological energy. You could do issues you aren’t snug with.
It’s important to put your self in conditions the place you’ll be able to enhance or observe explicit mushy expertise.
For instance, communication is one mushy talent that individuals at all times discuss. For example you suck at public talking. It’s important to power your self into conditions the place you’ll be able to observe some public talking.
It’s totally onerous to deliberately put your self into conditions the place you realize you’ll suck at. Your thoughts will do every part to keep away from these conditions. It’ll deliver tons of of excuses and it is simple to surrender.
In addition to communication, there are different soft skills:
- teamwork
- studying mindset
- group/time administration
- emotional intelligence/empathy
- approachability
- persistence/persistence
- confidence
I’ve met a whole lot of of us who’re good with technical expertise however terrible to work with.
For instance, one colleague would ask me for assist a whole lot of occasions. I helped him a few occasions. Then, I observed after we mounted his issues, he would come again to me and blame me for messing up different issues on the challenge. Then I needed to spend extra time with him fixing stuff I wasn’t even conscious of. And since he was blaming me with such a nasty tone, I finished serving to him. I might say that I’ve rather a lot on my plate to do, so I will help him tomorrow.
One other instance, I used to be the brand new man on the challenge. A colleague (let’s name him George) was assigned to assist me with something I wanted. I arrange the challenge just about on my own, however there was one error I used to be getting once I tried to run the challenge. I requested George for assist. He spent possibly 2 minutes with me in complete to resolve an issue and mentioned that he did not know the answer. I thanked him anyway, tried to resolve the error by myself however lastly succeded with the assistance of colleague Michael. On each day standup, George mentioned that he spent his complete day supporting me. I by no means requested George for assist, after that.
Yet one more instance, there was one colleague who was the principle man on the challenge. Nonetheless, the entire staff hated him (different devs, challenge managers, QA, designers, and many others). He was a great software program engineer, however an actual jerk. Extraordinarily impolite in communication with everybody. He by no means needed to confess he was flawed or settle for constructive criticism of his code. Administration tolerated him as he was at all times the loudest one within the room. When he lastly resigned, the entire staff was celebrating.
With good mushy expertise, individuals will such as you extra and you’ve got a greater probability of getting a increase or promotion. In case you are technically gifted however onerous to work with, your chances are high barely diminished.
Additionally, with good mushy expertise, individuals who know you’ll unfold a great phrase behind your again. They will suggest you for the job, with out even you figuring out about it.
Conclusion
Software program growth shouldn’t be a dream job.
Working in software program engineering typically means lengthy working hours. More often than not, you might be glued to a pc display, with little work-life stability.
The job calls for a web based presence, generally even after work hours. This typically results in stress and restricted private time.
Moreover, job satisfaction is steadily hindered by tedious duties. Relying on the state of affairs you may have restricted profession progress prospects. There’s additionally potential isolation in distant work. And there’s at all times a risk of job insecurity as a consequence of quickly evolving expertise.
However, there’s additionally constructive stuff.
Software program growth nurtures steady innovation. Software program engineers can create engaging purposes and remedy attention-grabbing issues.
The worldwide demand for software program options throughout numerous industries is massive. This implies there’s at all times a requirement for good software program engineers. Software program growth careers present flexibility with distant work choices.
It is one massive blessing to work from any location. Flexibility permits you to sleep within the morning with out an alarm. You’ll be able to work from your own home in comfortable pajamas. Additionally, you do not waste your valuable money and time on commuting.