Self Taught Developers Handbook
Self Taught Developers Handbook
Self Taught Developers Handbook
[email protected]
Self-Taught Developer’s
Handbook:
By Sourena Shadmahani
Contents
INTRODUCTION ............................................................................................................................................... 4
I wrote my first line of code about ten years ago without ever intending to
turn it into a career.
There are so many books and courses out there to help you break into
tech fields. Yet, every year, thousands of people graduate from colleges
and boot camps. Not to mention the people who start their coding career
as self-taught developers with no technical background, like me!
With so many “developers” out there, does the world really need more?
And most importantly, is there enough space for you to join the rally?
Wait, what?
Why did I think that? Well, I started my journey like most self-taught
developers—by enrolling in an online course. I saw a report on how much
developers make on average in the United States, and that the number of
job openings increases every year. Let’s look at what you would find on
the sales page of most online courses:
First, they start with a problem: how many open positions there are in
tech companies each year.
Next, they show you the potential. They tell you about the average salary
of a software developer in the US compared to other jobs, and they tell
you that you only need a laptop and the internet to achieve this. Finally,
they tell you they will teach you to do that.
The only thing you need to do is sign up for their courses. Then you’ll start
living your dream life as the employee of a tech company where you get
to work with computers, play games, and get a big check at the end of the
month.
Before we get into the details of how each part works, let’s pose one
question: Are these online programming courses useless? Are they
a scam? Well, no. But you do need to know certain things before you
enroll in a programming course.
I started this book because I went through the same thing you are
experiencing right now, and you will experience in the near future! :) I took
my first course with a lot of hopes and dreams, thinking I would land my
first job after I finished it and then keep advancing my career. I thought I
would quickly get promoted and soon be making a six-figure income.
The first hard truth hit me in the face when I started sending out my
résumé, thinking I would get lots of interviews and have the option to
choose where I wanted to work. After all, there is a shortage of
programmers. These tech companies needed me! Here’s the lesson I
learned after getting my first ten rejection letters and no interview:
Landing your first job can be extremely hard if you have only focused on
your coding skills. You also need to know how to sell yourself!
I did lots of trial and error to get my first job. In fact, I got my first freelancing
project before I got my first job. (I’ll talk about this in more detail later in
this book.)
I did lots of trial and error to find out what works and what doesn’t, from
designing my own résumé with fancy colors (huge mistake!!), to writing a
One of the reasons I went through so much trial and error was that I didn't
know anyone in the tech industry. I was studying literature in college, and
my only connections to the tech world were YouTubers and course
instructors. And since the road to becoming a developer wasn’t clear for
me, I have almost quit coding three times! At one point, I even hated
coding so much, I started changing my career to UX design. I had no idea
that what I was feeling was a burnout.
But with all ups and downs I managed to go from someone who knew
absolutely nothing about coding to landing a job as a developer, do
more than 100 projects for clients and become the founder of a tech
startup which managed to raise seed money and got accepted in an
accelerator program.
questions I had when I was starting out! I understood what they were
feeling. I even got DMs from more experienced developers saying how
they could relate to what I was talking about.
That was the moment I started thinking about why we don’t have the
same thing for someone who wants to become a developer—a roadmap
that explains every step of the journey and gives self-taught developers a
heads up about what’s at the end of the road. That’s why I decided to write
this book—to help self-taught developers find clarity in their journey.
During the pre-sale, I received lots of DMs asking if the hardcover book
would be available to buy. However, I decided to only publish the eBook
version of this book for one important reason: I wanted to create a true
handbook for self-taught developers, which means I need to keep
updating the materials. That’s why I chose to create an eBook—
because you, the buyer, will have lifetime access to all the updates.
I also have to mention that if you have pre-ordered this book, you will have
access to a free composition course that teaches a few of the things I
mention in this book, as well as a few other resources that it was better to
leave out of the course. So, if you have pre-ordered this book, it means
you can access the composition course for free! You can email me at
[email protected] to get access to your free course once it
is available (we are currently in the recording process).
This book contains 11 chapters. Each chapter starts by listing the key
topics that you will learn, and at the end, you’ll be instructed to complete
a few tasks based on what you learned in the chapter.
Chapter One
Chapter One:
SELF-TAUGHT
DEVELOPER’S
JOURNEY
When I was in high school, I was in love with medicine. I used to daydream
about wearing a white coat and standing in the operating room, saving
lives with my scalpel.
I was sure that THIS was my passion. I was meant to become a medical
doctor and serve humanity! I was sure that I had what it takes to get into
Finally, the big day came. I was excited to look up the results, but . . . I
couldn't believe it! I didn’t get in! I was behind by not a few hundred, but
by a factor of thousands! I was confused, and my life was crumbling in
front of my eyes. I thought my life was over, and that I would never be
happy again.
After experiencing mild depression and staying in bed for few days, I
decided that I wasn't going to let this stop me, so I chose a major that
would take the least amount of time and was in my hometown so I would
have time to study again for medical school. (If I didn't go to college, I
would have to join the military for two years.)
A few years ago, I came across an article by Mark Manson that changed
my career choices forever. But most importantly, I understood why I
couldn't get into medical school.
I failed to get in for one simple reason: I couldn't get myself to sit down
and study. It was as simple as that.
Why? Because I wasn't in love with medicine—I was in love with wearing
the white coat, and with telling people I was a medical student so they
would think I was smart (!!) and so I would gain a higher value. I wasn't in
love with the process—I was in love with the result.
If you ask anyone, “What do you want out of life?” they will give you similar
responses:
We all want those things! The problem is that you won't get those results
unless you go through the suffering, the uncertainty, and the emotional
and physical pain.
I sure would love to have a six-pack, but I'm not willing to count my calorie
intake every day and go to the gym five times a week. I also love to have
that extra cheese on my burger.
It's great to be a developer; you can build anything you want! There is
always a high demand, which means you can make good money, and you
get to work in a super fun environment.
But all that is the result. Even those who don’t like coding would like to
have that. Don’t believe me? Next time you see a friend, ask them the
following questions:
- Would you like to be able to turn your ideas into an app or a website?
Of course, they are going to say yes! But you can follow up your
question with the following questions:
- Would you like to apply for a job and get rejected 100 times?
- Would you like to wonder if you are ever going to find a job?
- Would you like to get stuck and not be able to find a way out?
- Would you like to spend hours trying to find a solution that might not
exist?
- Would you like to feel like you aren’t good enough? Like you aren’t
smart enough?
The truth is, you won’t get those results without going through that pain
first. If the only thing you want is the result, and you don’t care for the
process, you won’t be successful. But if you fall in love with . . .
The joy of fixing a bug that you were stuck on for weeks . . .
The joy of installing an app that you created from the ground up . . .
That’s a fair question, and coding most certainly is not for everyone! I do
believe that everyone can code, and that they should learn how to code,
but choosing to code as a career is not for everyone.
The only way you will be able to know is by trying! Try for at least six
months, and see if you like solving problems (fixing bugs), if you are
patient (getting stuck for days) and if you like digging deep into topics and
knowing more.
If these things are enjoyable for you, there is a good chance that coding
is for you. But if you don’t enjoy them or don’t like constant learning, then
coding is probably not going to be much fun! Either way, after six months,
you will have gained an amazing experience—experience that can help
you in your future career, even if you decide that you don’t want to become
a coder!
I always wondered why we are looking for the "secret formula" for
everything.
Do you want to lose weight? Burn more calories than you eat.
You just need to develop the habit of coding every day. How? Keep
reading!
This is the exact method I used to turn coding into a habit for myself. This
method works for learning other subjects as well.
Originally this method had a few more steps when I started using it, but
after lots of trial and error, I eliminated the steps that didn’t work and
kept the ones that gave me the most results.
Regardless of your free time, I want you to set a goal to study coding for
30 minutes a day. That's it!
You might be a student, working full-time, or have a spouse and kids, but
I’m sure you can manage to find 30 minutes to yourself.
Now I want you to pick a calendar—a physical one, not a digital one (this
step is really important, I’ll explain why in a second)—and put it on your
desk where you practice coding every day.
It's also important for the calendar to be visible and not kept in a drawer.
If you don't have a calendar (and don't want to buy one), pick 12 sheets
of A4 paper (one for each month) and draw the 30 days of that month.
You can also print this paper calendar that I made for you! (66 days
format)
https://selfmadecoders.com/habit_calendar
Now, I want you to have markers in hand—a blue one and a red one.
Every day you practice, put a blue X on that day, and if you happen to not
practice, put a red X.
You can also keep track of your progress in a digital calendar, but whether
you decide to use a digital calendar or not, it's important to have a physical
one.
The reason is to make sure it's always in your sight! Trust me, I'm a fan of
everything digital, but my mentor changed my mind about the benefit of a
physical item. In truth, they both do half the job. If you are looking for
maximum results (which you should), you may want to use them both!
The "secret formula" happens here! Don't break the chain! And I can
promise you that you WILL get the results!
Why 30 minutes?
You might think, Thirty minutes is not enough! What can you do in 30
minutes? Well, quite a lot! Of course, not with only one session of 30
minutes, but with 365 of them! By practicing 30 minutes every day, you
gain the most valuable asset—which is to turn coding into a habit.
Thirty minutes is short enough for any person—no matter how busy you
are—to complete each day. But you don't have to stop at the 30-minute
mark; you can keep going to complete another 30 minutes, and then
another, but you are off the hook by completing the first 30 minutes!
You can cross off that day, as you have completed the challenge.
The secret to a 30-minute rule is that after 30 minutes, you are most likely
not going to stop! When you think about doing something, you think of
how much work it needs and the energy it takes to complete, and thus
procrastinate on it. By eliminating that excuse, you get to START every
day, and with the help of the snowball effect, you keep practicing.
Copy-pasting
There is no shame in using someone else’s code, but when you are trying
to do so, make sure to rewrite it yourself and don’t copy-paste it.
But why? Isn’t it easier to just copy-paste it? It would save you time, and
you can get more things done.
Yes, it’s easier to just copy-paste it, but when you are just starting, you
aren’t used to typing code, and the way you can become used to it is by
writing more code!
Nothing is worse than reading someone else’s code and seeing that they
don’t use any file structure and they don’t obey any naming convention.
Without having a proper name and leaving your code in one file, it will still
work, but it’s going to be much harder to manage and maintain.
If your project has less than 50 lines of code (real applications have way
more!) then the importance wouldn’t be visible, but when you work with
real-life projects which have over 1,000 lines of code, it makes a big
difference.
Of course, Git itself has lots of topics that can be learned, but you won't
need them. There are a few commands that you will need, and the rest
you'll learn on your job. (You can find the Git cheat sheet in the extra
resources chapter.)
As a developer (especially when you are just a beginner) you will struggle
with bugs every day. Everyone does. That's what programming is really
about; struggling with a problem and finding a solution.
Don’t try to avoid a struggle—fight it until you find a solution for it!
Memorizing syntax
When learning a concept like OOP, try to look at other projects and how
they implement them.
We are going to finish this chapter by looking at all the things that will
happen in the future! Think of this as the light in your road.
Yes, that's right! I can even bet on what will happen in your journey, and
no, I’m not a fortune teller—I have just been in the same place that you
are right now.
I have had the same struggles, asked the same questions, and that's why
I want to share a few tips that will help you to get over the hump.
Some days, everything will go so smoothly that you think that you are the
best programmer ever, and sometimes you will get stuck on a bug for
weeks, leaving you thinking you are not as smart as you thought.
The truth is that this feeling, the ups and downs, happens to everyone! It’s
the nature of programming, the nature of problem-solving.
It’s not because they are smarter than you; they probably spent the same
amount of time on it when they first encountered that bug, but once they
fixed it, it became easy.
Senior developers have faced more challenges than you have. That's why
they can solve them much faster than you.
After a few months of coding, you will feel like you have completed the
programming and you’ll wonder, was that it? That was easy! I have
mastered coding!
The reason you feel this way can be described by the Dunning–Kruger
effect, which shows that people with low ability in a task tend to
overestimate their power, but with time, they realize that there is an ocean
of knowledge that they don't know about.
I'm a fraud!
Another thing that will happen is when you land your first job. At this time,
you may feel like you aren’t a real programmer. You may even feel like
they made a mistake picking you! But trust me, you are not alone—
EVERYONE feels the same way. It's called imposter syndrome.
Googling
You might feel that you are not a real programmer because you Google
everything. Well, the good news is that EVERYONE uses Google in their
everyday work, from a junior developer in a small company to the senior
developer in a big tech company.
It’s just important to understand the concept and its use case. You won't
need to remember the syntax, as you can always use Google for that!
This is very common among developers, especially those who are just
starting out. You purchase a course or a book, and you feel amazing; you
have taken your first step, you have so much motivation, and you can't
wait to start learning.
But a few days (or maybe weeks) later, you feel like you aren’t as
interested in the product as you used to be. You question the quality of
the product, thinking that maybe there is a better one out there, and you
leave it unfinished and go buy another product.
Why does this happen? When you purchase a product, it's easy—you
don't have to spend time or energy like you do when you are learning.
Plus, you can feel good about yourself by taking an action—purchasing a
product—and when you fail to complete the program, you blame the
product and look for another one.
This phenomenon is called a shiny object syndrome, and it has only one
solution: NEVER BUY A NEW PRODUCT UNTIL YOU FINISH THE ONE
YOU ALREADY HAVE. Even if it's not working; even if you think the
product isn’t good enough.
Shoot for the moon. Even if you miss, you’ll land among the stars
(Les Brown)
SET YOUR
Chapter Two:
SET YOUR
KILLER GOAL
I love coding for many reasons. One is that you don't have to work in
an office—you can start your own small company, you can start
freelancing, or you can become an indie developer.
When I started out, I thought working in an office was my only option, but
the other options are just as good.
Start Dreaming
Here, I want you to think about your future self. I want you to think about
the life you want to be living.
Do you see yourself living in a big city and working in a big tech company?
Do you see yourself living in the suburbs and working from home as a full-
time freelancer?
You might be thinking that it's premature to think about freelancing full-
time or working in a big tech company when you are JUST starting out.
I thought that too! I always tried to stay in the present and not dream about
my future. I would just do things based on short-term goals, and wondered
what should I do in the future. But it turned out that I was always struggling
to find motivation because I didn't know what the end result was going to
be. I wasn't as excited as I should have been to start my journey.
One of the best books that I have ever read is called The 7 Habits of
Highly Effective People by Stephen Covey, and in that book the author
talked about a concept called "Start with the end in mind." It suggests
that you envision yourself at the end of the road. Literally the end—your
funeral!
As creepy as that sounds, having a mental image of what you want in the
future will help you in your life as well as your career.
But why?
Would you start building a house without first having a blueprint? Probably
not, unless you want to waste lots of money and time and end up with a
result that you hate.
The same goes for building your career; you need to have an idea of what
you want to achieve.
One of the problems that I have seen many people face when it comes to
dreaming is that they limit themselves. They don't believe in themselves,
so they don't even let themselves dream about it!
There is always a little voice in their head that keeps them down with
negative thoughts:
We are all guilty of having these negative thoughts in our head. The bad
news is that you can't build a blueprint of your future if you don't fix these
limiting beliefs, but the good news is that I'm going to tell you how you can
fix it!
Limiting beliefs
We all used to be like that when we were kids. We were fearless, whether
it was jumping four stairs all at once or talking about what we wanted to
be in the future.
It's normal for a kid to say, “I want to be an astronaut when I grow up! I
want to become a surgeon, a lawyer . . .”
But as we grow up, we experience life. We get to know the pain. We have
listened to our parents and our role models as kids, and all of them come
together as a voice in our head that prevents us from doing.
When we are about to jump from the stairs, a little voice makes us think
twice about it. What if we fell?
That voice has one job—to keep us safe! It prevents us from jumping off
a cliff. It also is responsible for protecting us from emotional pains, as well:
- You can't start your own business; you don't have what it takes!
- You'll get hurt! You can't become a developer! You aren’t good at
math!
If you wonder why our brains are trying to protect us from emotional
trauma just as they do for physical injuries, read this article:
https://www.forbes.com/sites/nicolefisher/2020/02/14/emotional--
physical-pain-are-almost-the-sameto-your-brain/
Having that little voice in our heads is essential for our survival, but
sometimes it is also responsible for our inaction. It doesn’t allow us to
dream big; it is afraid that we won't achieve it. But if don't take the risk and
leave our comfort zone, we won't grow.
To fix this little bug, you need to know where these limiting beliefs are
coming from to begin with.
The same went for our teachers. They would teach us things we didn't
know, so they were the authorities in our lives.
All of the things we learned from our parents, guardians, and teachers
have shaped our adult lives. The way we think about certain things and
the way we behave stems from those people.
But the problem is, their limiting beliefs are inherited too.
So, without wanting to, those people have shaped some limiting beliefs in
us. You can't start your own business. You need to have a steady job. Our
parents probably inherited these limiting beliefs from their parents, and so
on!
1. Toxic people
For the first day, I was scared. I didn't know what to expect. I thought they
had made a mistake in picking me. The other candidates were much more
qualified (even though I hadn’t met them). I thought I couldn’t handle the
job (even though I passed the interview)!
"Wow, you got lucky to get this job! I know tons of more experienced
developers." Even after I completed the demo project, he said, "Well, they
went easy on you, the real job is more complicated."
I knew that this "friend" of mine was toxic and not good for my mental
health, but I thought I could handle it. I thought I could just ignore what he
said, but boy, was I wrong! If you have negative people in your life, cut
them out ASAP. If cutting them off completely is not an option for you,
then at least try to limit your interaction with them as much as possible.
How can you spot a toxic person? Every time you talk to them you feel
bad about yourself. You feel like you are not good enough!
Start by writing down your limiting beliefs and challenge them. Find
evidence of why each belief might not be true. Here's an example of how
you can do that:
Let's say you are in your late thirties, and you want to change your career
to become a developer. You think you are too old to start something new,
especially something as complicated as programming.
Now that you have written it down, start looking for evidence of why that
limiting belief is not true.
- You have skills in other industries that you could transfer to coding.
You would basically stand in front of the mirror and start saying the
opposite of your limiting belief. Here's an example:
Let's say your limiting belief is that you are not smart enough. For the
positive affirmation, you would stand in front of mirror every day for few
minutes and say loudly, “I am smart! I am smart I am smart . . .”
As cheesy as that sounds, it's a helpful practice! Try it for few weeks and
see the magical results! :)
Start dreaming
Now that you know about limiting beliefs and how they impact your brain,
I want to give you an exercise to imagine your best future self without your
inner voice intervening. You ready? Here it goes:
I want you to pick up a piece of paper and split it into two sections, just
like the picture below.
On the left side, I want you to write the current year, and on the right side
I want you to write the year ten years from now.
Now on the left side (we’ll use this year, 2021), I want you to write down
everything you have accomplished on your journey. Here’s an example
2021
2031
It's stupid!
But why would you DREAM about your future? Why should you think
about buying a condo when you want to learn coding? What does it have
to do with coding? Isn't this book about coding?!
If there is one thing I can assure you will happen in your journey, it is that
you will lose interest. You will feel like quitting. You will start questioning
your decisions.
Why am I doing this? This isn't for me! I don't want to do it!
Trust me—I've been there. I have had the same feeling that you are
having right now, or that you will in the future. In fact, I HAVE quit coding
for a while! For one reason:
When you are just starting out, everything is new and fun. You write your
first line of code, or maybe create your first app or website with the help
of the course you took, and it's all great.
But once the course is over, you are on your own. You'll face challenges
that you have never faced before, bugs that seem impossible to solve,
and not to mention the constant rejection from companies you send your
resume to.
That's when you will need to have a strong “why” more than ever! In this
section, I'm going to help you to develop a strong “why” and talk about
a few of the common reasons why people choose coding as a career.
The novelty is going to wear off; the one thing you need is purpose.
Is it SMART?
Now that you have set your end goal, it's time to break it down to short-
term goals to make sure you are heading in the right direction. But just
setting a short-term goal might not be enough; you also need to make
sure that it's SMART!
You have probably heard of this acronym many times before. It's been
around for a long time, and most importantly, it works!
Let's say your dream (long-term goal) is to work for a big tech company.
Now, your first step would be to learn coding. But "learn coding" is not
smart enough! Let’s use this framework to make it smarter.
Specific
Your goal should be specific. Narrow your goal as much as possible to get
specific. Let's see how we can make our goal specific:
Bad:
Good
Now it's much better, but we aren’t quite there! You need to make sure
you are moving in the right direction, which brings us to the second item:
Measurable
You need to make sure you are moving in the right direction, and for that
reason, you want to pick something measurable that relates to your
success in achieving your goal.
Bad:
Good:
I want to go to 50 interviews.
Achievable
Bad
It's a good goal, but you need to land your first client before you can think
about landing a six-figure one.
That’s great! But you first need to put in the time and effort and work as a
junior developer, mid developer, and then a senior developer.
Good
Relevant
While you are setting your short-term goals, you need to keep your vison
(long-term goal) in mind.
For example, if your dream is to work for a tech company, then this goal
might not be relevant:
Time-bound
And the final item, which can determine if you are going to achieve your
goal or if you are going to procrastinate, is whether your goal is time-
bound.
- write down your goals and make it SMART with the formula that
you have learned
Chapter Three:
DESIGN YOUR
ROADMAP
Now that you know what you want your future to look like, it’s time to
create your own roadmap—the compass that will lead you to your killer
goal (Chapter 2).
We are going to take a look at the seven steps of going from knowing
absolutely nothing about coding to landing your first job.
We’ll also explore different paths and a few suggestions to focus on.
At a big company
Facebook, Amazon, Apple, Netflix, and Google are the top five
companies, also known as the FAANG companies (initial of each
company name).
1. Name recognition
Having a big tech company on your resume can accelerate the time it
takes to reach your goals down the road. I personally have seen
developers who worked three months at one of the FAANG companies
and then quit their job and started teaching other people how to get in!
2. Stability
While financial crises can happen to any company, big tech companies
are usually safer for their employees, and if there is downsizing, the
employees would likely get a severance package that can cover their
expenses until they find another job.
3. Challenge
Another reason why developers love to work for these companies is that
their products have millions of users, and with that comes a challenge that
you won't experience when working in smaller companies.
This also means that you could have an impact on millions of people!
4. Salary
While you can make over 200K a year as a developer working for a big
tech company, you should know that these companies are mostly located
in the Bay Area, which is known for having a high cost of living.
At a startup
1. Career growth
If you are looking to grow your career, startups are much easier to get
promotions or gain a “C” title like CTO (Chief Technical Officer) compared
to big companies.
2. Learning business
But of course, that comes with a lot of risks, since not all companies
succeed. (Nine out of ten companies will fail within five years of starting
their business.)
Freelancing
What if you don't like corporate jobs? Is it possible to not work for any
company and go straight to freelancing full-time?
Yes! For the first few years of my career, I was freelancing on the side
and studying at college.
It's totally a viable option, but you need to consider your situation before
deciding to freelance full-time.
Freelancing works best for those who have a job, but want to transition
into a new one. Freelancing allows them to practice their skills and work
with their clients at night, and after they made enough income from their
part-time freelancing, they can quit their nine to five and start freelancing
full-time!
1. Flexibility
As a freelancer, you don't have any fixed schedule, which could be a good
or a bad thing; a good thing because you can choose when you can work
and when you can rest, and a bad thing because if you don't manage it
well, you might overwork, or procrastinate, since there is no boss to force
you to work!
Just like working at a startup this option is considered a high risk, high
reward option, but in a different way. How? Let me give you a personal
example. Through my freelancing career, I have had times when I made
one year’s worth of income in one month, and I also had times when I
didn’t have any clients for six months! If you are a risk-taker, you could be
making more money as a freelancer.
3. Start a business
Indie Developer
So, which path should you choose? Which one is the best?
This is one of the most common questions that beginners ask, and I
always answer with one word: neither! There is no best option. They all
have their pros and cons. You need to consider your future goals (Chapter
2), your personality, and make the decision based on them. To better
understand the process, think about these features and think about which
appeal to you the most:
Big Challenges
Teamwork
Remote work
Flexibility
Creativity
Bigger impact
Risk tolerance
Hopefully, by thinking about these features, you get a clearer idea of which
path is right for you. And don’t worry—if you choose a path and end up
not liking it in the future, you can change it. What’s important is that you
have a specific path in mind when you start!
Now that you have an idea of where you want to work, let's take a look at
different types of developer roles and what each does!
Front-end developer
What you can see is considered the front-end: the buttons, the screen, the
colors.
Similarly, in a website, everything you see, like the animations, the design,
etc., is done by a front-end developer. Think about the login page of a
website; all the designs and colors are considered the front end.
Back-end developer
Now think about the same calculator from above. When you press 2 + 2,
the calculator would tell you the answer is 4. You don't know how it came
up with 4; that's the logic behind the buttons and screens, which is
considered the back end.
Full-stack developer
A full-stack developer does both the front and the back-end development!
iOS developer
If you are an iPhone user, look at the apps on your phone. Those are
created by iOS developers.
Android Developer
The same goes for Android developers, who create Android apps.
Game Developers
Games like Clash of Clans and Call of Duty are created by game
developers (of course, these games have huge teams behind them).
DevOps
Development operations, or for short, DevOps, are the ones who make
sure that software updates get out there faster and more efficiently.
Front-end language
Start with HTML and CSS. They are not programming languages, so
learning the basics should not take too long. Then, start with JavaScript
(JS).
Back-end language
Java, Go, Rust → These languages are also great choices for back-end
developers.
At this point, you can start to take video courses, online boot camps, or
watch tutorials on YouTube. Check out Chapter 8 for suggestion
resources.
Front-end developer
Personal website
Simple CMS
Different quiz
Back-end developer
Movie API
Admin dashboard
OAuth login
Weather logger
Scraper
Payment API
YouTube downloader
Expense tracker
Weather app
Chat app
Instagram demo
To-do list
Commerce app
You can (and should!) add any apps and websites you build to your
portfolio and resume. You can also make the codebase public.
Also, don’t forget to document your process (see Chapter 5: Build Your
Online Presence).
Congratulations!
By now, you can call yourself a developer! You know the basics of
software development, and you can create apps and websites. That's
amazing! But your journey isn’t over—you need to keep going.
Yes, now is the time! I know you don’t yet feel comfortable with coding,
but the purpose of this step is not to land a job (although, if you happen to
land a job in this stage, that’s great—a cherry on top!). But The main
reason is to get used to going to interviews (because you will be going to
lots of them) and practice the art of interviewing. (Yes, that’s a skill you
can learn.)
Front end
Vue.js
React.js
Next.js
Back end
Java → Spring
Python → Django
PHP→ Laravel
Ruby → Rails
JS → Node.js
Note that all of these languages have many other frameworks that have
their pros and cons, but just like choosing a language, choosing a
framework should not be an agonizing decision for you. Just choose one,
as you can change it later. The frameworks that have been mentioned
here are best for web development.
Now it’s time to get serious about landing your first job. Your first job can
be in a startup or working for a client as a freelancer. It doesn’t matter! As
a self-taught developer, landing your first job is going to be the hardest
part, so just focus on getting your first experience.
Command-line
Git basics
web basics
What is a domain?
what is a host
what is a DNS
What is an API
HTML
CSS
JavaScript
IDE
Bracket
Atom
Java script
Operators
Variables
Objects
Data types
Functions
Version control
Git
Framework
(Choose one)
Vue.js
Angular
React
Testing
Unit test
Integration test
functional test
Package manager
NPM
Yarn
Python
java
PHP
C#
Ruby
JS
Python → Django
java → Spring
PHP → Laravel
C# → .Net
Ruby → Rails
JS → Node.js
Frontend basics
HTML
CSS
JS
servers
Nginx
Apache
Coddy
SOLID
YAGNI
KISS
DRY
IDE
VSCode
Bracket
Atom
Database
MySQL
Oracle
MS SQL
MongoDB
API
ReST
SOAP
GraphQL
Webhooks
Testing
Unit test
Integration test
functional test
Swift
Objective C
IDE
Xcode
Swift Language
operators
initializers
classes
structures
functions
Enumeration
Closure
Software architecture
MVC
MVVM
Principles
SOLID
UI
UIKit
Layouts
Animations
Transformations
User notifications
UIViewController
UIApplication
Swift UI
Foundation
Delegation
Notification
Observers
Networking
Memory management
Value type
reference type
ARC
memory leaks
Dependency management
Version Control
Git
Database
Coredata
Realm
SQLite
Testing
unit test
TDD
Data structure
Programming paradigm
OOP
POP
java
Kotlin
IDE to install
Android Studio
App components
Broadcast receiver
service
intent
UI
Input field
clickable components
Data Views
app bar
multimedia components
Layouts
Fragments
Resources
Database
SQLite
Realm
Software Architecture
MVP
MVVM
MVI
Test
Unite test
integration test
UI test
Build
Gradle
Sensors
position
environment
motion
camera
Networking
Threading
Async tasks
handlers
coroutine
Version Control
Git
Memory Leaks
Context
Chapter Four
(Peter McWilliams)
Chapter Four:
Intro
There are tons of resources out there, from free tutorials on YouTube to
paid online courses. When I started my journey, I had no idea how to pick
the right resources. I would start reading an article on the web, and once
I had finished and was affected by its marketing, I would purchase a
course without doing any evaluation, only to leave it half-finished and then
jump on to the next course.
I was always looking for the "best," but I had no idea what the "best"
meant to me. I was just jumping from one course to another, and even
when I was taking a course, I didn't know how to use it! I thought to myself:
Should I play the video like a movie and keep watching? Should I
take notes? Should I code with the instructor?
I had to do lots of trial and error to find the resources that would work for
me and how to use them. And with those trials and errors, I would waste
so much time and money!
There are so many free resources, so why would you pay for one? That's
a fair question. If you can learn for free, why would you pay?
Here are few reasons why free resources might not be the best option for
you.
1
2
3
I share everything I know on social media. It's all for free! Yet, I get tons
of DMs and emails asking the same questions that I have already
answered through the content I publish. Why?
When you are not invested in a program, you don't feel committed to
finishing it. You won't put that advice into practice. Imagine, however, that
there is a 10,000-page book about how to master coding; just read this
one book, and you won't need any other resources. They sell this book for
10k USD, and you use all your savings and borrow money from family and
friends to purchase it.
Then, a few months later, the author decided to publish the same book for
free. People are super excited, and they all sign up to download it at no
cost.
Now, what percentage of people who downloaded the book are going to
finish it? What about the people who paid $10k? What percentage are
going to finish it?
It doesn't matter how good a book, course, or any resource is; if you don't
apply it and put it into practice, you won’t get any results. The more you
are invested in a program, the more you are likely to finish what you
started and put it into practice.
But what if you can't afford any paid resources? Does it mean you are
doomed to leave them unfinished and procrastinate? Of course not!
Financial investment is one form of commitment. Find other ways to hold
yourself accountable for the resources you use.
Quality
There are certainly some amazing free resources out there, but you need
to be careful about the resources you choose.
Support
Most paid resources have a support team or a closed group where you
can connect with other developers and ask questions. When you have
trouble, they will help you to get unstuck. But for the free courses, the best
you can do is to comment your question and hope the instructor will
answer.
What you need to do is utilize all the formats—both free and paid
resources!
Videos, books, or short articles—which one is the best? Well, like most
things in life, there is no best option. It just depends on how you learn
the best, and which stage of your learning process you are in.
For the maximum impact, you need to leverage all the learning formats.
Watch a video tutorial, read a book, listen to podcasts, read short articles,
and check out short infographics on Instagram during your breaks.
This is the way I approach learning new subjects that I have no clue about.
Let's say I want to learn Python programming language and Django
framework, and I have no clue how to use them.
1. Free resources
2. Paid course
3. Start building
This step is super crucial! By the end of the courses, I should know enough
to start building stuff. So, the next step is to put everything I have learned
into a project.
At this stage, I would recreate the portfolio project that I have built in the
course and try to tweak it a bit and add more features.
4. Articles
By now, I'm comfortable with the language and the framework, and it's
time to get more in-depth!
I would choose one topic and start searching for articles. (I would first
check out my favorite authors, and then move on to other authors.)
5. Reading books
Now it's time to go deeper and see what happens under the hood!
To get in-depth knowledge, I would always choose books. They add the
most amount of value, and the authors are usually more experienced in
their field.
Every time I want to pay for a course, a book, or any resources, I try to
find out about the materials that I would learn and its structure.
Most resources offer a few chapters for free so you can evaluate them.
Don't enroll in a course without first using the free stuff! Here are the
criteria I use to decide whether I should enroll or not:
Price
Price is not an indicator, but I would expect to get more value from a $1000
course compared to a $100 course.
Topic/project base
Certificate
The certificate is not as important as other criteria, but it's nice to have
something that shows you have completed a course. Most platforms like
Udemy and Coursera offer certificates. There are also other individual
creators who have their own certificates.
What you need to know about these certificates is that the more a platform
is recognized by the community, the more valuable it is going to be.
For instance, the Google certificate is worth more than a Udemy course.
Level
How advanced are the materials going to be? Is it for beginners or mid-
range developers? Most courses will say that anyone with any experience
can join the program, but the truth is that you can't create learning material
for both advanced developers and beginners. It's better to check out the
outlines to see the topic that is going to be taught.
If you have a good understanding of Python, you will feel bored taking a
course that talks about if/else statements in Python, and as a result, leave
the course unfinished. So make sure to find out about the material level
before you enroll.
Feedback
It's always a good idea to check out the feedback for the course you want
to enroll in. Most resources use a 5-star-based rating system with a
comment section.
What you need to do is to check out the 4 and 3-star reviews. The 5-star
reviews might be from a fan or genuine supporter who just wants to
support the creator. The 1-star reviews are also not great, since they
either hate the program or the creator and they don't provide useful
feedback!
The 3 and 4-star reviews often mention what is missing from the course.
Use these reviews to find out what you are going to get out of the materials
and if they are right for you!
For a Effective learning, You need to set a time each day to study. Choose
a time that would work best for you and lock it in your calendar. Treat it
like a real school class, where you HAVE to show up!
Don't try to find a perfect time; instead, just choose one and add it to the
calendar. If it doesn't work, you can always change it at the end of the
week (not right away)!
Choose one place that you would be studying every day. It could be a
corner of your bedroom or a quiet cafe.
Keep in mind that you shouldn't be doing any other takes unless it's
coding-related. Like gaming or watching a movie. Why? Because you
want to train your mind to go into a learning mood every time you go to
your spot to study!
Start by decluttering your desk. Remove anything that might distract you.
The cleaner the desk, the better. Trust me, the fewer items you have on
your desk, the less excuse your brain has for getting distracted.
Let your family know that you are studying so they don't disturb you. They
should only bother you if it's a matter of life and death! Otherwise, they
can wait until you are done.
If you have a kid, and having a privacy is not an option for you, you might
want to study at night when your kids are asleep! :)
Also, make sure to silence notifications on your phone and put it on the
other side of the room. If you need your phone beside you, then turn it
over and put it on your desk.
If you are not already familiar with the Pomodoro Technique, it’s a method
that helps you to stay focused on a task, like studying or coding. You
would work on the task for twenty-five minutes, and then rest for five
minutes.
You can use those five minutes to check your phone or just lay down and
give yourself a rest!
Use this technique, and make sure to track the number of Pomodoro you
do every day.
Clear your desk and have the things you absolutely need. You should also
have a pen and paper next to you to write down every distracting thought
that comes to your mind. E.g.: pay the bills, call Mom, search about how
long penguins live. (If you are going to use a digital note, make sure to
turn off the internet, because you might get distracted by notifications as
you add notes.)
That's it! Now you are ready to learn at your highest level.
You might ask yourself, Is all this necessary? What if I can't do it?
These steps aren’t necessary for learning, but if you want to make the
most of your time, you need to follow them.
Now that you have set up the basics, it’s time to start watching some
tutorials! I’ll explain how to pick resources in later chapters, but for now,
let’s say you have purchased one or downloaded a free YouTube video.
Watching a tutorial
Now that you have everything set up, you are ready to start learning!
Most of the courses have the same structure. They start with the
fundamentals of the language and then start teaching subjects through
building a sample project.
One thing you should realize is that you might not need to watch all the
chapters. The reason for that is that some subjects are fun to learn, but
you don’t need them for your goal (see Chapter 3, Set Your Killer Goal).
Let’s say your goal is to land your first job as an iOS developer. In that
case, you won’t need to study subjects like machine learning and AI,
which are included in most online programming courses.
If it’s not necessary to learn, why do they include it in the first place? Well,
the goal of these courses is to sell more, and by containing popular
subjects like machine learning, they will seem more eligible and sell more
courses.
Let’s say you have enrolled in a program and you are ready to start
watching. But how?
The worst way to watch a tutorial is to play it and just sit there. Our brains
are designed to do something, and if you don't, yours will find things or
thoughts to get distracted with.
Take a piece of paper, or a digital one if you prefer, and start writing down
a summary of the tutorial.
Remember that you don't need to write down everything that the instructor
says; you only need enough so that after watching, you can code what the
instructor has taught you and use your notes as a reminder.
You might need to do some trial and error to find out how much and what
you should write down. My suggested method for watching a tutorial is
this:
Then close the video, open the IDE, and try to write what you learned. Did
the instructor create an app? Start coding it without looking at the sample
project.
You will encounter bugs while you are doing this, and that’s okay! Don't
check the answer immediately. Remember that programming is about
problem-solving, not writing code.
Try to find the answer by looking at your notes or doing a Google search.
If you couldn't figure it out, then you can look at the answer and think about
why you were wrong.
Suggestions
Disclaimer 1: All the resources mentioned here have been tested either
by me or by Self Made Coder’s dev partners.
iOS development
Android Development
Front-end Development
Back-end Development
Django A-Z: Build & Deploy Web Project With Python & Django
Web Design for Beginners: Real World Coding in HTML & CSS
CSS - The Complete Guide 2021 (incl. Flexbox, Grid & Sass)
Understanding Swift
Testing Swift
SwiftUI by Example
Pro Swift
Advanced iOS 2
advanced ios 3
advanced ios 1
swift UI by tutorials
Chapter Five:
BUILD YOUR
ONLINE PRESENCE
Dear Sourena:
Regards,
Why? Because they didn't know how much I knew! And how could they,
from my one-page resume that showed no real-life job experience?
By being active on social media, I started to build authority and trust and
gave more information to the employers about what I’m capable of. That’s
why in this chapter, I want to tell you about the power of being active on
social media and getting started with few of the top social media networks.
After being active online for the past couple of years, I can assure you that
this is the case wherever you want to find freelance clients or get hired in
a company.
Hiring a developer costs more than the developer’s salary for the
company. If they hire someone that turns out not to be a good fit, it would
cost them a lot of money to do the recruiting process all over again.
That's why companies want to make sure that the person they hire fits the
job perfectly, and the way they do that is by trying to find out as much
about the candidate as they can.
To understand the power of social media, imagine that you are the owner
of a business and you want to hire a developer. Two people send you their
resumes; one of the people can't be found on internet, while the other is
active on social media and posts regularly about their learning process.
Their social media page shows passion and shares what they learned,
which builds authority, and they use their own picture on their profile (and
not a graphic element), which builds trust.
Which of these candidates would you be eager to interview for the job?
There isn't much data about the first person, except what he wrote on his
resume. But you already know so much about the second person. She
has sold her skill before she comes to the interview.
Networking
Finding your first job is much easier when you have a strong network.
While most blog posts would say that adding an Instagram account link to
your resume can actually hurt your credibility, when I added mine, I got
more interview invitations! But did it have anything to do with Instagram?
Well, I wasn't sure till I got a call from a company's recruiter, who said,
“. . . And we saw your Instagram account, it was impressive! Would be
able to come in for an interview?”
That is just one example. In addition, I had so many leads and clients
reaching out to me for freelance work! Believe it or not, by being active on
social media, I got enough leads that I started freelancing full-time.
Should you be active on social media and add their links to your resume?
Not being active on social media doesn't mean you can't get a job or be a
freelancer, but it's a great tool you can leverage to strengthen your
resume. And as a self-taught developer, you need to leverage any
opportunity possible!
Before adding a social media link to your resume, ask yourself this
question: Does this give more information to my potential employer
about why they should hire me? If the answer is yes, go ahead and add
it to your resume.
That being said, you don't want to include a social media account that is
empty or adds nothing to show why you are right for the job.
Adding this Instagram not only won’t help you, it reduces your credibility
Now let’s take a look at some of the best social media for developers
and see how we can optimize it so it would work in our favor.
Instagram and Twitter are great places to build your brand and create a
sense of trust with your future client or employer, but they don't have a
One of the great features that I love about LinkedIn is its similarity to
Google; it's a location-based search engine for finding talents like you! A
recruiter can specify the location and the skill they are looking for and find
potential candidates for the job. But just like having a website doesn't
mean you are going to appear in a Google search, having a LinkedIn
profile doesn’t mean you will appear in a LinkedIn search. You need to
spend some time optimizing your LinkedIn profile so when someone uses
the LinkedIn search engine, you appear as the top result!
Before we get to how you can optimize your LinkedIn profile, you need to
know how LinkedIn works to be able to use it to the maximum level. Let’s
say a recruiter in Paris is looking for a front-end developer to hire. This
recruiter goes to LinkedIn’s advanced search and types the keyword he
is looking for, like “JavaScript” or “front end,” and the search would show
the most relevant result. Thus, you need to make sure every word you put
in your profile serves a purpose, which is being found.
Starting from the top of your LinkedIn page, the first section is the banner.
When you sign up, you get a default blue cover which looks like this
Step one is to change this picture. Remember, you need to use every
section of your profile in a way that sells you to the recruiters. How can
you use this section? Easy! Tell recruiters what you do in few words.
Put some effort into creating a nice-looking banner for your profile. Keep
it simple and clean.
Don’t add any wallpaper unless it clearly shows what you do.
Bad example
No one has time to read all that! Keep it super simple; just tell them what
you do.
This goes without saying, but use your own picture—don't use a logo
(unless you are an agency!) or an animation picture.
Also, make sure to capture your face and not a wide angle.
Example:
Pro tip: It’s a good practice to keep your profile picture consistent
across all social media.
For your headline, get specific about what you do and keep it short.
This is where you can talk about yourself and say why you are a great
candidate, but make sure to not overwrite. Keep it short and consistent.
Imagine you get into an elevator with the recruiter of a company that you
want to work in. You have two minutes before the recruiter gets to their
own floor and leaves. You need to use that two minutes to tell them what
you do and why you are the right candidate for the job. This technique is
called an elevator pitch!
This is where you can show what you have done so far. You can talk about
your previous job experience, what you have done and the value you
brought to the company. But what if you don’t have any job experience,
or your previous job experience isn’t tech-related? Should you still
mention it?
To answer this, you need to ask yourself one question: Has your previous
job prepared you for a job in tech? If yes, then include it in your profile.
Here are few transferable skills that you can bring from job experiences
other than tech:
Teamwork
Have you worked with a team and learned how to be a team player?
Great! One of the key responsibly of a developer is to work with other
team members.
Communication skills
Problem-Solving
Did you have to come up with a new solution and solve a problem?
These are the transferable skills that can help you in the tech industry, so
if you have any of the above skills, make sure to mention them.
Do you have a college degree? If yes, here's where you can add it. But
wait! What if you don’t have a CS degree? What if you have a non-
technical degree, should you still add it? The answer is, YES! You have a
college degree, and it shows you started a program and finished it. It
shows commitment.
Also, if you have completed any course from Udemy or Coursera, it would
be a good idea to add them under this section.
This is a great place to show that you can be trustworthy and passionate
about your job, and that you are good at what you do! Reach out to people
you have previously worked with, like your previous boss, a client, or
maybe a senior developer who has mentored you, and ask them to give
you a recommendation letter.
Recommendation sample
Pro Tips
When you go to your profile, you will see a progress bar that indicates the
percentage that your profile is completed. Complete the entire progress
bar, as you’ll have a higher chance of being found on a LinkedIn search.
Industry
Photo
Skills (+5)
Education
Position
Location
Summary
Endorsements
Endorse your friends’ skills and ask them to do the same for you! You
might think that endorsements aren’t that important, since anyone can
endorse someone else's experience. Well, yes, but it’s better to have it
than not have it! It can help you to be found easily on LinkedIn’s search
engine.
If you are reading this book, there is a good chance that you found me
through Instagram! In the early days of Instagram, it was all about picture
of cats, selfies, cars, etc., but now it's way more than that.
The more hooks you use, the better chance you have to land a job
Note that using Instagram for the purpose of finding a job is different from
using LinkedIn. You can optimize your profile on LinkedIn, and you’ll be
good to go! (However, creating content on LinkedIn does increase your
probability of being found.) But on Instagram, you need to create content.
Before you start creating content, you need to optimize your profile.
Profile picture
The first thing people see when they go to your account is your profile
picture. It's important to use your own picture, and you can use the same
profile picture that you created for your LinkedIn profile.
The second part is your handle. Make sure to use your own name. The
best combination would be your first name + your last name. Do not use
other sorts of names, like @hacker100, @bestcoder, or @codercoder. It
looks unprofessional, and besides, you want to make sure you are easy
to find on the internet.
If your full name is too long for the handle, you can use your first name
and add Dev or Code at the end.
Bio
The next step is writing your bio. Your bio is the third thing someone sees
when they first visit your profile. If you want to gain followers, you need to
tell them exactly what you do and what's in it for them. Here are some
examples you can use:
URL
The URL is a chance for you to direct people who are interested in your
work to learn more about you. This could be your portfolio, your GitHub
account, your contact page, or all of it!
Instead of linking to one website, you can use the one link strategically so
you can share one than one link. To do this, you can either use websites
like linktree.com, or if you can create your own page with your own
personal domain, I highly suggest you do that.
What to create
Now that you have optimized your profile, it's time to start creating some
content! But what type of content should you be creating? Coding tutorials,
setup pictures, a day in a life, or a little bit of both?
Before you decide on the content you want to create, you need to think
about the result you hope to achieve. Are you planning on finding a client,
building trust, or connecting with coders in the community?
One of the great ways to create content that will serve most of the above
results is to share your journey.
Share what you have learned each day, what problems you faced, and
how you solved them! It shows that you are passionate about your job and
builds authority.
I would highly recommend showing your face in your pictures (to build
trust), but if you aren’t comfortable doing so, you can just use a screenshot
of a code or your setup.Twitter
This part is pretty much like how you set up your Instagram account. One
thing to remember is that you need to be consistent across all social media
platforms. Meaning, use the same profile picture, name, and handle. This
way you'll be easier to find.
As for your Twitter URL, you can use the same URL you created for your
Instagram page.
What to tweet
The type of content you create for Instagram and Twitter is a bit different.
Instagram is mostly visual, so it works better if you write what you want to
tell people on the post itself instead of in the caption, but on Twitter you
can post text without a picture.
Still, the idea for content creation on Twitter is pretty much the same as
Instagram. You can also tweet about the “100 days of code” challenge.
Here's a sample:
You can talk about the challenges you faced during a day . . .
“If you're waiting until you feel talented enough to make it, you'll
never make it.” (Criss Jami)
WRITE YOUR FIRST RESUME
Chapter Seven:
So, now you can call yourself a developer! You know all about coding,
you have set your killer goal (Chapter 3), you gathered the resources
you need (Chapter 5), you have built awesome portfolio projects, and
now it's time to start applying for your first job!
But before you can do that, you need to write a killer resume—one that
gets you an interview. In this chapter, we are going to take a look at
different resume layouts and some dos and don’ts when it comes to
writing your first resume. But first, let me tell you about what I used to
get every time I send my resume to a company: a rejection letter! Often,
one much like this one:
Dear Sourena:
Regards,
Ugh! It’s the worst feeling ever when you send your resume and hope to
at least get an interview call, but instead they send you a rejection letter.
I got this letter so many times, The problem was that I didn't understand
the purpose of the resume and how important it was. You might be a
very qualified candidate, but if your resume doesn’t show that, you won’t
get a chance to prove yourself. A resume is the first gatekeeper that
stands between you and your first job.
My perfect resume
I used to think my resume was perfect. I was eager to show how creative
I am and make myself stand out from the crowd, so I designed my own
resume with lots of colors and graphic elements.
I had a section about my portfolio which was three pages long, where I
went into details of what I did, and the overall resume was six pages
long! I thought it showed how much I care about the position by putting
hours into it.
Well, as it turns out, recruiters and hiring managers don’t have time to
read six pages just to decide if they should call you for an interview. I
realized this when I started my own startup.
As a small startup with only six people, I was looking for a front-end
developer intern to hire and I got roughly twenty applications every day
on average! I didn’t have time to read them all. I just looked for important
parts to see if they had the bare minimum and if they mentioned the
skills that I was looking for in an intern, and if so, I would give them a call
and schedule an interview.
Why a Resume?
The resume is the first thing the hiring manager sees, so it’s kind of like
the first impression. You need to make sure to plan every word, and
most importantly, how you lay them out.
There are three common layouts that you can use for your resume. All
three have their ups and downs, and they work best for certain
situations. Let’s see which one works best for you!
Chronological
This is the most common resume type, and most recruiters are looking
for this exact type. It starts with your name, contact information, and
maybe a summary (optional) and then it lists your previous job
experience in reverse order (with your most recent job experience at the
top).
This format works best if you already have relevant job experience, or
you have interned for a big company.
But what if you don’t have actual job experience? Should you put the job
description first? Absolutely not!
This is one of the worst mistakes I made when I first started out, which
resulted in me getting a rejection letter. I was coming from a non-
technical background and didn’t have any full-time experience as a
developer, so I listed two non-related experiences without mentioning
any details. (I’ll show you how to use your irrelevant job experience in
your resume in a second.)
Well, you can imagine that the hiring manager wouldn’t bother reading
about my skills and portfolio when they saw my job experience first!
So, how should you organize your resume if your job experience is not
the star of your resume?
Unlike the chronological format, which puts the focus on your job
experience, the functional and combination format puts the focus on
your skillset.
You start with your name and contact info, and then instead of
mentioning your job experience, you would mention your skillset or your
education (if you have recently graduated with a CS degree).
Even though some recruiters don’t like this format, it’s still the best
option if your job experience is not strong.
What to include
Now that you know about the ways you can lay out your resume, let’s
talk about what information you should put in your resume.
Basic info
Regardless of the format you chose for your resume, your contact
information will be pretty much the same. You start by mentioning your
full name and the position you are applying for, then give your contact
info including your phone number, your email address, and your portfolio
website. Here, you also can add your mailing address , but you shouldn’t
give the full address, as it might cause privacy issues.
Social media
Job experience
This is where you get to talk about your previous job experience and
about the impact you had on the company.
Your position in the company + the name of the company + the duration
you worked for the company.(ex: 2020- present)
In the description, talk about the impact instead of what you were
responsible for.
your past job? Great! Add it to your resume. A good developer needs to
know how to work as part of a team.
Were you responsible for solving a problem and coming up with creative
solutions? Awesome—programming is all about solving problems, and
the process you take to create that solution.
Do you have a college degree? Add it here! But what if you didn’t study
CS? What if you studied something totally irrelevant, like me?
Also, if you have completed any course on Coursera or Udemy, you can
add them here. If you have joined too many courses, just mention the
three most important ones and mention the others in your LinkedIn
profile.
Skillset
This is where you can talk about the skills that are mentioned in the job
description and tell the company how comfortable you are with
technologies. Just a tip—don’t use a star or percentage.
If you want to show how comfortable you are with the tech, just use two
adjectives: fluent and familiar.
Summary
Including a summary is usually optional, but if you decide to use it, make
sure to keep it short and to the point.
The other day, I was talking to a couple of engineers and recruiters from
Netflix, Google, and Amazon about how to stand out in tech, and in our
conversation we had an amazing talk about dos and don'ts when it
comes to writing a resume.
One thing we could all agree on was that the way you write your resume
depends on which company you want to send your resume to. A resume
you send to a small startup through email is different from a resume you
send to a FAANG company. But regardless of which company you are
aiming for, your resume has one goal: To get you an interview.
So, please make sure to keep it at one page max and cut down
everything that is unnecessary for your employer to know when he is
deciding whether to give you an interview. Remember that the point of a
resume is to get an interview. You will have a chance to talk about your
projects and accomplishments in detail when you are in the actual
interview.
Well, I used to design my own resume and not use any ready templates.
I was eager to add as much creativity as I could, Well, it might be a good
idea to use a little bit of color in your resume if you are sending your
resume to a small startup, and if you are sure that a human is going to
read it, not an ATS (I’ll explain this in a second). In this case, colors
could make your resume more memorable and help it stand out in the
pile of the resumes your employer receives. But make sure to not
overuse it. I have shared some templates in the index section that you
can use or get an idea of if you want to design your own resume.
ATS is short for Application Tracking System, and it’s used to scan your
resume to find out if you have mentioned the required skillset in the job
description, and if you have, it will pass the resume to a human to read.
To make sure your resume is compatible with the ATS format, use a free
ATS checker. Here’s a one you can use:
https://resumeworded.com/resume-scanner
One of the worst mistakes I made in my early career when I was looking
to land my first job was to create one resume and send it to all
companies.
This is also called the “shotgun method,” and it’s the quickest way to get
rejected! Instead, you should pay attention to the job description and
customize it for that company.
But does it mean you should upload ten resumes to your website or
LinkedIn page? Of course not. You need to create one general resume
to use in situations where you don't know about the job posting and
situations like your website or your LinkedIn profile, but you need to
customize it based on the description of the job post you are sending
your resume to.
Choose a job you love, and you will never have to work a day in
your life. (Confucius)
GET READY FOR YOUR FIRST INTERVIEW
Chapter Eight:
My bad experience
I will never forget the first time I went to an interview. I was so stressed
and confused. I didn't know what to expect!
I was so excited that a company finally liked my resume and asked me for
an interview, I didn't care if I got the job. But my experience wasn't as good
as I imagined it would be.
Hi, we saw your resume and we would like to ask you for an on-site
interview! Below you'll find the exact date and time.
The date of the interview came, and I was really nervous! As I was going
to the interview, I got a flat tire. Could this day get any worse? Long story
short, I got to the interview with a one-hour delay and with greasy hands.
Not off to a great start! Anyway, after waiting in the lobby for twenty
minutes, the secretary guided me to the CTO’s office. He started off easy
by just asking me about simple stuff, and then got to more technical
questions.
The first question was pretty easy; I thought, Hey I’m nailing this! But then
a second question was asked, and I was hooked. I didn't know the answer!
Interviewer: You sure? It's going to take a bit longer than two
days . . . Anyway! Take your time!
Me: Sure! (Thinking to myself, what the hell is this! I don't know
anything about it.)
My qualifications
It's a skill
One thing you should know is that interviewing is a skill. In other words,
it's something you can learn and improve over time. I have spent years
doing trial and error to see what works and what doesn't, but fortunately,
you don't have to—because I’m going to tell you all about it! I have divided
this chapter into three important parts, including everything you need to
know before, during, and after an interview.
What to expect
Interview process
Resume
After you send your resume, two possible things will happen: they will like
your resume and ask you in for an interview, or they won’t think you are a
good fit and will send you a rejection letter.
Note that some companies won’t even send a rejection letter if the
application doesn't get through. But if they think you are a good fit, you'll
get an email much like this one:
Phone Interview—with HR
Regardless of the size of the company, the phone screening is the first
step of the interview. Most companies will try to find out more about the
person before they ask them for an on-site interview.
This step will likely be with a member of the company’s Human Resources
department (HR), who will ask you about your previous job experience,
what you do now, and why you think you'd be a good fit for the company.
Phone interview—technical
You might also have a call with a technical team member who will ask you
basic questions, mostly about the topics that you have mentioned on your
resume.
On-site interview
After a phone interview, you might be asked to visit the office for an on-
site interview. This part can be as quick as a one-hour interview, or it could
take a whole day.
You might be asked general questions that are relevant to your role, or
you might go through a series of different interviews such as a technical
interview, whiteboard interview, etc.
Whiteboard interview
As a junior developer who is looking to land your first job, you are most
likely not going to be asked to do a whiteboard interview, but it’s still good
to know about it.
Write a function that prints the first "n" prime numbers and then
explain how it works.
For these types of questions, the interviewer wants to know about the
process you take to solve the problem, so it’s important to explain your
strategy while you are solving it.
It’s okay if you can’t solve it, as long as you can communicate your
process of problem solving.
Take-home project
Some companies might give you a project assignment that you can do at
home.
Screen sharing
Get ready
Now that you know about the different stages of an interview, it's time to
get ready for what might come your way! Getting ready for an interview
takes time, so you need to start preparing before you go to the interview.
Here, I'm going to show you what you should practice and how to nail
each section!
To prepare for this stage, you need to have a list of common interview
questions for the job you are applying for (e.g., interview questions for
front-end developers).
Study these questions, but don't memorize the answers. Instead, dig
deeper and try to understand them. If possible, use them on sample
projects.
You need to keep this list updated. Every time you go to an interview, you
might be asked a new question, so add them to your list after the interview
is over!
Do you want to reduce the stress and pressure you are feeling? Get there
early. You don't know what's going to happen; the traffic might be heavier
than usual, or you could get a flat tire like me! Leave thirty minutes earlier
than usual. This way, if something comes up, you won’t have to worry
about getting there late because you have an extra thirty minutes. If
everything goes according to plan and you get there thirty minutes early,
you can either, go for a walk, stay in your car, or just relax before your
interview.
Dress up
It goes without saying that you need to be well dressed for the interview,
but since I have seen people who neglect this point, I have mentioned it
here.
Spend some time to go over their website and app (if they have any) and
see what they are doing and how they are doing it. You might be asked
what you like about the app and what you don't like.
If you don't have any clue about their product, it shows that you don't care
about the company. No hiring manager is going to hire you if you don't
care about their product, no matter how skillful you are!
Intro
Yes or no answers
Your interview is your chance to show that you are qualified for the job.
Show it! Use every opportunity to show them how great you are by talking
about your accomplishment and the result you got.
- Interviewer: I see that you have left your job at Y company, any
reason why?
Yes! I had a terrible boss and all my team members were useless.
They didn't help me, and I didn’t care about them. The worst
company I have ever worked for!
This might be true! But even if you didn’t have such a pleasant experience
with your previous employer, talking about it makes the interviewer
wonder if your last employer was the problem or if you were the problem.
Instead of complaining about your former boss, talk about other reasons.
It’s also important to be honest. If you were laid off, don’t say that you
needed more challenge.
You aren’t supposed to know everything, and that's okay. The world of
software development is so vast that no one can know it all, especially a
junior developer who is looking for his first job. The interviewers know this,
and just want to see how you would handle questions that you don't have
the answer to.
So, don't be afraid to say that you don't know the answer if you don't have
any clue about the topic, if you have studied the subject but haven't yet
used it in the real world project, you can talk about the theory and how it
is used. Tell them that you have studied the topic, but haven't used it in a
project yet. Provide them with a summary of what you know about the
topic!
- No!
- O . . . kay . . .
At the end of your interview, your interviewer will ask you if you have any
questions for them or the company. Use this to show how passionate you
are about the job! What can you ask them about?
Here are few questions to consider. Pick those you really want to know
the answer to, and that are relevant to your situation:
Don't lie
Most likely, they are going to fact check about your previous experience
and things you have done. It's not hard to find out if you have had an
experience or not, so don’t ever lie!
Now that you have finished your interview, your job is not over! You still
need to take a few more steps to make sure you are going in the right
direction. In this section, we are going to talk about everything you need
to do after your interview.
When you go to an interview, you are not the only one who is being
interviewed—you also need to evaluate the interviewer and the company.
Trust me, I've been there! When you are interviewing, you will face some
interviewers that you certainly don't want to work with no matter how much
they offer you. Here are few things to look for when you are in an interview.
Irrelevant questions
There is certain personal information that your hiring manager may need
to make a better decision, but some topics are off limits. One time, I went
to an interview and the first thing they did was give me a form to fill out
which included the names of my parents, where they lived, and believe it
or not, their social security numbers!
Needless to say, I didn't fill out that form, and I told the interviewers they
didn’t need this information to decide whether to hire me. They weren't
happy about my answer, but I didn’t want to work with them, either.
A good interviewer is on your side, not against you. They will help you!
Some interviewers will try to show you up by asking unimportant questions
and by telling you that you are not knowledgeable, which may help them
to give you a lower salary. Keep an eye out for these behaviors!
You need to keep track of your interview if you don't want to make the
same mistakes again! Here's what you need to track:
Lucky for you, I have created a notion template that you can use to track
your progress! You can find the link here:
https://selfmadecoders.com/interview_template
After going to lots of interviews, sooner or later, you will get an offer! You
need to pat yourself on the back and celebrate having come this far, but
before you take their offer, there are few things to consider.
Just because a company gave you an offer doesn't mean you should take
it. Or, you might be lucky and receive a couple of offers. Either way, you
need to evaluate them. Here, I’m going to help you evaluate the offer and
decide which one is best for your career.
Your first job should be in a place where you can learn the most and
grow, not where you’ll simply make the most money. So, make sure to
find out if there will be senior developers in the company and if they will
be willing to coach you.
Your responsibility
For your first job, the amount you are going to get compensated won’t be
the key factor in choosing a job, but if you have two job offers which are
identical in terms of the opportunities mentioned above, but one pays
more than the other, then you will want to choose the one that pays more!
:)
Chapter Nine:
COMMON
DEVELOPER
QUESTIONS
Over the years that I have been helping developers to start their career, I
have been asked the same set of questions. As a self-taught developer, I
had these questions in the beginning of my journey, too. That's why I
dedicated this chapter to answering some of most common questions of
self-thought developers. (This chapter is also going to be updated for the
next version of this book.)
Age
I’m thirty-five years old. Is it too late for me to start learning how to
code?
Absolutely not! One of the good things about being a developer is that it
knows no age. You are never too old or too young to start your coding
career. Some people start in their eighties! You don’t believe me? Check
out this article to find out about, “Masako Wakamiya” who is eighty years
old and an iOS developer. Sure, she might not have much chance of
getting hired by a company, but she still can code and make a living!
That’s one good thing about being a developer: you don’t have to work in
an office! You have lots of opportunities. You can be a freelancer or an
indie developer or you can create your own software company. (Note that
I didn’t say it would be easy. Regardless of the path you choose, you’ll
face unique challenges.)
Programming language
Well, this is very common. You can’t make a decision when you don’t have
any data! You need to try different things and see which type you like. I
myself might have chosen a different path if I had started with web
development, instead of starting with mobile development because I’m
passionate about mobile applications.
Think about it this way: What will excite you the most after taking your
course? Having your own website that everyone can visit on their browser,
or maybe having an android or iOS app that you install on your phone?
You can always change your field, but I would recommend spending at
least six months before moving to another language or platform.
College degree
Yes, it does! If you don’t have any working experience and you are new
to the market, a college degree can be a plus. But over time, as you gain
more experience, the importance of it lowers down.
How much is the tuition fee for the college you want to go to? How easy
is it to get in? How credible is the college? Would you have an opportunity
to network with the professors, and would it be worth four years of your
life?
These are a few of the things to consider before going forward and
applying for college. You certainly don’t need a degree to get a job, but
having one would be a plus. So, the question is, would it be worth it for
you?
To answer this question, you need to consider your future goal. If you want
to have your own business or start freelancing, then working for a small
company would be the best option, as you would have the chance to work
on a wider range of tasks and gain more knowledge about how a small
business runs.
But if you are thinking of working in big tech companies like Netflix,
Google, or any other FAANG company, then working in a big company
would make more sense, as you would be responsible for specific tasks
and you’ll gain experience in that area.
Math
If you Google this question, 99% of the articles and web posts will tell you
no. You don’t need math, but I’m going to tell you the truth. While you
won’t be using integrals or differentials in programming (except in very
rare cases) you will still need to approach the challenges you face in
coding the same way you approach a mathematical problem. Coding is
all about solving problems. There are tons of developers who hate math
and don’t like problem solving and are still doing programming, but you
won’t be able to take it far enough if you don’t enjoy it.
Well, to answer this question, you need to think about why you are
learning this topic in the first place. Are you trying to learn this topic to
have a basic understanding, are you trying to use it in a project, or are you
trying to get ready for an interview? After you decide on the goal, you can
use the 5, 10, 20 hours technique. Based on how important and broad the
topic is and how much you need to know about it, you can choose whether
to study for five, ten, or twenty hours. (Keep in mind that these numbers
are arbitrary; the point is to keep you organized.)
Let’s say you want to learn OOP for an interview. Start with ten hours and
then evaluate your understanding at the end of this period. Are you able
to answer 70% of the interview questions about OOP? If yes, then move
on to another topic.
Or, let’s say you want to learn functional programming because a project
requires you to learn and use it. Spend twenty hours. Feel comfortable
using it in your project? Probably not (functional programming is a broad
subject), so spend ten more hours. And always remember that you will
never feel 100% content on the topic, so aim for 70%!
There are two reasons to learn data structure and algorithms. The first
one is to get ready for an interview in a big tech company, and the second
is to have a better understanding of the underlying technologies you use.
The better you understand the tools you use, the better you’ll be able to
come up with a solution.
I recommend learning DS and Algo, but you don’t have to learn it on the
first day of coding! I see so many developers that feel hung up on this
subject when they are just starting out. Focus on learning the
programming language first.
The best time to start learning would be when you are comfortable with
the programming language that you are using and you can build small to
medium-sized projects. I started learning DS and Algorithm about six
months into my coding career!
Check out the resources section. I have mentioned a few free and paid
subjects that I used myself and loved!
Job security
No one knows what will happen in the future, but I can promise you one
thing: If you are a problem solver, you will never have to worry about losing
a job. A real problem solver doesn’t care about specific programming
language or framework. They are a lifelong learner and try to find the most
efficient solution for the problem. So be a problem solver, not a coder!
Time
It took me two months from writing my first line of Swift (iOS development)
to landing my first project, but before I started my journey as an iOS
developer, I was doing Android development for about a year and half.
So, did it really take me two months, or did it take me a year and seven
months to learn programming?
The truth is that it may take anywhere from two month to two years from
writing your “hello world” to landing your first job. It depends on where you
live, what language you use, and how you market yourself. But here’s a
piece of advice: Focus on the process instead of the end goal. Otherwise,
you won’t enjoy what you are doing and it will be exhausting!
Different path
Like most questions, the answer depends on your situation. You need to
evaluate what you would put into each of these paths (time + energy +
money) and what you would get in return. These three are all viable
options and each can lead to a successful future as a developer.
Mentorship
Having the right mentor can save you so much time and energy. If you
can afford it, I highly recommend getting one, and finding the right mentor
can be taught. Even though talking about how to choose a mentor could
be a section on its own, I’ll share few tips here to help you find the right
mentor for you!
First, you need to set your killer goal (Chapter 2). Then, look for mentors
who had the same journey and now are in the place you would like to be
in the future.
By using this criteria, you’ll find a few mentors who seem to be the right
fit. However, just because they checked the first box doesn’t mean they
are a good fit yet.
The second step is to look for the people your potential mentors have
worked with before. Mostly, look for the result. You can reach out to their
students and ask about their performance. Then, do one session with a
mentor who you think might be a good fit and then evaluate their method
of teaching. (Important: make sure to do at least few sessions before
signing a long-term contract.)
Short answer: after finishing your first programming course and having at
least three projects on your portfolio.
Long answer: Here’s what you do—finish this book, then take the
programming course and finish it! Build at least three portfolio projects.
Keep posting on social media, and then apply for your first job. But before
you start applying, you should know that the point of applying at this stage
is not to get the job—the purpose is to get used to interviewing and find
the gaps in your knowledge. The more you go to interviews, the better
you’ll get at it. Pro tip: send your resume to smaller companies and go to
interviews any time you get a chance, even if you know you don’t want to
take a job there if they offer it to you!
Chapter Ten
Chapter Ten:
EXTRA
RESOURCES
In this chapter I will share my top favorite resources and links as a
developer. I would also share some good alternatives. (this list will be
updated in the next version of this e-book)
Adobe XD
Link: https://www.adobe.com/products/xd.html
It’s a free design tool that lets you design User interfaces for web and
mobile applications. I recommend learning the basics of this app for
designing your portfolio. Adobe XD is my first Go to app for Designing UI.
I also use it to Design my nstagram posts.
Sketch
link: https://www.sketch.com/](https://www.sketch.com
it's another great app for Designing. it's only available for Mac and it costs
99 USD. sketch is my second go to app for design UI.
Figma
link: https://www.figma.com
Figma is a great Design tool for collaborating with team. I personally don't
use it but lot of people love it! it has a free and a paid plan.
Visual Studio
link: https://visualstudio.microsoft.com
IntelliJ IDEA
link: https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea
it's super powerful IDE with tons of useful feature. IntelliJ has lots of great
sub IDE for each language which uses the core of IntelliJ IDEA with
customized features for that language. like PyCharm for Python or PHP
storm for PHP.
it's paid software and the price depends on the plan you choose
Atom
link: https://atom.io
I love atom for doing quick changes to a project or editing a file. it's fast
and I like its user experience!
link: https://developer.apple.com/xcode
and of course XCode! it’s the only IDE you can use to develop apps for
OS platforms. even though it's not as powerful as other IDEs but its the
only option so...! :)
link: https://developer.android.com
unlike iOS developers, android developers have more than one option for
choosing an IDE of their choice but they won't need any IDE other than
Android studio.
it has been developed by google on the jet brains IntelliJ IDEA which i
mentioned earlier.
GitHub
link: http://github.com
It’s a hosting platform for codes. It allows you to work with other
developers on the same code base with the help of code versioning (Git).
Bitbucket
link: http://github.com
Bitbucket is just like GitHub and it's send most famous platform for hosting
codes. it lets you to have 3 private project for free and after that it charges
you for extra projects.
link: https://stackoverflow.com
it's the biggest community of developer that help each other out!
if you get stuck on a bug or need a help to solve a problem, Stack over
flow is a website to go to!
Oh my Zsh
link: https://ohmyz.sh
if you are using terminal (which you should) you must install oh my Zsh.
it's an amazing extension that gives extra power to your terminal!
Dev Docs
link: https://devdocs.io
it's one page website that lets you to quickly search for a documentation.
link: https://free-for.dev
this is a list of services that are free for developers! you can find lots of
amazing products!
Bluehost
link: https://www.bluehost.com
Go Daddy
link : http://godday.com
go daddy is the most famous website for purchasing domain. they support
almost all top level domains.
Heroku
link : https://www.heroku.com
Heroku is probably one of the first cloud services out there. if you need a
cloud based hosting service for building applications, i would suggest to
take a look at this website.
Notion
link: https://notion.so
I’ve been using notion for less than 6 month but it's by far my most favorite
app for note taking, scheduling and tracking. it has free and paid version
but the free version is more than enough for individuals.
I have built lots of great templates that you can use. you can find it in the
resources chapter.
Evernote
link: https://evernote.com
before notion i used to use Evernote for note taking and keep track of my
learning. it's still great for lot of features.
Jira
link: https://www.atlassian.com/software/jira
if you work in an agile team, there is a good chance that they would be
using Jira to manage the project. it has a free and paid version. i would
suggest to download the free version and take a look at how things work!
:)
Trello
Link: https://trello.com
Trello is a great collaboration tool for teams. I have used it as team and
as a freelancer with my clients. it can be as simple as to do list or more
complicated like Kanban workflow.
Slack
link: https://slack.com/
think of slack as a messaging tool for businesses and teams! it has lots
of feature and most management tools like Jira and Trello connects with
it to send update.
Acronyms
Here is the list of most important acronyms that a developer should know
about (this list will be updated)
UI
User Interface
UX
User experience
API
Application interface
CMS
Content Management system that gives you the ability to work with
content on the web. EX: WordPress, Joomla
CRUD
IDE
integrated Design Environment - software that gives you the tools you
need to develop software. Like VS Code, XCode, Android studio
HTTP
Hypertext Transfer Protocol - it's simply a set of rules that your browser
ureses to send and resave data
HTTPS
Hypertext Transfer Protocol Secure - it's same as HTTP but more Secure!
DNS
Stock Photos
if you are looking to use some photos as a mockup for your web or mobile
development you can check out these resources.
http://freepic.com
http://unsplash.com
https://www.w3schools.com (Free)
https://udemy.com (Paid)
https://udacity.com (Free)
FreeCodeCamp.org (Free)
Chapter Eleven
Chapter Eleven:
WHERE TO NEXT?
This is just a start!
In this book, I tried to guide you to start your coding career the right way
by giving you a roadmap and sharing tips that will save you months or
years.
I also wanted to mention the ups and downs that you will feel in your
journey.
This book won't help you to become a developer, just like the best book
on productivity won't help you to be productive.
You can have all the BEST resources for cooking, but that doesn't make
you a chef!
All the available resources, including this book, are merely a guide for
doing things the right way. You can do lots of experiments to find out which
ingredients can be mixed, create a great test, and with that, waste a lot of
time and energy; or, you can simply learn from the experience of others
and save yourself the trouble.
To make sure you get the most out of this book (in fact, any book!) just
take one idea and put it into practice!
Always strive to learn—not just for the sake of learning, but for the sake
of doing and improving!
I wish you the best, and don't hesitate to reach out to me if you have any
questions. I'd be happy to help! :)
Also, don't forget to follow me on social media—I share content every day!
Instagram: https://selfmadecoders.com/instagram
YouTube: https://selfmadecoders.com/youtube
Email: [email protected]