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
153 Top 5 Mistakes Developers Make
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
What should a software developer not do? Are there things that they should avoid? What pitfalls should I avoid? We will answer these questions in today's Dev Questions episode.
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 should a software developer not do? There's lots of advice out there on what you should do as a software developer. In fact, this podcast series is all about what things should I do and how should I do them well? And what you know were the answers to my questions. But this one especially is really important because yes, you should do a lot of things, but there's some things you should avoid doing. And so I've chosen my top five. Top five things that I think that every software developer needs to not do. And these things are, if you avoid them, will really save you a lot. And if you don't avoid them, if you fall into these traps, then it's gonna cost you a lot of time, money, and effort. In fact, the last one we talk about can really kill your career. So let's talk about the five things that you should not do as a software developer. And these are pretty common. So, number one, think that programming is about syntax. This is especially true of newer developers who are just coming in. They're learning about programming. And they'd say, okay, I've learned about the if statement, the for loop, and the while loop, and I learned about different variables and generics and object-oriented programming and inheritance and encapsulation, and I got all these things, and I've learned how to do these in, let's say, C sharp. And so they focus in on, I know how to do all this stuff. That's not what programming is about. That's not what software development is about. You absolutely need to know the syntax. You absolutely will benefit from knowing more syntax. But that's not the job of a software developer. A software developer's job is not to just know syntax, it's about putting together that syntax into logic, taking logic and saying, hey, this syntax will help me enact this logic. And here's how I build this application using the syntax that I have. Because quite frankly, you don't have to know a lot of syntax in order to build a highly functional application that does what it needs to do. What you need is the experience and logic abilities to build the application. That comes from practicing, from building applications. It doesn't come from knowing more stuff. This is why changing languages too soon is a real problem for new developers. Because you say, hey, I've learned most of the syntax of C sharp. Now I'm going to skip over to React. I'm going to learn about the JavaScript syntax and specifically the React syntax. No, you need to build stuff because that's where you get your skills from. That's where you become a better developer. So the first thing that you should not do as a software developer is think that programming is just about the syntax. Now, number two, you should not just follow tutorials. And as a person who creates tutorials, what I'm not saying is don't watch tutorials. I'm not saying that. Definitely use them. They're important, they're valuable. I wouldn't create them otherwise. However, just following along with tutorials isn't going to accomplish what you need to accomplish in order to become a great software developer. Think of it this way: when you learn to walk, or when your child learned to walk, the first thing you do is you help them, you hold their hands. When I my boys were younger, I would sometimes hold both of their hands. And then I'd help them and help lift them up so they could start to learn the process of moving their feet and walking. And they got there eventually. Started to figure out how to move their feet to move forward. But at some point, I let go. And at some point, they started to walk on their own. And it was not an instant success. In fact, they fell down a lot. That's what kids do is they start to walk and they fall down. They start to pick themselves back up and they try it again, they fall down again. And that's okay because you know what? That process teaches them. And that process helps them learn okay, this is what caused me to fall down. Now they're not thinking analytically about it. They're just learning reactionary. How do I do this thing? And eventually I figure it out. But you know what? The same thing is true with learning software development. Using a tutorial is kind of like having somebody hold your hands as you start your first steps into that thing. And to be clear, this is not just for new developers. I use tutorials almost every day. And so, yes, as a senior software developer with over two decades of experience in the field building professional applications for huge companies and small ones, I have built thousands of applications. I still hold somebody's hand and learn to take new steps in new areas and new things and new ways of doing things. But at some point, you let go. And at some point I let go and say, hey, I'm going to try and build this down my own. And it doesn't work right the first time. Almost always I'll have mistakes or have issues and errors and problems come up because I'm trying to figure out how do I do this myself? How do I walk in this? And when I do that, instead of panicking, freaking out, and emailing the person who created the tutorial and say, hey, this doesn't work. Why doesn't it work? I try and figure it out. I try to figure out why I fall. And through that process, I learn new things. Sometimes things that weren't even covered in the original tutorial. And then from there, I practice it some more. And so it becomes natural. And soon walking becomes jogging and jogging becomes running. And I become an expert in that area, not because I just held someone's hand and said, oh, I want to go over there now. I want to go over there now. I want to go over there now. No, I learned how to walk so I could do that myself. So when it comes to learning to become a software developer, the number two thing that I say, hey, don't do this. And that is don't just follow tutorials. Absolutely use them. But make sure at some point you practice on your own, you figure out how to walk on your own and move beyond just what a tutorial covered. Number three thing to avoid as a software developer is avoid focusing on only one way of doing something. I hear this a lot. People ask me the question, and you know what? It's absolutely a legitimate question to ask. They'll ask, what's the best way of doing this? What's the best web application in.NET? What's the best desktop type? What's the best database to put my stuff in? And the answer is always going to be, it depends. And the reason why is because when you focus in and say, hey, this is the best, you're wrong. Not necessarily in that particular circumstance, but overall. So if you say that SQL Server is the best database to choose from, you're wrong. It's a great choice for a lot of situations. And I use it personally quite a bit. But I also use NoSQL databases. I also use SQLite. I also use just text files or APIs or the list goes on. The situation needs to dictate what the most important or best thing to do is. And that situation isn't just, okay, I'll explain it more. It's a it's a mobile application that has no, no, no. The situation is also what's your team makeup? What are your skills? What are your team skills? What are you comfortable with? What do you already have in place? What are the things that your company already uses? What do you have access to? What are the costs associated for you specifically? Where are you going to host this? The list goes on of the questions that you need to answer to figure out what is best for a specific situation. And once you figure out, okay, for us, that will be SQL Server. That's great. Great. But then don't get locked in and say, okay, for our next application, also SQL Server. You know what? The answer probably is SQL Server. But don't get so focused in that that you don't take a step back and look and say, hey, let's evaluate this at least a little bit. Because when you focus on one way of doing things, you are leaving out a lot. Software development is not about prescriptive ways of doing everything. It's not just this cookie cutter, we have, you know, this puzzle piece always fits this situation, therefore always use this puzzle piece. That's not how software development works. We have different ways of accomplishing the same thing because different ways will fit better in different circumstances. This is why when.NET comes out with new features to C sharp, where there's new language features or new ways of doing things. And people say, oh, that's that's stupid. It's just one more thing, it's just polluting the language. It's not. What it's doing is giving you options. And options are good because in certain circumstances, that option will be better than this option. For example, records and classes. Well, records are just an improved version or a stuff added on top of classes. I use classes a lot, but there are times when records are the right choice. And be able to say, give me a record, is great. So don't just focus on we only ever do things one way. Make sure that you have at least look at the other options. Okay. Number four of things that software developers really should not do, number four is be closed off to change. Change is going to happen. I hear people a lot with.NET, especially.NET changes every year. So right now we are at.NET 7. But in November of 2023, we'll have.NET 8. And in November of 2024, we'll have.NET 9. And then November 2025, we'll have.NET 10. And people look at that and go, oh man, there's things are changing too fast. Well, actually, you can go every other year if you wanted to. But even then, people say, why would they have a stop? Well, do you really want that? Because as soon as Microsoft were a stop, you'd say, oh, it's left them behind. The world has changed now. Because again, remember, 10 years ago, the world's a vastly different place. And so change is going to happen. Whether your language changes or not, change will happen. And so everything is going to change. How browsers work. It used to be that the place you accessed the internet from was a desktop. And so widescreen layouts were the thing. But now more people access the internet from a mobile device than they do from a desktop. Change happened. That was not something that was dictated by the industry. It was dictated by how people were able to access it and what they liked and how it worked. And yes, different things are going to happen that drive change certain ways, but you have to be able to embrace that change. The language, the way you like it, is going to change. The systems and the way they work are going to change. The best practices for what to do, it's going to change. The companies that are the good guys, and let's put that in big old quotes because, you know, but the good guy companies, they're going to change. In fact, right now, I would argue that Microsoft is probably the biggest good guy in the space. This was absolutely not the case a decade ago or 15 years ago. At one point, Microsoft said, hey, if you want to develop, you're going to develop on Windows. And it's going to be using Internet Explorer. And that's the way it's going to be. We're going to crush all the competition. It's going to be us or nothing. And they really tried hard to say, you know what, we're going to dictate what happens. And at some point, that stopped working. And that's a good thing because that was not the right approach. But in the last 10 years, things have radically changed. Now Microsoft is a leader in open source. They're the number one contributor to multiple open source projects that don't even have to do with Microsoft. Okay? They pay people to work on open source projects that aren't theirs or under their control. They also open source all of.NET. They have a very developer-friendly policy over things like Visual Studio is free for developers, SQL Server is free for developers. They have tons of things. Azure has a ton of free stuff and more for developers. There's a lot of stuff that they do that encourages collaboration with people outside of Microsoft. They decide, hey, you know what, we're going to follow the industry and go with Git because that's what the industry went, instead of using our own system. And they said, you know, GRPC, that's not a Microsoft thing, it's actually came from Google. But the industry said this is the tool. And so Microsoft said, sure, we'll support that and we'll try and do it the best. That's a great move by a big company. On the other hand, there are other companies that used to be the good guys that are now saying, hey, our way or the highway. We're going to lock down our ecosystem. For example, for Mac, you have to have a Mac in order to deploy to the iOS store. Well, why? Because you have to. That's not a great encouraging move. That's not encouraging the industry to move towards Apple products. That's saying we're a walled garden and you need to either get inside the garden or don't come near us. That's what Microsoft did a decade ago. You see how the tables kind of flip? That happens. You need to be able to adapt to change and be open to the idea that things are different now than they were five years ago or 10 years ago. My code needs to update with it. So the last thing, the most important thing, a software developer should not do. And I have seen this go wrong a lot. In fact, I have been paid lots of money to help people recover from this. And that is you should not stop learning. This is a career killer. Now, it does not mean you'll be out of a job. However, I have seen dozens of developers and quite a few companies that have worked themselves into a corner where they're like, I don't know what to do. And some of them have even, companies have gone out of business and developers have lost their jobs and lost a lot of their income because of this. Because what happened was at some point they said, you know what? I don't have time. I need to put more features in. I need to build more things for this application. I don't have time to learn new things. Or their boss dictated that and said, you know what? No, you don't have time to learn. Just build stuff. And they said, well, then I guess I can't learn. I'm not going to use my time outside of work because that's not right, right? You need to keep learning, even if that means a personal investment outside of work. And that may feel hard and it may feel like you don't want to do that. But you know what? You have a couple of options here. Either find a job that'll let you learn in the job, which is awesome, that'd be great. Or you're going to stagnate in your career. And if you stagnate in your career, you will still have a job. In fact, there are still people being hired today to be.NET Framework developers.NET Framework is in maintenance mode. It's paused. Now, it's still a platform you can build down, but it's paused. That's not the way of the future. And so if you just always focus there, well, you know what? The world is passing you by. We're already on.NET 7 and we're moving well beyond what's in the.NET framework. But you know what? You can stay there for a while, but at some point you have to keep your skills up to date so that let's just say that an economic downturn comes and your company lets you go. This has happened quite a bit in the industry. Well, if the company lets you go, what job can you get? Well, to be fair, you still have years of development experience. Absolutely. However, if you don't have relevant experience in the modern pieces of the language, then you're at a disadvantage compared to others. And so you might not get a job working in.NET 7 or in.NET 6. Instead, what you get a job in is maybe.NET framework. And at some point, those jobs are going to reduce in number until it's harder and harder to find a job. Now, don't despair. At some point, that goes back up because at some point people drop out from doing.NET framework, and then there's still a need for, and so that market kind of picks back up. It's not going to go away forever. You can be a cobalt developer today. Okay. If you know cobalt, you can get a job today as a cobalt developer. However, you're kind of stuck there. Okay. If you're a cobalt developer, you're not getting hired for.NET 8 or.NET 7. You're going to be hired for COBOL. And so you're not going to get the new stuff. You're not going to be able to progress and change with the industry. You're kind of stuck in that niche. And you're stuck with a few options for jobs rather than having a wider range of jobs. I've come into companies, multiple companies, where they did this as a company. They stopped learning. They stopped growing as a company. And so they paused at a certain technology. And they kind of picked their head up one day and went, uh-oh. We're kind of up a creek where we can't hire new developers and train them up because no one wants to work with this old technology. And it's expensive to hire the people who do have a skill because they are in a little bit of a demand. If we can find them even, because no one wants to do this. And it's starting to become harder and harder to get our applications to work because they're not modern. And so they don't work with modern things. And so they've hired me to come in and change over their entire system and do a bit of a rewrite. And rewrites are expensive. And sometimes companies have not succeeded in that. And if they don't succeed, sometimes they even fail. I'm watching a company right now where I'm pretty sure that's what's coming. So it happens a lot. Now you can move forward, you can pick your head up, you can start to learn again, but it's going to be hard. It's going to be hard. So the key is if you can, don't stop learning. Because learning little bits over time is going to help you stay on track. If you try to learn all this stuff at once, it's going to be really hard to get back up to speed. Okay. It's important for your career, even if you have to do it outside of work. Okay, so those are the five things that software developers should not do if you want to make sure that you have a long, healthy, and successful career as a software developer. Thanks for listening. And as always, I am Tim Corey.
SPEAKER_00Thank 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 IamTimcorey.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 imtimcore.com and enroll in a course.