Software engineering requires a lot of knowledge to get to a minimum proficiency level, and some of the concepts required to be a software engineer can take time to grasp. This being said, software engineering is technically easy than some other science or engineering branches. Some of the more difficult branches of engineering include mechanical, chemical and electronic and computer systems.
This being said, software engineering requires ongoing professional development to keep up with current software platforms and tech stacks to be competent. This constant ongoing learning can make software engineering a little more difficult than other professional practices.
What makes Software Engineering hard?
Part of the difficulty of being a software engineer is in being able to architect systems and a large scale while also being able to delve deep down to a low-level solution. Coding can be easy at times when working with well-formed frameworks and libraries but can get quite difficult when having to build these libraries yourself. A task that many software engineers won’t have to tackle in their day-to-day duties.
Another reason software engineering can be difficult is when dealing with very low-level systems. Typically programmed in a low-level language like C or C++, some applications coded to work directly on custom hardware can be tricky. The reason for this is that you often will have to ensure that you are not exceeding the specifications of the hardware you’re programming for.
This can be seen when dealing with very limited CPU or memory resources. Another difficulty can arise when working on mission-critical systems that require more stringent timing requirements and reduced downtime allowances.
What is a software engineer?
A software engineer is someone responsible for the designing, planning, coding, testing and building of the code base that will make the product that the project manager is overseeing. The software engineer’s role is to apply a systematic engineering approach to software development.
Is Software Engineering a lot of Math?
Software engineering requires a basic level of Math to be competent. If you can handle basic algebra and geometry (handling coordinate systems that are useful for plotting to the screen), then you should be OK.
Some areas of Software Engineering require a lot of Math, though. These roles include game development, movie production, graphics software, military and science applications and more. So while most software engineering jobs don’t require much Math, the more you know, the more roles you will be able to apply for.
Finally, algorithm design will also require Math to design efficient algorithms. When computing time and space complexity, you will need to understand logarithms and exponentials to determine how long or how much space is required for your algorithm to execute. Without these metrics, you won’t be able to determine if your solution is better or worse than a competing algorithm that solves the same problem.
Is Software Engineering stressful?
Software Engineering can be quite stressful, considering the range of problems you will be asked to solve and the associated deadlines and blockers you face. Software Engineers will face stressful situations when solving problems that they struggle to be able to figure out. The longer these problems take to solve, the more stressful the situation can be. The tighter deadline for solving a bug can also add to this stress.
Software engineers will also face imposter syndrome at one or more points in their careers. This imposter syndrome means that you feel like you are an imposter because you shouldn’t be a software engineer due to not being as talented as your peers.
This syndrome is perpetuated by many software engineers viewing videos demonstrating technologies where the presenter will easily code through a complex topic as if it were quite easy. The reality is that these videos and demonstrations come down to a lot of pre-work to ensure everything works perfectly. It is a very real affliction and can cripple some engineers’ creativity and teamwork if they are particularly affected by this.
Is Software Engineering harder than Computer Science?
Software Engineering and Computer Science have some overlapping concepts but have different roles. Computer science deals with the study of algorithms and computers, it focuses heavily on the testing and evaluation of hardware and software.
Software Engineering, on the other hand, involves the development of computer systems for multiple mediums and can have several areas of focus, from DevOps and programming to AI or machine learning.
As both roles differ so much, it is hard to say with any real accuracy which discipline is more difficult. Each discipline has extremely complex topics that require much knowledge to work on. In software engineering, these complex topics focus on computer graphics or AI. In computer science, the complex topics would most likely be geared towards the hardware side of things.
Do Software Engineers code for fun?
Absolutely. If you need examples of where software engineers are coding for fun, you can check out almost any developer’s GitHub profile to see all the side projects that they may have worked on at one point in time.
For a lot of software engineers, the reason they started a career doing this was that they already had a keen interest in computers. Whether from playing games and wanting to be able to create their own or from being able to instruct a computer to automate tasks, you will often find where the spark for computing came from.
Many of the small games software engineers work on in their spare time can be found at places like itch.io or other similar game hosting sites.
Conclusion
Software Engineering is quite hard to be very competent in. It is a discipline that requires constant learning and keeping up to date with modern practices. As it is not a very old discipline, the landscape for software engineers can change quite quickly. Technical ability and a can-do attitude are the building blocks for being a quality software engineer. Luckily, there is a lot of demand for software engineers, and junior software engineers are sought after just as much as senior or more experienced software engineers.