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
112 Do I Need To Learn Older Technologies Or Can I Start With .NET 6?
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
Do I need to learn older versions of .NET? Should I know about .NET Framework? How about .NET Core 3.1? When .NET 7 comes out, should I learn just that? What is the point of learning older technologies? These are the questions we are going to 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_02Do I need to learn older technologies or can I just start with.NET 6? When.NET 7 comes out, do I just throw away what I learned in.NET 6 and start over with.NET 7? Do I even need to bother with older technologies? What's the balance here? These are the questions we're going to tackle on today's episode of DevQuestions. Now, if you have a question you'd like to get answered, go to suggestions.imtimcorey.com and leave your question there. And hopefully you'll see it answered in a future episode of DevQuestions. So do we only learn the latest technologies? Should we only focus on those because that's all we want to work with? Or do we learn these old ancient technologies that might be 20 years old like.NET Framework? Well, I want to give you an analogy that hopefully will help you understand working with older technologies versus newer ones. Imagine for a minute that you own a house. Now maybe you don't, but you've probably lived in a house that someone else owned. And you probably didn't live in a brand new house every year, right? You probably lived in a house that was built a few years ago, if not a lot of years ago. In fact, I lived in a house once that was built in the 1850s. Yes, 18, not 19. So 1850s. Yeah, it was an old house. Why did I live in an old house? Why wouldn't I buy a brand new house and live in that? That's expensive. Have you ever tried to buy a brand new house? They're not cheap. And building a new house takes time too. So even if you have the money and you have the ambition, you have the desire to build a brand new house, it's not going to be done tomorrow. It's going to take you a year possibly or more to build a brand new house. So why don't we have brand new houses? Well, they're expensive. They're hard to do. In fact, the the average age in the United States for a house is 37 years old. I just Googled that recently. It's actually older in some states and in other states it's less, but the average age is 37 years old. Now, why is that? Because there's no reason to tear down the house and start over again. It's expensive. There's it's a waste. So instead, what we do is we buy a house that maybe isn't brand new, but even if it was, let's just pretend for a minute we built a brand new house next year. When the new appliances come out and they do new things, are you gonna replace all your appliances? When new light fixtures come out that are smarter and do more things, will you replace all of them? If you decide that, hey, you know what, there's a new type of carpet that came out. Do I replace all my carpet with a net new type of carpet? Probably not every year. And why not? Because it's very expensive. The idea of spending a lot more money isn't always something you can do, even if you want to do it. Now imagine your family is growing. Maybe you start off in a small house where you have two bedrooms and one bath, and you have, you know, you're you're married and you have one child. Now imagine you have two, three, four children now. That house is gonna start to feel kind of small. Which do you want to do? Do you want to put down new carpet or do you want to add another room or two onto the house? Which makes more sense. Well, it seems like adding another room or two because it gives you more functionality, gives you more space, and giving you more freedom to kind of expand and have people, less people per bedroom. That's a pretty common desire is to want to expand the house, or you go out and you buy a new house, but in our analogy, we're gonna build rather than buy. So you probably build on additional rooms rather than replacing the carpet, because the additional rooms adds new features. Now let's bring us back into the software development realm. When a company decides to build software to run their company, they are essentially building a house. They're building something from scratch that's very, very expensive. Imagine you're at a company that has just two developers. Now, let's say that they're newer developers that are quote unquote cheaper at $60,000 a year. Well, you add in the medical and you add in uh your retirements and all the other things that all the other benefits they provide, and now you're talking about $70,000 or $80,000 per year per employee. Let's just say $75,000 per year. So two employees is $150,000. And your company says, we want to start building an application to support our company. Well, with those two people, maybe it takes you six months to get something out the door, and then you're you're really working hard to get it kind of to version one, even, in the first year, year and a half. Let's say it takes you only a year to get that first application fully up and running. That application costs your company $150,000 to build. Now, if you were to come in as a new developer that next year and say, you know what? That was written on.NET 6 and now.NET 7's out. We need to totally redo this. Is the company gonna want to do that? They've already spent $150,000, and you're saying, hey, you know what? I want you to spend another $30,000 on upgrades. Now, between.NET 6 and.NET 7, probably not, but it's probably more like $5,000 or $10,000 in upgrades, but it's still something. And it's like getting new carpet when you need new rooms. The carpet doesn't benefit you in how you use the house. So for an employer, they're not looking at, well, that carpet's really getting run down. What they're looking at is we need more space. We need more features in our application. So they're focused on building more spaces, building a larger house, expanding out to support all the needs of the business. And so they want to invest there. But that means not investing in the carpet because you only have so much time and money. So now the company spends the next year or two adding a few more rooms to the house, adding more features to your application. Well, now the company has spent $300,000 on this application. And it's a couple years old as far as the technology it was started to build with. So at that point, do you upgrade? Well, no, because you still need more features. There's still a pressing need because a company isn't like a family that only expands once in a while. They're kind of like a foster family that brings in lots of people potentially very quickly. So all of a sudden, now you still have a pressing need to keep growing and keep expanding this application to fit the needs of the business. Keep growing that house. So they keep investing in that. And so I keep having you add new features and new features. And sure, there's some problems like the door gets stuck or the outlet gets you know crisped or burned up. And you have to fix those things, those are bug fixes. But really, unless it's broken, then the company isn't as worried about it or isn't as focused on it because they're focused on getting the most value, adding more value to this application. So they keep growing it. And over time, what happens is you have an application that's very, very, very large. It's like a very, very large house with tons of rooms and tons of fixtures and appliances and carpet and uh paint on the walls and ceiling tiles and everything else that could possibly go into this building. And it's all been built on an old structure. And yeah, it's a little weird to add onto a house over and over again. It starts to look a little odd and it could have been done more efficiently if you start it over. But let me ask you something. Are you ready financially and time-wise to destroy your house and to wait a year, two years, three years to rebuild it? Are you ready for that? No, almost no one is. Because that's expensive, that's very expensive. So the idea of a developer coming in and saying, hey, we're going to, I want to redo this whole thing. I want you to scrap the entire thing and start over. That's not happening. We've already invested $300,000, $400,000, $500,000. When you buy a phone app on your phone and it costs $10, do you want to delete that and start over again and pay another $10? No, you've already invested $10. Why would you pay another $10? So that's kind of the same thing, but at a much larger scale. If you bought a vehicle and it costs you $20,000, would you be happy the person that came in and said, you know what? That vehicle, that's three years old. Man, just get rid of it. Throw it in the junk. Don't get any money out of your car. Don't sell to somebody. Just throw it in the junkyard and buy a brand new one for $50,000. No, of course not. You want to get the most value out of that vehicle possible, whether it is continue to drive it or whether it is selling it and getting an investment back. For businesses, they can't really sell their application. So the only way to get the investment out of it is to use it more. So when it comes to applications with inside of companies, usually what has happened is this process of slow building over time. And so when you walk in as a new developer, you're not walking into this brand new application, most likely. Instead, you're walking into a house that's been built on for the past 10 years. And yes, that is problematic. And yes, there are new building codes and new ways of doing things. And in application terms, there's new versions of languages that need to be thought about. But the bigger the house is, the harder that is to do. And so you're going to walk into organizations that are building applications in.NET framework and maybe even older versions of the.NET framework. Or maybe they've modernized the.NET Core 3.1, but that's where they stopped. Or maybe they're on.NET 5 or.NET 6, but they're not ready to go to.NET 7 or.NET 8 when they come out. This is the nature of working with existing code bases. It's very, very, very expensive to rebuild that application. With just our two-developer example, we saw that in a couple years, that application costs $300,000. And the only way to get your money back out of that is to use it. So the idea of scrapping it and starting over is just a non-starter. And the idea of investing in changes that don't really grow the application seems like just throwing more money for nothing. Okay? Now, yes, there is reasons to upgrade your application. There are reasons to invest in the infrastructure that's supporting your application. But you have to understand it from the business perspective. The idea they're spending hundreds of thousands, if not millions of dollars on an application, you have to respect that and understand that. So when it comes to should I learn older technologies or not, the answer is yes. You definitely should. Because when you come into an organization, you're going to be faced with applications that aren't brand new, that are five, 10, 15 years old, and they will be on older technologies. Now, some of them will have been upgraded. And that's great. And there's an opportunity there, and we'll talk about that in a minute. But a lot of them won't because of how large they are. Imagine building this sprawling house over time with 50 rooms in it. Now imagine a person came to you and said, you know what? That wiring, it's not the greatest. We need to replace all the wiring in the house. Well, when you had a two-bedroom, one bathroom house, that's easier to do than a 50-room house. Because you gotta rip all that wiring out of the walls and redo it, and it's a much larger task, and it's a much more expensive task. The same thing is true for upgrading applications. When you're talking about upgrading a small application, that can be very, very inexpensive. When you're upgrading a very, very large application, that can be massively expensive, even if the upgrade goes smoothly. So you've got to be you've got to understand that when coming in. Now, what are the takeaways from here? Because I basically just said, yeah, learn old technologies. But there's more to it here than that. First of all, just know that most organizations will be working with older code. And that's why they've invested a lot in that older code and they just haven't had the opportunity or the desire to spend the money to upgrade that application. But number two, knowing how to work with older code, it's important because you can jump right into that older code. And when it comes time to build a new application, you can build it in the new stuff too. So knowing that breadth of code history is important. And it's not actually as hard as you think. But number three, there's an opportunity here for you. If you know the newest coding practices, and if you know the newest uh versions of a language and know what they offer and know how they improve life. For example,.NET Core is dramatically faster than.NET Framework. So just upgrading the.NET Core will make your existing application faster. But even more, upgrading through the versions will also speed up your application. That right there is a selling point for an organization where you can say, hey, you know what? We need to improve the infrastructure of our application. We need to upgrade the code from.NET Framework 4.8 to.NET 6 or.NET 7 when it comes out. And just saying that, that's not a big sell, but saying, and by doing so, we expect to see major improvements in our speed of the application. So that can be a selling point. So there's an opportunity here. Also, knowing how to go through that upgrade process is an opportunity because having the experience of having done it will help you lead the organization much easier. So I've actually done a couple of different real life application courses where we do that upgrade process. I built the Termit Tracker application a long time ago, and I built it in.NET Framework. And we have a WinForm application, a WPF application, and a ASP.NET MVC application we built. Well, I have a whole nother course on upgrading all those applications, including the class library, so all four different project types from.NET Framework to.NET Core. The Timco Retail Manager, we we started that with an API and a WPF application and class libraries. They were all.NET framework intentionally. Because then once we had a full working application, we upgraded to.NET Core 3.1 and then later to.NET 5 in order to get that experience, that hands-on experience of actually doing the job of upgrading. Because it's important to have a hands-on experience because there's an opportunity for you to really rise above in the ranks of developers if you know that. Number four, you have to understand the real world isn't perfect. Often when you are learning, you're learning in the perfect world. You're learning where things just work and where everything's clean and nice and neat. But that's not always the case. There's times when things are broken and messy. In fact, that's pretty much all the time in the real world. And you just have to accept that. And number five, knowing what your employer wants, knowing their actual desires and goals is really important. Because if you understand that your employer has invested a lot in this application, you can make better pitches to them about how to improve it and how to make sure that it maintains its ability to help the organization over the long term. All right. So, yes, it's important to learn about these older versions of the language. Yes, it's important to understand both the new and the old so that you can be an effective employee in today's marketplace. 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 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.