overall, there's 3 stages:
- intro - learning basics, getting over the initial "no clue how to do anything", mapping out the space of what you don't know
- building - focusing on certain topics to better understand them, building up a tower of "things you know how to do", focusing on particular interests
- landing - applications, contracting, internships, convincing others that you now have the skills to do useful work for them
of course my experience is in software engineering (aka "SWE"), but you can also apply this formula to some related fields like IT, writing (technical or otherwise), UI design, etc. consider doing the introductory stage in a number of related fields to figure out which is best for you in terms of interests, skills, timeline, etc.
the rest of this page will focus on software engineering specifically.
intro
for learning code, I highly highly recommend checking out Harvard's CS50 course: https://cs50.harvard.edu/x/. it's the absolute best introductory experience for people looking to get into coding right now. extremely approachable and well-explained, guides you through projects to build independent skills you can take anywhere else. if you spend 1-5 evenings a week working thru this course, each week you will learn more about the field and get a sense for what a future in that field could look like.
you will also want to get comfortable using some combination of these for learning new topics on your own:
- web search engines - identify keywords, learn to tell apart useful webpages from bloat. StackOverflow is the GOAT.
- reference guides (e.g. "Overview of \<x>" website / manual page)
- LLM chatbots to help understand when other tools come up short. remember, they are not smart, they don't understand logic, they just use word associations to connect your input to some helpful page they were trained on. trust, but verify.
building
after an initial exploration phase, you would likely spend time in 2 ways:
- structured training platforms - online learning programs, boot camps, studying and testing to get certificates. Harvard CS50 has a certificate, plus other Harvard courses beyond CS50.
- independent hobby projects - a simple re-implementation of a small app or website to learn how it works (or build something to use yourself), an experimental idea for an app you always wish existed, or maybe using some open source software and contributing some code to the project.
both of these are different ways to "solidify" your skills in practical experience. independent projects are a little more attractive because they demonstrate internal curiosity and self-organizing, but you can absolutely do some of both.
either way, a personal website goes a long way. it shows you can set up basic web hosting infrastructure, gives a place to showcase your talents and experience, and lets you express your unique flair. plus it has other uses - blogging, unique email / social media address, etc.
landing
then you'll try to build your resume / work history up to bigger tasks - maybe contracting to build simple websites for friends / community, working one or more internships, or maybe even organizing your own little community around a project you've built. maybe you make that contracting into your main thing, maybe you try to jump to a full-time salaried position.
one way or another this will take a lot of time doing the work of applications & networking. virtually nobody gets a job through sheer skill practice alone - skill is necessary, but be prepared to send out tens or even hundreds of applications to get callbacks and interviews and eventually offers.
once you've landed your first "big" / "real" gig, then you cycle back and forth between building / landing. get a handle on the core of your current gig, find opportunities to build & grow your experience while here, then try to land another step - maybe a promotion or transfer, maybe a different company, maybe a new side gig, etc.
highlight: cybersecurity
cybersec is an incredibly interesting sub-field. it uses the same foundational concepts as software engineering, but often the day-to-day looks very different - exploring software for vulnerabilities, running training exercises, or doing investigative work to track down attackers.
for learning about the craft of sybersecurity, start by exploring "Capture the Flag" challenges, a fully legal and gamified system for practicing hacking & security skills: https://dev.to/atan/what-is-ctf-and-how-to-get-started-3f04
to learn more about the field of cyber security through a true crime sorta lens, I highly recommend checking out the podcast [[Darknet Diaries]]. absolutely incredible show, very respectful and interesting coverage of lots of different things from Russia's attack on the Ukrainian utility network, to people who recovered from selling drugs on the dark web, to some teenagers who got way in over their heads hacking consoles... it can regularly get kinda heavy, but it's a fantastic way to build motivation and interest and resilience in the field.
people might think hacking is something that should be practiced in secret, but modern cyber security rather encourages openly discussing and even attempting hacks of the systems we rely on. imagine a warehouse with valuables inside, guarded by a few secured doors and a system of guards and fences. you might think it's best for the warehouse to be operating in secret with the guard schedule hidden, layout removed from the public record, etc, but it's surprisingly easy for attackers to spy on the warehouse, figure out its weak points, and break in. cyber security best practice says "let's publicly discuss the guard shifts and layout to collectively improve the actual security here, until the entire pubic security community can identify no further flaws." sometimes, good people even try to break into the warehouse themselves, with the endorsement of some chief of security, just to test how good the security actually is. (this isn't just a metaphor - some people's full-time job is a "physical penetration tester", breaking into buildings via social engineering and literal James Bond spy tools.)
of course you still have some secrets like the door codes and the fingerprints of the various guards, and there are still some weakness if the attackers use enough resources (like bombing the entire place and looting what's left), but still this almost always results in less cyber security breaches. ethical hacking is a perfectly valid thing to publicly discuss and practice.
closing advice
any kind of software engineering is hard, applications suck, and at the end of the day work is still work. but we live in a time of extreme opportunity. anyone with these skills can:
- work remote, move countries as a digital nomad, and make an affluent living for themself
- protect yourself against digital threats, support neglected communities, shape the computer revolution which is for better or worse re-structuring all of society
- automate daily tasks, create powerful software experiences, make beautiful computer-assisted art