Starting out in Software Engineering
Tags: beginners, softwaredevelopment
Published: 2022-05-23 14:43:29

---
title: Starting out in Software Engineering
published: true
description: How and where to start in tech as a software developer
tags: beginner, softwaredevelopment
//cover_image: https://direct_url_to_image.jpg
---
# Software Engineering 101

1. [What is Software Engineering?](#what-is-software-engineering)
2. [Different paths in Software Engineering](#different-paths-in-software-engineering)
3. [What do you need to start?](#what-do-you-need-to-start)
4. [Where to start?](#where-to-start)
5. [Next Steps](#next-steps)

You've heard of jobs in tech, and you have your eye on software development but don't know what that is or where to start? This article should help set you up. 

## What is Software Engineering
You're probably wondering what is Software Engineering (SE) is and what the difference is between a Software Engineer and a Software Developer. To be honest its all on technicalities and I'll often use one title in place of the other.

## Different paths in Software Engineering
A software engineer builds software for different varieties of technology. Ever wondered how twitter exists, or how you can google so efficiently? How that game came into being? How you checkout of supermarkets. That's all software engineering in its many flavours.

However, software engineering is a generic title. Here are some of the roles in software engineering:
1. **Web Developers**:
  - **Frontend Developer** - builds the UI (user interface) people interact with. What you see on face value as you interact with a website on your browser, i.e, the buttons, the images etc. They curate the experience on frontend side of a web system.
  - **Backend Developer** - builds the data behind the UI. A frontend system needs a way to show your name on your profile, your name will be stored somewhere you can't see (a database), backend engineers curate how that data is stored and processed.
  - **DevOps Engineer** - both the frontend and backend systems have complex support systems and need infrastructure to keep them running. DevOps engineers determine the computing resources needed for these systems.
  - **Quality Assurance (QA) Engineer** - systems can have bugs (not the icky kind), the role of a QA engineer is to ensure systems delivered are in top shape and they stay that way even with new updates. The role is to test products (using code of course).
  - **Full stack Developer** - this is a dev who dables in a bit of everything, a Jack of all trades if you will. They can write a frontend feature, a backend API (to be discussed later), tests to ensure the feature works as expected and set up a minimal DevOps infrastructure.
[Honestly, every dev has a little full stack engineer inside them]

2. **Mobile developers** - SE isn't limited to the web, mobile developers create applications for mobile devices
  - **Android developer** - builds apps for android devices
  - **iOS developer** - builds apps for Apple Devices

3. Gaming developers

## What do you need to start
To start you only need 2 things:
1. A working device you can write code on (preferably a laptop), when I started I used a tablet :)
2. Stable internet

That's it, Google will be your best friend. A running joke in the ecosystem is that we google for a living -- hey, where's the lie.

## Where to start?

### How did I start?
I consider myself a jack of all trades, I do a little bit of frontend, backend, QA, DevOps and mobile development. But I started out learning the frontend fundamentals first, I picked up html, css and JavaScript to begin with, I later jumped on the backend and learnt Python. I then started using all of these languages together as a full stack Engineer.


Do I now have your attention? Depending on your interests, you can pick out whatever role excites you and start out a path by learning the fundamentals. I'd recommend being a generalist first and learn as much as you can, and specialise as you go along, learning your strengths.


### How do you learn?
The best way to learn is to learn the fundamentals of a language and then build something, doesn't matter how small. It's possible to get stuck in a tutorial loop, where you'll end up jumping from tutorial to tutorial without building anything.

Google and ask questions.

### Heads Up
It takes a while to skill up, take it easy on yourself. You won't understand everything at once, sometimes it takes a little back and forth before it starts making sense. Good Luck!

## Next Steps
The next article I'll touch on these paths, what they entail, and resources to start. But that might take me a minute, in the mean time, here's [a (brilliant) curated list on notion of resources for beginners](https://instinctive-sunspot-f9a.notion.site/GETTING-STARTED-IN-TECH-BEGINNERS-c6f028444d214d75952fa9447bb56c37) from [Chisom Nwokwu @tech_queen on Twitter](https://twitter.com/tech_queen)