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
236. Identifying The Next Step In Your Career
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
How do I figure out what to do next in my career? What are some important things to consider? Should I learn a new language? Should I try to be a full-stack developer? How do I become a senior developer? 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/
What is your next step in your career? Do you know? You should have a clear picture of what you intend for your next step to be. Otherwise, you're going to be left behind or wander in the wrong direction. I've seen a lot of careers that were sidetracked where people were left without relevant skills because they just kept working with their head down. That can put you in a very vulnerable spot. I don't want that for you. In this episode of Dev Questions, we're going to talk about how to map out your next step in your career. That way, you'll be setting yourself up for long-term success.
SPEAKER_00Welcome to the Dev Questions Podcast with Tim Corey.
SPEAKER_01Software development is more than just writing code. So let's talk about the rest of it. Specifically, let's talk about mapping out your next step in your career. Now, first, let's talk about the pitfalls of not planning your career well. I've worked in a number of companies, both as a full-time employee and as a consultant. In that time, I've observed the careers of hundreds of developers. And a common theme that I observed was that developers would get complacent in their current roles. They were doing well at their jobs, and they were usually getting the annual bonus or raises for their performance. They'd put their head down and just focus on the task at hand. That's pretty common. So the pattern, though, is a slowly closing trap. I'd watch as these developers only focus on the skills relevant to their position. They would be very good in a narrow set of skills. And often those skills were related to older technology or that specific system. Over time, everything else would atrophy from lack of use. At some point, they've gonna realize or they do realize that they're stuck. They're very valuable to their current company, but they've lost a lot of value in the marketplace. Now, if the market if the workplace goes downhill or if they get laid off, they're in a really bad spot. I know of people who have been out of work for months or even years because of this very situation. It doesn't have to be that way. So let's identify what your next step should be in your career. I'm going to talk to four separate groups of people. And while you might be in only one specific group, the principles from the others can also be valuable to you as well. So the four groups are as follows. Number one, people who want to get a job in software development. Maybe you don't already have a career in software development. Maybe you're just starting out in your career, or you're working in a different career and want to switch to software development. That's group number one. Group number two are people who want to be better at software development. Maybe you're at your current job and things are going great. You don't want to change. You like your job, or at least enough, but you want to be better at what you do. You want to have more skill. You want to be better in your current role and kind of move up in the company as well. That's number two. Number three are people who want to get a better job in software development. Maybe you have a job and maybe even it's working out fine, but it's not your ideal job. Maybe it's needs to be a different, you know, different location or a different boss or different, you know, coworkers be better, or a better salary. Whatever the case may be, that's group number three. Group number four, people who want to be independent software developers. Maybe you're working at a job currently and you're like, I just want to be my own boss. And just know that's a hard road to go down. But maybe you want to do that. And there is a time and a place to do that. So, group number four, people who want to be independent software developers, either as a consultant or creating your own software and selling it. So, with those four groups, there's one thing that everybody has in common. And that's step number one. Step number one is to identify which group you're in. And if you aren't in any of those groups, you're at risk of stagnation. Maybe you're saying, I'm just, you know, doing the work, then you're at risk of stagnation. You should be working at getting better at what you do, group number two. Um, maybe you're saying, hey, I love this company, I'm gonna stay here forever. But does the company have the ability to keep you forever? And will they? You should be thinking about getting better and getting prepared for not always having this role. So I step number one for everybody is to identify which group you're in. Software development is constantly changing. If you aren't growing and changing with purpose as well, you're in danger of being left behind. So now that you've identified which group you're in, here's a plan for each group. So it will be this will be quick, but think about your group and focus in on that, but also keep an ear out for the other groups as well and what they're going to be doing. So, group number one, you want to get a job. Well, focus on four things in balance, meaning you don't want to focus on one more than all the rest. You want to have these four things in balance. Skills. This would be things like learning C sharp or learning about dependency injection or learning about app settings or learning about how ASPNet Core works or Blazor works or all these things. These are all skills. And yes, adding to your skills is important. And get a careful, okay? Be getting careful. We'll talk about that in a minute. But you want to add to your skills and make sure you have good skills. But then with that comes getting experience. That's number two in this group. So skills, learning about C sharp or learning about a part of C sharp. We're gonna focus on C sharp here. But number two is experience. You're saying, Tim, I can't get experience until I get a job. That's not true. Okay. Now, yes, work experience, you may need to get a job for or something similar to a job. But experience in general, no, you can absolutely can and should get that on your own. And that is building things. Not big things, tiny things. Okay. Build things. If you go on to YouTube and look for the um C sharp fundamentals, I did a video on that, and I have a whole course on that. We build in the course uh four different apps, and each app is about 60 to 70 lines of code. That's it. But in those, we practice like 10 different things. That gives you experience in those things, actually putting them into real working applications. They don't have to be huge, but do that over and over and over again. For every skill you add, you should be adding multiple experiences in that skill. Okay. That's why I say two to five practice projects for everything you learn. So skills, experience. Number three, resume. So create your resume. You might say, Tim, I haven't had a job yet. That's okay. You need to start working on your resume and look at your resume and say, okay, here's all the stuff I have to fill out. Well, jobs, let's leave that to aside for a minute. What are my what's a skill category? What can I add as skills? And don't just say, oh, I've seen C sharp. Let's add C sharp. Nope. You want to put skills that you are good at. And how do you do that? Experience. So build up your resume. Work on the gaps. Figure out where are the gaps. Work experience is going to be a big one. Like that whole category of where have you worked? That's a big one, but it's not the only part of your resume. Work on the other parts that you can work on right now. And then number four is portfolio. Build things, which again experience, but build things that do something of value that's small and put that into your portfolio. Have something to show employers to say, this is what I can do. Employers cannot guess at what you can do. That's a bad thing. Because if they're guessing at what you can do, well then they're gonna guess you can't do it. Okay, that's the default. So you want to show off what you can do. And this applies to all developers, not just new developers, but it's really important for new developers. Have things in your portfolio that aren't just goofy things, but that apply to real-world applications or real ideas or real things that work. Okay. Show off what you can do. All right. And when I when you say, well, what portfolio pieces can I build? I've got courses and I've got training on how to build a good portfolio. But a key tip is when you're thinking, what can I build? Build something as close as possible to what employers might be asking you to do at the job. Now, you do not want to build a massive CMS or a massive system to do this or that. But what might be relevant to an employer? For example, if you want to work at pretty much any business that's going to build a line of business type application, which is pretty common. That's one of the vast majority of employers. Well, then maybe build out an application that takes CSV files and puts them into SQL, transforms them, creates a little grid that can like modify and change things around and imports them into SQL. Or takes SQL and brings it out to a CSV file. That's a simple little application, and yet it shows off a few key things you can do with your skills. And then build on that. Maybe make it a web application, maybe have it transform into different types of files, not just CSV. Maybe it transforms into JSON files. Or like the list goes on of things you can do and create little applications to do just to show off what you can do. So those are the four things: skills, experience, resume, and portfolio. Work on those things in balance. Now, skills, let's talk about that just briefly. I want you to focus on your core language. Don't skip around. If you're learning C sharp, stay there. Go deeper and deeper into the language. Rookies know syntax. Hirable developers have experience actually building things with that syntax. So rookies will say, I'm gonna learn React now. Now that I've I've built a hello world in C sharp, now I've done a few things on C sharp, I'm going to React now. Now it's time to learn Angular 2, because that's that's probably important too. Now I want to, now I want to, now I want to. And what you've learned is syntax. Syntax is not the important part. Learn how to apply. That means staying in your language and building more practice projects. Be a hireable developer by having experience actually building things. Okay, so that's our first group. Group number two is you want to get better at software development. Well, step number one is build things. Okay. So what you want to do is push your skills. Keep the app small, but again, look at that C sharp fundamentals playlist on YouTube. There's a whole section of courses on imtimcorey.com as well to focus on skill checks. Use those either just to watch them and to follow along, but also as guides for how to do this type of thing, how to validate your skill and give yourself more experience. So you want to spend time validating your skills. All right. And then number two is after you have worked first to validate your skills and to kind of deepen your skills with more practice. Then number two is to pick up one additional relevant skill. Okay, there are skills that go together really well, and there are skills that just don't. So here's some ideas for C sharp developers. Let's say you're a C sharp developer and you want to add one additional relevant skill. SQL. Add SQL. If you are a C sharp developer who does not know SQL well, add that. Learn how to be a SQL developer. That is going to add a lot of value. So learn SQL. Git and GitHub. So this is kind of an order as in learn SQL first. But Git and GitHub. You're going to work with Git as a software developer. Almost every software developer will. Even if you don't work with it at your job, which you probably should or will, but even if you don't do it there, you're going to have to work with GitHub with open source projects and with bringing in other source code and so on. Learn Git and GitHub. Not just the I can commit things and I can push and pull. I can create a GitHub repo and just use it on my own. Learn how to work with Git in a more extensive manner. Learn how to fix problems in Git. Learn how to use the various commands beyond just the basics. And then for GitHub, the same thing. Learn how to use it well with others. That's how it's designed to be used. And then learn like GitHub Actions. Learn how to do automations in GitHub Actions. It's important. Okay. And then another idea is learn containers. Usually we refer to them as Docker containers, but Docker is just one type of UI for containers. There's other types you can use, but learn containers. Containerization of applications is hugely important in today's modern environment because we just upgraded the.NET 9, or we just had.NET 9 come out. Hopefully you're upgrading a.NET 9. But either way, there's going to come a time we're going to work on an application that can't upgrade. Maybe it's a.NET framework application. Maybe it's a.NET 5 application that, for whatever reason, you feel you can't upgrade the.NET 9 or 8. And so you say, oh, well, then we can't use the cloud because the cloud forces us to use the latest versions of.NET. That's not true. You can use containers. You can put.NET in the container and use it in the cloud, even if the cloud doesn't support that version of.NET. Okay? So you can do that with your older applications. You can containerize them and then use them in your modern environment. Knowing how to do that can help you save your employer time and money. It can help allow you to move your organization forward. It can make you into the hero by knowing how to do this. That's a relevant skill. Another is learning Azure. Not the whole thing. Azure has hundreds of services. It's overwhelming to try and learn everything. Learn the most important things for your job. Again, web apps, web apps with containers, static web apps, SQL. Again, SQL thing. Then learn Azure functions or, you know, the list goes on, but you learn them in an order that is valuable to your skills and what you will be doing. Okay? So you don't learn everything. You learn the most relevant and important things for your particular type of job. All right. So those are some additional skills to add. All right. So that's how to you know get better at software development. That's the next steps. How about if you want to get a better job in software development? Well, number one, build a portfolio of items to show off your skills. That means you're also going to be practicing. And again, don't just use a portfolio item from five years ago. If your code from five years ago looks great to you, then you haven't been improving well as a software developer because you're actually looking at your code and going, ooh, I could do all these things better. Well guess what? You want to show off all the better things you can do. So create relevant new portfolio pieces often. But build up your portfolio and then kind of like the previous person, pick up one additional relevant skill that's number two. So again, SQL, Git or GitHub, containers, Azure, having these additional skills, especially when you're applying to a job that's let's say it's a C sharp web job. Okay. They want, you know, ASP.core, they want maybe maybe Blazor, but maybe it's ASP.core and API and C sharp and secondary skills might be SQL, right? So that's that's the job application. Well if you come in with your again strong C sharp skills and showing that off in your portfolio and show off that you also can do SQL. Well that's already ticking off some extra boxes, but then show off you can do Azure and have worked with Azure SQL databases. That kind of connects to their SQL and says, hey, you can go further and maybe show off some of your containerized skills or your Git and GitHub skills because even if they didn't list it, those are valuable. And all of a sudden they're like, oh, that's something like I love to have that. I would love to have a person can do that. All of a sudden you're making yourself more valuable even just on the relevant primary skills. Because often companies will have multiple people that kind of match up on the primary skills or maybe even some of the secondary skills. But having some additional things secondary skills and even some things that are relevant to that same type of work but might not be on the listing will be important. So those are the two things you can do if you are looking to get a better job. Now what if you're looking to become an independent software developer? Well build something small but valuable now and sell it. Not don't quit your job first. Build something right now if you're employed right now build something right now before you quit your job and sell it. And I don't care if it doesn't sell. And you might say well then Tim why are we doing this? In software development what do I say over and over and over again? Practice practice practice. A lot of these previous jobs I talked about building sample applications, building practice applications, practicing what you do. So why is it that when you're going to build an application to sell, you're like the first one has to be perfect. That's not going to work. The first one's always going to have problems. You're going to learn a lot of things about how not to do things. Well guess what? If you create a small thing that is valuable but is tiny which makes it quick and then sell it then you're going to learn the whole process with something that it's okay if it doesn't sell because it was tiny it was quick and that's a learning opportunity. But you know what? If one person buys it let's say it's $5 one person buys it you made $5 on a practice project and that's awesome. Like when else do you get paid for practice? So who cares? I have built applications that are stupid in some ways meaning they're they're tiny they're they don't make a whole lot of sense but you know what I was trying something out. One of the examples I have is I was learning how to work with XAML back with um UWP and WinF or WPF when they first came out and I was trying to learn the Microsoft store okay Microsoft Store apps back in I believe Windows 8. So I was learning that learning Metro and that whole design system and patterns and all the rest. And so I built applications and I put a couple in the app store. So one of them I put in the app store I think my first one I put in the app store was this little application that what it would do is it would pull up from Imager and Flickr and a couple other locations it'd pull location specific images. So the idea was it would set your desktop background based upon what location you were in. So my thought was hey I'm I'm traveling for conferences and other things it'd be kind of cool when I open my laptop up if it would say oh you're now in San Francisco let's pull up some local pictures and find the most popular ones. They'll probably be like you know the the Golden Gate Bridge or you know that curvy street or whatever the case may be. Well that'd be kind of cool if I just did that. Well I built that application and I think I sold it for like $2 or something something small and like 10 people bought it. Was that going to you know make me rich? No. But allowed me to practice and I made some money and some people got some applications that you know they they wanted obviously so build something small and sell it. That way you have the whole Process mapped out. Now, if you're thinking, Tim, I'm not gonna sell applications, I'm going to just be an independent consultant, or I'm gonna come in and maybe be an independent software developer. I come in and write code or whatever. Okay. So then number two idea is to take on a pretend client. Okay. So go through the entire process, the identifying what the problem is, writing up the scope of work, creating a contract, figure out what that contract should be, how it should work, where to put the contract, have your friend or your parent or your spouse or whoever sign the contract so you have the whole process, and then go through the process of building up something small, but the code they would need, and then go through the process of turning that code in again to your friend, your parent, your spouse, whoever, go through the entire process, practice it. Okay, you don't want your first time being with a real customer. At least you know, if you can help it. Now, maybe you have one fall in your lap and you just do it and you figure it out and you say, hey, this is my first time doing this. Let's figure out how this works. Okay, that can work, but ideally, practice it first. Three, either way, whether you're building apps to sell or selling your time for money, which I would encourage you to do both if you're gonna do time for money. Also sell apps. But either way, number three, I want you to build up a library of reusable code. If you write code once for one client and then never use it again, you're kind of wasting your time. Now, you got paid for it, and that's great, but here's the problem. The next client comes along, you're still putting the same amount of time and effort to write different code. And you're just putting in time for money. And at some point, that's just not sustainable. So you want to build up a library of code of reusable patterns where you say, Oh, I've seen this before. Oh, I have my own data access library. I can just copy and paste this into the system and know that's gonna work. Or maybe I create a NuGet package. It's like, you know, Tim's NuGet package or Tim's NuGet package.sQL. And I can bring that in for the client and say, okay, we'll just use this. That way we can kind of update it as bugs are fixed or whatever. But either way, have that library of reusable code to speed up your processes. Still build them for the same amount of time. But what you're building for now is work that you did before, which you're rebuilding for over and over again, making more money for less time. Okay, so those are three three ideas. Again, two out of three should apply no matter which type of independent developer you're gonna be. Okay, so that's the four categories of I want to be a software developer professionally, or I am a software developer professionally, and here's where I want to move. Wherever you are in your career as a software developer, knowing what to do next and doing it is really important. You don't want to feel stuck or trapped. And you definitely don't want to be trying to get your get a job without relevant skills. Identifying your next step and starting now is really important. All right. So that's what to do right now. Wherever you are, in whatever situation you're in, that's how to take your next step. I would encourage you to do that. Thanks for listening, and as always, I am Tim Corey.
SPEAKER_00Thank you for joining us for this episode of Dev Questions. When you're ready to learn to think and code like a professional developer, head over to IamtimCorey.com and enroll in a course.