What Does A Software Engineer [Actually] Do?

Software engineering is defined as a process of analyzing user requirements and then designing, building, and testing software application which will satisfy those requirements.

Sorry it’s not just team builders going go cart racing, free movies, free food, random trips to Bali or un-muting yourself from zoom saying, “No major updates from me”.

It can be those things but it's usually much more. Now I’ve been a Software Engineer for about 15 years now, and it’s been an interesting ride. My track was a mix between traditional and non-traditional but overall I am very happy with my career choice. In this post I wanted to explain for new comers what Software Engineering actually entails.

The Software Crisis aka The Bleep before Thanos.

Before we understand what the role is, let's take a brief history lesson. The Software Crisis is a term used in the early days of computing science for the difficulty of writing useful and efficient computer programs in the required time.

Remember there was a time before you were around where you parents didn’t have anyone to go to fix their TV remote or get Netflix working. They had to figure it out, and this was back in the 60’s 70’s when people thought the internet and computer were more or less dumb things.

As more organizations started leveraging computers to handle business. The software crisis started to occur. It was due to the rapid increases in computer power and the complexity of the problems that could now be tackled.

Imagine a bunch of non-techies trying to get organized with building applications. This was pre google, Stack-Overflow, Yahoo, Bing, even the YellowPages couldn’t help them. This lead to the Thanos blimp or others call it the Software Crisis.

Because the Avengers weren’t a thing yet.

The solution was transforming unorganized coding effort into a software engineering discipline. These engineering models helped companies to streamline operations and deliver software meeting customer requirements. The late 1970s saw the widespread uses of software engineering principles. In the 1980s saw the automation of software engineering process and growth of (CASE) Computer-Aided Software Engineering.

The 1990s have seen an increased emphasis on the ‘management’ aspects of projects standard of quality and processes just like ISO 9001. You don’t necessarily need to know any of these things, but just know it all started with an idea that blossom into the world we live in today.

What do software engineers do today?

Software engineers create programs that make the digital world possible. They design the “guts” behind social media programs and webpages, as well as the programs that make your computer and smartphone function.

  • Facebook - that’s software engineering
  • Twitter - that’s software engineering
  • PeopleInTech.io - that is teaching you about software engineering
  • OnlyFans - your hidden secret that was built using software engineering.

Using engineering principles which are a set of rules, ideas, and concepts that guide them during the creation process. Software engineers approach projects in a systematic way—researching, analyzing, designing, testing, and repeating the process until coming up with a final product that meets predetermined objectives. They create a system that allows for easy rinse and repeat. Over time we find ways to improve that system.

Overall responsibilities:

Software engineers draw on their knowledge of engineering, computer science, and math to write, edit, test, and debug programs. Tasks vary depending on the nature of the role but may include:

  • Modifying existing software applications
  • Creating new software applications from scratch
  • Analyzing and designing full software systems
  • Using design documentation and flowcharts to illustrate what needs to happen
  • Working with software developers, designers, programmers, coders, and others to bring things together
  • Keeping factors such as safety, cost, and deadlines in mind throughout the design and development process
  • Writing training manuals(most hate this one, but also appreciate it the most)

Software Engineer vs Software Developer

For the sake of this post, they are on in the same. If you wanted to be annoying and act super technical, then you could say Software developers write the code that operating systems and applications use to run.

They identify what the software needs to do, then create the programming to make that happen. In many respects, this is exactly what a software engineer does. However, software engineers not only write the code, they also create everything using a “big picture” approach.

But honestly when people argue this, it’s like the same argument people have between coke and Pepsi or iPhone and Android, PS5/Xbox.  For the most part they are the same thing.

What is programming?

A break down

A key component of being a software engineer is to develop a strong foundation in computer programming. A computer program consists of code that is executed on a computer to perform particular tasks. This code is written by programmers.

Programming is the process of giving machines a set of instructions that describe how a program should be carried out. Programmers will spend their whole careers learning a variety of programming languages and tools so they can effectively build computer programs.

Programmers will start by using a code editor or IDE to write what is called source code. This is a collection of code written in a programming language that other programmers can read. Source code needs to be converted into machine language so machines can understand the instructions and execute the program. This process of converting source code into machine language is known as compiling.

Other times, the actually programming a software engineer can be extremely exciting. Imagine Tony Stark trying to make Jarvis. That’s is next level coding and something some people have actually tried to do. Just remember, for all the exciting stuff you hear about, there are parts that are less exciting.

Different Programming Languages means Different Types of Engineers

There are a lot of different type of software engineers. My advice, start off with what kind of technology do you want to work with? Do you want to build a website, app, IoT, games, robots, a terminator? There are hundreds of programming languages in existence. Developers will first consider the needs of the application so they can decide which languages would be appropriate to use.

Here is a list of some of the categories.

  • Machine language – a low level language that consist of 0's and 1's (binary). High level languages are compiled into machine code so the code can be executed by the computer.
  • Assembly language – a low level language that is compiled by an assembler. Assemblers translate human code to machine code.
  • Procedural languages – this approach goes through a series of procedures before a program is executed on the computer. (For example, Go and Julia)
  • Scripting languages – these languages often times don't need to be compiled but rather interpreted. Interpreted means an interpreter will read and execute the code instead of being compiled into machine code. (For example, JavaScript and PHP)
  • Functional languages – this works with the idea of building complex programs through a collection of smaller functions. (For example, Haskell and Scala)
  • Object-oriented languages – this works with the idea of building programs around collections of objects. (For example, Java and Python)
There are many more software paradigms and languages to explore that we didn't cover in this post. But this should give you a good start into the various types of programing languages out there.

Types of software engineer jobs

There are many types of software engineer jobs that you can choose from. This post will just focus on a few areas.

Full stack, Frontend, and Backend engineers

These types of engineers build applications for the web. They will work with languages like HTML, CSS, JavaScript, PHP, Python, and more. There are plenty of courses that you can take online to teach yourself. Salaries will differ between locations but they tend to be high paying jobs. Here are some resources to look into if you are interested in this field.

Mobile Development

These types of engineers build applications for mobile devices. Programming languages will include React Native, Swift, Flutter, Java, and Kotlin. There are plenty of courses that you can take online to teach yourself. Salaries will differ between locations but they tend to be high paying jobs.

Here are some resources to look into if you are interested in this field.

Game Development

These engineers will build custom games for mobile, desktop and game console use. Programming languages can include, C++, C# and Lua. These engineers will work for small independent game studios as well as larger international companies like Sony. There are plenty of courses that you can take online to teach yourself. Salaries will differ between locations but they tend to be high paying jobs.

Here are some resources to look into if you are interested in this field.

Computer Systems Engineer

This profession combines computer science and engineering to work on complex business applications. Programming languages will include Python, Java, and C++. The typical educational path would be a formal bachelor's degree in computer science. Salaries will tend to be in the six figures. Other types of software engineer roles include DevOps engineer, data engineer, Security engineer, and QA engineer.

What they make?

While the Bureau of Labor Statistics (BLS) does not use the term “software engineer” in its breakdown of occupations, in 2018 it reported that the annual median wage for software developers was $103,620.

Do I need a degree?

No, back in the day colleges were the gatekeepers of engineering knowledge. With tools like YouTube, Google, Quora, TikTok, Twitter, Freecodecamp, Jetbrains, PeopleInTech(you know I had to throw that one in there). You can learn to be any type of developer.

Hope you enjoyed this post.

Follow me at @KingCaleb on Twitter for more opinions.

You've successfully subscribed to TechDad: Simplifying Tech, Business, and Startups for You
Great! Next, complete checkout to get full access to all premium content.
Error! Could not sign up. invalid link.
Welcome back! You've successfully signed in.
Error! Could not sign in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.