I know I get this question a lot. Day after day new aspiring programmers enter the workforce. People from all around the world and, mostly, that comes from different fields, aim to become or learn programming.
“John, how do I get started in software development?”, “John, how do I start coding?”, “John, how can I start my career as a programmer?”
Before I say anything else, I need to say this: There is no right way. Instead, there are A LOT of different ways in which you need to pick up the ones that suit you the best.
In this video, I'll lay out some of the paths to get started in programming and present you the best options for each case. Every case is a case and the path you should take is up to you to build.
John Sonmez: 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.
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.