Tl;dr jump to the resource list below if you just want to check out some well made courses to see if coding is for you!
Back during college (while I was studying Arabic and Global Studies of all topics), I’d frequently circle back to the thought that I should learn how to code. That was now over 10 years ago. And for the longest time, learning to code felt completely elusive, a mystery I could not crack. Did I have to retake calculus and learn linear algebra? Go back to school? Learn Java? JavaScript? Python? At the time, because I had no idea how to tackle it, learning to code did not stick for me.
Some time later, after I had my $100K piece of paper and lived in a shared apartment in San Francisco, the idea came back to me. I was publishing a print newspaper and living in San Francisco, so you do the math. Again though, I did not know how to get started. My roommate, who had a degree in CS, asked me why I would even bother to learn to code when I’d have to compete with people who graduated from CS programs. I didn’t really have a solid reason, it just seemed exciting, so I again shelved the idea for a while. Thanks to the $100K paper, a coding bootcamp wasn’t in the cards for me, and I still thought I had to cover things like advanced math, which were just distractions.
Finally, between 2017–2019, I had been working at startups and tech giants like Google and Splunk in non-technical roles for some time, and the nag came back. I started to devour random courses on Linda, or read books like Eloquent JavaScript, but I was still missing the crucial requirements of 1) finding good materials, 2) practicing coding my own things, and 3) having an outline of what I actually needed to be learning.
My big break came when my now-husband helped me write a learn to code pathway. With a rubric of what to learn, I embarked on a self-study journey. Thanks to that period of self-study, earlier in 2020 I finally landed a title that includes ‘engineer’, (Technical Support Engineer at Duda). And what did I do? I actually quit that job after 8 months so I could resume studying and challenge myself even further.
Some components I missed while self-studying were 1) pair coding to practice live coding, 2) refining my problem solving with things like PEDAC, 3) knowing the right words to use when talking about my code, and 4) building confidence!
That all said, if you’re wanting to begin to dabble in learning to code and don’t know where to get started, the resources below are extremely useful and very budget friendly. They will get you to a point where you can deploy your own web app or build a static site, but it’s up to you to find peers to program with, practice talking about your code, and refining your problem solving process.
If you are committed to going all in and want to really master how to code, I recommend joining Launch School (LS), which is the curriculum I’m now working through. This course is my recommendation because it’s completely self-paced, affordable, and has a community of smart and dedicated students who are excited to work together in group study sessions or pair sessions.
How to use this guide
You’ll see recommendations for Ruby, JavaScript, and Python. I recommend either starting with Python to learn the basics of coding, or using the LS materials (the intro course is free) to get started with either Ruby or JavaScript, then either simply sticking with their curriculum, or using the resources listed below to continue the learning path.
Be sure to join FB groups, local meetups, or other groups with people who can learn and code with you or mentor you. Expect to get stuck at times or spend hours coding something that will take you 10 minutes a few months later. Comment below if you have any questions or want more specific recommendations! I have done my fair share of scouring resources online 😂.
Miscellaneous courses
Learn Code the Hard Way — Python (Zed Shaw)
- This book is all about repetition. I recommend Python initially because it is a very intuitive language to learn. The key thing to do is to practice the exercises over and over again, then maybe go write your own code examples. Even if an exercise seems boring, it might be teaching an important and underlying principle, so don’t skip it.
Coursera — Python for Everybody Specialization
This course series will expose you to the types of topics you should be learning about. Don’t rush through them. Practice the code you see and open up documentation online and go beyond the course materials so you have a good mental model of all of the concepts and can describe them verbally.
- Coursera— Using Python to Access Web Data
- Coursera— Using Databases with Python
MIT OCW — Intro to CS and Programming in Python
You can find open source MIT courses on their site. These are amazing resources because they include lectures and an outline on what you are meant to learn. If you want to start to learn about data structure and algorithms, head to these courses.
Launch School
Launch School has both Ruby and JavaScript tracks. I decided before enrolling in LS that I hate Ruby and love JavaScript, so I’m working through the JS track at the time of writing this article. The Ruby track includes JS course work as well, so you learn both. Their courses focus on mastering the content, so you can’t progress until you have demonstrated via written and interview assessments that you have in fact mastered the materials. This option is $199/month, so it’s cheaper than a bootcamp, but still more expensive than everything else on this list. My goal in joining LS was to have a community of peers to learn with and practice with, and it has delivered. LS will not promise things like job placement, etc, unless you enroll in their Capstone program — they’re emphasis is on staying focused and teaching you to code.
Practicing Coding
There are endless coding practice websites that you can use. I personally like CodeWars the best, but sites like Leetcode and Hackerrank have questions geared more towards job interview preparation and are also great for practicing. Code a few problems every day and practice the PEDAC process so you don’t get stuck while live coding with a peer or interviewer.
Articles/ books
Bloomberg “What is Code?” article by Paul Ford
⭐️ The Dream Machine — M Mitchell Waldrop Audible Amazon
Learning frameworks as a medium for learning more!
There are a million you can learn how the internet works and how a website works. Flask (Python), Rails (Ruby), and Express (JavaScript) are some popular frameworks that have a lot of documentation and articles on how to get started. If you decide to learn one of these frameworks, make sure you know how the underlying code works first, especially with Rails, because there is otherwise a lot of “magic” and you’ll spend hours being frustrated that could be spent learning about Ruby instead.
Flask: The New and Improved Flask Mega-Tutorial
Rails: Rails tutorial
Express: Academind or Code with Mosh
What you’re really learning:
- HTTPS
- REST architecture
- Data models
- PostgreSQL
- SQLite
- User authentication
- Secure user sessions, cookies, etc.
- APIs
- Deploying on Heroku
- Git
- Test driven development
Once you’ve gone through all of that, you still have A LOT to learn but you should have a good idea of what you know and what you need to learn still by then. Find all of the various topics in Kyle Simpson’s You Don’t Know JavaScript series, and learn about things like:
- hoisting
- modules
- classes
- exceptions
- closures
- private data
- scope
- testing tools
- more!
Remember that coding is an endless learning process, but that you’ll be able to master the basics within 1–2 years if you persist and dedicate time every week to learning new concepts and practicing coding. You don’t need to have epic math under your belt to get a front end job, and you don’t need a CS degree to be an engineer!