11
Sep

How To Get Started In Software Development? (Start Coding Guide)


Coding Dojo is a programming school that turns
beginners into developers in only 14 weeks. If you’re serious about landing a career in
tech but lack the formal education or background, Coding Dojo will get you there in no time. With over 3000 graduates to date, over 90%
of their grads land job within three months of graduating, often making over 70k per year
at tech firms of all sizes from companies like Google to local startups. To learn more, visit codingdojo.com or click
the link the description below. Hey, what’s up? John Sonmez here from simpleprogrammer.com. Today, I wanted to talk about something that
a lot of people have asked me about, which is software development related. Yes, I know and it is actually how to get
started as a software developer. I find that through the people that I’m coaching,
a lot of the emails I get, a lot of the questions I get when I talk to people on the street
that are interested in software development—well, maybe not on the street, although some of
them. I mean sometimes I do talk to a homeless person
who wants to know how to be a software developer. It is kind of rare, but every once in a while. Anyway, a lot of times I get asked about getting
started as a software developer. I think this is one of the most difficult
things. I’ve done some videos on this on the past,
but I wanted to sort of give you some ideas, especially from some of the people I’ve been
talking to that have been trying to get started how you could get started. Well, how do you get started as a software
developer? There’s a lot of difficulty in figuring this
out because there’s so many different options. One of the things, I think—I want to talk
about why this is a difficult question, first of all, which is that there are so many options
out there today. I think that you’ve got traditional education,
colleges, getting a degree, which degree do you get. You’ve got boot camps. You’ve got self-education. There are so many different places online
where you could learn. You can either do an online boot camp or you
can enroll in online degree program, or just online courses and learning on your own. There’s ton of books out there. There’s a ton of information out there in
order to help you become a software developer, but sometimes having all of that is actually
really distracting and it makes it difficult because you feel like you should be doing
everything. You don’t know. You don’t have a clear path. It was easier—I mean it’s almost easier
to become a medical doctor than it is to become a software developer. What I mean by that is because as a medical
doctor, you know. You enroll in medical school. You choose your specialty and you go to school
and you do your—what do you call it? Internship. You do your time. You know exactly the path you need to go in
order to do this. The same thing, maybe becoming a lawyer or
something like that, but as software developer, there’s not a clear path. Even if you enroll in university or you go
to college, it’s not a clear path of what you do to get there and what you should learn,
right? I want to kind of clear this up a little bit
and give you guys some ideas in how to how to get started as a software developer, some
of the best things that you can do. By the way, I will tell you that the information
that I’m going to give you, some of it is coming from my book, The Complete Software
Developer’s Career Guide. You might want to check it out. You can get that out on Amazon. It’s an 800-page book and this is designed
to help you with your career to get you through the process. A whole section of this is dedicated on getting
started as a software developer. I can’t cover all of that here, but I’m going
to talk about a little bit of that. The first thing to know about software development,
I think the first most important thing, more than important than anything else, is to just
get started programming. I’ll tell you my story when I was younger. When I first got involved in software development,
I remember being a kid and I remember playing some games online like gaming got me into
a lot of you. Gaming got you into software development and
that’s cool, but I was playing these MUD games, these online games. Think of it as like World of Warcraft like
before there was graphics. It was just like text based and it was a lot
of fun. I’m tempted to go to play some MUDS now that’s
like the text based—it was just so fun. Anyway, I wanted to create my own MUD. As a kid, there weren’t really programming
books that I had access to. There weren’t videos online. I mean the Internet was basically—I was
tellnetting. There wasn’t even really the World Wide
Web at that time. Yeah. I know I’m dating myself a little bit here,
but I still didn’t have the resources. I didn’t have any mentors. What I did was I figured out how to get the
source code for one of these MUDS, and I figured out how I could host it like I talk to some
people I knew and said, “Okay, can I host this on your server?” I figured out someone that would let me host
it on their server. What I ended up doing was I got the source
code. I found some tutorial on how to like start
up the MUD, but nothing about the code. I just started like looking through the code
and I had no idea what this code was. This was like C code and I had done a little
bit of basic programming Apple TUI computer in school, but I just said, “Well, you know
what? What if I just make some kind of change here? I just want to make it so that I remember
working on a skill like there’s in the MUD you had a kick skill. I remember I wanted to make it so that you
could kick someone and they could go through a door, or there was like different—I wanted
to make this like super detailed kick skill like to add all these levels of intricacy
to it. I ended up looking and I sorted through the
source code and I eventually found where the kick skill was implemented. There was some kind of a table and it showed
how much damage each skill did, and there was some code involved with that, some custom
code. I just modified it so it did more damage. Then I compiled everything and I ran it. I mean it was amazing to see that I had programmed
something. I mean all I did was change one variable,
honestly, but it changed. Then I figured out. I looked at some other skills and I looked
at how they’re implemented and I looked at—I remember there was this bash skill that when
you did bash, it would knock someone through a door. I said, “Well, what if I wanted to make my
kick skill if you rolled it high enough on the kick, bash and you send someone through
a door through the next room.” I just copied some of the code from the bash
skill and I put it into the kick skill and sure enough, I compiled it and it worked. I kept on making these small changes and seeing
what would happen, then I’ve sort of figured out for my own or from just experimentation
what the programming language was doing in some of these things. Now, obviously, I didn’t become a great
programmer from doing that, but the thing is like I learned a lot just from—not even
a book, just from looking at the code and experimenting with it. The reason why I’m telling you the story is
because I think the most important thing that you can do to learn programming is to actually
just do it. I know that it sounds like common sense, but
so many—like a lot of us, we approach this way. A lot of us do this. I’ve done this from time to time which is
we approach life in such a way that we don’t want to like do something or try something
until we’ve got it figured out. We want to do all this research. We want to make sure we’re ready and then
when we’re finally ready, now I’m going to go and do it. There’s a certain amount of preparation that
can be valuable, but in order to get the most out of any kind of learning experience, what
I found is that first you dive into things that are over your head and you just get started. You just start doing it and then you go back
and you learn, and you see what you’re doing wrong and it makes more sense. It makes more sense when you’ve actually done
something. You can read all these books on programming. You can do all these tutorials and stuff and
you can try to understand and learn this stuff. If you’ve never done it before, it doesn’t
make as much sense. Again, you can think about this as a sport. Let’s say you’re going to play football, okay? If you can read a bunch about football and
how it works, and what not and what the plays are and all of these things, and the scoring
but if you’ve never played the game, a lot of it is not going to stick. It’s not going to mean much to you. You’re not going to know what’s important,
but if you go and you play a few games of football, you’re like, “Man, football is fun. I like football. I don’t know anything about the rules or
anything like that, but it was just fun playing in being out there. I was wondering why do we do this and why
at certain point did they have to kick the ball.” You’ve got all these questions and you come
back and now you read the rule book, and now you read some books on football and now it
like made sense. You’re like, “Oh, okay.” You can apply that information and move on. Same thing with learning a programming language
or to learn how to program. There’s more to learning how to program and
getting started in programming than just that. The first thing is, like I said, just dive
in just to figure out some way you can start programming right away even if you don’t
know what you’re doing. Just play with some code. Just do something so you can get the feel
for it, and that’s going to plant some good seeds for you to develop that skill rather
than don’t start with the reading books. Don’t start with—start with actually doing
something. That’s the beauty of it and that’s the wonder
of it. That’s what makes this fun. I remember, again, as a kid playing on the
Apple TUI on the computers in the computer lab. I didn’t know what anything was doing. I didn’t know how it worked, but I was just
playing around. I was having fun and then I went back and
I read some manuals, and I read some stuff and then it was even more fun because I was
excited about it because it was just the pure joy of the fun like don’t lose that. After that and then the next thing that you
want to do is like understand what is software development. If you know someone, it’s not just writing
code. If you know a software developer, ask them. I’ll tell you that software development itself
is really automating manual things. Mostly, what we do when we’re writing code,
we’re automating manual things. Before we can automate something, we have
to know how to do it manually. The process that you do when you create software,
when you write code, when you program is, first, that you have to understand what it
is that you’re trying to solve. What is the problem that you’re trying to
solve? Then you design sort of a solution for that. Then you code up that solution. You program that and then you test what you’ve
written or the code that you’ve made, and then you’re going to put that out there and
execute that and you iterate through this cycle. That’s the software development life cycle
in a nutshell. I mean that’s a very simplified version, but
you have to understand this. You have to understand what it is that you’re
trying to do. I mean you’re not going to get a job just
writing code. Understand that. Next, I would say this is big as well. Let’s say you got to actually specialize down. I’ve got a whole playlist on specialization
for software developers that you can check out, but, honestly, you just got to figure
out. I mean like I said, there is a huge amount
of things that you could be learning and doing in a lot of technologies, but you got to figure
out a path that you’re going to choose. I’ll give you an athlete example again. Because so many people say, “I want to be
a software developer or I want to be a web developer,” or even maybe they say, “I want
to be a back-end or front-end developer.” I’ve got a video on back-end versus front-end
if you’re interested, but that’s not very specific enough. Even if you say I want to be a C++ programmer,
C# programmer, Java programmer, whatever, still not specific enough. Think about this way. What would you say to someone if they said,
“I want to be an athlete?” That’s pretty damn broad, right? I mean how do you become an athlete? It seems kind of silly. I mean when you think about that because it’s
too broad. You’re like, “Well, what kind of athlete do
you want to be? What kind of training do you to become an
athlete like how do you learn how to become an athlete? Should you may be lift some weights and run
around or do some pushups? I don’t know.” If you said, “Hey, I want to become a type
of athlete,” and you said, “I want to become a soccer player or I want to become a swimmer,
or I want to become a bodybuilder or I want to become a runner.” Now, we can actually come up with a plan. If you want to become a runner, for example,
well, what does that look like? We got to get more specific. Well, what kind of runner would you want to
become? Do you want to become a sprinter? Do you want to become a medium distance runner
or a long-distance runner, or maybe an ultra-marathoner? Whatever you choose, it’s going to have a
different way to get there, different training plan. Same thing with software development. If you want to become a software developer,
if you want to become a programmer, it’s not good enough to say I want to be a software
developer. Right? It’s not good enough to say I want to be a
programmer. You got to say, “I want to be this kind of
programmer working on this kind of stuff.” You got to be very specific. Otherwise, you’re not going to know how to
train. Even if you just say I’m just a runner, what
does that mean? You just got to go out and run. No. You need to know what you’re training for
so that you can come up with a training plan. If you want to learn to be a software developer,
you need to know what kind of software developer and what technologies, what your end goal
is so you can know what the learning plan is to get there. How do you figure that out? Again, I’m giving you some brief stuff here,
but check out my Complete Software Developer’s Career Guide and it’s got plenty of details
on that. Obviously on this channel, there’s ton of
free resources out there, but the book will probably help you quite a bit. Here’s what I would suggest. This is what I’ve been telling a lot of people
that asked me this question lately, is I would say, “Go and look for a job description. Go search on a job search site, whatever your
favorite job search site is and look for jobs that you might want to have in your area,
the kind of job that you’d want to apply for. Maybe you’re not even at that stage. Maybe they’ll just give you some ideas and
you talk to different software developers. See what you’re interested in and you can
always change your mind later. This is not a permanent thing but you got
to get started somewhere. It’s so much easier to steer the car when
it’s moving than when it’s parked in your driveway. I want you to remember that, so you always
take action and get moving and then you can sort of make the plan. You can make the plan while you’re on the
road. You can change direction if you need to. While you sit in the driveway, nothing is
happening and you’re not learning anything. You don’t get enough feedback to actually
make changes to your plans. Anyway, look for it on a job search site and
look up some jobs, and find one that you might be interested in and look at the description
and then say, “All right. What does this entail?” The job tells you exactly. It’s like, “Okay. We’re looking for someone that understands
Agile development” write that down—”that understands JavaScript. Primarily, we’re looking for an angularJS
developer and/or back-end system. We are coding it up with ASP.NET or whatever
technology, nodeJS. We use SQL server or we use MongoDB, or whatever. You know what I’m saying? We use this operating system.” Look at that job description and say—this
doesn’t mean that you have to only do this job, but that’s a good template like that
gives you a solid goal. This is saying I want to be an ultra-marathoner
or I want to run the 400. I want to be a sprinter. That’s what that is. You get that job description and now you work
backwards from there and you say, “What kind of skills do I need to get? What kind of things do I need to learn? How can I become this developer that would
this job description?” Like I said, you can expand that from there,
but start there because that will give you a solid place to focus. That’s a direction to go. You’ll know what you need to learn. It’s very obvious to you at that point what
you need to apply in order to be able to do that. If you can do what is in that job description
then you can get that job and that will make you a developer, and it is a much faster path. If you just the kind of scatter shot approaching
like, “Well, I should learn some programming. Maybe I should learn some programming languages
and I should learn some of the concepts, and I should learn some of the concepts and I
should learn about algorithms and I should learn—oh, what about web development? And you’re doing all this kind of stuff. It could take you years before you feel proficient. I mean I’m not saying that you’ll never get
there, but maybe you work on different projects and stuff, and after a few years you feel
proficient. If you do something like this, we have a solid
goal where you’re directly determining what it is, what kind of developer you want to
be, then you can make a very clear path. Maybe you could do this in six months. I have known people and some of their successors
are on this channel who have basically become a developer in like three months or six months’
time frame by hitting hard, by knowing exactly what their target is, and then you just make
progress for that target because you know exactly what it is that you have to learn. Now, it doesn’t mean that your learning
stops. It doesn’t mean that you can become a good
developer in six months or even three months. What it means is that you can get started
enough. Once you have enough, once it clicks, once
you’re actually able to write code and you actually can get a job in software development,
then you can learn much faster. You can accelerate that then you know where
to expand, and you’re going to learn your whole life. I’m always learning. I’m a big believer in continuous learning
and lifetime learning. I’m a lifetime learner myself, but that’s
how you can really get started, is you just got to have the focus. Like I said, today—when I was a kid, when
I was working on that MUD as I told you in that story, there weren’t very many options,
honestly, like it wasn’t very—it wasn’t like today. I mean there weren’t very many books. I didn’t have access to the books. I didn’t have Amazon to just order books. Not that I even had the budget. I didn’t even know who to ask for or what
to ask for. There was no Internet really to search for
stuff, to watch tutorials or videos or to learn any of this stuff. There weren’t college programs. There wasn’t boot camps. There wasn’t any of these things or free courses,
or any of that stuff. In a way, it was less confusing because there
are a few paths that you can go like becoming a doctor or a lawyer. Today, you have a lot of options and it’s
great. It’s awesome. I mean there are so many ways to learn, but
it’s also confusing because you can have a decision fatigue. You don’t know what to do. How are you going to learn on this stuff? That’s why more than ever, it’s very, very
important today to make a clear goal, a clear path. Like I said, you can change it later. You can be a different kind of developer later
if you don’t like that, but get to level one first. Get a job as a developer. Pick something. Aim towards that goal and get there and then,
like I said, you want to change course? It’s cool. Well, you know, I’ve changed course many times
in my career, but you got to have a focus and you got to get there. That’s what’s going to get you there. All right. One last thing. I’ll tell you again. Just plug it one more time. My book, The Complete Software Developer’s
Career Guide. I created this book in order to help you. All the questions you might have in your career
in becoming a software developer. Honestly – Like this is a really good investment
for you if you’re seriously interested in becoming a software developer and you need
some help. I mean that’s why I created the book because
there’s really no good resource out there. All right. If you like this video, if you feel like it
will help someone else, definitely share it and make sure you click the Subscribe button
below. Click the bell if you don’t mind so that
you don’t miss any videos because I want to continue to help you and not just become
a software developer, but maximizing all of the areas of your life because it’s really
important as well. We can’t just focus on one area of our life
and expect things to work out well. All right. That’s all I got for you today. I’ll talk to you next time. Take care.

Tags: , , , , , , , , , , , , , , , , , , , , , ,

40 Comments

  • Sohel mukadam says:

    This is great man thank you soo much ❤ ❤

  • Marko Novakovic says:

    lots of programmers say when they made 1st program they were so trilled about it "wow i made computer do it" but when i wrote my 1st program (Hello World :D, and more advanced ones doing stuff with matrix etc. ) i was like "meh, thats it, come on man you can do better this is shit"

  • Ben Silveston says:

    Good advice once again! Agree with pretty much all of it! 🙂

    When I started learning programming, I found it pretty overwhelming. Like being trapped in a mental vortex if you like! There are so many literature and online resources and courses out there and knowing which method(s) is best is almost impossible to know. In fact, I tried to learn using multiple types of resources. Which can work but only if one has the natural ability of adapting to learning through these variable resources at a very high level and quickly. The latter has always been a weakness of mine.

    I found that looking at job descriptions really helped me to understand what skills were needed to succeed in that particular job. Most jobs within either Software Development or Web Development share skills so one can then decide which skills in both types of development are needed and then train themselves and learn them. Obviously that at first can be challenging due to so many programming languages being out there. But over-time, I learnt which groups of languages and frameworks were used by that company and then started building a training plan from there.

    HackerRank is a good starting point for the above. Not only can you develop your programming, problem-solving as well as various mathematical skills. But also, you can find out what companies like WorldPay and Goldman Sachs look for in potential developers and how those companies for example assess you. HackerRank has certainly helped me to develop and will for sure continue to keep using it. 🙂

  • google sucks says:

    I MEMBER telnetting to text-based role-playing games. Yes it was Fun and good groups of people.

  • Michael Richmond says:

    The first step to get into software development is to start programming and building stuff or building something of value and putting it on your resume.

  • CaliforniaLove8 says:

    Can you do a video (even though you might have already, you have a lot of videos so I’m not sure) about the specific jobs/roles a person can possibly do in the software field? I know there’s probably a lot but I was wondering if you could maybe give examples…it might make it easier for someone like me to be able to narrow it down and focus on an area

  • Paddy Mcgill says:

    Maybe it’s safe to say that coding is something you do not something you learn ?
    Or you learn by doing not studying?

  • CaliforniaLove8 says:

    And it’s funny, I literally just did what you said before watching this video…I looked up jobs and their descriptions to see exactly what jobs are looking for

  • CaliforniaLove8 says:

    I totally agree too how overwhelming the immense amount of information you have to learn in this field and it’s almost harder having all these resources because you think you need to learn everything from every resource

  • Paddy Mcgill says:

    I’m studying Computer science at a University.
    I know a degree can get me an interview but is there a benefit in knowledge that studying Computer Science can give a programmer ?

  • Tarek Hesham says:

    WOW!
    Simply i think that's the most helpful video when it comes on getting started as a software developer.
    Thanks 🙂

  • AHMED ZAKI says:

    Our field is like "connect the dots between the stars", SO we have to LEARN FOREVER.

  • Bryon Elvbakken says:

    I've recently graduated. How the hell do you get your foot in the door? Even entry-level positions require more than what are taught in college.

    College doesn't give you a clear path. They teach you a foundation and they teach you how to learn. However, if you need 3 to six months to learn, let's say, for web development, node.js, bootstrap, JavaScript, angular, etc, that's six months you're not working; you're not making money. I didn't go to college, rack up college loan debt, just to go work some menial job. So, what's the answer? Why are there jobs that college graduates don't qualify for, and two, why do the people hiring forget that they had to start somewhere too? Doing projects on your own doesn't pay the bills.

  • Machine Learning with Phil says:

    Great suggestions:

    Learn by building on and modifying what others have done.
    Get specific on what you want to be
    Find job listings for that position and see what skill sets you need
    Profit

  • LordPlatypusIV says:

    I really want to know how I can make servers with C#.

  • Jon Woo says:

    Good analogies

  • yougotOWENd1 says:

    This is the MOST MOTIVATIONAL video I have seen from you in quite a while. In the beginning you were so enthusiastic and I got fired up to finally start my new project, instead of planning it out.
    Thank you 😀

  • LivingL393nd says:

    John what`s your take on Deep Learning and AI? it seems to be the hot topic in IT these days and I wanna know your take on this especially since robots will take over in the future and AI will evolve more and more. Python is heavily used in this field I herd and C++ to an extent too. To get into AI and Machine Learning, do you need a Comp Sci degree?

  • nicholas williams says:

    Holy Shit! Your hair is fucked!

  • DevinBigSeven says:

    Way easier today to get into programming now than it was in the 90s and early 2000s. In the 80s, it must have been easier because computers came with a BASIC programming manual and there were BASIC game programming magazines. In the 90s and 00s, BASIC pretty much went away, along with the magazines and the Internet was a forest without a map. The library didn't have any good resources. The bookstore had some advanced books. It did have one book "Beginning Programming for Dummies 2nd ed." and it came with a copy of liberty basic. I'm guessing the MUD was written in Perl; otherwise, you would have to learn how to use a compiler and linker, and where are you going to learn about that, back in the day? High school didn't have any resources or classes, except for an old Pascal book that was used in a long gone programming class. I didn't find good instruction in programming until college. The 90s and 00s were really a dark age for novice programming outside of academia. Emacs lisp was the first interpreted language I learned and Emacs was the first program whose behavior I modified.

  • DevinBigSeven says:

    A lot of job descriptions are really vague, general, or don't really reflect what your working knowledge needs to be. In a job that I recently applied for, they were unwilling to go into specifics about what technologies they used prior to the interview. The job description just listed a bunch of technologies that were irrelevant but showed that you had programming skills and they brought up some technologies in the interview that were not listed. I've had this happen a number of times; the job description poorly or vaguely describing what they are looking for. Often a generic job description is recycled or HR creates it. I think this experience has been echoed before in the comments when talking about specialization.

  • keith monroe says:

    Man you could of been a voice actor. The way you did that comercial.

  • thought2007 says:

    I like the advert at the beginning. You have that natural advertiser tone and delivery.

  • Smith Adam says:

    Thanks for your help John.

  • Mario Le says:

    This is freaking gold

  • Keep moving forward says:

    clear path

  • cyantulip says:

    “Decision fatigue” – LOL! So true…
    I got your book, but I can’t find the time to read it, what with reviewing material, practicing coding online, interviewing, working out 3 times a week…how the hell do you fit it all in?

  • Mark Christian Navalta says:

    Hi John it would be great if you could do a review for this curriculum
    https://github.com/ossu/computer-science#advanced-math

  • Pranav singh says:

    I am a final year computer engg student.I have an offer as a software developer to join a mid size Indian company.I will have to work on JavaScript,core PHP and mysql.I can code in c and c++.But I have never worked on projects.I want to work in data science.But I have no other option.can u suggest a learning path.How do I learn PHP and JavaScript and then make the transition to data science.I just cannot figure out a long term plan.

  • LloydG says:

    dive in.. and go back.. damn I should have done that a long time ago. thank you so much you man, you just gave me the idea

  • josuefuentes1984 says:

    John thank you for making these videos man, your advice is great!

  • Ozark Chinquapin says:

    I love the low cut top

  • One Man Journey says:

    When they sold computers (Timex Sinclair, Commodore Vic 20) at the early big box stores in the mid 80's, I used to put them into an infinite loop with 2 lines of BASIC (where you had to manually number your lines of code) Lol.

  • desert915 says:

    Lame

  • Rajat Verma says:

    Golden words!

  • Southern Hemisphere says:

    I don't like playing around why are you giving us the lazy part? Reading must allow us to understand the formula and where they came from. That might be your learning style of what you're giving us but not mines. Because man! That sucks. That is terrible that the percentage of the demo-graph of people who want to be a software developer are dumb if you present it that way.

  • Southern Hemisphere says:

    Half of this video doesn't actually teach me to get starter but this seems more like a life-lesson guide rather than soft-ware development.

  • Ahmed Egale says:

    Please say slowiy and in brief

  • IDDI BARUANI says:

    thanks for open my eyes, this is the best advice ever

Leave a Reply

Your email address will not be published. Required fields are marked *