Getting started - essential things you should know from the get go
About this Guide
I’m a developer and I’ve been tutoring new coders for years, I teamed up with some other people like me to make this guide to help out any new developer get the context and advice they need to get going. Wanna know more about these guides (there are others), me, and why we made them? See here.
Here’s a video with some advice to keep in mind before you go too deep down the rabbit hole:
Before you jump into one language or another, it can really help to orient yourself first. All too often students just jump into something like C++ and get turned off immediately. Take your time. I’d recommend you practice basic coding principles (take this mini course) and get some context on coding in general (with this mini path). Those resources are very quick, just take them, they’ll help to put everything else into perspective and will demystify things for you. The first one is 100% free, the second is part of Pro but you can easily complete it in the 7 day free Pro trial that they give every new account. You need to educate yourself even just a little in order to understand everything else. Do these first and then move on.
Picking a Path
There are many languages to choose from, pick the right one for you:
There are many also many paths to take in coding, pick the right one for you:
If you’ve followed my advice with the foundations above, you can make a fairly educated choice now. If you’re worried about picking the wrong thing, don’t be, there’s usually not a “wrong” choice for beginners per se. Programmers switch languages quite often even late in their journey and especially when starting out. Don’t wallow in doubt, just start with something! Once you’ve started and gained some skills you’ll know more about how to answer your own questions and hone in on the right thing.
Even when I tell people that all, they still ask me for “the right thing to learn for beginners” or some such. Really that depends on you, but for most people I recommend starting with HTML and CSS because even though they aren’t “programming languages” per se, they do get you started with code easier than most other ways, and you can see the results far faster. Whatever path you’ll take, even if it’s game development, you could do with knowing at least some HTML and CSS and you can get the basics quickly with these two free courses. If you’re learning web development, read this to learn more about what languages to learn and why. If you aren’t interested in learning web development at all and want to learn computer science or data analysis instead, you don’t need HTML / CSS, so Python (free course here) is probably right for you.
How long it takes to learn to code depends on your outcome, but here’s a video with an overview. For everyone, don’t expect learning to happen quickly, and don’t cut corners.
What you can expect / wisdom
You’re going to get a wave of confidence early that will collapse soon thereafter, and that’s totally normal! It’s called the Dunning-Kruger effect, you can read more about it here. Knowing this crisis is coming should help you to pull through.
Coding is hard (read this). There will come a point when you’ll look back at the beginning parts and think it’s easy, that’s what a lot of people might be telling you now, but it’s always hard and that’s okay, every coder struggles and there are ways to get through (watch this).
You’re going to get stuck. A lot. That’s normal, it’s part of the process (read this to learn about how to embrace that).
You’re probably going to experience imposter syndrome, it happened to me and every other dev I know, here’s a good blog post how to fight it.
At some point, whatever path you take, you’re going to get to a stage where you need to move beyond tutorials and find answers yourself in order to get the job done. The biggest things that will help you here are: 1) Google, which will take you to… 2) developer documentation (read this to learn how to use it) 3) the developer community. Developer communities come in all shapes and sizes, and the bigger ones like Stack Overflow will be vital for you someday (same for every developer) but they aren’t always super friendly for beginners. Making communities great is a group effort, and as a person asking questions you can make them better by asking good quality questions (here’s how) and doing your due diligence beforehand.
The Coding Mindset and Other Key (Neglected) Skills
There are certain qualities that successful developers have, more skills than just coding skills, and most sites or bootcamps don’t teach you these, or at least not directly. See this video and this list of tips for an overview. If you want more quick tips on some other skills you’ll need to succeed, read the articles here and here.
Watch this video on DRY – this will save you so much time and effort!
Read this to learn how to think like a programmer. Programming is about more than coding, it’s a mindset (read this), and that mindset isn’t hard to learn. Learn it early on and you’ll benefit all the way through your journey.
There are tried and true ways to get unstuck (watch this video). First, try to solve your own problems (you’ll learn a lot by doing so!) by paying attention to and Googling your error messages, looking for typos, syntax errors, and so on. Use the rubber ducky method (yes, seriously) and pseudocode (walkthrough here) for self-help with bigger problems. If you’ve done all of these steps and are still stuck, ask for help – including the context you learned by trying to DIY, appropriate links, your formatted code, and everything that can make it easy for someone to help you.
You’re gonna debug a lot, but most places don’t teach you how (at least explicitly), so here are 10 tips for doing so.
Finding a coding mentor is hard, but valuable. If you pay, like if you go to a bootcamp like I did, they come with it, and some paid Codecademy options can give you access to mentors, but there are other ways too and it doesn’t hurt to have more. Read this.
Essential Developer Tools
You’re going to need a text editor. There are lots of options (see here), and there are pros and cons (e.g. read this for two top options versus one-another). Atom and Sublime Text are both popular, check them out here. Visual Studio seems most popular with devs in 2019, follow this video walkthrough to set it up. Try a few of them, see what you like more, but if you just want a recommendation, I’d say use Visual Studio.
Real-time collaboration tools for developers are super handy, here’s a list. You might need these later. I like Glitch. Repl is also great, and as a bonus it was built by one of Codecademy’s engineers so it’ll be familiar to you. You can also use tools like Repl or Codepen to fiddle with and share smaller snippets of code or projects.
Not The End
Please reply to this thread with your own resources, advice, and feedback! We made this post a wiki so it can be updated and maintained by the community, we’re just starting them off. See our other guides here.