How to Start Learning to Code – Handbook for Beginners
How to Start Learning to Code – Handbook for Beginners
After explaining why you definitely should, I'll cover some of the
benefits and challenges of being a software developer. I'll also discuss
some key strategies for approaching learning to code to help you
succeed.
By the end, you should have a more developed mental model
Forumof what Donate
it
takes to learn programming and how you can start or continue your
Learn to code — free 3,000-hour curriculum
journey.
Table of Contents
What is programming?
Introduction to
Programming
What is Programming?
Before we start with the advice, let's learn what computer
programming is.
This includes your car's navigation system, the ATM where you
withdraw or deposit money, the systems that allow you to order food
digitally, and so on.
Instead of doing all this with a pencil on paper – but instead, we have a
calculator on our phones. And this calculator is a computer program
that helps us find the result quickly.
Other programs that you may use every day include Facebook,
WhatsApp, Instagram, YouTube, TikTok, and many others.
Writing a program is sort of like cooking a meal. You may have an idea
for a delicious meal, but you need to buy the necessary ingredients
beforehand.
Once you have what you need, you prepare that food, put it in the
oven, and then wait while it cooks. After that, you serve the food at the
table and eat it.
Things work similarly with programming: first, you have an idea and
the knowledge to turn that idea into a program (or maybe you learn
while you're building the program – just like how you can watch
someone cooking food on YouTube and learn how to make that
recipe).
Then, you start to put the ingredients of the program into place, piece
by piece, until the entire program is ready to be served to users.
This unique aspect means that a single program can serve multiple
users simultaneously and over time.
There are costs associated with creating and maintaining software, Donate
Forum
but once developed, a program like a website can be accessed by
Learn to code — free 3,000-hour curriculum
numerous people at the same time without diminishing in availability
or quality.
Should you still learn how to code? (Short answer: yes.) Let's delve into
this concern, especially for anyone who's skeptical about the future
demand for coding skills.
Even the browser or the PDF reader that you use to read documents
are pieces of software. These words were even typed in a software
program.
But software is deeply embedded in our daily lives, powering tools and
applications across various professions and personal activities.
Forum Donate
The more we integrate into the digital world, the more central
Learn to code — free 3,000-hour curriculum
software becomes. It's reshaping our work, learning, and social
interactions, with its importance only set to increase.
So you may wonder: why should I learn coding when ChatGPT can
code an entire app for me in seconds? Well, here's something I want
you to understand: AI is not here to replace us, but to help us become
more productive.
Sure, AI can help you save time and energy by performing certain
basic, repetitive tasks for you. But grasping the basics of software
development remains crucial, especially for the more complex
problems that require your creative, experience-based solutions.
The rise of AI in coding doesn't signal the end for human coders.
Rather, I believe it just signals a collaborative future. AI's automation
of mundane tasks gives human coders more space for creativity and
innovation in software development.
And maybe you had the idea that someday you could develop a game
like it.
So, because of the pleasure you may have experienced, you may have
decided to become a programmer yourself.
Over time, your reasons may change – and this certainly doesn't mean
that everyone gets into coding only because of game development.
After all, there are many reasons why you might consider
programming as an option for your career. Let's discuss some of these
reasons now (and indeed there are many more).
Maybe you are an accountant, or you have a shop and want to register
your goods through a program that you develop yourself...and so on.
Here are some practical projects that might inspire someone to learn
to code:
There are many other programs that you could develop. In short, you
can start programming because you like to solve the problems you
face in your daily life.
And once you learn to code and can build these programs, then you
can share them with your friends and family (and beyond).
Now, imagine how good you'd feel if you had the opportunity to solve
a problem that people are facing all over the world.
For example, you may have an idea to start a Facebook group for
residents of your neighborhood asking each other for household tools
that you may need. Forum Donate
You could also use this group to bring up problems as well as solutions
that you aim to realize.
If you know how to code, you can create your own tool and share it
with your neighbors. You can make your platform tailored to the
specific needs of your neighborhood.
And if it works in your community, you can then share it with people
from other neighborhoods.
You can take things a step further and work on projects that help
people working in different fields.
Or maybe you want to help a barber who wants to visualize the hair
styles of his clients before cutting their hair. Or you could even build
programs to help a private medical clinic better manage their patients'
records.
Often you may start to read a book, or watch a movie that you may not
like, and you have the opportunity to leave that book or that movie
unfinished and start another one.
The same thing applies to programming projects. You may not be very
motivated to work on a side project, so usually you have the
opportunity to switch and deal with another project.
You can do that even at work from time to time where you ask can ask
your manager to assign you to a different project.
In fact, some companies cover the expenses for training, books, and
various courses that qualify and prepare workers.
This is a great relief for many people, as it saves them from the need to
travel every day to the office, pay additional rent, live away from
family members, and so on.
This isn't just a slight difference – in most countries, if not all, the
average salary for programmers significantly exceeds the national
average.
This trend reflects the high demand and value placed on programming
skills in the global job market.
Taking vacations isn't always easy for people of other professions, who
often have much less flexibility or less generous paid time off.
Those are just some of the reasons programming may be a good fit
career-wise for you.
But to be fair, let's also consider some of the downsides to see if any of
them are dealbreakers for you.
Potential Challenges of a Forum Donate
Programming
Learn to code Job
— free 3,000-hour curriculum
Perhaps you did not expect this issue to be addressed in this book
which is aimed to inspire you to consider becoming a developer.
Here, I'll discuss only some of the disadvantages that come from a
career in programming. You might not experience all these specifically,
and this may not reduce the chances of them happening to you. But if
you're aware of them, perhaps you can avoid them more easily.
But perhaps you don't enjoy the pressure to learn new skills all the
time.
You might be someone who, as soon as you get into a job, want to feel
comfortable and secure. This is ok, but it may result in having lower
ambitions and fewer or less exciting goals.
But with this great power comes great responsibility. You may
unintentionally cause negative consequences that may affect many
people if you fail to catch an error in a program, for example.
As a developer, you may need to stay late at work for many reasons,
such as:
You have a short deadline for finishing a new task, new feature,
or just for fully completing the project for your client.
Some service that you have programmed has failed which
Forum Donate
needs an immediate fix so the client's service or tool doesn't go
Learn to code — free 3,000-hour curriculum
down. And you may need to be at your computer to fix it even
though it might be after work hours, during a weekend, or
during an official holiday.
Just make sure that you set boundaries and expectations with your
team, your clients, and your manager so you don't end up working
overtime all the time.
Also, sitting such a short physical distance from your computer, which
is usually less than a meter away, you may fixate your eyes in the same
position for a long time, which can be harmful to your eyes as well.
To avoid these things, you can workout at a gym, do lightForum
exercises at Donate
home by following instructions on YouTube, and by generally moving
Learn to code — free 3,000-hour curriculum
your body more often like by getting up from your chair, walking
around the office, eating healthy foods, stretching, and so on.
And again, since you may be spending long periods sitting and eating
more than you need, you may start gaining some weight and losing
muscle.
These are just some of the challenges programmers can face. But
hopefully, now that you're aware of them, you can figure out how to
avoid or deal with them.
Since we were kids, we've had to learn, complete our education, and
gain experience so that we can more easily get a good job and make
good money. Forum Donate
There are many reasons for this, but here I'll discuss what I consider to
be some of the main ones.
Because so many companies need these skills, there are a lot of jobs
for software engineers. This makes companies offer big salaries to get
the best software engineers to work for them.
This is highly skilled work that requires a lot of training and expertise.
It's the same with being a developer. You get paid relatively a lot
because it reflects the high level of skill you have and the amount of
effort and work it takes to do your job.
Software engineers are able to turn an idea that a client has into a
computer program which then can bring benefits to people all over the
world. This is a very valuable skill, and such it is rewarded accordingly.
This is really important and one of the reasons they get paid a lot.
Forum Donate
Imagine a software engineer making a program for a doctor's office to
Learn to code — free 3,000-hour curriculum
keep track of patients.
Then, maybe the next week, they might make a system for a hotel to
book rooms, or help a school manage its information.
So, they pay software engineers well to make good technology for
them.
It's more than just writing code; it's about making tools that really help
businesses in many ways.
They write programs to do repetitive tasks for them, so they can then
spend that saved time implementing logic and more complex solutions
things for their projects.
A project that might have taken much longer, you can now finish in less
time by using these new tools you have learned. This means that
businesses who use your services as a programmer are able to go to
market faster with useful products that serve customers better.
In other words, software engineers are paid so well because they have
such specialized and valuable skills that allow them to help many
people around the world.
You might envision complex systems and software like those at Google
or Amazon and wonder how you could ever understand such
complexities.
Often, when we set out to become proficient coders, we find that our
biggest obstacle isn't the code itself, but our own egos.
“If you know the enemy and know yourself, you need not fear the
result of a hundred battles. If you know yourself but not the enemy,
for every victory gained you will also suffer a defeat. If you know
neither the enemy nor yourself, you will succumb in every battle.” —
Sun Tzu
Their success stories are marked by relentless effort, not just innate
talent or luck.
When starting your coding journey, don't fall into the trap of
overestimating your abilities. Commit to the process, dedicate time to
practice, and embrace the grind of learning.
Your ego might make you resist new challenges, shy away from
learning new languages or frameworks, or avoid seeking help when
stuck.
Yet, these are the very experiences that enrich your coding journey
and lead to true mastery.
Bill Gates and Paul Allen had a failed venture before Microsoft, and
many successful apps and platforms were born out of earlier
unsuccessful attempts.
Your unique contribution to the world of coding lies not in being the
best from the start but in being open to growth and learning from
every experience along the way.
Forum Donate
“The first principle is that you must not fool yourself — and you are
Learn to code — free 3,000-hour curriculum
the easiest person to fool.”— Richard Feynman
In learning to code, let your curiosity and passion for the craft be your
guide, not your ego.
Keep your focus on the work, the learning process, and the joy of
coding.
Identify the whispers of ego early on and counter them with discipline,
humility, and a commitment to lifelong learning.
Every teacher tries their best, and we live in a time when you have
plenty of options to choose and learn from.
First, admit that you made a mistake. Then, go and figure out how to
fix the problem.
It can be hard and very time consuming, especially if you have kids or
other family to look after and also want to have a social life.
You should try to carve out time a few times a week to improve your
skills, whether that’s during your day job when there are no tasks to
work on and you are free to learn, before leaving for work, in the
evenings, or whenever is realistic for you.
You could try to wake up one hour earlier before work and invest that
period of time in learning new things, or you could also set aside a few
hours on a Sunday morning to do that.
Forum Donate
I'm Afraid
Learnto Start
to code Programming.
— free 3,000-hour curriculum
What Should I Do?
Starting your journey in programming can be daunting, and it's natural
to feel fear or self-doubt. But remember, even the most successful
figures in tech and science have faced these challenges.
Astrophysicist Neil deGrasse Tyson has been candid about his own
experiences with impostor syndrome, reflecting on moments of self-
doubt in his science career. His openness helps demystify the fears
associated with stepping into new, challenging fields.
Wayne Gretzky's famous quote, "You miss 100% of the shots you don’t
take," resonates deeply here. If fear holds you back, you'll never
discover your potential in programming. Forum Donate
Knight Capital lost half a billion dollars in half an hour when a software
bug allowed computers to sell and buy millions of shares with no
human oversight.
These and many other stories tell how seemingly unimportant bugs
can actually cause disasters.
Software is becoming more and more important – whichForum
means that Donate
developers have more
Learn toand
codemore responsibility
— free to be very careful and
3,000-hour curriculum
really good at what they do.
Maybe, the person who asked the question was trolling, or had an
exam the next day and was hoping to get encouraging answers to pull
an all-nighter and study before the exam.
I don’t remember the other answers, but I read one answer there
which was really wise and quite funny.
Take a laptop and go to the north pole. A night there lasts 6 months.
That’s how you can increase your chances of learning programming
in one night.
We want fast food, fast cars, six-pack abs in 6 days, and so on.
That’s the mindset that we have most of the time, and we expect the
same thing in other areas as well.
But true mastery comes from a lot of work and dedication.
Forum Donate
If you mention that to people, they may not like it, but that’s the actual
reality.
You cannot just jump from printing a few “Hello World” statements in
the console to building the next Google a few days later.
I am not denying the fact that you could implement a really nice
application in a few hours – but the ability to do that doesn’t come that
fast.
Now that you've read and hopefully internalized that, do not get too
overwhelmed with the long journey ahead of you.
“You don’t set out to build a wall. You don’t say ‘I’m going to build
the biggest, baddest, greatest wall that’s ever been built.’ You don’t
start there. You say, ‘I’m going to lay this brick as perfectly as a brick
can be laid.’ You do that every single day. And soon you have a wall.”
What is one small but valuable thing that I could learn tonight?
This is a common trap, and it's called "Tutorial Hell." It refers to the
false sense of learning you may get when you read through a bunch of
tutorials without actually trying to build something yourself.
When you watch tutorials without practicing, you might think you're
learning, but you're really not getting the full experience.
Just watching something passively is not the same as truly
Forum Donate
understanding and being able to use that knowledge.
Learn to code — free 3,000-hour curriculum
But if you really want to learn how to code, you have to get your hands
dirty with the actual code.
It's not enough to sit back and watch someone else do it. You need to
write the code yourself.
This is the only way to turn the theoretical knowledge from videos
into practical skills.
Think of a project that you find interesting and would like to create.
This could be anything from a simple website to a small app. The key is
to choose something that excites you and motivates you to learn.
The project you choose will become your testing ground. It's where
you'll apply everything you've learned from watching tutorials.
Watching tutorials is a great start, but it's the practice that makes you
proficient. Learning by doing.
Your personal project is not just a test, but a journey towards deep
understanding and skill development.
So, close the video player, open your code editor, and start building.
Your journey of true learning begins with the first line of code you
write.
First, begin with an explanation: start by breaking down the topic into
simple terms. Your goal is to make it understandable to someone with
little to no background in the subject. This exercise forces you to
clarify your thoughts and solidify your understanding.
The more effectively you can explain a concept, the better you
understand it.
So you naturally, over time, learn where things are – but it’s not that
you’re intentionally trying to memorize every road, every possible path
to a certain destination.
It’s the same with certain methods that you may need to use in a
programming language. New software developers may feel bad that
they’re not memorizing sufficient syntax — that they still need to refer
to the documentation.
Here are a couple of common questions you may have when you're
starting your journey into programming:
How long will it take for me to master it and write code without
referring to the documentation?
Then when you’re able to memorize some frequently used syntax, you
may think that you’ve become good at programing.
You get the impression that it’s the amount of a language or the
number of programming languages and frameworks you are able to
memorize that really matters.
To put things in perspective, let’s compare the syntax of Forum
finding the Donate
length of a string in different programming languages:
Learn to code — free 3,000-hour curriculum
len(seq) , Python.
strlen(seq) , C, null-terminated.
As you can see, each language or technology has its own version of
finding the length of a string. This should show you that it’s really
difficult to memorize the same function in 12 different ways.
Embedded content
Forum Donate
And here's one from a developer who works on commercial airline
Learn to code — free 3,000-hour curriculum
control systems:
Embedded content
Embedded content
Embedded content
Embedded content
Embedded content
I not only use Google frequently, I use it to search for things I myself
have written in the past.
He means that he may not have had the chance to work with it in the
past but he has the confidence that he can learn it.
You might not need to spend months before you're able to work with a
new tool. You may only need a few hours to read its documentation
and then learn more as needed along the journey without the need to
memorize everything.
You do not expect to have all green lights on when you start
Forumyour Donate
journey to your destination. You pass through the current green light
Learn to code — free 3,000-hour curriculum
and stop at a red light. You wait until the green light is on before
proceeding.
So, to sum it all up: get really good at googling and learning as you go :)
Just as a to-do list reminds you to buy groceries or pay bills, a to-learn
list keeps track of all the exciting things in technology you want to
explore.
It's like having a bucket list for your professional development, full of
adventures waiting to be embarked upon.
A to-learn list keeps your curiosity alive. It's like having a treasure map
where X marks the spot for new knowledge.
This list also acts as a motivator. Imagine each new skill you learn as a
level-up in a game, making you more capable and skilled in your job.
The more you learn, the more valuable you become as a software
engineer. This means being able to handle tasks more efficiently and
creatively, boosting your productivity and making you a star
performer in your field.
It's a living document that grows and changes with you, reflecting your
aspirations and curiosity.
By maintaining and updating this list, you ensure that your journey in
software engineering is always moving forward, filled with continuous
learning and personal growth.
So, embrace your "to-learn" list, and let it guide you to new heights in
your career, keeping you curious, motivated, and ever-evolving in the
dynamic world of technology.
If you ever consider the teams behind these giants, it's natural to feel a
mix of awe and intimidation. The scale and impact of such projects can
seem overwhelming.
As a software engineer, you might not be tasked with building the next
global tech phenomenon right away, but every project, no matter its
size, can feel daunting at the start.
Do not fall into the trap of believing you can conquer the entire
project in one go. Large-scale projects demand time, effort, and
persistence.
Forum Donate
Start with a manageable task or component of the project. Completing
Learn
this initial task will to codea—sense
provide free 3,000-hour curriculumand
of accomplishment
momentum.
This practice is essential for ensuring that you're on the right path
toward your goal.
It’s easy to get caught up in the minutiae and lose sight of the broader
objective. A periodic review helps you realign your efforts with your
initial vision.
Remember, in the realm of software engineering, the only way out is the
way through.
The donkey didn't think about just picking one thing first and then
doing the other thing next.
Let the world benefit from your work, one completed project at a time.
“Sometimes when I was starting a new story and could not get it
going, I would sit in front of the fire and squeeze the peel of the little
oranges into the edge of the flame and watch the sputter of blue
that they made.
I would stand and look out over the roofs of Paris and think, ‘Do not
worry. You have always written before and you will write now. All
you have to do is write one true sentence. Write the truest sentence Donate
Forum
that you know.’
Learn to code — free 3,000-hour curriculum
If that's all you accomplish for the day, so be it. Consistent small steps
lead to significant progress.
But remember, the real work comes from dedication and effort, not
from having the latest technology or software.
“Real professionals don’t hide behind their tools — real professionals
Forum Donate
use what’s around them. It’s the amateurs who try to nerd out
Learn to code — free 3,000-hour curriculum
about their tools — it’s all a distraction from really doing the work.”
— Derek Sivers
When you build from scratch, you're the architect and the builder. You
get to decide every detail, customizing your project to fit your
interests and needs.
It's like cooking a meal where you choose every ingredient to suit your
taste, making the entire process deeply personal and satisfying.
Starting from zero means you'll walk through every stage of creating
software – from the first sketch of your idea to making it work and
showing it to the world.
As you build, you'll face various puzzles and challenges. Each problem
you solve sharpens your mind, not just in coding but in finding smart,
elegant solutions to tricky situations.
There's a special kind of pride and confidence that comes from seeing
a project evolve from a simple idea to a working program.
It's like climbing a mountain – with every step, you feel stronger and
more capable.
The hurdles you overcome while crafting software from scratch are
similar to those you'll face in the professional world.
Remember, it's not just about the software you build. It's about the
skills you hone, the knowledge you acquire, and the confidence you
develop.
Each project is a step towards becoming not just a coder, but a true
artisan in the realm of technology. So, begin with an empty file and a
spark of an idea, and let the magic of creation unfold. Forum Donate
Now, we'll explore the idea that not every project must be
groundbreaking. Sometimes, the best learning comes from simplicity
and familiarity.
They're a starting point, showing you how things are built and
encouraging you to explore further.
Picture yourself as an apprentice painter, learning by replicating
Forum the Donate
works of masters. Similarly, in software development, cloning an
Learn to code — free 3,000-hour curriculum
existing project is a hands-on way to learn coding and problem-
solving.
After recreating the project, compare your work with the original. This
comparison acts as a mirror, reflecting your strengths and areas for
improvement.
Think about an app or a website you use daily. What if you tried to
build a version of it yourself? This approach makes learning fun and
relevant.
This approach not only enriches your understanding but also lays a
strong foundation for your future as a skilled software engineer.
So, grab your tools and start building – not just software,Forum
but a path toDonate
mastery in the art of development.
Learn to code — free 3,000-hour curriculum
There are constantly new job openings, which attract both youngsters
and already employed people from a wide range of professions.
They know that you can get a really good salary working as a software
engineer, and so they start their careers with great ambitions.
You have to adapt to the changes in the market and learn whatever
new things are currently considered as valuable. In short, you will have
to consistently learn a lot.
He praised his son for his learning efforts, saying, “That is the way to
learn the most…When you are doing something with such enjoyment
that you don’t notice the time passes.”
“Curiosity has its own reason for existing,” Einstein explains. “One
cannot help but be in awe when one contemplates the mysteries of
eternity, of life, of the marvelous structure of reality.”
Imagine you're not just a builder, but also an architect and a visionary.
Your role is like being a key player in a big team, where your ideas and
work help the team win.
Let's say your company is like a big ship, and you're not just fixing parts
of the ship – you're helping it reach its destination.
Imagine you're making an app for a local bakery. InsteadForum
of just Donate
focusing on making
Learnthe buttons
to code work,
— free you should
3,000-hour also think about how
curriculum
your app will help the bakery get more customers and make their life
easier.
Think of a puzzle game on your phone. If you only focus on one small
part, you might miss a better solution that solves more puzzles at
once.
This is like moving from being a player in a game to being the one who
helps plan the strategy of the game.
It's like being a star player on a sports team who not only scores goals
but also helps the team win championships.
When you start to see your role in this bigger way, you grow not just as
a programmer, but as a key member of your team.
At first, these puzzles may seem daunting, but as you learn more, you'll
find joy in piecing together the solutions. This journey enhances your
confidence and turns complex problems into exciting quests.
This isn't just about earning a bigger paycheck – it's about getting your
hands on more exciting and challenging projects.
Good Luck!
Thank you for reading this handbook! I hope you now feel better
equipped to break into the world of tech, grow your skills, and work
towards your first – or next – developer job.
Fatos Morina
Read more posts.
Our mission: to help people learn to code for free. We accomplish this by creating thousands of
videos, articles, and interactive coding lessons - all freely available to the public.
Donations to freeCodeCamp go toward our education initiatives, and help pay for servers,
services, and staff.
Mobile App
Our Charity
About Alumni Network Open Source Shop Support Sponsors Academic Honesty
Forum Donate
Code of Conduct Privacy
Learn to code Policy Terms of Service
— free 3,000-hour Copyright Policy
curriculum