In the 21st century, the ability to code is one of the most valuable skills a person can have. A report from Burning Glass states that more job openings are valuing coding, coding skills provide a road to high-income jobs, and coding jobs are growing faster than the job market. Learning the skill of coding has helped change people's lives and also provided them with a skill that is not only valuable but fun.
However, many people face barriers when trying to learn to code, as college degrees specialized in coding are expensive and time consuming, coding bootcamps and online courses are pricey, and textbooks can also cost a fortune for people. But a college education, coding bootcamps, and expensive textbooks are not the only resources available, as the internet has many high quality resources that are free.
Through this guide, you are going to learn about some high quality coding resources and some tips and recommendations on how to get the most out of your coding experience. I am not a spokesperson for any of these resources, and I am mentioning them because they are of high value and they will not cost you anything to learn from.
This post will be broken down into the following:
- Coding Fundamentals
- Web Development
- Documentation and Tools
- Places of Assistance
- Mastering the Interview and Landing the Job
Coding Fundamentals
When you are learning how to play a game, it is important to know how the game works before diving straight into the game -- the same standards apply to learning how to code. Learning these fundamentals of coding will make you a better programmer overall.
Khan Academy
For this guide, there are two sections from Khan Academy I want to focus on most: Algorithms and How Computers Work. By going through the section on algorithms, you will be introduced to some basic algorithms that are common. In later resources mentioned, you will learn more about algorithms at a higher level, and it will be easier to understand the algorithms reintroduced from learning about them previously. In addition to learning algorithms, learning how computers work will provide you with an introduction to how computers function at a low level. When you learn later how certain parts of a computer work, it will be easier to understand how the computer performs certain tasks that may have been previously foreign to you.
Think Python 2e
Python is a great first language to teach people because of its readability and the usability of the language. For some people learning C++, Java, or JavaScript compared to Python at first can deter them away from learning to code. Not only will Think Python teach you how to code in Python, it will also teach you the foundational pieces of a typical programming language and basic linear data structures. Once you complete Think Python, not only will you know Python at a basic level, but it will also be easier to learn any other coding language out there because you have already learned one programming language!
Disclaimer: The next two portions of this guide will probably be highly criticized by many, but I find learning discrete structures and data structures and algorithms important, because knowing those topics will make you a better programmer, and if you are looking to enter the job market, you will know the topics that many interviews test you on.
Discrete Structures - Margaret Fleck
Note: This book requires knowledge of college algebra. If you don't know college algebra, I suggest heading back to Khan Academy and going through the Precalculus section. Otherwise, you will struggle learning discrete structures.
This source might be a little biased because it is a book written from a professor at my university (University of Illinois at Urbana-Champaign), but it is a magnificent resource for learning discrete structures. By reading and doing the exercises from Discrete Structures by Margaret Fleck, you will learn the building blocks to learning data structures and algorithms. You will thank me later for this one.
Open Data Structures (Pseudocode Edition)
Learning Data Structures and Algorithms will not only help you learn how to improve the quality of your programs and pragmatic thinking, but also help you pass most coding interviews. I would suggest going through the pseudocode edition and use Python to code the examples and exercises in the book. After finishing this section, you will be ready to conquer anything programming-related and you will open doors for yourself.
Web Development
Web Development is one of the hottest areas in software development right now, as one can learn to become a front-end developer, back-end developer, and even a full-stack developer. The resource we are going to focus on learning web development from is Free Code Camp, because it is arguably the best resource to learn web development and connect you with a warm-loving community of other coders (besides The DEV Community).
Free Code Camp
Free Code Camp is the best free resource to learn how to code and web development from because it contains high-quality lessons, a community, Medium articles on coding topics, the ability to earn experience coding for nonprofits, 1049 coding challenges, 30 projects, and 6 well-respected certifications that can all advance your journey as a coder.
All those things I asked you to learn in coding fundamentals will be helpful here, as you will learn another language called JavaScript, and since you already know Python, it will be easier to learn JavaScript. In addition, you will implement challenges in Free Code Camp regarding Data Structures and Algorithms, which are topics you learned from Open Data Structures.
If there was only one resource you took away from this guide, I would hope it is this one. Free Code Camp has changed so many people's lives and some people have even gotten jobs after completing Free Code Camp's curriculum.
Documentation and Tools
Documentation
Documentation is so helpful. Whenever you are stuck with a coding problem such as calling a function in JavaScript, documentation is there to help you. The best places to start regarding reading documentation to help solve your problem is the official documentation for the product you are using. If you need more documentation, some other good places to look are the following: Mozilla Web Docs, W3Schools, and Geeks for Geeks.
There are other resources that are good too, and when in doubt just Google/WhateverSearchEngineYouUse it and find the answer to your question!
Text Editors & IDEs
Writing all your code in a notes application is not going to be a pleasant experience. Text editors provide an enhanced experience for writing code and saving the files. One text editor I have grown to adore is Visual Studio Code, which is an open-source text editor developed by Microsoft. IDE stands for Integrated Development Environment, and they are extremely efficient regarding coding because IDEs allow you to have all the features of a text editor plus the ability to debug (find and fix errors), write unit tests and run them on code, and the accessibility to integrate frameworks and libraries to enhance your coding project. One downside I find to IDEs are that they make your computer run slower (large RAM usage occasionally), but they can really improve the programming experience depending on what the programmer is building. For the most part, many IDEs are based on certain programming languages, but I will include a link to Visual Studio because there are plug-ins to integrate other languages in the IDE.
Git and GitHub
Learning to code is a fun process, but sometimes it can be frustrating. Where can I save my files so they can be accessible anywhere, presentable to anybody, and also open for collaboration? Enter the solution: version control. Git is a version control system and GitHub is a hosting service for version control using Git. I recommend learning Git and GitHub because they will make your coding experience much more efficient, GitHub lets you revert to previous commits of your projects, GitHub allows you the ability to collaborate easily on projects, GitHub provides an easy location for employers to find your work, and GitHub also allows you to contribute to open-source! The link on "Git and GitHub" provides you a link to learning the basics of Git and GitHub.
Terminal
Learning how to use a terminal can be very efficient and help aid you in your programming experience. If you are on macOS/Linux, you should have a shell probably installed on your machine that you can learn to use. Here is a good resource to learn the terminal. Windows has a separate shell, but there is a way to install a virtual bash environment, and here is a link on how to. I believe that book above will also be helpful in learning the virtual terminal on Windows.
Going through Free Code Camp, you learn how to use many other tools, so this concludes the documentation and tools section.
Places of Assistance
Stack Overflow
If you ever need to find a quick answer to implementing something in code, Stack Overflow is the place to go! There is so many answered questions on there, and if your question has not been answered, you can ask it there!
Reddit: r/learnprogramming
The r/learnprogramming subreddit is another community where you can find answers to programming questions or ask questions if you are curious about something related to code or need help implementing code!
Mastering the Interview and Landing the Job
As stated previously, programming is a field that is very lucrative and fun. Many people are interested in programming as a career, but the interview process can be difficult! These resources should help you navigate through the process and land that job you want!
LinkedIn
LinkedIn is a social network for professionals. Make sure that you have an up-to-date profile on there! It is a great place to search for entry level jobs or internships.
HackerRank
This is the area where your data structures and algorithms knowledge will come crucial, as HackerRank provides you coding challenges that you might see through the job interview process! I can tell you that I have had to complete coding challenges on HackerRank for job interviews for software development positions. It is a very popular site for coding challenges and a lot of employers utilize it as well!
Portfolio
A coding portfolio is important for any developer, and it is especially important for self-taught programmers! A portfolio contains personal coding projects you have worked on that you are passionate about! During the interview process, you can bring up projects that you are proud of, and it is good practice to have your two best/most relatable projects on your resume! Creating a personal site can even be a part of your portfolio! Here is an example of a portfolio site. Here is a post from a fellow dev.to user on writing a great portfolio display site.
Solid Resume
A solid resume will help you stand out. For tips, I recommend reading a fellow user's guide! Here is a link to their post on technical resume writing.
Optional: Twitter and Slack
Joining Twitter and following popular developers and companies can help get your foot in the door and learn more about coding. In addition, joining a tech-related Slack channel can also help get your foot in the door. I recommend joining both of these platforms and getting active, but social media is not for everybody I understand.
Final Notes
First of all, thank you all for reading this guide! I know it is long, but I truly believe it can be helpful to any kind of programmer! I would also like to note that this is my first post on dev.to and I hope to make more!
For new coders: I hope this guide gets you to where you want to get coding wise! If you don’t want to learn web development and are more focused on other areas, search for what you are interested in online, and you shall find tutorials to different areas of coding. I can also help if you ask a question about how to learn (fill in the topic) below in the comments section! Remember, there is always other resources to learn out there and there is many tools I did not discuss here. If you are interested in something, go learn about it!
For established coders: Thank you so much for reading! I appreciate you taking the time to read this!
To all: If you have any questions, comments, or feedback, please post them! I will respond to anything have to say! On GitHub, LinkedIn, and Twitter, you can find me @DannyDDore !
Top comments (10)
Nice list of resources, I would also recommend Exercism.io from their site:
First, thank you for reading!
I have to say I’ve never heard of Exercism.io in my life, and this is one of the coolest resources I’ve ever seen! I’m even contemplating starting to use it myself because the idea is so cool. Thanks for sharing!
Thanks. I love it.
Although I am "good/ok" with Python, I must say that biggest asset for me was to start small, like very small things..
Some people are more visual, and want results fast therefore py for me at least was best thing that I ever learned.
I started with just random cook books to get familiar with the syntax , then back in the days when I did something like
I said to my self, how would I write this in python ?
First , I just created a script that did exactly that, copied a file from one location to another. While that was a win situation, I said to my self.. how would I run this same script that it asks me for which file to copy and which destination to chose.. 30min later I had that running as well...
And then I said, well how would I put some text to it like, xx amounts of files have been successfully copied. ..
So thats how I started my python knowledge, its quite different nowadays, but anything new to me is the same principle.. start small with small wins and rewards are constant...
I took a systems programming class, and that class fascinated me so much because we learned how to write programs like copy in C. It was so interesting because you got to see how terminal programs/commands are made.
The way you learned Py is awesome, and it is how I learned JavaScript to the ability that I know it. I was like I want to build X and I need to use these tools to develop it and it was a slow learning process, but I loved the idea of thinking of building something and using the tools to get there.
I learned Python from "The Self Taught Programmer" by Cory Althoff. I was a beta reader, so at the time I received a free copy of the book. From there, I was really interested in data analysis, so I started learning packages like NumPy and SciPy and Pandas.
There are so many ways to learn coding, and people should pursue the best way that works for them. I just provided traditional routes in this guide because I know they are effective for most people, and I really am a fan of every resource I mentioned.
Thanks for sharing your story and thank you for clicking on this post and reading it!
Nice post! Of course hanging out here on dev.to itself offers some great opportunity for immersion learning as one progresses.
Thanks! Yeah I agree! I have loved this platform since I joined! Thanks for creating it Ben!
Danny - these are some fantastic resources. One thing I've always found hard though is getting paralyzed by so many resources / tutorials out there and knowing where / how to start to the point of getting hired or building an app.
I know for many people (myself included), they need an actual roadmap or specific sequence to take to be most efficient in learning to code and feel like they're making progress.
The best version of this that I've come across is by Andrei Neagoie from Zero To Mastery. His step by step guide is called: Learn to code in 2020, get hired, and have fun along the way
Have you seen it? If not, I think it's definitely worth checking out.
Another good resource is edx.org which unlike coursera does not mandatorily charge for computer science courses.
Thanks for sharing! That’s a great resource too, as MOOCs can be really helpful for people to learn to code!