Software or DevOps Engineer?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
- So a lot of y'all are tossing up between these two different options of whether you wanna go down the software engineering route or the DevOps engineer route. So today I'm gonna help you make that decision. (upbeat music) Hey, what's up, I'm Will Button from DevOps for Developers. And so first thing is if you are leaning towards the software engineer route, because you aren't sure that there is a valid long-term career in DevOps, be sure and check out the video that is up here, over here, that I recorded about whether or not DevOps is just a fad or whether it's something that's here to stay. Now, if you're undecided because you aren't really sure what the subtle details and the distinction between those two career paths are, that's what we're gonna cover in this video. In either one, you're gonna be writing a lot of code. So technically you're a software engineer in either case the distinction just comes into the details of what type of code you're writing. And it's also important that you make the right decision, because this is a long-term commitment, but that doesn't mean you're stuck with that forever. You can always change your mind. And as a matter of fact, I've done that multiple times throughout my career. I think one of the most important considerations is for you to choose the one that you're most excited about. 'Cause you're gonna be doing this for the next 10 or 20 or 40 years, which is a long time. So you've gotta be excited and you've gotta be passionate about what you're doing, or it's gonna be a long 40 years. If you don't wake up in the morning thinking. Fuck yeah, I'm gonna DevOps some shit up today. Then it's probably not the right career path for you because you're gonna be frustrated. You're gonna be unhappy, and it's just simply not worth it. I don't care what they pay you. No amount of money is worth 40 years of suffering and self hatred. So with that super pleasant news out of the way, let's talk about some of the differences between the two that can help you make that decision. So I'm gonna give you a couple of different options here. We're gonna talk about a couple of different projects that are just projects that you may encounter down either career path. And in either scenario, I want you to picture that you're gonna spend the 30 days on this project, determining what the solution should be. And then you're gonna spend the next six months implementing that solution. Now the timelines I made up are just completely arbitrary, but I wanted to pick something that's, a little bit out there so that you really think through what this is gonna be like and think about some of the longer term implications of it. Project number one, this one is more along the lines of a software engineer route. So I'm gonna give you that one. And then the other one then we're gonna talk about which one is most appealing to you. So let's say that your job is to create a new algorithm that looks at what a user clicks, or likes, or comments on, within your app. And then you create an algorithm that takes that information. Plus the other information that you have stored on that user and your job is to find more content like that to keep them engaged and interacting with it with your app. That may sound a little familiar. I don't know, I just made it up. So that's the software engineer problem is designing the algorithm. Now a similar style DevOps problem would be you've got this application and your job is to build a software that captures the monitoring and the performance of this application. And we're gonna say that you have an influx of heavy utilization from your users in the evening U.S. time. So you are gonna build a system that monitors your application performance when it sees the utilization starting to rise and the performance starting to go down. It's gonna launch more containers or more resources to eliminate the bottleneck and make sure that your user experience is fast and responsive. And then it's gonna continue that monitoring process to identify when the users have finished using your app for the evening. And then it's gonna scale those resources back in so that you don't have a bunch of extra systems running within your infrastructure, costing you lots of money that aren't actually doing work to provide value for your company. So those are the two problems. One we're creating an algorithm to keep users engaged with our application. The other we're creating a system that scales our application servers and resources in and out to meet user demand while maintaining a certain performance threshold. Now there's a lot of similarities between these two problems. Both of 'em, you're gonna be writing code to solve that problem. Both of 'em you're gonna be relying heavily on metrics to understand when and where the problem is occurring. In our software engineering example, you're gonna be using metrics from what the user is clicking on, what they're commenting on. You're gonna be pulling data from what their other interests are that you have. And in some of the specific metrics will be how many posts have they clicked on? How many of the have they liked? How many have they commented on? How long have they been using your app today? All of those are important data-driven metrics that are gonna help you solve this problem. Over in our DevOps engineering problem. The metrics that you're gonna have there will be something like the number of users online, the API response time, how fast is your API responding to user requests and things like CPU utilization, memory utilization, network throughput, all of those things that you're gonna use to determine when your application has reached the lower end of that performance threshold, and you need to start adding resources to it. I think the real distinction between those two problems comes in who your customer is almost. Because and the software engineering problem that I created the customer is the actual person or human using your app. But in the DevOps problem I've presented, the customer can really be thought of as your application infrastructure. You want to improve its user experience I guess for lack of a better term. And so you measure that. And so you're solving the same problem in each case. It's just who the customer is. Now that's important because you're gonna probably have a preconceived notion or a preference for which type of problem seems appealing to you. And it's really important that you're honest with yourself and you identify which one's appealing and why it's appealing to you. And then ask yourself, is this problem something that I'm willing to spend the next three to six months on working diligently regardless of success. Am I willing to bang my head against the wall every day for the next six months until I just brute force my way through solving this problem? And if the answer is no for one of those, then that kind of tells you what you need to know about being a software engineer or a DevOps engineer. So let's talk about one more example. Maybe it'll help you out. Problem for the software engineer, whenever you're looking at the UI for your application, does it really bother you If things aren't either center aligned or left aligned or something is left aligned, but certain things are more left aligned than the other one. Or do you have a really strong opinion about which shades of blue go with which shades of purple or something, is that something that really like you see it, you identify it and you're like. I gotta fix that. If you really like solving those kinds of problems, you're not gonna encounter that a lot as a DevOps engineer. But from a DevOps problem of a similar magnitude, let's say that you've got a CICD pipeline and every time your developers open a merge request, it triggers a build process on your CICD server. And that takes five minutes to complete. So you look at that and you start thinking about the problem. Can I make that go faster? Because they have five minutes they have to wait before they can open their merge request once they commit their code, can I do something like increase the memory or CPU available to the build server, or maybe there are certain known dependencies for our application. So can I create a new base Docker image where those dependencies are already pre-installed and the build process doesn't have to manage those. Or maybe part of your merge process involves spinning up a pull request environment so that the application can be tested. And are there parts of that infrastructure that don't need to be spun up and torn down every time that you can have sitting idle and then you just drop the Docker container for that pull request into that environment. And so you cut down the time that way, and you get the time down from five minutes down to three minutes. May not seem monumental, but to someone sitting there and waiting to click on the pull request button, it's probably pretty significant. And that differs from the software engineering problem, because it has nothing to do with visual layout. There's no design, there's no color palette. It's just backend system analysis and understanding the workflow and understanding the parts of the infrastructure that make up that workflow, and identifying which parts of that can be improved for performance. So those are two different examples from each software engineering and DevOps engineering, that hopefully will help you understand a little bit more about what each career path is like. And see which components of that align with your own personal interest so that you make the right choice in your career. And again, like I said, back in the beginning, if you start down one path and decide that that's not for you, you can always change because especially with these two career paths, software engineer and DevOps engineer. I mean, a DevOps engineer really is a software engineer anyway. It's just that you write infrastructure code instead of user-facing application code. So you can always switch. If you decide that one might be better for you than the other. If you found this video helpful, do me a favor and click the like button down below, and also go ahead and subscribe to my channel. And then you'll see in your YouTube feed whenever I release new videos. And with that, I'll see y'all next time.
Info
Channel: DevOps For Developers
Views: 36,087
Rating: undefined out of 5
Keywords: become devops engineer, devops, devops career, devops career path, devops ci/cd, devops engineer, devops engineer roles and responsibilities, devops engineer skills, devops explained, devops roadmap, devops roadmap 2020, devops roadmap 2021, devops tasks, devops tools, devops tutorial, how to be a devops engineer, how to become a devops engineer, how to become a devops engineer from scratch, jenkins, what devops engineer should know, what is devops, software engineering career
Id: a0-uE3rOyeU
Channel Id: undefined
Length: 11min 48sec (708 seconds)
Published: Tue Apr 13 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.