Coding For Everyone Beginner Guide Export
Coding For Everyone Beginner Guide Export
Fatos Morina
© 2023 Fatos Morina
Contents
Introduction to Programming . . . . . . . . . . . . . . . . . 1
What is programming? . . . . . . . . . . . . . . . . . . . 1
Should You Still Learn to Code? [Answer: Yes] . . . . 2
Why You Should Consider Coding as a Career . . . . . 5
Potential Disadvantages of a Programming Job . . . . 11
Why Do Software Engineers Get Paid So Well? . . . . 15
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.
Unlike cooking, where dishes are consumed, programs remain
intact and reusable even after being used.
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,
but once developed, a program like a website can be accessed
by numerous people at the same time without diminishing in
availability or quality.
So to summarize, programming is the process of turning an idea
into a computer program that other people can use. And this is
something you can learn how to do yourself.
In the ever-evolving landscape of software engineering, many
people are wondering about the impact AI will have.
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.
Introduction to Programming 3
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 automa-
tion of mundane tasks gives human coders more space for creativity
and innovation in software development.
Learning to code transcends mere programming. It’s about under-
standing how various technologies work, honing problem-solving
skills, and nurturing creativity. These skills remain invaluable,
even as AI reshapes the landscape.
Introduction to Programming 5
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).
Here’s something that might make you happy: having the opportu-
nity to help someone else (or a lot of people). I am sure that when
you have been able to help a family member or a colleague, you’ve
felt happy and satisfied.
Now, imagine how good you’d feel if you had the opportunity to
solve a problem that people are facing all over the world.
Introduction to Programming 7
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.
Or maybe you want to propose that everyone pitch in on maintain-
ing the common spaces in your neighborhood.
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.
So, for example, in addition to helping residents of your neighbor-
hood, you can help farmers be better informed about the weather
conditions by building a weather reporting app.
Or you can come up with a recommendation system that helps
them determin how to work the land and what crops to plant when.
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.
As I hope you’re beginning to see, the possibilities are pretty much
endless.
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.
The good thing about programming is that you can work from
home (or anywhere) and be employed remotely. This means
you don’t have to physically move somewhere to engage in more
interesting work or get a better offer.
Introduction to Programming 9
Potential Disadvantages of a
Programming Job
Perhaps you did not expect this issue to be addressed in this book
which is aimed to inspire you to consider becoming a developer.
But I thought it was important to share potential downsides as well
to help you make an informed decision.
Here, I’ll discuss only some of the disadvantages that come from a
career in programming. You might not experience all these specif-
ically, 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.
Perhaps you have had the chance to speak with other developers
and they told you that coding is stressful. Well, this can be the
result of many situations.
Introduction to Programming 12
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.
Developers often sit for long periods in a chair and often don’t do
enough physical activity. This can cause you to start experiencing
back or joint pain, numbness, weight gain, or other potentially
harmful health issues.
Or as you concentrate really hard on debugging a problem, you may
have times when you even forget to close your eyes while working
at your computer. This, of course, is not healthy, as it can damage
your eyes.
Introduction to Programming 15
It’s more than just writing code; it’s about making tools that really
help businesses in many ways.
“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
began with Bill Gates and Paul Allen working together, and What-
sApp was a collaborative creation.
Learning to code is similar – it’s about joining a community,
sharing knowledge, and growing together.
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.
So there is no excuse. If you work hard, you’ll get there.
Even though this may be a rare occasion or something that you may
not predict that could happen, you should still take responsibility.
First, admit that you made a mistake. Then, go and figure out how
to fix the problem.
Use this as an opportunity to learn and document what went wrong
and what you could do better in the future.
I believe you already know that you are responsible for that as well.
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.
Still, your growth is your responsibility.
You have to own that.
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.
How to Prepare for Your Coding Journey 25
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.
The answer was something along these lines:
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.
Sure, you might have heard of the developer who implemented 10
applications in 10 hours in one sitting4 . But that’s not the result of
one-night of learning. He worked hard and learned a lot before he
managed to pull that off.
It takes time to learn something really well.
The more you do something, the more likely you are to get better at
it. The more you practice, the more you’ll be able to improve your
performance – and the cycle repeats.
Now that you’ve read and hopefully internalized that, do not get
too overwhelmed with the long journey ahead of you.
Will Smith describes it really well:
“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.”
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.
This hands-on practice is invaluable.
As you work on your project, you’ll encounter real problems and
challenges.
Solving these will deepen your understanding of the coding con-
cepts and techniques you’ve learned about. You’ll learn so much
from googling, researching, trying and failing, and trying again.
It’s in facing and overcoming these challenges that true learning
happens.
Remember, the path to mastering any skill, especially coding, lies
in active participation.
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.
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.
It’s very unlikely that a developer who’s used multiple program-
ming languages can memorize all the syntax that they have used
in the past. They may even not bother trying to learn it in the first
place. So why is this? How does anyone actually write code?
So, to sum it all up: get really good at googling9 and learning as
you go :)
As you check off items on your to-learn list, you’ll find yourself
becoming a problem-solving wizard.
Each new skill or piece of knowledge adds to your ability to tackle
complex challenges, making you an invaluable asset to your team.
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.
Your “to-learn” list is a powerful tool in your journey as a software
engineer.
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.
*Practical* A*spects of*
C*oding*
How to Deal with Overwhelming
Projects
Big software projects, like those of Google, Amazon, or WhatsApp,
often seem like modern marvels.
They can be awe-inspiring, reflecting complex engineering and
innovative ideas.
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.
Remember, the builders of these platforms likely faced similar
feelings at the outset. But they didn’t allow apprehension to hinder
their progress.
Instead, they channeled it into productive action, laying brick by
brick the foundation of what would become technological mile-
stones.
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.
Here’s a roadmap to help you tackle even the most intimidating
software engineering projects.
*Practical* A*spects of* C*oding* 41
With your end goal vividly pictured, the next step is reverse
engineering this vision into actionable steps.
This process involves deconstructing your final goal into smaller,
manageable tasks. These tasks should be quantifiable, allowing you
to plan and schedule them effectively.
In plotting your course, set clear milestones. These are significant
checkpoints that signal progress towards your ultimate objective.
Take a web application as an example: begin by charting out the
various stages of development. This could include initial design,
front-end development, back-end setup, integration of functional-
ities, testing phases, and final deployment. Then you can tackle
each one, one at a time.
*Practical* A*spects of* C*oding* 42
Is it the perfect choice? Maybe, maybe not. But that’s not what’s
critical at this moment.
The project you choose to work on probably isn’t a life-or-death
decision. Pick one and begin. You can always return to your other
ideas later.
Start by outlining the features of the app or software. Code the
first function or interface. Celebrate this progress, however small.
Then, continue developing piece by piece.
Repeat this process for your other projects.
*Practical* A*spects of* C*oding* 45
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 the
works of masters. Similarly, in software development, cloning an
existing project1 is a hands-on way to learn coding and problem-
solving2 .
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.
Working on something you’re familiar with keeps you engaged and
helps you understand the project’s intricacies more deeply.
In your learning journey, focus on projects that challenge and
enhance your skills, rather than trying to invent something entirely
new. It’s like practicing scales in music – they may not be
glamorous, but they’re essential for growth.
Prioritize learning and skill development over the pursuit of a
groundbreaking idea. As you embark on new software projects,
remember that your primary goal is to grow as a developer. It’s
not just about building something novel – it’s about building your
capabilities and confidence.
By replicating existing projects and focusing on the learning pro-
cess, you turn each project into a valuable step in your journey.
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, but a path
to mastery in the art of development.
1 https://www.freecodecamp.org/news/javascript-game-tutorial-stick-hero-with-html-
canvas/
2 https://www.freecodecamp.org/news/learn-how-to-create-an-instagram-clone-using-
react/
Beyond the Basics
Develop a Love Learning
Software development is one of the most in-demand professions of
our time.
There are constantly new job openings, which attract both young-
sters and already employed people from a wide range of profes-
sions.
They know that you can get a really good salary working as
a software engineer, and so they start their careers with great
ambitions.
Even if you get a job in software development, if you really want
to become great, it helps to love learning and programming.
It is one of the few professions in which you constantly have to
learn something new. It’s not just the existing concepts you need to
know. You have to adapt to the constant influx of new technologies.
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.
In order to keep your brain constantly engaged in learning, you will
have to be curious and stay humble.
Often, programmers get employed on the basis of their existing
knowledge and start to think they don’t need to learn new things
anymore. But you will only be able to excel as a software engineer
if you are curious and love learning, as the need to learn never
ceases.
Beyond the Basics 51
As you grow in your career, you’ll start to see not just the lines of
code you write, but the whole project, like looking at a whole forest
instead of just one tree.
This means you’ll start to understand how your work affects ev-
erything else and can make decisions that help the entire business.
Beyond the Basics 53
When you start focusing on the most important tasks, you become
more than just someone who writes code. You become someone
who solves big problems.
This is like moving from being a player in a game to being the one
who helps plan the strategy of the game.
Imagine your company is like a garden. At first, you might be
planting individual flowers (writing code). But later, you start
to plan where to plant trees and how to make the garden more
beautiful (strategic thinking).
By aligning your work with what the business really needs, you
become a key player on your team. Your work starts to have a big
impact, and you become someone everyone relies on.
It’s like being a star player on a sports team who not only scores
goals but also helps the team win championships.
If you’re working on a website, don’t just make it look good. Think
about how it functions, how it can attract more visitors, and how
it can help the business grow.
Being a software engineer is an amazing journey. It’s not just about
writing code, but about using your skills to help the business and
its customers.
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.
Beyond the Basics 54
This approach will help you develop both personally and profes-
sionally in the exciting world of software engineering.
Remember, you’re not just building software – you’re building
success stories.
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.