Mousa Halaseh

March 5, 2021

Software Engineering is not the Kind of Fun You Think it is

When people start learning Software Engineering they often create an image in their heads of what their daily job would be like and it’s only when they land their first job, it strikes them, this is not what I thought I’d be doing!

It’s a late Friday night, I’m sitting on my DELL Pentium III Desktop back in 2006. Most kids my age would spend their time playing video games, like Doom and Super Mario, and so did I, but I also had a different passion, I used to stare at these gorgeous boards in wonder, thinking of how they came to be. 

Running Windows 98 at the time, I used to start the cmd (Windows command prompt) and wonder if it’s possible for me… umm, to talk to this thing? I used to type things over and over again, only to receive back the one true response:

‘“how are you?”’ is not recognized as an internal or external command.

Yet deep down I knew, that one way or another, I can get a response back, it’s just that I realized that computers don’t understand plain English. (later in life I learned that computers take a sequence of instructions, execute them, and then give you back the result. Those instructions though can be written in a high-level programming language that can be very close to plain English (Looking at you Ruby ).

Then it all began, I started fantasizing about having that cool job where I’d be building the next-level computers, sitting in front of 4 monitors writing code that would change the world as we know it, to developing those sexy holograms and what not!

Fast forward to 2019, I graduated with a bachelor’s degree in Software Engineering and got my first job, and then reality hit me:

  • I’m building products that… well, automate manual work that our clients used to perform themselves. (because actually isn’t that what programming is all about after all?).
  • I’m not innovating, I’m developing apps on-top of what thousands of people have innovated, and in return, I’m not giving back anything? that’s when I decided that I must be part of the open-source community, but this is a topic for another story.
  • I’m not doing those cool things we all see in the movies, truth is, Software Engineering isn’t that, you don’t type 467 commands per second and get your computer to go brr, they’re not real!

Overall, I’m not doing any of those things the young kid in 2006 had imagined me doing (obviously). But that’s not a problem that is unique to me, almost all engineering majors, at some point in their lives, have decided to join the industry because of all the cool things they may get to work on, yet one should know that, frankly, the chances are you won’t get to work on anything interesting straight out of school, and that’s okay! 

Almost all of those great things you might think about are most likely not built by a straight-out-of-school guy either, the point being that many people would be struck by how much the real-life workplace differs when compared to what they may have imagined, and this can happen for many reasons including:

  • Movies & TV Shows depicting engineers working with the most advanced, interesting, and exciting technologies, while tackling interesting issues every day at work. Which in reality doesn’t happen every day.
  • Schools being so out of the loop; by teaching you the theory with no regard to how you could apply this to real-life applications. Only doing theoretical assignments, and not taking into account the “margin of error” in the real world (in case you’re also building hardware), will neither prepare you nor give you an idea of what you’re going to be working on after graduation.

Some people would quit and change the industry as soon as they realize what their day-to-day job is like, many others would stick around. If you’re just starting out then you should realize that: Yes, you need time to make an impact, and yes Software Engineering is a job just like any other (I could never emphasize this enough).

So where do we go from here? does that mean Software Engineering is actually not fun? 

Well, NO! Software Engineering is so much fun, only in a different way:

  • Coding is art, and that amazing feeling you get when all of your tests pass and your code works as expected will never go away! you’re gonna love it. Every. Single. Time!
  • It’s that moment at 03:00 AM when you solve that critical bug that has been haunting you for days, and you get to sleep happily ever after (well, of course, until your code breaks again).
  • And that evening when you’re collaborating with your co-worker on an issue and you get to both share your ideas together, tackle it one piece at a time, and finally get it out the door.
  • It’s just knowing that you have the power to build anything and everything you want.

Engineering is magic, Or at least the closest thing to magic that exists in the real world — Elon Musk

People often confuse Software Engineering to be a different kind of thing; it’s not what you see in the movies, and absolutely not exciting all the time. One day you’re writing code, another day you’re writing tests, writing documents, reviewing other people’s work, and did I even mention meetings?  (daily meeting, design meeting, sprint meeting, retrospective meeting… the list is endless).

All in all, coding is so much fun, building things could never grow boring. That young kid from 2006 is still rooting for me, and I ain’t gonna let them down. Everyone starts somewhere, so start small and only grow bigger, becoming a Software Engineer has been the best decision I’ve made in life so far.