Software engineering can’t stop growing. The worldwide population of software developers is expected to climb to 28.7 million by the end of 2024, an increase of 3.2 million from 2020 figures. This is partly due to the firmly established perception that coding is easy and breaking into the job market is also relatively straightforward.
But even as newcomers come to understand that being a developer is ‘easy’, many jobseekers fail to realise that a career in software engineering can be challenging. This article looks at how hard software engineering is, the different learning paths, and the typical skills that define a software engineer.
Discussions about the software engineering career
There’s a misconception that software engineering is just about writing lines of code. In reality, there’s much more to it. A lot of the work revolves around problem-defining and solving. Software engineers work closely with clients and colleagues to identify a need and then design and develop the software to address it. While the process can be creative and rewarding, it also requires a strong foundation in technical skills and the ability to keep up with the latest tech stacks, libraries, frameworks, languages—you name it. This can make it a tough and demanding career path.
There are numerous debates about what a career as a “software engineer” even means. For instance, there’s a long-running discussion about the actual difficulty of software engineering compared to other professions and who really qualifies as a “software engineer.” The debate, though perhaps a bit dull, goes something like this: Are developers who code mobile apps really software engineers? Probably many of these developers would have no issue admitting that, no, they are not engineers but rather just software developers. What most software engineers agree about is that coding itself isn’t inherently hard, but the broader skill set required to be a successful software engineer is what brings about the challenge.
Maybe these discussions have to do with software engineering having a lower and higher ceiling compared to more traditional engineering. Because the basics are easier to learn than the physics or chemistry needed for other engineering fields, the barrier to entry in software engineering is lower. Also, aspiring developers who don’t do well with numbers can always start as frontend developers because they’re good at designing stuff—making the entry window even wider.
Compared to a civil engineering career, for example, where you need to build bridges (actual bridges—not a metaphor), there is certainly a greater chance of just jumping in with nimble training—like a bootcamp—and getting a job. The demographics for these two careers show it.
This might allow for remarks about software engineering being a “young people’s game” or that all software engineering is simply the same CRUD and CSS tweaks. But the depths of computer science and the nature itself of software are just as complex as learning civil or mechanical engineering—there’s quite a lot of mathematics and science involved in both.
There’s also an ongoing “controversy” about the high (and for some, incredibly high) salaries software engineers get paid. There’s no doubt it is a well-paying profession, and though salaries improve with experience, they are already high for entry-level positions. Perhaps, software engineering is currently one of the few careers where you can make around $100,000 a year before you hit your thirties. Some argue this is justifiable because software engineers are the keys to automation, and automation saves people and companies significant time. Saving time creates value, especially for companies, and this would explain high salaries. But still, many people strongly believe that software engineers are definitely overpaid.
Find Entry-Level Software Engineering Jobs →
Is software engineering hard to learn?
The short answer is that some developers find it hard, others find it “doable” yet still hard, but the majority agree that learning to code is not that hard.
Software engineering can be a challenging path to learn, but the difficulty depends on your background and approach. While the initial stages of learning to code might not be the most difficult part, mastering—not just getting “the hang of”—the underlying concepts and how they connect can take years. The real challenge lies in applying your coding skills to solve a problem: “We need you to code something to sort out this situation.”
Some people find software engineering concepts intuitive, and as if the abstractions came to them immediately, they can walk an execution through a programme in their head without even thinking about it. But for the average developer, learning software engineering, though not specifically hard, requires effort. Everybody in the dev community agrees that with dedication and hard work, most people can learn the necessary skills for software engineering.
The field offers various specialisations, and the sheer number of frameworks and tools can seem overwhelming initially. There are so many options today, and even more options within the options. It’s not enough just to pick React, Angular, or Svelte (or the three of them) for the frontend. You need to pick at least a bunch of the sub-packages as well—Typescript or Redux, for instance. However, focusing on a specific area can make it more manageable, and it’s usually what ends up happening when you land a job at a company. Also, developers agree that it actually becomes easier over time.
Still, learning software engineering is a continuous process. It’s more like a marathon than a 100-metre sprint. That said, it’s okay if you struggle at some moments because things get tough. You are not a “gatekeeper” for saying that software engineering is sometimes hard.
What makes a good software engineer?
Many developers boil down the difficulty of being a software engineer to a catchy phrase that goes like this: “Coding is the easy part. Deploying it properly is a bit harder. But writing good code is the hardest.”
And to write good code, every user agrees that it should be readable and scalable, so that a new programmer can chime in. That’s what being a good software engineer means. And that is the hardest part, because it’s tied to working as a software engineer.
How experience influences opinions about how hard software engineering is
Among learners, there’s an often-discussed cognitive mechanism called the Dunning-Kruger effect. The effect states that it takes time to realise you know very little about a discipline—and in between, you might think you have already mastered it, overestimating your actual skills.
With some surveys reporting that most developers are relatively beginner developers, we could guess that many developers claiming that being a “software engineer” is easy are actually saying this while inebriated under the Dunning-Kruger effect. The pros, on the other hand, explain that it’s actually hard because they know what working as a software engineer requires. This effect might also explain why many developers don’t every bring up the issue of being “good” at writing code—for so many, the job is just about “coding.”
How much time does it take to learn software engineering?
There’s no single answer to how long it takes to learn software engineering. There are testimonials of developers landing software engineering roles after intensive boot camps (2–3 months) or after self-study periods of around a year with a strong focus on specific technologies. This rapid path often involves a significant daily time commitment and a strong work ethic—12 to 16 hours per day every single day of learning and building personal projects.
One developer shared their success story: “I went from managing a small café to a software engineering job after just two months of self-teaching,” they explained. “It wasn’t easy, but I focused on the technologies relevant to the positions I was applying for.” Though it might sound incredible that someone can go from zero to employable in eight weeks, it comes to pass.
Other developers detail longer journeys or claim it takes minimum a year of self-directed learning and projects to build a strong foundation and the practical skills needed in order to get a starting position.
What all developers emphasise is that the learning really never stops. Even experienced developers highlight the need to stay up-to-date with new tools and frameworks throughout their careers. There’s a very particular story of a Java developer with eight years of experience trying to apply for other companies and failing the coding exams over and over again. She is now teaching herself with Leetcode to have a higher chance, just as she did eight years ago.
What degree or skills should you obtain to become a software engineer?
While there’s no single requirement to become a software engineer, many companies, especially the big ones, prefer candidates with a college degree in a relevant field. This could include computer science, software development, engineering, or mathematics.
Formal education
Although a computer science degree isn’t mandatory at all, it provides strong support for the theoretical concepts that underpin software engineering. You’ll learn about algorithms, data structures, and various programming languages.
To choose your degree or school, check your target school’s employment figures. If you find out that the school where you want to enrol has sub-par post-completion employment rates, it could mean that the school is not that well-connected with employers. You can either switch to a school with good employment rates or opt for a cheapish, less-connected school and, upon graduation, seek jobs with a specialised platform.
Beyond the degree
Technical skills are just one piece of the puzzle. Regardless of your educational background, strong problem-solving skills are a priority for software engineers. You’ll be constantly faced with challenges that require creative solutions and a logical approach. A general understanding of data structures and socket programming is also handy. Also, because software technology is always being deprecated, you should start practising what it takes to migrate to what’s up-to-date. Also, if you want to be a software engineer, an oft-unnoticed (because it’s hidden in plain sight) skill is that you should know English. If you’ve been lagging behind with it, try improving your communications with LLMs, but you’ll risk sounding banal and rigid, even if your grammar is flawless.
The truth is that, while a computer science degree can be an advantage, the focus for top companies lies in your practical abilities. They want to see your skills in software development, real-world experience building software, and completed projects that reflect you could get things done. Open-source projects are an excellent way to start building up that portfolio.
Self-taught way
It’s possible to become a software engineer through self-taught learning, but this path takes significant dedication, discipline, and the ability to learn independently. Online resources, coding bootcamps, and personal projects are the three easiest paths to learn on your own.
Even so, breaking into the industry without a formal degree is a statistical exception. The demographic–levels of education graph from the previous section indicated that more than 85% of software engineers have a university degree. Many developers confirm that breaking in without a degree is hard, viewing self-taught peers as “outliers” and “beasts with insane self-motivation.” Companies often rely on degrees as a benchmark for a candidate’s foundational knowledge. Self-taught developers can succeed, but the journey may be longer and require more effort to demonstrate your capabilities to potential employers. Maybe a self-taught programmer is considerably better than a university one, but an HR rep might still play it safe and only interview candidates with a degree.
Characteristics of a software engineer career
Once again, the question of whether a career in software engineering is hard has no single answer. It’s usually “yes,” but not for the expected reasons.
For many, the hardest part of the job isn’t coding, but rather dealing with various stakeholders and defending their ideas. Others mention understanding instructions—which can be vague when a client doesn’t know what they want—as another hard part. Some others mention having to grasp a never-ending list of tools that are ever-changing. And then, when you master CoffeeScript, JavaScript comes up with features like narrow functions and classes and makes CoffeeScript redundant.
One of the core challenges of software engineering is that you have to take in whatever knowledge or skills you have and actually figure out how to build something useful and intuitive with them. Project complexity also plays a role. Not all software engineering is equal. While some software engineers code the microcontroller running on an airbag system, others design the drop-down menu for the app that turns the car on when you get into it.
Overall, software engineering presents a rewarding challenge for those who enjoy problem-solving and continuous learning. As a former rocket scientist turned backend engineer said: “They are both just as hard at scale.” The difficulty will highly depend on your specific role, and, obviously, your experience.
Work-life balance of a software engineer
Like any demanding job, software engineering can take its toll. Long coding sessions usually leave software engineers feeling mentally fatigued, similar to muscle fatigue after a workout. “It’s hard to code. It makes the mind so tired,” shared one developer. Another said, “I’m burnt after about 8 hours of serious coding. I actually had to get medicated because of that.” The pressure to find solutions and meet deadlines causes anxiety for many. Being a developer feels most of the time as though you couldn’t fail because there’s actually no time to fail. That obviously translates into fear and stress.
Spending long hours typing can also lead to repetitive strain injuries in the wrists and arms. Believe it or not, there are developers who share the need for physiotherapy due to RSI.
Software engineering is described by developers as exhausting and awesome all at the same time. What makes it awesome is the intellectual challenge and the sense of accomplishment it gives you. Finding the solution to a complex problem can be a source of great satisfaction. There are developers who admit they even surprise themselves sometimes after completing a task and seeing their code function as intended. “It’s so stressful,” a developer shared, “but when you finally solve the problem...it feels great.”
The personality types of a software engineer
There is no single “perfect” personality to do the job. Here are some typical characteristics of most developers:
- Problem-Solvers: They enjoy the process of breaking down problems, designing solutions, and seeing their code function as intended.
- Analytical Thinkers: They are detail-oriented and enjoy the precision required to write clean code.
- Independent Workers: They are comfortable taking initiative and managing their own time.
- Candid Critics: Devs who are asked to check on code written by a colleague will often roll their eyes and rant about it.
The reasons developers begin coding, which vary widely, speak to their personalities. Many discover they love coding and start learning it as a hobby. Some online users mention it as their element: “My mind never feels as sharp as after I’ve spent the day coding. It’s the only thing that really gets it hyped up.”
Comments within the dev community claim there’s a bit too much condescension in the industry. This is aligned with the good old habit of ripping apart—verbally, that is—someone else’s code upon review.
Other developers enter the field just for the money; they believe the effort is worth it. Eventually, they end up enjoying at least part of the job—according to most developers, a career in software engineering is impossible if you suffer every part of it. It is simply too much to hold onto it with stubbornness or attachment to wealth as a main drive.
The fundamental skills of a software engineer
Programming, knowing how to communicate, dealing with pressure… The list is pretty generic and could apply to any job (just switch “programming” with “plumbing” and it’ll look the same.) But since there is so much theoretical content to absorb, some developers recommend “skills frameworks” in which you don’t have to be an expert in everything. For example, many software engineers develop a “T-shaped” skill set, with an in-depth understanding of one area and a broader knowledge of other relevant topics.
Start your career in software engineering with a specialised company
Learning to code is easy, but working as a software engineer is hard. At first glance, this could mean that “finding a job” and making a living from software engineering is difficult. But no—it means that adapting to the pressure, understanding client requirements, having to juggle projects, and even dealing with job security is what’s hard.
Still, software engineering is a very rewarding career path, and getting a job as a software engineer is doable if you know where to look at. WeAreDevelopers is one of those places.
Whether you find software engineering hard enough, are a developer seeking new opportunities, a soon-to-be developer probing the market, or just someone considering changing careers and stepping into software engineering, you can always check our site for jobs.
We are a specialised job board dedicated to connecting the best talent in Europe with the leading companies. Don’t think about it twice. Sign up and take a look at our job board so you can start your career in software engineering. We feature entry-level and senior positions alike, plus some remote opportunities as well. Good luck!