Coding Curriculum  Now that you have chosen your language and stack you want to learn, you need a curriculum to guide you.. You have two options for this: you can create your own or select a pre-defined curriculum that has already been created. This chapter will show you how to se- lect or create your curriculum, start planning, and take action.  Step 1: Create an Ordered List The first thing you should do is look at coding school (or ”bootcamp”) curriculums that teach the same stack you are trying to learn. This is a good first step because their sole focus is getting students up to speed and “job ready” in as little time as possible, and can help you build your learning plan, self-directed or predefined. Here are a few recommendations (sometimes you will have to enter an email to be able to see their whole curriculum): •App Academy (appacademy.io) •Thinkful (thinkful.com) •Grace Hopper Academy (gracehopper.com) •Springboard (springboard.com) As you review them, take note of what technologies they teach and the order they teach them in. You will probably want to keep the same order for your own curriculum since they usually laid out from easiest to hardest. The material should also be layered and will likely build on the initial material. If you are learning full-stack web development, for example, your keyword list could look something like this: Node.js, Express.js, Vue.js or React.js, HTTP, REST, MySQL, Sass/CSS, HTML, Git, and Webpack. Your curriculum should also include most, if not all, of those items.  Step 2: Choosing a Curriculum Option A: Choosing a Pre-Defined Curriculum Let’s start with the easiest option and the one I recommend: choosing a predefined curriculum (or multiple curriculums consec- utively). Below is a list of quality coding curriculums, and, remember that you might have to use multiple to get to your learning goal. Fortunately, many of the popular free and paid curriculums online have reviews from other students going through the same process that can help offer insight into the materials and overall program. Free Options: freeCodeCamp: This is a project-based curriculum with thousands of hours of content for learning Python and JavaScript. Open Source Curriculums on Github: There are some great curriculum options in Github repositories that compile lists of free resources to take you through bootcamp or degree-equivalent programs at your own page. Here is an exam- ple of a do-it-yourself Computer Science degree from Open Source Society University: github.com/ossu/computer-science. You can search Github.com to find more. Paid Options: Coursera Specializations: These are a series of courses taught by accredited universities that cost about $39-$49 per month to take. I recommend checking out the Full-Stack Web Development with React or Android App Development Specializations. They have many other good ones as well. Team Treehouse: Their tracks are very well-structured for beginners, and they have a broad range of different tech- nologies covered on their platform. You can also try out one of their Tech Degree programs, which has more structure and support than their regular website. Udacity: If you need to learn something more cutting-edge like machine learning or robotics, then I recommend look- ing at syllabuses from the Udacity nano-degree programs and seeing if any of those meet your needs. I have found them to be in-depth with well-presented course materials. Udemy: I recommend checking out the Complete Web Development Bootcamp by Angela Yu. She is an excellent teach- er and the course takes you all the way from the very basics of HTML to building your own full-stack JavaScript projects with React. There are lots of other good, comprehensive classes on Udemy as well. The good thing about this site is that you can see reviews and ratings from thousands of other students and you also get a “no questions asked” 30-day return policy. Both the free and paid curriculums I mention above can be robust and high quality, and, in my experience, have proven bene- ficial for new programmers. Sometimes paying for your education can be a good motivator to push through and complete the cour- ses, but you can choose what’s right for you and your budget.  Option B: Creating Your Own Curriculum Creating your own curriculum is more time-consuming, but might be required if you are trying to learn emerging technologies or something specific. The best way to do this efficiently is to take your ordered list of technologies and research the best resources to learn each individual topic. Here are some helpful websites with beginner-friendly courses, videos, articles, books, and interactive coding challenges to sup- plement your learning: •No Starch Press •Pluralsight •Front-End Masters •College course sites like Coursera and EdX •Khan Academy •Code challenge sites like Hackerrank and Codewars •Mozilla Developer Network Guides and Tutorials •Launch School’s Open Library (launchschool.com/books) •LinkedIn Learning •Udemy •SoloLearn •Talk Python to Me •Microsoft’s Learning Paths (docs.microsoft.com/en-us/learn) If you choose this route of creating your own curriculum, do not spend more than a few days on it before you start coding. Find courses or other materials for each topic and move on to the next one. If you start going through a course and do not like it or cannot understand it, then just replace it with another one and keep going. Much of your learning should come through building projects. In software development, these projects are called applications. Once you have a list of learning materials, write down one project to build for each topic, and know that some projects will cover multiple technologies and concepts. As you build out your projects, try to utilize every concept you learn to practically apply your newly-gained knowledge. If you spend a lot of time studying without applying the material, you will easily forget what you learned, plus getting your hands dirty makes learning more enjoyable and rewarding. It feels amazing when you see something you’ve cre- ated after many hours of hard work. I recommend going through just a few lessons, then jumping right into a project. This is a good pattern to maintain throughout your learning: go through a few tutorials, videos, and articles, then jump right in to building your own project. The process will look something like this: Tutorials for Learning New Concept X 1.Tutorial 1 2.Tutorial 2 Practice Concept X 1.Project 1 Tutorials for Learning New Concept Y 1.Tutorial 3 2.Tutorial 4 Practice Concept Y 1.Project 2 Note: the time it will take you to complete each project will increase as they get more challenging and complex. If you are stuck not knowing what projects to build, take a look at websites or apps that you use and try to build a clone of one of them. You can also look at portfolios or curriculum from coding bootcamps to see what projects those students are building. Since this is for learning, the idea doesn’t have to be novel, just the code to build it. There are also some project recommendations on my web- site, linked from the resources for this book. Step 3: Adding Supplementary Material There are certain concepts that you will need to know beyond learning a tech stack like design patterns and algorithms (basic and intermediate, no need to get too advanced). I think these are absolutely essential for being successful in the industry. Algorithms teach you problem solving skills and how to think in code. I cover this a little later on in the book, but I want to include resource recommendations here to include in your curriculum. •Get an account on a website like codewars.com and practice going through their coding challenges at least once a week. Start with the most basic ones and keep pushing yourself to get better. •Go through Harvard’s CS50 course on EdX. It is excellent at teaching programming basics and you can choose to pay $90 for a certificate or audit the course for free. I recommend starting this near the beginning of your learning and doing it in parallel with the rest of your curriculum. •Depending on what you are learning, you may need to brush up on your math skills (especially if you are learning Data Science or a field of AI). Khan Academy, Coursera, and Brilliant.org all have excellent math courses with practical exer- cises. •Whatever you do, make sure you learn Git and Github. You will need this skills for any job and even for working on your personal projects. Try.github.io is a great place to learn all of commands you need to know for using these tools, plus it is free! I created a free course for freeCodeCamp’s YouTube channel on this topic. •Learn a code editor well. I recommend Microsoft’s VS Code for starting out. It is beginner-friendly, free, and is used professionally. •You cannot learn one language alone, you need to learn the ecosystem. No matter what type of programming you do, you will need to learn a set of tools and related skills. I recommend that everyone learns some command line skills as a programmer. My favorite book on this topic is The Linux Command Line from No Starch Press. If you are doing web development, you will also need to the developer tools available to you in modern browsers. All languages have some kind tooling available to you for debugging.  Conclusion Action Steps: 1.Create a list of technologies to build your curriculum. 2.Select or create your own curriculum. 3.Make sure it includes building projects to practice your skills. 4.Add in supplementary material like Harvard’s CS50 course.