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
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.
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
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 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.
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.
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.
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.
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!
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!
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 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.
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!
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.
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.
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 !