Latest / DevQuestions with Tim Corey / 088 How Do I Choose The Right Technology Stack For My App?
Transcript
- 0:00SPEAKER_00: Welcome to the Dev Questions Podcast with Tim Corey.
- 0:03SPEAKER_00: Join us each episode as we tackle the questions you are asking about a career in software development, understanding the industry, and new technology.
- 0:12SPEAKER_00: If you're just starting out or you want to grow stronger as a developer, this is the place to get your questions answered.
- 0:19SPEAKER_00: Now, here's your host, expert developer and online educator, Tim Corey.
- 0:24SPEAKER_01: How do I choose the right technology stack for my application?
- 0:29SPEAKER_01: The idea that you have to make a choice or a set of choices about your application is really important, but it's also something gets a lot of people stuck.
- 0:39SPEAKER_01: What's the best choice for my app?
- 0:41SPEAKER_01: And they might even ask a question on the web, and you're gonna get a lot of different answers.
- 0:46SPEAKER_01: So let's talk about this in today's episode of Dev Questions.
- 0:51SPEAKER_01: Now, when it comes to building an application, you need to choose the right language, the right database, the right user interface, the right structure, the right hosting platform.
- 1:04SPEAKER_01: There's a lot of choices when it comes to building an application.
- 1:09SPEAKER_01: And the word right there is a tricky one because I tell you what, what is right for you is not right for the next person.
- 1:19SPEAKER_01: So when you ask somebody else, you're gonna get an answer that might not be the right one, might not be the correct one for you.
- 1:28SPEAKER_01: So let's talk about how do you identify what's right, what's the right language, what's the right database, what's the right UI, and so on.
- 1:37SPEAKER_01: Now, before we start here, I do want to point out that I am not gonna point you into one specific direction.
- 1:46SPEAKER_01: I teach C sharp, I teach SQL, I teach MongoDB, I teach Azure.
- 1:52SPEAKER_01: I'm not gonna say you must do C sharp, you must use MongoDB, or you must use Azure.
- 1:58SPEAKER_01: I'm not gonna say those things because what's right for you may be different.
- 2:03SPEAKER_01: But if you decide that there's only one right solution, then you're probably wrong.
- 2:09SPEAKER_01: You're probably actually hurting yourself and the people around you.
- 2:13SPEAKER_01: So let's make sure we start with an open mind on this.
- 2:17SPEAKER_01: Now, number one, you need to identify the major needs of your application.
- 2:23SPEAKER_01: Your application is going to need to do certain things, and that may limit what choices you make.
- 2:31SPEAKER_01: For instance, you may have to distribute your application to hundreds of thousands of people that aren't associated directly with your organization.
- 2:42SPEAKER_01: So, how would you do that?
- 2:43SPEAKER_01: Well, you're probably gonna use the web, so it's probably a website or web application that's different than if you are going to install this on computers so you have access to the full resources of that computer.
- 2:58SPEAKER_01: That's a different option.
- 3:00SPEAKER_01: And so it comes out with different needs for your application.
- 3:04SPEAKER_01: If you need to have access to a barcode reader that's plugged in serially to your computer, then you probably need a desktop application.
- 3:14SPEAKER_01: But if you need to distribute that, you know, tens of thousands of people, you probably need a web application.
- 3:20SPEAKER_01: So knowing that and knowing those big pieces will be important.
- 3:25SPEAKER_01: If you have certain needs when it comes to your database or certain needs when it comes to what your application does, for instance, uh machine learning.
- 3:35SPEAKER_01: If you need to have machine learning, not every language can do that.
- 3:39SPEAKER_01: You may have to choose between Python or C sharp or a couple others, but you can't as choose any language you want for machine learning.
- 3:47SPEAKER_01: So knowing the major needs of your application will help you start to narrow down the potential options you can choose from.
- 3:58SPEAKER_01: Now, number two, this is a tricky one, but identify the potential expansion areas for your application.
- 4:05SPEAKER_01: Maybe you're building a desktop application now, you know that.
- 4:09SPEAKER_01: But there's a potential that your boss is gonna come to you at some point and say, hey, you know what?
- 4:16SPEAKER_01: We now decide we want to have it on all mobile devices as well.
- 4:20SPEAKER_01: Well, that's gonna make some changes to your application.
- 4:25SPEAKER_01: And if you plan for that ahead of time, you can make it easier to make those changes later.
- 4:31SPEAKER_01: But don't get so caught up in the might be that you over-engineer the application for today.
- 4:38SPEAKER_01: Because if it never happens, you've wasted all that engineering time that you could have gotten the application out faster.
- 4:45SPEAKER_01: So there's a balance there, but identifying the potential expansion areas will help you make some decisions.
- 4:51SPEAKER_01: So, for instance, if you had that desktop application, but you have a pretty good idea that a mobile app is going to be to be desired in the future, well, then maybe you create an API that your desktop app talks to instead of having your desktop app talk directly to the database.
- 5:09SPEAKER_01: That way, later you can create a mobile UI and have it talk to the API as well.
- 5:17SPEAKER_01: Excuse me.
- 5:18SPEAKER_01: So that's number two, identify the potential expansion areas of your application.
- 5:24SPEAKER_01: Now, number three is inventory the strengths of your team.
- 5:30SPEAKER_01: This is critical.
- 5:33SPEAKER_01: Knowing what your team is good at and what they're not good at is important.
- 5:39SPEAKER_01: If you say, hey, my team is really good at C sharp and they're good at SQL Server and they're good at Azure, well, maybe it's not the best idea to choose the Google Cloud with uh Python and talking to you know uh RavenDB.
- 6:03SPEAKER_01: Those are great choices based upon your team skills, and so if you have the option, then focus on your team's strengths.
- 6:15SPEAKER_01: So if you have a C Sharp SQL Azure team, then lean towards those strengths instead of just choosing the best solution.
- 6:27SPEAKER_01: Because even if Python is best in a particular situation, how much better is it than the C sharp that your team knows?
- 6:36SPEAKER_01: Because you're losing a lot of your team's strengths in order to choose a better language, and if the trade-off isn't big enough, then it's not worth it.
- 6:47SPEAKER_01: So inventory your team's strengths.
- 6:50SPEAKER_01: Number four, inventory the previous technology investments at your company.
- 6:57SPEAKER_01: So you probably aren't starting from the ground up.
- 7:01SPEAKER_01: Unless you're a startup, you probably have previous applications, you have previous tools, you have previous uh libraries, you have servers that are in place, or systems that are in place, maybe an Azure account, or you already have a SQL Server somewhere or something like that.
- 7:18SPEAKER_01: You have previous resources that you can take advantage of.
- 7:22SPEAKER_01: And those resources will make the startup process make your app faster, make it um quicker to get to the final stage.
- 7:33SPEAKER_01: It'll make it easier to continue to deploy because it deploys just like the previous applications.
- 7:39SPEAKER_01: You can reuse some of the same tooling.
- 7:41SPEAKER_01: There's a lot of benefits from reuse of a previous investment.
- 7:47SPEAKER_01: So think through that and don't discount what you've previously had.
- 7:52SPEAKER_01: Instead, use that as an asset towards making a decision on what pieces of the stack to choose.
- 8:00SPEAKER_01: Number five, create a short list now of the options that you have.
- 8:06SPEAKER_01: So let's just say you're looking at cloud providers right now.
- 8:10SPEAKER_01: And you say, you know, we've there's a whole bunch of cloud providers out there.
- 8:14SPEAKER_01: All right, we'll make a short list of the ones that are most likely to be the right choice for you.
- 8:20SPEAKER_01: And you say, well, it could be AWS, it could be Google Cloud, it could be Azure.
- 8:24SPEAKER_01: That's our short list of cloud providers.
- 8:27SPEAKER_01: Well, now go back and look at the previous list there and say, does any of them um fill a major need of my application better than the others?
- 8:39SPEAKER_01: Is does any of them uh not allow me to potentially expand my application later?
- 8:45SPEAKER_01: Do any of them not have um not fall into the strengths of my team?
- 8:51SPEAKER_01: And you go, oh wait, my team is good at Azure.
- 8:55SPEAKER_01: Well, probably I want to at least elevate Azure then compared to Google and AWS, if not just pick it.
- 9:03SPEAKER_01: Okay, so creating that short list of options and then looking back at the previous things you've done will help you identify.
- 9:10SPEAKER_01: Oh, we can cross off a few of those, we can elevate a few of those and maybe keep a few in a list, but they're not as high a priority because of the previous things we talked about.
- 9:23SPEAKER_01: Now, number six, when you have a short list, and maybe even you have a highlighted shortlist, look at the future possibilities for each option.
- 9:35SPEAKER_01: So let's look at C sharp, for instance.
- 9:38SPEAKER_01: You decide, hey, I think we're probably gonna go with C sharp because you know, here's the things you want to do.
- 9:45SPEAKER_01: Then look down the road a little bit and see are they going in the direction that's going to improve my investment over time?
- 9:53SPEAKER_01: For instance, if you look back over what they have done with.NET Core 3.1, then.NET 5, and.NET 6, you'll see consistent and major speed improvements.
- 10:05SPEAKER_01: That's promising.
- 10:06SPEAKER_01: And it's promising they've been doing that year over year.
- 10:10SPEAKER_01: So you know that with.NET 7, there'll be new speed improvements and new features that will continue to improve the language.
- 10:18SPEAKER_01: So you've got that consistency.
- 10:20SPEAKER_01: Now, a lot of languages do this, so you look at that and say, okay, the here's the future possibilities.
- 10:26SPEAKER_01: And then you look at you know,.NET Maui and say, well,.NET MAUI is not out yet, but I know the direction Microsoft is going in is cross-platform, uh, desktop, mobile, and web.
- 10:38SPEAKER_01: That's kind of cool.
- 10:40SPEAKER_01: Where this language over here, maybe it's not cross-platform and we kind of want to go there, or maybe this language over here already has that.
- 10:48SPEAKER_01: And you say, well, maybe we lean towards that because it's already established, it's already mature.
- 10:53SPEAKER_01: So you look at the future possibilities of language just as an indicator of a few more ticks in the positive or negative account.
- 11:02SPEAKER_01: If you look at a language and go, I'm not even sure that they're continuing to work on this language, that can be a problem, or this database, or the cloud providers seem to be a little bit quirky, or there's some downtime issues, or you know, start looking at the positives and negatives about what the future might hold.
- 11:21SPEAKER_01: All right.
- 11:22SPEAKER_01: So that's number six.
- 11:23SPEAKER_01: Number seven, choose what's gonna work best for you, not what other people like.
- 11:32SPEAKER_01: It's hard when you feel like you're on your own, when you feel like no one really understands.
- 11:39SPEAKER_01: And so you go to the internet and you ask the question, hey, what should I choose?
- 11:44SPEAKER_01: I get that.
- 11:46SPEAKER_01: Because it feels like there should be someone out there that's smarter than you, that's been there, done that, and that can give you some advice about what is right.
- 11:56SPEAKER_01: But in the situation like this, where you're choosing a technology stack, it really does depend on you, your environment, your team, and so on.
- 12:08SPEAKER_01: So you can't really just ask that question and get an answer that's going to be a valid answer.
- 12:15SPEAKER_01: You will get radically different answers from different people.
- 12:19SPEAKER_01: And hopefully, the people who are most mature and most experienced in the industry are going to tell you that answer you probably hate, but the answer is it depends.
- 12:31SPEAKER_01: And that is the answer that is most appropriate because it does depend.
- 12:36SPEAKER_01: It depends on you and your situation.
- 12:40SPEAKER_01: So when you're it comes to choosing a technology stack, go through seven steps, go through and try and figure out what's best for your situation.
- 12:49SPEAKER_01: Use this tool as an opportunity to help identify what's right for you.
- 12:57SPEAKER_01: And then when someone asks you, what's the right choice?
- 13:00SPEAKER_01: Don't give them your choice.
- 13:02SPEAKER_01: Tell them it depends, but here's how you can figure out what's best for you.
- 13:08SPEAKER_01: Because that person, if they go to that same matrix and figure out those same answers to those questions, they're gonna come up with a different solution than you are.
- 13:17SPEAKER_01: And that's okay.
- 13:18SPEAKER_01: That's there's a whole reason we have multiple languages, multiple cloud providers, multiple databases, and so on.
- 13:25SPEAKER_01: Because each situation is different and you need to treat it that way.
- 13:29SPEAKER_01: All right.
- 13:29SPEAKER_01: Thanks for listening to this episode of DevQuestions.
- 13:32SPEAKER_01: And as always, I am Tim Corey.
- 13:35SPEAKER_00: Thank you for joining us for this episode of DevQuestions.
- 13:38SPEAKER_00: Tim is committed to making it easier for you to become a developer.
- 13:41SPEAKER_00: If you would like to help make more content like this possible, please like, subscribe, rate, and share dev questions.
- 13:49SPEAKER_00: You can also send your questions to questions at imtimcore.com.
- 13:54SPEAKER_00: Until next time, remember, you are too smart and your time too valuable to waste it making all the mistakes Tim did.
- 14:01SPEAKER_00: When you're ready to learn to think and code like a professional developer, head over to imtimcore.com and enroll in the course.