Table of Contents |
There are many niches of software engineers; one you’ve already learned about iOS Engineering and Web Development. The term 'Software Engineer' is broader than those roles. The low-level problems solved are very similar, but the high-level problems are different. Software Engineers have additional responsibilities to understand how computer memory works, creating logic or algorithms, and managing how software interacts across the different layers of technology. You may hear these systems referred to as the backend. Backend technology is the servers, applications, and databases that work behind the scenes to power the interface users interact with.
Software engineering is a unique discipline that combines features typically exclusive to mathematic, scientific, and creative fields. Like mathematicians, they use specialized languages to denote ideas. Like scientists, they must understand the rules that govern how code runs on computers. Like designers and engineers, they create solutions by assembling individual components into systems and evaluating tradeoffs among alternatives.
You don’t have to love math, be a trained scientist, or a skilled designer to excel as a software engineer. The most important skill for a software engineer is problem-solving—the ability to formulate problems, devise creative solutions for them, and communicate those solutions effectively. The types of problems that Software Engineers encounter can vary, but the way they approach building solutions to those problems is similar.
At their essence, a Software Engineer writes code to solve problems and create computer systems or applications that do something useful.
While Ruben focuses on the web application and Camilla focuses on the iOS apps, my role is to make the code that ties it all together, keeps it in sync, and enforces the business logic.
My experience with multiple languages has been really helpful in learning the syntax or structure of different programming languages. In my role, I work with multiple different programming languages depending on what I’m trying to do. This can be a tricky part of starting in software engineering because [brackets], {curly braces}, and ‘single quotes’ do different things in different languages, but like most things–it gets easier the more you work with it.
Bubble sort is the first sorting algorithm most developers learn because it is simple and easy for small data sets, but it is notoriously inefficient in real-world applications. It’s so bad that it’s become a joke in the tech community. The left section of the code is in Python, the middle is in JavaScript, and the right is in Rust. Don’t worry about being able to understand the code, but you can see differences in the structure, formatting, and syntax.
The backend systems I manage include powerful computers—also known as servers—that send information (or data) to code that display for users. Ten years ago, most companies had to buy and manage expensive servers on-site, but now, most companies leverage servers from a cloud technology provider such as Microsoft, Google, or Amazon.
When someone says “It’s in the cloud,” what they mean is that it is on a server somewhere else. The “cloud” is a really large network of computers that talk to each other, just like the internet. As the engineer, I know where those servers and data are physically located. I deploy, or release, the updates to the code on the servers and make sure our code and data are backed up regularly in case of a service outage.
I’m responsible for managing the server’s performance and memory. I set up monitoring with alerts to tell me when something is out of the ordinary. This can happen at any time, day or night, so the team and I have an on-call rotation to make sure someone is always available to solve an issue that might come up. This is a lot of responsibility. When I’m on call, I keep my computer close and my notifications on.
Source: This tutorial was authored by DEVMOUNTAIN and Sophia Learning. Please see our Terms of Use.