9 min read

What do they actually do? {Software Engineers}

What do they actually do? {Software Engineers}

Believe it or not

I was once a software engineer. Getting paid to write code.

When I would tell my friends and family, they would ask what I would do.

I would struggle answering this question because it varied depending on their knowledge of software and the IT industry.

Then I started presenting at conferences where people who knew nothing about software, were interested in becoming software engineers. They would ask the typical questions like:

What do you actually do?

I could tell, they were not asking for the "school" response. You know where I mention the minutia of the job.

No they wanted the reddit version, unfiltered, candid response.

I understand, software engineers are being paid ridiculous amounts of money depending on the level and company.

They want to know if all the Algoexpert/Leetcode studying is going to pay off. How much I am actually making. How much work did I actually do to make over 6 figures.

Even though the market isn't as hot. Recently there have been tech layoffs. People are curious.

Preparing for Tech Layoffs
The layoff of employees is never an easy decision. It can create a broken trust between employers and their staff, which may lead to more people leaving before just those who were laid off as well.

Why the curiosity?

The software engineering role itself isn't all that special. No one actually gets turned on writing code.

There might be a few people who say they love programming similar for my love of basketball or another sport.

For the most part, people like the benefits around software engineers.
  1. Low Barrier of Entry - There are many free tools available online that make it simple to learn the programming language of your choice. No med school.
  2. High Demand - In a more digital world, practically every industry needs its own type of software and people who can create it to their specifications.
  3. Career Options - you to choose a work environment and lifestyle that fits your requirements.
  4. Remote work - The ability to work from home is increasingly important to job candidates.
  5. High salary - my pronouns are pay me

What is Software Engineering?

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

What is a software engineer

A software engineer is computer science professional who uses knowledge of engineering principles and programming languages to build software products.

Sorry it’s not just team builders going go cart racing, free movies, free food.

No 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 doesn't apply to everyone.


Not Every Engineer is the same

Depending where you are in your engineering journey you might feel you are behind or ahead of schedule.

Just remember that "schedule" you are following is something you have created for yourself.

It's on you to get the most out of your career.

Which means your daily activities might differ from your peers.

Which means if someone ask what you actually do, your answer might vary compared to your peers.

What do you actually need to know?

I tell people that, software engineers create programs that make the digital world possible.

Similar to doctors and lawyers, I am not expecting my surgeon to be opening up a biology 101 book before a big surgery.

There is an expectation of competence that you need to demonstrate as a software engineer.

Actually, there are a lot of assumptions when it comes to your understanding of computers. Which is why software engineering interviews have a repetition of being so difficult.

Software Engineers need to know:

  • Understand the customer business
  • Communication
  • Programming Languages and Scripting
  • Databases
  • Cloud Computing
  • Project Management
  • Source Control
Gitlab Explained
Gitlab is one my favorite tools and I didn’t realize why until I started using other competitors. If you are a software engineer then you probably worked with * Github * Gitlab * Bitbucket All three of these products can be consider Source Code Repository. Meaning this is where developers are…

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 technical, then you could say

Software developers write the code that operating systems and applications use to run.

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, Me vs Kanye.

It's honestly a stupid argument.

Becoming a Senior Engineer

Like many other fields, to obtain mastery in software engineering is a life long journey. No one truly masters engineering.

There is a distinction between junior and senior engineer. To accelerate your career you need to build projects that matter to you.

The more you learn, the more you realize you don't know.

An experience software engineer is looking to understand the requirements and fail fast and often. Senior engineers are usually a "go to" people on a project/s. They have developed mastery in an area.

If you find yourself going to people for answers then you need to start shifting towards becoming a person people come too.

An easy way to stand out is just being somebody who thinks about the business impact of what they’re doing, rather than somebody who just focuses on the code and codes away.

You need to become a problem solver

Why Building Real Projects Matter

The road to faster growth as an engineer is to try building real projects. You might start with small apps like Quizzes, Chat Apps, Calendars, CMS, etc. Eventually you need to build something for yourself.

The best way to mimic this experience is trying to build real world projects yourself.

Remember some of your favorite websites would not exist without software engineers trying to build something new.

Provides REAL Solutions

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.

Businesses like engineers because of their approach to problems. Engineers are suppose to understand what clients are looking to accomplish.

Good engineers are able to dissect information and determine their own conclusion on a solution.

A client might need a new accounting system before Tax season.

A software engineer needs to take that request and provide a solution.

A solution can mean a complete software solution, a partial solution or something different altogether.

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)

Where does programming fit in?

It is just assumed you know how to program.

The level you demonstrate determines your compensation and position title/rank. When it comes to computer programming, this is where the barrier of entry is different compared to other fields.

A doctor can make 130K but also needs to graduate from HS, College, Medical School.

This means you can have gaps in your knowledge

A software engineer can take Harvard CS50 online for free. Take a frontend/backend bootcamp course to learn how to build apps.

The reason software engineers get paid high salaries because it is hard to find high quality engineers.

CS50’s Introduction to Game Development
Learn about the development of 2D and 3D interactive games in this hands-on course, as you explore the design of games such as Super Mario Bros., Pokémon, Angry Birds, and more.

Top Programming Language

Determine an interest first

It's always hard for me to tell people which programming language to learn because I need to know which field interest you the most.

  • Mobile(Swift/Kotlin)
  • Data science(Python)
  • Cloud(AWS/GCP/Azure)
  • Video games (C++/Unity)
  • Web dev (Java/Javascript)

Each interest requires different skills. Programming is just 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.

Programming can be exciting but can also be mundane and boring. When Netflix implemented the "skip intro" button, that probably wasn't the most exciting feature but something essential to improve the UX.

On the other hand, imagine Tony Stark trying to make Jarvis. That is next level coding and something some people have already tried to do.

😱
Just know it’s NOT all fun and games when programming.

Types of Engineers

WebDev/ FullStack/Frontend/Backend 🖥️

These types of engineers build applications for the web. Think of sites like G-mail, Forbes.com, New York Times, Trello, etc.

They will work with languages like HTML, CSS, JavaScript, PHP, Python, Java, Go and more.

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.

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.

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. If that is not an option, starting on YouTube is a great start. 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.

Developer Roadmaps
Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don’t know, find out the knowledge gaps, learn and improve.

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.

Final Thoughts

A typical day for a software engineers varies depending on the company and your specific role.

Overall all engineers are looking to build software solutions for clients.

It will be assumed you already know how the internet, http, https, devops and other engineering related items work.

The daily task of the job usually requires a daily meeting, syncs with a few people then head down to focus on coding.

Software Engineers are in demand because businesses require an online presence more than ever before.

This means they need people who are taking those requirements and making real world solutions.

Being a developer has been rewarding for me but I found myself not in love with the daily coding like other aspects.