DevQuestions with Tim Corey
I am Tim Corey. I teach coding online and my inbox is full of questions from current and future developers. I wish I could sit down with each of you and share the answers I know will help you go further, faster in the world of development. This podcast is the next best thing. On this podcast, I will answer the biggest questions people are asking! Send us to your suggestion for a future Dev Questions at https://suggestions.iamtimcorey.com/ To keep the podcast coming, like, subscribe, rate, and share it with your friends and colleagues. See why thousands of students have chosen to learn to think and code like a professional developer at www.DevForge.com.
DevQuestions with Tim Corey
213. How To Become a Software Developer the Right Way
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
How do I get started as a developer? What steps do I need to take to get a job? How do I learn what I need to quickly? What are my options? These are the questions we will answer in today's episode of Dev Questions.
Website: https://www.DevForge.com/
Ask Your Question: https://suggestions.iamtimcorey.com/
Sign Up to Get More Great Developer Content in Your Inbox: https://signup.iamtimcorey.com/
Welcome to the Dev Questions Podcast with Tim Corey. Join us each episode as we tackle the questions you are asking about a career in software development, understanding the industry, and new technology. If you're just starting out or you want to grow stronger as a developer, this is the place to get your questions answered. Now, here's your host, expert developer and online educator Tim Corey.
SPEAKER_02Is software development right for you? And if so, how do you get started? There are a lot of questions around getting started in software development. In this episode, I'm going to go through the most important ones so that you can get started with confidence. So let's start at the beginning. What does a software developer do? And you might think, well, they write code, right? But no, let's talk about how they do their job. First, they build logic. Think about Legos without an instruction booklet. When I was growing up, I had this bin that was full of Legos. Of course, when you buy Lego, they come in a set and you get instructions for building a few different things from that set. But after I did that a few times, those Legos went into the bin with all the rest of the Legos I had. And the majority of my time was spent building things that didn't have instructions. I would think through, I want to build a castle. And so I'd build a castle based upon the Legos I have, or I want to build a house or a spaceship. And so I would build these things without instructions. And that's what software developers kind of do. They have this idea in their mind, and then they figure out how to build that. They build an application based upon an idea. They have all the Lego pieces of all the different code bits, including all the different syntax, and they say, okay, I know all these things. They have this bin full of syntax. And now I want to build this application that does this. They build the logic that goes from the Lego bits to completed project. That's the first thing that software developers do. Now, number two, software developers solve problems. Think about this. Recently I've been struggling with, and I finally fixed, but I've been struggling with the fact that my computer would start back up when I shut it down in sleep mode. So I'd put it to sleep and then come back the next morning and find my computer up and running. And if I would put it to sleep and wait for a little bit, it'd start back right back up, which is frustrating. Okay. So that's a problem. And so as a software developer, I had to figure out how do I solve that problem? Right? And yeah, I didn't write code for that. What I did instead was I figured out, okay, what things could wake it up from sleep? And so I would start changing things and identifying, okay, this thing could wake it up. Let's change it so it wouldn't. And then it didn't fix the problem. And I would do the next thing and the next thing keep investigating, keep diving deeper and going through more settings and more changes until I figured out the things that were waking it up. And it was more than one thing, but the things were waking up from sleep, so that now when I put it to sleep, it stays asleep. Okay. That's problem solving. It's not just the I Google the answer. It's I might Google the answer still, but then I look at the answer and say, does this apply to me? And then even if it does apply to me, can I make that change safely? As software developers, we do problem solving all the time. It's called debugging. You see, when we write software, we almost never write perfect software. In fact, I don't think I've ever seen perfect software. So when not perfect software gets out in the public, they usually find problems. When they do, they report the problem, and then we have to figure out how to reproduce the problem and then how to identify how to not have that problem occur again while also not causing more problems. Okay, that's debugging. Now, number three thing a software developer does is they identify problems and solutions. So let's say that I have a boss come to me and say, I want to capture phone numbers for texting. Okay, so this is what part of my job would be is to say, okay, that's what you want accomplished. But now let's talk through that because if you're capturing a phone number from someone, does that phone number always, is it always capable of receiving texts? Not always. There still is the concept of landline phones, and not all of them have texting capabilities. So have you thought that through? Have you thought through maybe an option to say, may I text this phone number? Or asking when they ask for a phone number, say, can I have a phone number I can send text to? Okay, so you're identifying the problems with what you've been asked to do and potential solutions. You see that part of a software developer's job is capturing requirements. So you're often given requirements that are vague, and you have to identify all the potential problems or all the potential issues that might cause you to have to redo the system. Because at the end of the day, your boss doesn't want just a broken system that works sometimes. Your boss wants an application or a system that works all the time. And so you have to work through and figure out how to make that happen. And sometimes it means clarifying and identifying how we can make things better or what problems might be in the path that we can solve and how to solve those. Okay. So those are the things that a software developer does. They build logic, they solve problems, and they identify other problems and the solutions for those problems. Okay. So they build applications, they debug, and then they gather and work through requirements. Now, a lot of that work does not involve writing code. In fact, writing code is only a part of what a software developer does. In fact, reading code is even more important than writing code. So that's what a software developer does at a high level. But next, let's talk about what language to learn. Because you prior to thinking, okay, I want to learn to be a software developer, but there's so many languages out there. Which one's the right one? I'm going to give you my personal opinion because you can learn almost any language and be successful. You can learn almost any language and be the right choice, or almost any language and it'd be the wrong choice for you. So I'm going to give you my personal opinion based upon my criteria for what a good language is to start with. Okay? So a good language, in my opinion, to start with should be easy to get started. But it should also keep your options open, meaning that as you grow in that language, you should be able to still figure out do I want to be a front-end developer or a back end developer? Do I want to be a mobile developer or a web developer? Do I want to work on cloud, full stack, whatever, you want to be able to have those options available to you. Some languages don't work with everything. In fact, a lot of them don't. A lot of them are pretty specific to just the web or just mobile or just a couple of platforms. And so having options, a lot of options, is good because you may find that you say, you know what, I want to be a front-end developer. And you focus on that until you start getting into it and realize, whoo, I don't like HTML and CSS. And that's a pretty big part of web front-end development. And so you go, oops, I kind of like back-end code, but if you chose the wrong language, well, you don't have a lot of options for back-end code. So that's my second criteria is keeping your options open for as long as possible. Number three, I like a proven language. There are some languages that have been out for just a few years. There are some languages that have changed dramatically year over year. There are some languages that haven't really taken off in the public sphere yet, in the job sphere. Okay. And so I like a proven language. And number four, I like lots of job opportunities. Now, to be clear, it doesn't need to be the most job opportunities. Because as I love telling people, you don't need all the jobs. You need one job. Now, yes, if there's only two jobs available, that's kind of tough because you're now fighting with everybody else for two possible positions. But if there's 2,000 opportunities versus 20,000 opportunities, is that a big difference? Well, actually, not really. Because if it's 20,000 opportunities, more likely it's because more people are trying to compete for that biggest opportunity. And so sometimes being the middle can be really helpful. But so the four criteria I look at are easy to get started, keep your options open, proven, and lots of job opportunities. So my personal recommendation is C sharp, which probably isn't a big shock to you because you're on a channel dedicated to C sharp. But there's a reason why I enjoy C sharp. Now, I have programmed in well over two dozen languages professionally. I spent a lot of time as a consultant working for a number of different clients, and my boss are just getting new jobs in new languages all the time. And so, yes, I have looked and I've worked with a number of languages, and I have found that I really enjoy C Sharp. And I think that there's a lot of reasons why I would recommend it for a beginner language. It's been around for over 20 years. So it's again proven. It's used by companies of all sizes. It can be deployed to almost any device. And it's really easy to get started. So you see how that meets my criteria? In fact, as far as easy to get started goes, your first application can be as few as two lines of code. So just getting started can be very easy. And yes, there's a lot of depth to it, but you want a lot of depth to your language because you want to be able to go to as many different platforms as possible. You want those options to be kept open. So that's my recommendation for how what your first application language could be. Now you get to choose what you think it might be. But now, how do you validate that software development and then the specific language is right for you? So first learn the basics. Okay? Learn the basics of language, start figuring out, and then build practice projects based upon what you know so far. Okay? So you're not building full applications. But what you're doing is saying, hey, I learned the if statement. Let me write a little application that just tests the if statement. That's it. It doesn't have to quote unquote do anything. It doesn't have to be a quote unquote real application. All it has to do is help you practice your skill in what you just learned. So learn the basics, start building practice projects to test what you've learned in the basics, and then repeat for a significant period of time. Keep doing that over and over as you continue to build on your skills. And then at some point, once you've got enough of those skills, build a small but meaningful application. Build something that really does something. Doesn't have to be unique. It does not have to be something you could sell. It just has to be something that works. So doing that will help you figure out, first of all, do I even like being a software developer? And then do I like this language and how it works? Now be careful to bounce around. You want to make sure that you spend that time iterating. You don't want to just do a week in this, you want to do a few months probably to really go deeper into this. Okay. Now that brings up the next question is how would I learn a language? Okay, you talk about learning the language and how you know the cycle of learn, practice, learn, practice, learn, practice, and then build an application. But how do I learn? All right. So my advice here is to pick an instructor that has complete training in the language you want. Because having one voice is really helpful. Now that might be a book. It might be a, you know, learn this language from start to finish. Great. Or it might be a series of video instructions. Or it might be maybe a boot camp. We'll talk more about that later. Probably not. Okay. But pick one instructor that has as complete as possible from very beginning to real world ready. That way, with that single voice, you can get a single cohesive message and make sure that you follow a path that's coherent. Okay? Now then follow their training step by step. For example, I cover C sharp. I have a lot of free training as well as a comprehensive master course on C sharp, which is the equivalent of an entire training path in one course. So that works. That works for a lot of thousands of students have done that because they want to learn C sharp. Follow something like similar in other languages with other instructors. You want that one go right through path. You don't want to have a path that has eight, ten different instructors popping in, popping out, covering similar things, not covering things, leaving gaps. You don't want that more difficult process for learning that language. So what about formal training? I talked about a boot camp. What about boot camps or a degree? So these are expensive options, which means that changing your mind is very expensive. And sometimes that can be the sunk cost fallacy of I've already put $10,000 in this, I really don't want to back out now. Well, but if it's not right for you, then it's not right for you, right? So that's one thing. But also, maybe you put $10,000 in and say, I'm not gonna follow a sunk cost fallacy, I'm going to get out because it's not for me, but you lost $10,000. Like that's a very expensive thing to do. So I would encourage you not to do that as a first step. It's also hard to stay up of date. So check to see how modern their curriculum is. I know that for a lot of colleges, it's at least a three-year cycle to get something from designed to in the classroom. In software development terms, three years is a very long time, and lots of things are out of date. Now, professors do work very hard to kind of, I don't want to say circumvent because that's not the right word, but they try to get the newer things into their classroom anyway. So sometimes you'll have a great experience with the most modern things, and sometimes it will be up to date, but a lot of times it's not. So you need to check to see how modern their curriculum is. There's also a lot of colleges and boot camps that are just out for your money. So you need to verify their authenticity and their quality. I know personally of colleges that will say they have degrees in software development that they do technically, but I know that you will not learn very much about software development if you go there. And it's mainly going to be you spending a lot of money for not a lot of value. So verify that they're authentic and their quality. Now, different people learn different ways. Figure out what works for you. It may be that learning from a video platform doesn't work for you. Maybe you're not motivated that way. Maybe you need to have people to rub shoulders with, maybe you need to be in a classroom environment. Then yeah, that might be a good opportunity for you. But don't let a job dictate your path. Being a good developer is much more important than a degree or in something else or how you become a developer. Okay. So if you become a developer, a great developer, your employer will care more about the fact that you're a great developer than how you did it. All right. So sometimes that could be a degree. Sometimes that could be a boot camp. Sometimes that could be self-taught. Sometimes that could be instructor-led, you know, online training. Whatever the case may be, don't let the getting a job dictate your path. Because you could always say, hey, I'm going to take three or six months and learn how to be a software developer and then work to get a job. But maybe, you know what? I really need that degree. Okay, then get the degree. But you're already a software developer. You already have some skills, you're already ahead of what you need for that degree. And you could even potentially take a degree that's a little easier, or that rounds out more areas, or that allows you to have the time to work as a software developer on the side as well. So it can launch you forward. So don't just let a job dictate your path. If you need a degree, okay, maybe, but probably not anymore. It's getting less and less. But either way, become a good software developer first, and then figure out if you have to have additional requirements to get the jobs that you want. Okay, now finally, what do you need to do to get a job? Okay, so I'm gonna give you a very high-level overview. There's four areas to focus on to get a job. Okay. First of all, your skills. You need to have good software development skills. That means lots of practice. Okay. You need to not just learn syntax. Remember, when I talked about the things that you need to do as a software developer, the tasks that software developers do, I didn't say they know lots of syntax. But it's kind of like, again, that Lego bin. The more syntax you know, the more different types of pieces are in the bin. But that's not the real thing as a software developer. That's not the thing that software developers primarily need to know. They need to have a full bin or a pretty full bin. But what's more important is how they can build things. And that is something that as a skill that takes practice. So, first off, one of the first four areas, the first of the four areas to get a job is you need to have skills. And then number two, right on its heels, is you need to have experience. You may say, Tim, how do I get experience if I don't have a job? Because a job is experience, right? Well, no, that's not the only way you get experience. Okay. You can get experience in a lot of different ways. I have a whole separate dev questions episode on getting experience, but part of that is really just practice, being able to show off that you can do the job. Build a portfolio, and we'll talk about that in a minute, but build a portfolio of things that you've practiced to show off your experience level. So that's number two. Number three is having a resume and continue to add to that. Try to get jobs in software development, even small jobs, even if it's, you know, internships, whatever it may be, try and get a job to put something on your resume. But then number four, and kind of more importantly, is build that portfolio. And it starts with back at your experience, practicing, building larger things based upon what you have practiced and showing off what you can do. So those are the four things to get a job. You need to have skill, experience, a good resume, and a good portfolio. And those things are going to evolve over time. And yes, when you first start off, the resume is going to be light, but you can do a lot by having good skills, good experience through practice, and then a portfolio that shows off what you can do. And yeah, it might be an entry-level job, but you're more likely to get that entry-level job based upon your experience, based upon your portfolio, based upon your skills. Okay? Now, becoming a software developer can be a great career option. The key is to get started right and validate that this is a career for you and that it and doing so in a way that won't be too expensive. I hope these answers helped you identify your next steps to take. Thanks for listening. And as always, I am Tim Corey.
SPEAKER_01Thank you for joining us for this episode of Dev Questions. Tim is committed to making it easier for you to become a developer. If you would like to help make more content like this possible, please like, subscribe, rate, and share Dev Questions. You can also send your questions to questions at IamtimCore.com. Until next time, remember, you are too smart and your time too valuable to waste it making all the mistakes Tim did. When you're ready to learn to think and code like a professional developer, head over to IamtimCorey.com and enroll in a course.