Guides

Is Software Engineering Hard?

time icon
September 24, 2024

You’re thinking about being a software engineer and are curious about what awaits you on the other side? Wondering is becoming a software developer hard. What exactly does it take to be in this role?

There’s a lot to cover to address these questions. I’ll do my best! As a quick intro, I worked as a software engineer in big tech, mid sized and startup companies. I’ve been around the block. So I have a couple of cents on the topic, which hopefully you will find informative!

Also, I’m posting a number of guides on software engineering in this blog. Check them out, maybe you’ll find them helpful - behavioral interview guide.

Do you Enjoy Building

First, it’s important to recognize what type of work is software engineering. And does that match what you like to do.

Do you like building? Whether it be a lego set when you were younger, tinkering on the PC, wood working, etc. Building comes in many forms, so if that’s something that you enjoy doing, then software engineering would suit great. Because, essentially, the result of the work is a built software system. And you gotta love all the little details that go into it, and how it behaves.

As with anything complicated enough where things depend on one another, things can go wrong. As a software engineer, you spend a lot of time digging into root cause of when things go wrong. It’s similar to working on a puzzle.

tldr; if you are a person who gets immersed in the process of building and tinkering, you’ll do great.

It Takes Time

Software engineering is a skill. And as any skill - similar to playing guitar or being an athlete - it takes a lot of time to become proficient. So, embrace the process, it’ll work out, just everything won’t happen right away. The way to expedite the process is to make sure you’re prioritizing consistency and getting in building/coding time as much as possible.

It’s Actually Easy

Software engineering is actually easy. You know what’s hard? Spending hours, days, weeks, years on something and not seeing results. Having little to no feedback cycle. Momentum is energizing, and lack of momentum, demoralizing.

Software development has a clear feedback cycle. You spend time coding, you build it, you see it work! Great! By having something at the end that you can point to as a sign of progress is addicting! What’s more, you can break down what you build into smaller milestones, and hitting each one on the way is more and more exciting.

For example, one of my early side projects was building a simulation of a ship’s voyage on the ocean. (why I chose this will take a long time to explain)  It felt great seeing the first components come together when I got map generation to work somewhat decently. Each small win motivated me to build further and further - throughout getting in that valuable practice.

Don’t Do It Only for the Money

It’s awesome that doing this, which is a lot of fun in of itself, also happens to be paid well in this economy. You hear about engineers getting paid hundreds of thousands, and some rockstars in the 7-figures. Which I’m sure causes many to consider this career path just by itself.

I get it, we live in the reality, and money is pretty important. But in my experience, money by itself is a poor motivator. Just doing it for that will be hard to stick it out and grind for years to come. You got to enjoy the process of building and learning and should find yourself being in the “flow” state - when hours and hours go by without notice.

How I Did It

I really believe the software industry is for the do-ers of the world. As long as you have the skills and knowledge, which ever way you obtain them, nothing stops you from being a part of the ecosystem.

In my case, I happened to get a start trying to find a role to pad my college resume, after I was rejected from every college I applied to. I have a whole blog about it here.

How I Would Start Over Again

When I was in school, I was really active in competitive programming competitions. It was a ton of fun! I didn’t know that it would help me later on in interviewing and do work as an engineer. So for anyone starting out fresh, here’s how I would recommend getting into software engineering, in my biased opinion. It is meant to be natural and not be too hard to learn software development concepts:

  1. Pick a popular language like Python, Javascript, Java, Ruby, C++, C#, etc.
  2. Learn the basics of the language - there’s a ton of programming language tutorials online.
  3. Start solving programming problems on leetcode, codeforces, spoj, hackerrank, etc. From easy to hard. Try for a ratio of 10 easy / 3 medium / 1 hard. In the beginning only easy and medium.
    1. You will develop your CS, coding, and algorithms fundamentals.
    2. Get comfortable with your programming language of choice.
    3. Automatic interview preparation.
  4. After you solve 100+ problems at least, start picking up some side projects. Try to build a desktop app, or mobile app, or a website, or a distributed server system. You can start from picking popular projects, that already have guides online, so the learning curve isn’t too steep. Most importantly, you should learn by overcoming blockers that you encounter in your projects.
  5. Continue to build, learn, and get in a role at a startup/company, where you can bring value with your engineering skills.

How to Break Into the Software Engineering Industry

There isn’t a single one way to do this. But, generally, in the beginning the most important thing is to get your foot in the door. So that you can start to build experience and let that snowball into more exciting opportunities. That’s how it turned out for me.

As for getting that first role, it’s really about the hustle - working your network as much as possible, attending meetups and bootcamps, contributing to open source projects. In my opinion, the best way to land a role is through another engineer’s referral who’s already there. Build your network. And don’t be picky about the roles either. Your aim is to get started, you can always move on, down the line.

I got my start when a person gave me a chance at an informal internship with some pay, even though I was ready to do everything for free. But that starting role made all the difference in the end.

Did This Help?

I hope you found this information helpful. If you want to stay tuned to more engineering content like this, subscribe below. It also helps me get the signal that I should write more on the broader topic.

Cheers!

Related articles

Browse all articles