Stack/Unstuck: The Great Stack Debate

  |  Compiler Team  
Anwendungsentwicklung und -bereitstellung

Compiler • • The Great Stack Debate | Compiler: Stack/Unstuck

The Great Stack Debate | Compiler: Stack/Unstuck

About the episode

The software stack is like an onion. Or a sheet cake. Or lasagna. Or is it? It’s often described as having layers that sit on top of each other. The reality is much more complicated—and learning about it can help any tech career.

The Great Stack Debate is the first episode in Compiler’s series on the software stack. We call it Stack/Unstuck. We explore each layer of the stack, what it’s like to work on them, and how they come together into a whole application.

Compiler team Red Hat original show

Abonnieren

Subscribe here:

Listen on Apple Podcasts Listen on Spotify Subscribe via RSS Feed

Transkript

Jameel Alston is a delivery driver. His days usually have an early start. Well, average day you get up, get on the highway around 6:00 6:30, you get to work well, seven o'clock. First, all the packages are being unloaded from the trailer and they're putting all the packages on the conveyor belt. We sorting the packages. His work takes him through highways, industrial parks and neighborhoods as he ferries packages from one place to another. I actually split the belt. So different packages go to different locations, different routes. So I'm just splitting the belt. Then I go to my truck, organize my truck, scan all my packages up. After that, you just organize your truck, get on the road and start delivering your routes. But that's not all he's doing with his time. Jameel wants to start a career in tech. Every free chance he has while working, he uses it to teach himself enough to earn an AWS Cloud Solutions Architect certification. I'm sitting on my truck at FedEx and I'm just studying for like the first 30 to 40 minutes that I get there. Just taking notes, studying. I put a lot of time in it. That's all I did. Yep. And I would have my instructors just playing on my radio while I'm driving around. I mean, that's the way you have to do it when you're working a 9:00 to 5:00 and you still want to change your life. At this point, Jameel has a certification. But now there's a new problem. I was just focused on getting my certification. I didn't think about nothing else. I have to get it. I have to get it. And now I have it. And everybody keep asking, "What you going to do now?" I'm like, "I don't know." For a lot of people, there is a lack of understanding of how all of the different elements of IT, data, frameworks, programming languages, dev tools, cloud infrastructure, how they all come together to form an application. As people move from one phase of their career to the next, understanding the whole software stack can strengthen their skills and propel them from where they are to where they want to be. This is Compiler an original podcast from Red Hat. I'm Brent Simoneaux. And I'm Angela Andrews. We're doing a series called Stack Unstuck. And we're taking you on a journey through the whole software stack. Today's episode, The Great Stack Debate. Producers, Kim Huang and Johan Philippine are here to start us off. Well, we thought it would be a good idea to get some quick definitions out of the way. Okay. So the software stack is what applications are built from. They're typically broken down into layers. Angela, do you want to tell us what those layers are? It's usually the operating system or the database and the front end application and the web server. It's usually an alphabet soup of applications and services and they make up stacks like the lamp stack and the mean stack and the stack stack. So I'm sure we're going to go into this a little bit deeper, but just a level set. It's a lot of acronyms involved. I imagine that all of this has to fit together, but this must be a lot for a single person to know everything about each one of these components, right? Yeah. So it's a lot to take in. A lot of people don't actually know all the stacks and all the different tools available because that's just a lot to take in. Especially if you're new to the industry. And so we're really hoping to give that kind of high level view of what are these different layers and how they work together for this series. What is each layer? How would you visualize this? Well, Brent, let's do our favorite thing and let's bring out the whiteboard. All right. I was waiting for this. I think Angela already has her whiteboard out. I do. Yeah. I always do. I could hear you. I could hear you. Walk me through this, Angela. So let me start with my favorite stack. The lamp stack. You can tell I'm old school, right? So we have our first layer and we're going to call it Linux. And Linux is the operating system that we're going to run this stack on. So once we have our Linux system, we're going to go ahead and install Apache. Okay. So Apache is our web server. That is our web server application that we're going to use. I'm going to put PHP next. I know it's out of order, but bear with me for a second. Okay. So when I'm going to start programming my web app, I'm going to use the PHP programming language. And I want to be able to communicate with my database. I need a place to store my information. And in this case it's going to be MySQL or MariaDB. Okay. So, this stack comes together and allows me to build a fully functioning web application from my web server portion, my presentation layer with Apache and my PHP, which is presentation layer. Let me back up for a second. Yeah. PHP is a huge application. It can do a whole lot of things, but it can also talk to the database. Right? Okay. So you don't need something in between. You can actually write database queries with PHP. Pick whichever stack you want. I'm always going to lean on the lamp stack because that's the one I've known the longest. And the second longest would be the mean stack. So we have lamp, we have mean, and I assume there are some others in there too. Are they always layered in the same way? Well, from what I've been gathering, the layers and even the stack, that's more of a visual aid than a literal representation of what's going on. Right? Okay. Though there are some elements that are installed on top of other layers. It quickly gets more complicated than that. I mean, Angela was just explaining to us a few of the things, quote unquote, "out of order," but these so-called layers have a lot more overlap and interconnection than top down stacking would imply. So order doesn't really matter all that much. Right? Which coincidentally goes for this series, by the way. So just to review, it's front end, application, database and operating system. Those are our four components. We're going to add a few more that- Yeah. We're going to add a few more. Of course you are. Maybe aren't necessarily- It's too simple. ... Traditionally counted as layers of the stack, but we're also going to talk about testing environments as kind of a crucial thing that even though it isn't typically mentioned as a "layer" of the stack, quote, unquote, is something that should be very much considered in developing an application. But yes, those are the five different elements that we'll be looking at. The front end, the application layer, the database, the operating system and the testing environment. Awesome. Okay. So like we do, we're going to take something that's relatively simple and just make it much more complicated. Well, hopefully make it, in the process, a little bit easier to understand, but, yeah. All right. We're going to peel this onion back. There you go. Onions. There we go. It's got layers. I'm crying. Okay. So we have our basic definitions established here. How does Jameel's story fit into this? Consider Jameel our case study he's young and he may benefit from that more holistic view of the tech stack. As he learned more about his desired career path, his work as a FedEx driver exposed him to some very unexpected inspiration. When I started working at Falls Church, I noticed I was working in a place called Fairview Park. And they had a lot of tech companies over there, like General Dynamics, Canon, HP, Lockheed Martin, all these different type of places. And I would just be networking with the people and telling them my interest of getting into tech His deliveries to Fairview Park took him through the corporate campuses of some major tech companies in the area. That's just kept me motivated when you actually seeing somebody that's working in the field and knowing that I could change my situation. So I didn't say this in the beginning, but Jameel actually took the certification exam twice. Oh, what happened? He tried it for the first time. And... Unfortunately I missed it by like a question. My first time taking that exam. I kind of felt defeated. It took me a little while, like maybe a month or two to get back on track to start studying again. Can I say something? Sure. Failing an exam is not really a failure. Oh, yeah. It's not. As a person who has taken many exams and who usually fails them at one point or another, that is the best learning experience. And I'll tell you why, you now know what's on the exam. So the simple fact that he had gotten that far with his first try is amazing. So I'm sure the second try is going to be a cakewalk. And I understand he felt really bad about it. And a lot of people do, but he was so close. Does it feel like a failure when it happens though? Of course. To some, to some. Yeah, I think so. I think it does. It's okay that he felt that way, but for anyone listening, really, don't ever take that first try as a real failure. Just think of it, this is how I need to see what the exam looks like. And you got that chance now you know where to focus. Yeah. Exactly. He did feel a little bit deflated. And for a while, it seems as though Jameel kind of stepped back from his studies. But there was something that happened soon after that kind of set off his motivation once again. He found out that his new wife was pregnant with his first child. He had to go back to studying for the certification exam because he was going to be a father for the first time. Once I found out she was pregnant, I was like, man, this is not a game. It's not a game right now. So I took that, the first test, in July. We got married in September and found out we was pregnant in October. So that's really what got me like, oh, I have to do this. I didn't come this far just to give up. We spoiled it earlier, but Jameel's story does have a happy ending. He took the exam again and he passed and- Yay. Yeah. Yay. So at first, it was just jubilation. Right? Everyone was excited. His wife, who he says his like primary cheerleader, she was elated. Everyone was happy. But after the celebration ended, Jameel felt the same uncertainty that a lot of people feel after their first certification or their first degree or their first bootcamp. He was so focused on the certification he wasn't sure of what to do next. So what is he doing now? He's still working as a delivery driver for now. But he's doing what a lot of other aspiring tech professionals do. He is learning how to get his foot in the door. He doesn't have any experience. So he has to kind of build all of that up from scratch. I have to work on that. In the job market, just getting my digital portfolio together. So I have to do more labs. I know if I do like two labs a day in a month, I have a decent looking portfolio where I could show a potential employer things I've been working on. And they say like GitHub and stuff like that, you can just jump into projects just to start building my digital portfolio. That's how you do it. That's definitely one way to do it. Yeah. As he's taking this certification and as he's doing all these labs, is he working with a particular stack in all of this? No, not yet. But he will have- Not yet. Okay. Yeah. He will have to have a bit of awareness about technology stacks and through those labs, he's hoping to learn more than just cloud architecture. Right? Yeah. So this is a field, and we've said this before on the show, that requires continued education. It's a major component of your career. So I mean, Angela, what are those things? What should he know as a budding solutions architect? Well definitely he has to understand the cloud. Yeah. I mean, he took the certification and he understands what the certification taught you. But does he understand Linux? Linux is what the cloud is built on. Does he understand networking. And not him specifically, but anyone looking to get into this role. Do you understand networking and how networks connect applications and how us as end users connect up to these applications? You have to understand a little bit of scripting. Because everything is infrastructure as code there's automation behind all of it. Do you know how to automate the things that you're building in the cloud? You can't be clicking through the console. How do one click? How do you have it automated? So there's so many things, different things. Getting the certification is definitely a great way to understand and learn that particular cloud provider's platform. But how do you use it? How do you bring all the pieces together? And then of course, how do you show what you've learned in your portfolio? Right? So there's a lot of moving parts. He's definitely heading in the right direction though. Jameel is still in the early stages of his career, but eventually he'll have to interview for his first tech job and fundamental knowledge of a tech stack can be a huge benefit for people who are in his position. Okay. I see If he's trying to be a cloud architect or a solution architect or something like that, does he have to understand express and node? No. But he does have to understand how set applications to communicate with each other through APIs, through network ports, through sockets, through IP addresses, he has to understand that. If he's connecting him to a database, he has to understand what ports do I need to open in order to allow this application layer to communicate to this database? Right? So does he have to know the specifics? No. No. But he has to make them talk. That's one of the big points of the series, right Kim? Exactly. We spoke to someone who interviews newer tech talent to see what he had to say. Noel Minchow is a software engineer at Log Rocket and he also appears on their podcast, Pod Rocket. He has focused on different elements of the stack throughout his career. And now as he's become an engineer in charge of hiring others in his field, he's started to notice some things. Specifically how much, or how little, people know about the basics of a software stack. We just kind of have the whole gambit and there are devs that come in that they know about Kubernetes and like container based deployment and all this stuff, but they maybe don't have the core principles, the software engineering fundamentals as ironed out. And that's okay. It's good to have those skills. But you also see people on the other end where they don't know about the modern dev tooling at all. They don't know about what a mature software development stack looks like. They're more about principles. Writing effective, efficient, easy to read code and kind of every everything in between. Right. So we've got the principles and the fundamentals down from being at a four year university, but don't necessarily know the modern tooling. Or you've got people who have graduated from a bootcamp, which is just a few months long and get just the details about the modern tooling enough to get a job, but don't have those fundamentals as much nailed down. Mm-mm. It sounds like your boot camp bashing. Oh, absolutely not. As someone who attended a full set coding boot camp, I will not have you bashing. No, I'm kidding. No, no bashing. I'm kidding. What I was trying to get to is that all educational programs have their downsides. Right? Because it's really hard to teach all of the things. Because this is an industry that is always changing. On a dime. Right? So it's difficult for them to put a curriculum together and expect for it to stay the same for a while. Right? Those have to be constantly updated. I can see that. Every cohort the curriculum changed. Big kudos to the people running that program, because that cannot be easy. There's some pressure for graduates of these programs to know everything. To know all the tools, to know the whole stack. And it took Noel years to get familiar with the whole stack. I was kind of getting it as I wrapped up in my education and got some industry experience. But then, yeah, again, as I worked on stuff, I moved into some more full stack roles, because that seems to be what a lot of companies are hiring for. They want people that can do everything for better or worse. Why for better or worse? Well, I had the same question. So I asked Noel what he meant. There's been a kind of a tendency for companies to just go out and try to hire full stack devs because they know they've got web tech that needs built. I think that, I don't have numbers in front of me, but I feel like when I go look at job postings, at least for, I don't know the last like 10 years or so, that really has been more prevalent than anything else. In the last few years, I think it's been getting a little bit more focused. I think the industry's kind of figuring out that we're trying to hire these jacks of all trades is not always the best idea. These job postings for full stack developers. They can be a barrier for newer developers who aren't likely to have that level of experience. Right? And as Noel is hinting here, sometimes the better option is to hire new people who know maybe one or two elements of the stack fairly well. And then are curious enough to learn the rest of the stack over time. That's how his own career progressed, by asking how do I use what I already know to learn what I don't know. I realize that the parts of the stack that I found the most interesting were the parts that were changing more that there was a lot of front end activity happening. I mean, the services were evolving as well. The back end stack, middleware, stuff like that. But the front end I thought was really interesting for a while. So I spent a bunch of energy and time learning there. And then I really found myself personally drawn to working on tech that I found useful. So it's like, of course people want to work on things that they are passionate about. But some of my decisions have been intentional. But a lot more has kind of been, I want to work on interesting problems. I'm going to work in the layer of the stack where that is. So Noel's jumped around a little bit. Right? Front end, back end. He's done a whole lot of work in different elements of the stack and in doing so, he was able to find work that was more fulfilling for him at the time. For new developers though, that journey can still be pretty intimidating because there's a lot of ever changing material to cover. But I mean, that's okay. We need all of that knowledge. We need people that carry all of it with them. I feel like it's maybe even more fragmented now than it ever has been historically because there is such a large surface area to cover. So Kim, Johan, I think what I'm hearing in this episode is that newcomers like Jameel, they're really hungry to get into the industry. But it's nearly impossible to know everything about the tech stack when you get started. Is that right? Yes. Yeah. I would agree. They're all at different ends of the knowledge spectrum. Right? And a lot of the jobs that are hiring kind of expect you to know everything. Which is typically not knowledge that you gained until you've had several years of experience in the tech industry. Right. Where you get the time to try things out, to learn things on the job and see in action how all these pieces come together. And that could be why it feels so and is so difficult for a newcomer to break in. Right? Exactly. Yeah, definitely. Now, do developers need to know every aspect of the whole stack to have successful careers in IT? No, I don't think so. That's not what I've read, that's not what I've heard talking to people. But understanding the whole stack without necessarily knowing all the intricacies of each layer, has a whole host of advantages. It gives you a deeper understanding of your own position and your own work and the team, and a little bit of perspective of how the work fits into the whole stack into the whole application. It also allows you to better have your work connect with and, for lack of a better word, synergize with the rest of the stack. Right? If you can write your code and tailor it to connect with the other layers of the stack better, then the whole team works better and more efficiently together. There's always the why, right? The question of why should a person who's starting in development have all of this, not so much intricate, but definitely high level knowledge of the technology stack and how these different components fit together. And the most obvious answer is that it makes them better at their job. I mean, it will equip them to communicate better with people who they work with. That kind of curiosity we talked about in the last segment, will strengthen their networking skills and their communication skills with other people who work in other parts of the stack. And on top of that, if they ever want to advance their career, if they ever want to go to that next level or go to another company, or even start out on their own, they'll be equipped with the knowledge that they need to have an intricate understanding of whatever technology stack they end up working with. It also gives them some options of knowing what the other potential career paths are available out there. Right? If they start in front end and don't necessarily end up liking it and want to explore a little bit more about what is working in a database look like? Or what does working on the other aspects of the back end? What is that like? Right? If they get that holistic knowledge of the stack, they get a little bit more understanding of what could possibly be a better fit for them in the long term. Exactly. Kim, Johan, you've been talking to a lot of people. Right? Mm-hmm. Where are we going from here? The first stop is the front end. Okay. The layer closest to the user. A lot of people think that front end development is one thing, but as you'll learn in our next episode, there is a little bit more complexity than expected. So excited. I'm so excited. So excited. All right. So next episode, The Front End. And that does it for the first episode of this series, Stack Unstuck. Today's episode of Compiler was produced by Kim Huang, Johan Philippine and Caroline Creaghead. Victoria Lotton gets us unstuck every single day. Our audio engineer is Christian Prohom. Special thanks to Sean Cole. Our theme song was composed by Maryanne Cheta. Thank you to our guest Jameel Alston and Noel Minchow. Our audio team includes Lee Day, Laura Barnes, Stephanie Wonderlick, Mike Esser, Nick Burns, Aaron Williamson, Karen King, Booboo House, Rachel Artell, Mike Compton, Ocean Matthews, Alex Trabulsi and Laura Walters. We'll miss you, Claire Allison. Thank you so much. And best of luck from all of us. If you liked today's episode, please follow the show, rate us, give us a review, share it with anyone you know. It really does help us out. Thanks for listening. Take care, everybody. Bye bye.

About the show

Compiler

Do you want to stay on top of tech, but find you’re short on time? Compiler presents perspectives, topics, and insights from the industry—free from jargon and judgment. We want to discover where technology is headed beyond the headlines, and create a place for new IT professionals to learn, grow, and thrive. If you are enjoying the show, let us know, and use #CompilerPodcast to share our episodes.