This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Full Stack Vault
How to learn programming for beginners (for free)
There are three main questions that programmers get asked a lot from friends and family:
- Can you hack my friend’s Facebook account?
- I have a cool app idea, can you build it?
- How can I also learn how to code?
I’m mostly excited about question #3, that’s why I wrote this huge guide.
If you want to learn programming online for free, you’re fascinated at the thought of building cool things, and you’re dreaming about the rewarding job opportunities in the field, then you’ve come to the right place.
This beginner-friendly guide will walk you through five important steps you have to take to learn programming as a beginner. I’ll also give you tips for learning programming, as well as answer the common questions that beginners have about learning how to code.
By the end of this article, you’ll:
- Learn the right mindset before starting
- Get to know the different fields of programming
- Have a learning roadmap for the kind of programming you choose to specialize in
- Know how to avoid the common pitfall that aspiring programmers fall into
- Have answers to the common questions and doubts beginners have about learning how to code
So you’re a beginner and you want to teach yourself programming from scratch. How on earth do you do it?
1. Start with the right mindset
First, you have to get it out of your mind that there’s a universal right way to learn programming, because there’s none.
The truth is there are many ways to the top of the mountain.
If you ask any programmer about how you can start, you’ll probably hear specific advice such as, “learn Python” or “learn C”. Those suggestions aren’t inherently bad, but they’re usually suggesting something that they personally like.
You have to do your own research in conjunction with the advice that you get.
You see, “how to learn programming from scratch” is a broad question. And while there’s no universally correct answer, there are important questions you have to ask yourself in order to start on the right foot.
That’s what this guide is for.
Now that we have out of the way, let's keep going...
2. Figure out what kind of programming you want to learn
If you want to learn programming, the next step after fixing your mindset is to figure out what kind of programming you want to learn.
There are two reasons why you need to think about this:
- The technologies you have to learn depends on what you want to do.
- It’s fairly hard to learn how to code when you’re not excited about the things you’re building.
So first you have to think about what kind of projects you want to build, or what kind of problems you'd like to solve with programming.
Do you want to work on mobile or web applications, Windows or macOS applications, PC games, data science, robotics/electronics, automation of manual tasks in your job, etc.?
If you're completely clueless about which one to pick or where to start, try web development with the JavaScript programming language.
I warned against very specific advice like this earlier. But there are good reasons why many self-taught programmers got started in web development - the same reasons why you might consider starting there too.
Let’s explore those reasons…
2.1 A good place to start if you're undecided
As I said, most self-taught programmers got started in web development, and it’s for the following reasons you can’t ignore:
a. Low learning curve
The web development field has one of the lowest barriers to entry because it's one of the easiest to learn and get started with.
Because of the nature of the field, you can start building projects rather earlier in your journey compared to other types of programming.
One advantage of this is you can gauge faster if you really like coding or not. It’s a great way to get your feet wet in the world of programming.
For example, on the front-end side of web development where you build the client-side of web applications, you can immediately see the output of your work, and it's a good motivator to keep going.
b. Abundant resources online
When you’re teaching yourself programming from scratch, you won’t run out of online resources for learning web development.
Remember, you’re self-teaching. Lacking resources is not a good way to learn when you’re teaching yourself programming.
The best thing is a LOT of these high-quality web development resources are also free.
This website is enough proof - it’s a curation of free, high-quality resources for learning web development.
You can learn from books, courses, tutorials, and documentation for any topic under the web development sun. Just browse the home page and see the quality of these free resources.
c. JavaScript is versatile
JavaScript is a programming language that is mostly used for web development. But wait, there’s more!
Gone are the days when JavaScript was just a scripting language to make interactive elements for the browser. Now, you can build web servers, mobile applications, and even games with it!
Combine JavaScript’s low learning curve with this versatility, it’s no wonder why it’s one of the most popular programming languages out there.
d. Many communities to help you learn
Teaching yourself how to code can be tough despite the abundance of learning resources and the low learning curve of web development.
Why? Because you’re alone!
It’s easy to get frustrated and give up altogether when you’re learning programming on your own.
But that doesn’t have to be the case.
There are many communities dedicated to learning web development and supporting newcomers to the field. That’s great because you can ask more specific questions and get insights from people with more experience.
These communities are also popular for finding accountability and study buddies. You can find people from all kinds of backgrounds, from students to professionals who are trying to switch careers into tech.
You can learn together, motivate each other, and even give each other feedback!
Just check out this example and tell me it’s not the best place to hang out when you’re starting out in coding: https://forum.freecodecamp.org/
Other than that, you can also find similar communities on Facebook groups, Discord servers, subreddits, and Twitter.
e. More job opportunities
If you’re looking to do more than just dabble in programming and instead switch careers into tech through self-teaching, then you probably already know that web development is a good field to consider.
Web developers are in higher demand in the job market now more than ever.
The use of the internet and web-based technologies continues to increase, and more and more businesses and organizations are relying on the web to connect with customers and provide services. As a result, there will always be a need for skilled web developers who can build and maintain websites and web-based applications.
Examples of web-based applications are your favorite social media platforms such as Facebook, Twitter, and Instagram. Other examples are e-commerce platforms (Amazon and Ebay), video and streaming services (YouTube, Netflix, Spotify, and Twitch), collaboration tools (Slack and Zoom), and more services that disrupted many industries (Airbnb, Uber, Grubhub, Zillow, Dropbox, TaskRabbit, and more).
Web development will continue to be a big part of the future, and you can be part of that future if you decide to become a web developer.
Just do a quick Google search for web developer jobs such as “full-stack jobs”, “front-end jobs”, and “back-end developer jobs” and you’ll always see lots of results.
You could also try searching for a specific technology such as “JavaScript developer jobs” or “React developer jobs” and it’s the same thing.
Read more: prospects of a web development career
f. It's not set in stone
Deciding to start in web development is not set in stone.
Web development can be the start of your journey but it doesn’t have to be the end. I’m only suggesting it as a great place to start because of the reasons above.
The good thing is that a lot of what you’ve learned in web development can be carried over to mobile app development, etc.
Computer science and the core concepts of programming are the same across the programming sub-fields, as you will soon realize when you switch from one programming language to another.
What I’m trying to say is that you shouldn't overthink how to start, what to pick, etc. What's more important is that you get started and gain momentum. Just get your feet wet, try it out yourself, and see if you like it.
If you think it’s not for you, it’s not a big deal. You can always switch over to another field or programming language if you realized that you don’t like web development.
That’s the beauty of being a self-taught programmer - you don’t invest thousands of dollars into a degree before figuring out whether you like the practice or not. You can always switch to something else.
2.2 Which programming language should I learn?
Again, it depends on what you want to do or build (don’t worry, I’ll list the programming languages used for the popular use cases below).
To reiterate, there’s no universally “correct” way to learn programming. In the same way, there’s no “best” programming language. Each programming language solves a specific kind of problem.
So to answer this question, you should start by thinking of a problem you want to solve or an application you want to build, then research what programming language is used for that type of project.
If you want to build a website or web application, you need to learn JavaScript, among other web technologies such as HTML and CSS.
For mobile applications, it depends on the operating system. For iOS, you need Swift. For Android, you need Java or Kotlin.
For desktop applications, it still depends on the operating system. For Windows, you need C#. For macOS, you need Swift. Notice how you can use the Swift programming language for both desktop (macOS) and mobile (iOS) applications?
For programming Arduinos or Raspberry Pi, you can choose between C++ or Python.
For building games, you can choose from a lot more languages, such as C#, Java, JavaScript, Python, LUA, and more.
For mathematical computing or data analysis, you can use Python, JavaScript, Scala, Julia, and more.
2.3 Should I learn more than one programming language at once?
It’s generally not a good idea to learn multiple programming languages at once if you’re going the self-taught route (learn without formal education or training) and you’re still a beginner.
There are two main reasons for this:
First, learning how to code is a challenge and it takes time. Learning more than one language at once as a beginner (especially when you’re self-taught) can overwhelm and frustrate you. If you try to learn multiple languages at once when you’re just starting out, you might end up not learning anything at all.
Second, the basics of a lot of programming languages are quite similar. That means it gets easier to learn a second programming language after being proficient in one language. That also means that learning multiple languages while starting out makes you learn the basics in multiple “syntaxes” which is not a good use of your time.
It’s better to stick to one programming language for a few months and master the basics of that language first. Once you have a strong foundation in the basics of programming, it’ll be easier to learn additional languages in the future.
So, what you should do instead is focus on building a strong foundation in general programming fundamentals using one language before you move on to your second language.
You should only learn more than one programming language at once if the project you’re working on requires it.
3. Pick your curriculum
After you’ve done the previous steps above, next you have to know the roadmap for learning the technologies needed to build your application in mind.
You see, each programming specialization requires knowing not just one but many technologies.
A learning roadmap is important because most technologies require you to learn their prerequisites first. If you’re well-informed about these prerequisites, you’ll be able to avoid learning the technologies in the wrong order.
So give me the curriculum!
Before I provide the learning roadmaps, remember that “programming” is a very broad topic. And yet the roadmaps for the different programming specializations are more specific.
That’s also why I first urged you to pick what kind of programming you’d like to do and start from there.
The best I can do is provide a general guide like this one, and point you in the right direction where you can learn more specific programming technologies you need.
So don’t fret - here are the roadmaps for the popular programming fields that you can choose from:
3.1 Web Development
If you want to learn web development, start with this roadmap.
That's honestly all the roadmap you need to get started in web development. Not only does he list the technologies you have to learn, but he also explains what they’re used for and why they’re helpful.
But if video style is not for you, check out the frontend developer roadmap or the backend developer roadmap, or both if you want to learn full-stack.
What’s the difference between frontend, backend, and full-stack development?
All three are different aspects of web development.
Frontend development focuses on the client-side of web development. This involves creating the user interface and design of a website or web application. This also includes the layout, visual elements, and interactive features of the website.
In other words, frontend developers code the stuff you see and interact with on the browser.
For example, the frontend is responsible for displaying a form on a website. The frontend logic also “listens” to the user’s input on the form and to the user’s click of the submit button. Finally, it sends the values to the server.
Backend development focuses on the server-side of web development, which involves handling the data and logic that powers the application.
For example, when a user submits a form on a website, the backend logic will process the user's input, store the data in a database, and return a response to the frontend to update the user interface.
Full-stack development involves both the frontend and backend sides of a web application. That means that full-stack developers handle both the client and server-side of things.
3.2 Mobile Development
If you want to develop native mobile applications, these are the roadmaps you can choose from:
- Android → Android developer roadmap
- iOS → iOS developer roadmap
You can also choose the cross-platform route and start learning one of the following:
- Flutter → Flutter developer roadmap
- React Native → React Native developer roadmap
What’s the difference between native mobile development and cross-platform mobile development?
Native mobile development refers to the development of mobile apps that are specifically designed to run on a particular mobile operating system, such as iOS or Android.
This allows developers to create apps with the best possible performance and user experience since they can take advantage of the full range of features and capabilities of the targeted platform.
Cross-platform mobile development, on the other hand, refers to the development of mobile apps that can run on multiple mobile operating systems. This is done by using a cross-platform framework, such as React Native or Flutter, which allows developers to write a single codebase that can be compiled and run on multiple platforms.
Cross-platform mobile development is more efficient when developing mobile apps since it allows developers to create a single app that can run on multiple platforms, rather than having to create separate versions of the app for each platform.
However, the performance and user experience of cross-platform apps may not be as good as native apps, since they may not be able to take full advantage of the features and capabilities of each platform.
3.3 Game Development
Ah, game development. If you have a passion for video games, a desire to create interactive experiences and tell stories through games, or a fascination with the technical challenges involved in game development, here’s the roadmap for you:
3.4 Data Science
If you’re interested in using data to solve complex problems, enjoy the satisfaction of finding patterns and trends that can help inform business decisions or drive research, and want to be a part of a rapidly growing and in-demand field, I got you:
3.5 Embedded Engineering
You can do cool things with embedded programming, such as developing control systems for robots, drones, and other autonomous devices; creating smart home appliances, such as thermostats, security systems, and lighting systems; building consumer electronics, such as smart watches, fitness trackers, and portable speakers; and so much more.
So if you’re interested in working with both hardware and software, and enjoy the hands-on nature of the work, here’s the most straight-forward roadmap for you:
Embedded software engineer roadmap
4. Build projects
This is very important and something you must take seriously.
The most common mistake many aspiring programmers make when learning on their own is not building their own projects.
They spend months (some even years) consuming resources, but they can't code anything on their own - even basic stuff!
This is called being stuck in tutorial hell. It happens when you don't build your own projects.
Yes, I just quoted myself. The point is, you’ve got to build your own projects because you will never truly learn programming by just passively learning.
Why?
Because programming is like any other skill. Can you learn how to ride a bike by just watching a tutorial online? What about driving a car? Or swimming? Or learning another language?
Building projects helps you to:
- Develop your skills by applying the concepts you’ve learned in a practical setting.
- Retain what you’ve learned.
- Keep yourself motivated because building your own projects can be a fun and rewarding experience.
- Showcase your skills and accomplishments to potential employers or clients.
So please, build your own projects after learning the basics of your programming language of choice. Start small with your first project, and add more features and functionality as you go further along in your journey.
5. Find a community
If you want to teach yourself programming from scratch without getting a formal education (degree or bootcamp), then it’s even more essential to find a community.
Being part of a community when you’re aspiring to become a self-taught programmer can be the make-or-break piece of your learning journey.
That’s because a community provides the following:
- Valuable support and guidance as you learn and grow as a programmer. Fellow programmers can answer your questions, provide feedback on your work, and share their own experiences and insights, which can help you overcome challenges and accelerate your learning.
- A sense of belonging and connection which is especially important for aspiring programmers who are learning on their own or feeling isolated.
- Access to a wealth of resources and opportunities, such as online courses, workshops, meetups, and hackathons. These can help you learn new skills, network with other programmers, and gain experience working on real-world projects.
As I mentioned earlier, you can find these communities on Facebook or Slack groups, Discord servers, subreddits, and Twitter.
Learn How to Code - Frequently Asked Questions
How long does it take to learn how to code?
If you’re starting from zero, the amount of time it takes to learn how to code depends a lot on how much time you are able to dedicate to learning, and how consistently you show up to learn.
That’s why for some people, it may take only a few months to learn the basics of a programming language, while others may take longer to become proficient.
On average, it may take several months to a year of dedicated learning to become proficient in a programming language. However, learning to code is a lifelong process, and even experienced programmers continue to learn new languages and techniques throughout their careers.
Instead of worrying about how long it will take you to learn programming, it’s better to focus on dedicating time to learning consistently.
It’s better to set aside 30 minutes every day than to spend 8+ hours every other week. Aside from building a habit more effectively, there is a science to showing up more often when learning something new.
If you want to learn more about learning effectively, check out this amazing free course, Learning How To Learn.
Is math important in programming?
Yes and no. It depends on what kind of programming you want to specialize in.
After reading this far, you probably already know that programming is a big field that has different areas.
But in general, you don't need to be good at math to be a programmer. A lot of programming specializations do not require you to be good at math. You just need to know how to do basic math like adding, subtracting, multiplying, and dividing. In fact, a lot of programmers go through their entire careers barely doing any math at all (I’m one of those).
Which fields require more math and which fields require less math?
Some areas of programming that require good math skills are making games and working with data. To make 2D and 3D games, you will use math concepts like vectors, matrices, and linear algebra. Data analysis and machine learning use statistics and calculus.
Jobs like web development and mobile development don't need much math. In those areas, it's more important to be able to write good code and build things that people want to use.
Am I too old to learn how to code?
You are never too old to learn how to code. Many people start learning to code later in life and go on to have successful careers as programmers. The most important thing is to have a willingness to learn and a dedication to practicing regularly. As long as you are willing to put in the time and effort, you can learn to code at any age.
Do you need a high IQ or be a genius to learn programming?
No, you do not need a high IQ or be a genius to learn programming. While being a genius can certainly make learning to code easier, it’s not a requirement.
Many successful programmers are not geniuses, come from a wide range of backgrounds, and have a variety of different strengths and abilities. What is most important is having a willingness to learn, a dedication to practice, and the ability to persevere when you’re struggling.
As long as you are willing to put in the effort, you can learn to code, regardless of your IQ.
Is it okay to Google a lot while learning programming?
Yes. In fact, it’s encouraged!
One of the most important traits successful programmers have is the ability to Google things. This is something that aspiring programmers have to learn how to do too.
Being able to effectively use Google and other online resources is an important skill for programmers, and is a valuable tool for learning and improving your skills.
However, it's important not to rely solely on Google and to also learn how to think critically and solve problems on your own. For example, it’s also important to make the effort to understand the code you’re copying from Google rather than just blindly copy-pasting them into your application.
Do I need a CS degree to land a software developer job?
You don't need a computer science degree to be employed as a software developer. Many successful software developers have degrees in other fields or no degree at all.
The CEO of the company I work for is my favorite example. Before founding his own successful tech company that serves clients such as Bosch and Siemens, he was a senior premier field engineer at Microsoft. And yet he doesn’t have CS degree under his belt. What did he study at the university? Physics!
Furthermore, two of my favorite professors during my university days were accounting and mechanical engineering majors, respectively. They are legit programmers who held software engineering jobs and also had successful software developer freelance careers before teaching. They only had to get a master's in our field because it was a requirement to be able to teach at the university 🤷‍♂️
There are many more stories like this, some of which you can read in the Developer Journeys section of our website. These are inspiring stories of real people who are self-taught programmers who have successfully landed a job in tech.
However, a degree in computer science can be helpful because it can provide you with a strong foundation in computer science concepts and principles, as well as experience with a wide range of programming languages and tools.
Additionally, many employers prefer to hire candidates with a computer science degree because they have demonstrated that they have the necessary knowledge and skills to succeed in the field. So, while it's not necessary to have a degree in computer science to become a software developer, it can be beneficial.
Got more questions? Let me know!
Do you have a question that wasn’t answered above? Please don’t hesitate to ask! You can reach me at hello@fullstackvault.xyz or over at Twitter.
I was a beginner too, so I’m more than happy to help. Other than that, happy coding!
This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Full Stack Vault
Full Stack Vault | Sciencx (2022-12-09T18:41:33+00:00) Learn To Code From Zero – How To Teach Yourself Programming From Scratch. Retrieved from https://www.scien.cx/2022/12/09/learn-to-code-from-zero-how-to-teach-yourself-programming-from-scratch/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.