According to an article published by a US technical magazine, Software Engineering is one of the fastest-growing careers in the world. They also went as far as to say that SE could’ve been the most salaried job by 2020 and even though that hasn’t happened yet (Doctors, surgeons, and dentists are still the highest paid professionals), Software Engineers do earn a respectable amount of money in today’s job market.
The future, as it seems will be almost fully automated; we will have self-driving cars, smart homes, smart universities, smart restaurants, and, eventually, smart everything. The world that Wall-E predicted, as things are going right now, could very well come true. The job market could be in need of a large number of developers and software engineers in the near future, was what I thought straight out of high school. That (and my passion for tech) became my primary reason for choosing a Bachelors of Engineering in Software Engineering.
When I started this course a while back, there were many expectations I had going in. I had obviously done my research, chosen a university, and knew what I wanted out of the four years. However, as people always say, things hardly ever turn out the way you expect them to.
So, here are 5 misconceptions I had about my degree going in and how all five of them were debunked over the years:
Software Engineering == Computer Science
Me, like a lot of other people around the world, went in thinking Software Engineering would barely have any differences with Computer Science. I thought we would have more or less the same courses and we would learn the same kind of stuff and while that isn’t completely untrue, there are many significant differences between the two degrees.
Software Engineering, as the name so obviously points out, takes you through the whole process of Engineering a Software. This includes the initiation, planning, requirement gathering, designing, implementing, testing, deploying, and maintaining a software system. Knowing and implementing the Software Development Life Cycle (SDLC) and everything associated with it comes under the job of a Software Engineer. There are many ways to implement the cycle as well; all these come under SE as well. Computer Science focuses more on the implementation and programming phase.
Computer Scientists also focus on the computing, analysis, storage, and application development of data and systems whilst Software Engineers focus more on the application of these principles in an SDLC.
SE majors also have less interaction with hardware than CS majors but both have access to the same opportunities. It essentially boils down to who your course outline is structured and how your instructor takes every individual course.
Read more: The Dilemma of Computer Science, Software Engineering & Computer Engineering
This article only mentions a couple of differences between SE and CS. In reality, as it was so evidently pointed out to me throughout the course of my degree, the differences between the two are so many that the topic could, in itself, be a different article.
Code, code, code…
As mentioned above, Software Engineering isn’t all about coding; it takes you through the whole cycle of a Software’s life. Coding is simply a part of that life cycle. A software engineer needs think of an idea, collect requirements, design a product that fulfils all (or most) of those requirements, implement that in a programming language and create an application, rigorously test that application, and deploy it. Even after deployment, it is a Software Engineer’s job to keep the application up to date. Most of those components do not involve coding.
There are many things that come with these other components like some humanities and finance subjects; we will get to those later.
That I would not be able to survive if I didn’t already know any programming languages
Going into this degree, I already had some knowledge of Python, the programming language. I had done CS as an O level subject and had sound knowledge of how the language was used. But that was a deciding factor for me. Had I not have done that course in school, I would not have chosen the profession. Now, this misconception might be very specific to me because many come to this degree with a pre-engineering background and have never taken CS, or even IT, in their lives. I was proven wrong when one of the courses we took in our first semester was called “Fundamentals of Computer Programming.”
As you progress through your years in this degree, they teach you several different languages like Python, Java, C++, JavaScript, and so on. Each one of those languages has an introductory course; if they don’t, then the instructor mostly takes you through the syntax of each language in parallel with whatever they are teaching, for instance, I learned Java in my Object-Oriented Programming (OOP) course, C++ in my Data Structures and Algorithms course, and so on.
That I’d know how to hack Instagram accounts by the end 🐱💻
This one was more my friends than I. Even now, when I come home for the holidays, they always ask me if I have learned how to hack other people’s accounts yet.
Software Engineering, as it turns out, has a very small component even remotely related to cybersecurity (no component that teaches you cybercrime). You can choose Network Security as an elective and within that, they teach you different methods of encryption and decryption and some basic forms of data interception but other than that, if you’re looking to become a hacker or give the cybercriminal life a chance, I’m afraid Software Engineering will disappoint.
My communication skills will be wasted in this profession
This was one of the biggest turnarounds for me. Coming from a school where we had to frequently deliver presentations, speak in front of larger crowds, and put our convincing skills to the test, I wasn’t looking forward to sitting in front of a PC all day and never interacting with others. It turned out, communication skills are one of the biggest and most important skills that a software engineer, or any other professional can possess. You can code and code all you want but, at the end of the day, if you are not able to persuade another of how well your product is or what the workings of your application is, you won’t ever get to the top. There are a lot of people who, to this day, lack these persuasion and communication skills and while they may be able to secure jobs and build careers, they will always stay just a little behind those who can sell their ideas and make their way to the top. Communication and the way you portray your product is half of the work as a professional.
So, there you have it! We all want to believe that software engineers (and computer scientists) can spend their lives hiding from others, simply coding, learning languages, and effortlessly hacking government databases as the movies so eloquently show us, but the reality is very different from that. We, as Software Engineers, need to know all the processes involved in an SDLC; we need to learn the languages, possess the skills required to convey our message to those around us, and, most importantly, we need to strictly adhere to the laws and ethics manuals.