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
170 What Is A Full Stack Developer?
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
What is a full stack developer? What do full stack developers do? Do they have to know everything? How do I become a full stack 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/
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_02What is full stack development? Now, over the past two weeks, we talked about front-end development and back-end development, but we still have full stack development to talk about. So let's talk about that in today's episode of Dev Questions. Now, full stack, as you might imagine, is a mashup of front-end development and back-end development. Now, hopefully you've watched the previous or listened to the previous two episodes because we talked about what those two are and what the differences are, because then you know kind of the difficulty that full stack brings, because we need the breadth of knowledge of front-end development with the depth of knowledge for back end development in one person. So you're adding more breadth of skills, but you also have to have that depth to really be of value. And here's where kind of the difficulty comes in because when you're looking for a job, you might be able to say, yes, I have all these skills. I have worked with HTML and CSS and JavaScript and C sharp and Blazor and NPM and NuGet and Git, and you go down a list of all the things you've worked with, but what skill level do you have with those? That's a lot of different technologies to work with. Where is your skill level at? And when you start doing testing, they might do a test for you for your technical knowledge. Well, are they going to test you and find out that you know how to use the basics of JavaScript and the basics of C sharp? Well, then you're not really a skilled developer, right? And so that makes it harder because you've got a lot of skill, but it's it's kind of shallow. And so you don't present real well in a job interview or in the job itself. So that's a difficult thing with full stack development. Full stack development is not for the faint of heart. It's not for the person who doesn't want to work really hard at learning lots of stuff. Now, let's talk first about what it takes to be a full stack developer in different types of things. Remember back in front-end development, we talked about the fact that front-end development does not have to be web development. It usually is because it's hard to be just a front-end developer in other things like desktop or mobile. But usually we talk about web front-end because it's more clearly defined. But you can be a front-end developer in any of those things. Well, it's more likely, though, that you'll be a full stack developer in these other things like desktop and mobile. So let's talk about the ways to be a full stack developer, what you need to know and know how to work with for full stack. We'll talk about different types. So, first one is desktop developer. And we're going to focus here on C sharp because quite frankly, the number of languages, number of opportunities out there are pretty much endless for what you could do. So let's focus in on what this channel covers most, which is C sharp. So if you want to be a C sharp full stack developer, what do you need to know? Well, you know C sharp. That seemingly a no-brainer, but you need to know it and know it really well. Then you need to know at least one user interface type WinForms, WPF, .NET, Maui, one of those at least with some pretty good depth. Now you notice I didn't mention a few others in there. Um for example, UWP. Well, that's because it's deprecated. It's not being actively pursued. And there's others that you could learn. You know, I'm wearing a shirt right now from Uno. Uno can do desktop for C sharp development. You could use that. Uh, you could use Avalonia. There's other options, but you need to have at least one in your back pocket, probably a couple, and you should have at least one that comes right from Microsoft. And that's not because you know, Microsoft does things the best or is the only way to roll, but it's because this is what makes you the most marketable. When we talk about trying to get a job, it's more likely that you'll find a job building in WPF than it is, let's say, Avalonia. That does not mean you can't get a job in Avalonia. You definitely can. But you may find out that it's easier to get that job in WPF. And then because it's still XAML, it works with both Uno and Avalonia. So you could move to those platforms more easily if you have that skill. So, desktop development, know at least one of the front-end kind of frameworks or project types. You also need to know a database. At least one. Start with one and know it well, learn a couple more as other alternatives. And you also need to know source control. So, specifically Git. So, those are things you need to know in order to be a desktop developer for full stack. Now, when it comes to mobile developer, remember doing easiest to hardest. I think mobile development isn't as hard or is harder than desktop, but not as hard as web. So let's talk about mobile next. You'd need to know Swift and or Java, uh, Swift for iOS, Java for Android. You need to know API development, you need to know a back-end language like C sharp, database access or a database as well, and also source control with Git. Now, you can make life a little easier if you decide, hey, I'm going to use.NET Maui or Uno or Avalonia and not learn Swift and Java in order to have that cross-platform app. Instead, I'll use C sharp and XAML, and then I can use my API with C sharp and access my database with C sharp, and then have this one database type to learn and source control. Makes it a little easier, and you can kind of shortcut that process a bit. Now, as a web developer, you need to know HTML, CSS, and JavaScript. And you know, I show off quite a bit Blazor and all the really cool stuff Blazor is doing. I really like Blazor, I think it's a great option. But you gotta be careful not to get the wrong idea when it comes to Blazor. Blazor is not a full replacement for JavaScript. It is a 80%. It gets most of the need for a JavaScript framework out of the way, but you probably still need to use some JavaScript, which means you still need to know it. It still needs to be a tool in your toolbox. You might have to know Angular Reactor View, but you still need to know JavaScript itself. So knowing actual HTML, actual CSS, not just Bootstrap or something like that, not just drag and drop HTML, you need to learn actual HTML, actual CSS, and actual vanilla JavaScript. And then, yeah, you need to learn a framework probably. So Angular Reactor View, if you're gonna do a front-end JavaScript framework, or if you want to make life easier, if you're already a C sharp developer, then learning Blazor or MVC or Razor pages is probably a good option. You also need to know API development, you need to know C sharp or another back-end language, you need to know your database and database access and source control. There's a lot to learn, and you have to have that breadth of knowledge, but also a depth in pretty much all of it. So there's a lot to do in full stack development. My encouragement to you is that don't despair. Definitely you can do this stuff, but work up to it. Don't expect to take a tutorial on YouTube and just watch a couple hours and be like, I'm now a full stack developer. You can definitely start full stack development pretty quickly, but it takes time to actually have a depth as a full stack developer. All right, so to simplify things, you can do some things that kind of shrink this process. For example, in C sharp, maybe you're a full stack developer, but you're a WPF developer. Well, that means you could have just WPF in a class library. That means you don't have to have an API. That means you can use the same language to write your UI as you're writing for your data or your data access and your business logic. And you can use one database type and kind of shrinks that process. We've talked about using.NET Maui or Avalonia or Uno instead of learning both Swift and Java and having those extra systems in place. Remember, it's not just the language you have to add, it's all the tooling around the language. Does your editor work with all the different languages? Well, probably not, which means multiple different editors. Do you use the same package management with all the different languages? Well, no. Which means you have to have different package management and maintain all those packages independently. So shrinking down as much as possible into one language or a couple languages as opposed to six, seven, or eight is really helpful. And then if you're a C sharp developer, learning Blazor instead of a JavaScript framework can really simplify things. Again, you still need to know JavaScript, but you don't necessarily have to use NPM. You don't necessarily have to maintain those packages or that build system. You could just have one build system for all of your C sharp and use your C sharp language skills all the way up through the presentation layer, not just to the API layer. So it can make things easier and shrink down the amount of work, the amount of knowledge you have to have. Now, what are the upsides and downsides? We talked about the upsides and downsides of front-end development and back end development. What are the upsides and downsides of full stack development? Well, there's a lot more job opportunities. When you have the ability to say, I can talk to the database, I can even build the database, and I can show you the UI presentation of that data, that allows you to have a much wider ability to be marketable. There are jobs out there where you're a solo developer, which means you have to wear all the hats. You have to be able to store the data safely and securely and in a way that is easy to maintain, and also display that data and work with that data on the front end in the presentation layer in a way that's accessible and secure and all the rest. So being able to do that gives you more opportunities because there's more places, there's a lot of places that need one developer, two developers, and they're a tiny little shop that can't afford to have a specialized person for each different area. So it means you're more marketable. It also gives you more options when building projects because you have more skills and a more wider breadth of areas. So you can say, you know what, I think maybe I can do a desktop app for this, but this over here needs a mobile app. Or this one needs a WebAssembly app because we want to have that offline access, but it's still a web app. You get to have that ability to have these tools in the toolbox that not everybody has. And you get to control the entire process. So you can know what is best on the entire process and have a voice in that often. So if you don't know how things work, then you don't have an ability to have a voice in the process. So knowing the entire system will really be helpful. Now, what are the downsides? Well, there's lots to learn. There's a ton to learn. And your learning will never stop. Not that it ever does with front end or back end, but it's just even more to learn. You can very easily also become shallow and not valued. Because if you keep learning little bits about more and more things, that can feel great. And it feels like, oh, I've added this other thing. I now know both React and Angular. Great. Can you actually build an enterprise app in either of them? Well, I've never really built anything in production, so probably. You're too shallow. You need to go a little deeper in those things and actually get some experience in those things. And it's very easy to kind of bop at the surface. And then you're not going to be valued by employers because they can spot that and they can go, well, you don't have enough depth for me. I need more depth in these areas. It's also hard to demonstrate your skills. As an employer myself, if I have a resume come across my desk where there's 15 or 20 different technologies on it, the very first thing that goes through my mind is they don't know any of them. Because you really have a very, very hard time being in depth on more than a few, let alone 20. And if you're saying these are all equal, that's hard for me to evaluate and not say, yeah, no, you just don't know any of them. And so I become skeptical about what your real skills are. And you may have those skills. So how do you stand out among people who are saying that, but don't really have the depth that you do, even though you both put the same number of years of experience and all the rest on your resumes? Well, you have to demonstrate in some way. And that's where a portfolio can help. That's where showing off what you can do can be really helpful. Um, not just saying I can do something, but here's the proof, um, that can be really helpful. Um, but it's it's still very hard to kind of prove what you can do in all these different areas and maintain them well enough. It's kind of like spin plates, you know, where you're you're spin one, but then the other one starts to wobble and you have to spin that one again. And then you know, it's three or four or five or six. And the more plates you add, the harder it is to keep them all spinning. So it gets very, very difficult to kind of show off what you can do and maintain what you can do. So full stack development is hard, but definitely doable. But it's something where you need to be conscious of the downsides, be conscious of the things you have to think through so you set yourself up on the best path possible. Sometimes that means kind of shortcutting the process. I'm a full stack developer in this narrow stack because you can be much more in-depth in a narrow stack than you can a wide stack. Or maybe it's just that you're really good at memorizing stuff and really good at learning stuff and sure. Or you just had a lot of free time to spend to really work hard to create examples and create practice in all these different areas. So full stack development is definitely something you can do. I'm a full stack developer, but it's not been something I've been good at my entire career. I started off trying to figure it out and being that narrow full stack, and I've kind of expanded over time. Be patient with it. It takes time and it takes that, those years of experience to kind of accumulate to help you kind of fill in gaps and work across the full stack. But even so, as a full stack developer, I don't know everything about everything. There are areas where I'm like, I'm not touching that yet. I don't have enough skills and abilities in that area. So just because you say full stack does not mean everything. So there's a lot to think about there. I want you to think through is this the right path for me? But sometimes you really need to see it and kind of practice it to learn what are the basics, how do I get started? Where do I go? And that's where on Monday we're gonna cover how to become a C sharp full stack developer. We're gonna go over the bits and pieces of that. And then I'll give you a challenge on Tuesday where you can practice all those skills and then see on Friday how I would kind of answer that question or build that that project out. You've probably already done this a couple times with the front end and back end, hopefully. If not, go and check those out as well. But until then, enjoy thinking through what you really want to be as a developer. Think it through and take your time and you know kind of explore the different options. All right, thanks for listening. And as always, I am Tim Corey.
SPEAKER_01Thank you for joining us for this episode of Def 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.