The Direct Path to Becoming a Software Engineer
Requirements
To follow this path, you must:
- be self-motivated
- know how to learn
- create time to learn
- have a computer and an internet connection
- choose a project to work on
- have a mentor
- hang-out with software engineers
The Objective
Our objective is to get you to one of the following outcomes:
- you're able to get a job at a good company as an entry-level software engineer, or
- you've realized that being a software engineer is not for you, without wasting a lot of money
At the end, you'll:
- have a public project on github that showcases your ability to do end-to-end software engineering
- be able to talk like a software engineer
- have end-to-end experience on a software project
- know the tools that software engineers use
- be able to touch-type code at 40+wpm
- have a basic conceptual & theoretical foundation on which to operate
- have industry connections that may help in your job search
Step 1 - Choose a Project, a 'Stack' and find a Support System
- Choose a project - one where you can use the same language on the front-end and back-end. I recommend one of the following:
- For a web-based project: javascript/node
- For a mobile app project: android/kotlin
- Choose a mentor - an existing, senior-level engineer who is willing to spend time with you on a weekly basis to review your work and provide guidance
- Make connections - with local & global groups (meetups, etc)
- Get some reading material - a copy of Code: The Hidden Language of Computer Hardware and Software
Step 2 - "Hello World"
Theory:
- Read and understand the first 3 chapters of Code
Practice:
- Acquire basic familiarity with the tools of the trade
- git
- github
- IDE/Editor
- Runtime environment
-
Get your app working end-to-end
- "Hello world" backend
- "Hello world" frontend
This is a work-in-progress; I've not yet written down the rest of the steps. But it essentially consists of iterating on your project in small, bite-sized chunks, gradually adding-in databases, deployments, project management tools, etc. I plan to get around to writing the rest down someday, but, in the meantime: your mentor should be able to help you with this.
This is a really long long. It has many parts to it.This is a really long long. It has many parts to it.This is a really long long. It has many parts to it.This is a really long long. It has many parts to it.This is a really long long. It has many parts to it.