What Fields Can I Go Into as a Software Engineer?
There are many disciplines, or sub-fields, we can study within software engineering.
I’d like to go through the ones that I have found to be most common in the industry today.
Frontend Development
Frontend development refers to the client-side of an application. These engineers deal with producing the interface of a website or web application. Frontend engineers often have to deal with a constant change in the tools and techniques used to create the interface.
At many companies, it may include designing and styling the website, but it can also include developing the middleware that interacts with the backend services (some may put this in the backend development section, but I like to call it “the backend of the frontend”).
HTML, CSS, JavaScript frameworks (e.g. React, Angular, Ember, Backbone)
Backend Development
Backend development refers to the server-side of an application. These engineers deal with all communication between the database and the frontend.
This includes maintenance of web servers, development of backend APIs, data storage, data processing, among other things.
Rails, Django, Flask, PHP + MySQL, etc.
Infrastructure Automation (Cloud APIs)
Infrastructure automation refers to the implementation of tools to reduce the manual intervention involved with building, deploying, and managing cloud environments.
These engineers deal with other software engineers to implement a system that can handle the entire process from code release to code deployment. They rarely write their own product-related code, but they often understand the tools necessary to build and run the code.
Puppet/Chef/Ansible, Mesos/Docker/Kubernetes, AWS/GCP
Distributed Systems Infrastructure
A distributed system refers to a single system that is comprised of multiple software components. It has the computing power of multiple computers and therefore is able to handle large amounts of data storage and processing. I like to call this “the backend of the backend”.
These engineers deal with the orchestration, operations, monitoring, and schema optimization of these systems. This discipline becomes more important as scaling becomes more of a priority. Scaling up a distributed system simply means adding more machines, but the design of such a system is quite complicated, especially with so many moving parts.
HBase, Cassandra, ZooKeeper, ElasticSearch, Spark, Hadoop, Kafka, *SQL
Security and Privacy
Security and privacy refer to the rules designed to protect the integrity, confidentiality, and accessibility of company networks and data.
These engineers deal with identifying vulnerabilities in current systems as well as implementing solutions to defend against potential threats (MitM, DDos, malware, ransomware, phishing, XSS, SQL injections etc.).
Network Security, Host Security, Public Cloud Security, Penetration Testing, Threat Intelligence, Data Privacy