Ash Drake

Software Engineer

[email protected]

Twitter Github

New To Programming - Good Resources To Get Started

I often get emails from new developers who are looking to transition into tech, but not quite sure where or how to get started. It is a challenge that I have also faced myself - I also started learning to code several years ago, feeling overwhelmed with all of the options, and having little to no context to help choose between them. Should I do a bootcamp? Which bootcamp should I do? What are some good tutorials? Which language should I learn? What is the difference between front end and back end?

Eventually, we all find our own unique ways out of that rut, but one thing each path has in common is settling on a focus – finding a way to decide what not to learn, just as much as what one should learn. This leads to better time utilization, more interesting projects, and more specific things to share when interviewing for a job.

I tend to give generally the same advice to everyone who writes me, so I figured it would make a good blog series. If you’re just starting to learn to code, or have reach body { font-size: 1.2rem; }ed a place where you feel stuck, I hope this is helpful to you.

Getting Started Series:

  • Good Resources To Get Started (you are here)
  • How to Use Tutorials Effectively (coming soon)

Good Resources To Get Started

This is a fairly short list. This is mostly because the advice I give to new programmers looking to break into tech is that step one should be to build your own static site, and try to avoid doing endless tutorials. A concrete project that allows you to express your creativity from the get-go will be much easier to stick with and finish.

Regardless of which career path you choose - front end, back end, design, devops - a simple website project will teach you something. Even though a static website doesn’t have much of a backend, you can learn some JavaScript building a static site, which gives you an easier jumping off point to learn serverside programming later. (This is probably a good candidate for the next post in this series.)

To get started building a static site, I frequently recommend these resources:

Building A Website

HTML/CSS

Shay Howe’s HTML/CSS Tutorial

https://learn.shayhowe.com/html-css/

Learning Result: Build a static website you can view on your laptop

HTML, CSS, and JavaScript are the three ingredients for every website you interact with, including this one. Understanding how they work, and work together, is the foundation for making websites, apps, and anything else on the internet.

What I really like about this course is that it resists the urge to rely on third party libraries - they change too quickly for beginners to keep up with, particularly for front end development. At the beginning of your learning journey, I encourage you to focus on the languages themselves, how they work, etc., more than any particular framework.

Using frameworks (React, Angular, Vue) also puts you into “managing dependencies” territory, which can be frustrating and is practically a topic of it’s own. It’s usually better to avoid letting that slow you down in the beginning, and I think this tutorial does that really well.

JavaScript

Free Code Camp - JavaScript Algorithms and Data Structures

https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/

Learning Result: Familiarity with JavaScript

To oversimplify a bit – if HTML is the content on the page, and CSS is how it looks, then JavaScript is what it can do. Learning JS will introduce a lot more functionality to your website, and get your feet wet learning a real programming language.

Learning JavaScript is a great jumping off point if you’re just learning to code: you can start by running it in your browser console, then move to writing your own JS files, and when you’re ready to learn serverside programming, you can transition to Node. This blog post does a better job laying out reasons to start with JS.

The Free Code Camp learning path is completely in your browser, has integrated tests to check your work, and the Free Code Camp community is known for being friendly and helpful.

Deploying Your Site

Linux Upskill Challenge

https://linuxupskillchallenge.com/

Learning Result: Your site will live on the internet

The Shay Howe tutorial gives you HTML and CSS files that you can serve on your laptop, but it isn’t accessible over the internet. The Linux Upskill Challenge will walk you through getting that nice website you’ve built onto a real, working, webserver!

It also introduces you to some command line tools, which I have found more difficult to find good learning resources for. It markets itself towards sysadmins, but I would argue having this knowledge is really useful for any dev - it teaches you how websites are served in a linux environment, exposes you to the terminology, and helps you connect all the dots of the entire system.

There is a subreddit attached to this program, and it runs through the lessons sequentially so you can follow along.

  • Note that deploying your website in this manner incurs a cost - you’ll have to pay for the Digital Ocean Droplet (server that the site is hosted on) and a domain. Check out Github Pages (after learning Git) for an easier and free way to host your site.

Design

You’ll notice I don’t have any resources here. If I did, my site would look a lot nicer than it does! If you have found a learning resources that you like for 101-level Design, please share it with me; I’d love to include it here (as well as avail myself of it!)

Becoming a Professional Developer

Almost every single person I’ve chatted with has this as their eventual goal. If this is you, these topics become more relevant as you’re preparing to launch your job search.

Git

Version Control with Git - Udacity

Course: https://www.udacity.com/course/version-control-with-git--ud123

This video course walks you through understanding and using git, which is a very important skill for working in teams. With many people modifying the same code at once, it’s important to be able to keep track of your changes.

Git Manual

Site: Git Book

This is the best, most in-depth manual for git. It’s dense, but a good place to come if you want to know “how does that actually work?”

Miscellaneous Git Resources: Git out of trouble

Oh Shit, Git When you’re stuck, and need a magic git-cantation or two.

Git Rebase Tricks (from my blog) Git rebase and good git commit message hygiene will help you manage your own changes, and work effectively inside of a team.

Career / Other

https://wizardzines.com/

Julia Evans' Zines are really useful and written with someone new to the topic in mind. Several are free, but this is one resource I would actually be happy paying money for.

The zines span several categories, but focus mostly on Linux/server admin skills and career topics. Many are posted on her blog, which is a great read.

FAQ

There are a ton of great tutorials out there; I’m definitely not suggesting you ignore them. Tutorials are useful for introducing you to something completely new. However, it’s easy to get stuck in “tutorial hell,” where once you leave the safe confines of the somewhat contrived example, things immediately become much more complicated and harder to understand.

Having a good foundation in the basics first - focusing on learning JavaScript before worrying about learning Angular or React - will help make your time spent in tutorials more helpful to you in the long run.

I’m not interested in webdev, should I still build a site?

I’d be curious to hear others' opinions on this one – for aspiring app developers (iOS, Android), I’d argue that building websites is still useful, since it teaches you more generally about building over the internet (HTTP, APIs, etc).

For career paths more like embedded software, I don’t have enough context to really say. However, it’s always nice to have a personal website you can host your resume and a portfolio on, so why not?

Conclusion – Go Forth and Build!

I have gotten a lot of value out of all of these resources, and hope you will too. Good luck!