Stack/Unstuck: The Great Stack Debate
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.
00:00 — Kim Huang
Jameel Alston is a delivery driver. His days usually have an early start.
00:08 — Jameel Alston
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.
00:28 — Kim Huang
His work takes him through highways, industrial parks and neighborhoods as he ferries packages from one place to another.
00:36 — Jameel Alston
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.
00:54 — Kim Huang
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.
01:12 — Jameel Alston
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.
01:32 — Kim Huang
At this point, Jameel has a certification. But now there's a new problem.
01:39 — Jameel Alston
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."
01:49 — Kim Huang
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.
02:19 — Brent Simoneaux
This is Compiler an original podcast from Red Hat. I'm Brent Simoneaux.
02:29 — Angela Andrews
And I'm Angela Andrews.
02:31 — Brent Simoneaux
We're doing a series called Stack Unstuck. And we're taking you on a journey through the whole software stack.
02:39 — Angela Andrews
Today's episode, The Great Stack Debate.
02:45 — Brent Simoneaux
Producers, Kim Huang and Johan Philippine are here to start us off.
02:51 — Johan Philippine
Well, we thought it would be a good idea to get some quick definitions out of the way.
02:56 — Brent Simoneaux
02:56 — Johan Philippine
So the software stack is what applications are built from. They're typically broken down into layers.
03:01 — Brent Simoneaux
Angela, do you want to tell us what those layers are?
03:04 — Angela Andrews
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.
03:30 — Brent Simoneaux
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?
03:41 — Johan Philippine
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.
04:01 — Brent Simoneaux
What is each layer? How would you visualize this?
04:06 — Johan Philippine
Well, Brent, let's do our favorite thing and let's bring out the whiteboard.
04:11 — Brent Simoneaux
04:12 — Angela Andrews
I was waiting for this.
04:14 — Brent Simoneaux
I think Angela already has her whiteboard out.
04:16 — Angela Andrews
I do. Yeah. I always do.
04:19 — Brent Simoneaux
I could hear you. I could hear you. Walk me through this, Angela.
04:23 — Angela Andrews
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.
04:44 — Brent Simoneaux
04:44 — Angela Andrews
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.
04:55 — Brent Simoneaux
04:56 — Angela Andrews
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.
05:12 — Brent Simoneaux
05:14 — Angela Andrews
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.
05:35 — Brent Simoneaux
05:35 — Angela Andrews
PHP is a huge application. It can do a whole lot of things, but it can also talk to the database. Right?
05:41 — Brent Simoneaux
05:41 — Angela Andrews
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.
05:55 — Brent Simoneaux
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?
06:06 — Johan Philippine
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?
06:17 — Brent Simoneaux
06:18 — Johan Philippine
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.
06:48 — Brent Simoneaux
So just to review, it's front end, application, database and operating system. Those are our four components.
06:59 — Johan Philippine
We're going to add a few more that-
07:01 — Brent Simoneaux
Yeah. We're going to add a few more. Of course you are.
07:03 — Johan Philippine
Maybe aren't necessarily-
07:04 — Brent Simoneaux
It's too simple.
07:05 — Johan Philippine
... 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.
07:34 — Angela Andrews
07:34 — Brent Simoneaux
Okay. So like we do, we're going to take something that's relatively simple and just make it much more complicated.
07:41 — Johan Philippine
Well, hopefully make it, in the process, a little bit easier to understand, but, yeah.
07:47 — Brent Simoneaux
07:48 — Angela Andrews
We're going to peel this onion back. There you go.
07:50 — Johan Philippine
Onions. There we go. It's got layers.
07:53 — Brent Simoneaux
07:55 — Brent Simoneaux
Okay. So we have our basic definitions established here. How does Jameel's story fit into this?
08:04 — Kim Huang
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.
08:19 — Jameel Alston
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
08:40 — Kim Huang
His deliveries to Fairview Park took him through the corporate campuses of some major tech companies in the area.
08:47 — Jameel Alston
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.
08:56 — Kim Huang
So I didn't say this in the beginning, but Jameel actually took the certification exam twice.
09:01 — Brent Simoneaux
Oh, what happened?
09:03 — Kim Huang
He tried it for the first time. And...
09:05 — Jameel Alston
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.
09:19 — Angela Andrews
Can I say something?
09:20 — Kim Huang
09:21 — Angela Andrews
Failing an exam is not really a failure.
09:26 — Brent Simoneaux
09:27 — Angela Andrews
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.
09:59 — Brent Simoneaux
Does it feel like a failure when it happens though?
10:01 — Angela Andrews
Of course. To some, to some.
10:03 — Kim Huang
Yeah, I think so. I think it does.
10:05 — Angela Andrews
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.
10:21 — Brent Simoneaux
10:22 — Kim Huang
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.
10:53 — Jameel Alston
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.
11:16 — Kim Huang
We spoiled it earlier, but Jameel's story does have a happy ending. He took the exam again and he passed and-
11:25 — Angela Andrews
11:26 — Kim Huang
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.
12:00 — Brent Simoneaux
So what is he doing now?
12:03 — Kim Huang
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.
12:22 — Jameel Alston
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.
12:48 — Angela Andrews
That's how you do it. That's definitely one way to do it.
12:50 — Kim Huang
12:51 — Brent Simoneaux
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?
13:01 — Kim Huang
No, not yet. But he will have-
13:02 — Brent Simoneaux
Not yet. Okay.
13:05 — Kim Huang
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?
13:14 — Brent Simoneaux
13:15 — Kim Huang
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.
13:24 — Brent Simoneaux
So I mean, Angela, what are those things? What should he know as a budding solutions architect?
13:30 — Angela Andrews
Well definitely he has to understand the cloud.
13:32 — Brent Simoneaux
13:33 — Angela Andrews
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.
14:41 — Kim Huang
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.
14:55 — Brent Simoneaux
Okay. I see
14:56 — Angela Andrews
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?
15:29 — Kim Huang
15:30 — Angela Andrews
No. But he has to make them talk.
15:32 — Brent Simoneaux
That's one of the big points of the series, right Kim?
15:35 — Kim Huang
Exactly. We spoke to someone who interviews newer tech talent to see what he had to say.
15:44 — Johan Philippine
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.
16:09 — Noel Minchow
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.
16:49 — Johan Philippine
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.
17:22 — Angela Andrews
Mm-mm. It sounds like your boot camp bashing.
17:24 — Johan Philippine
Oh, absolutely not.
17:26 — Angela Andrews
As someone who attended a full set coding boot camp, I will not have you bashing. No, I'm kidding.
17:31 — Johan Philippine
No, no bashing.
17:32 — Angela Andrews
17:33 — Johan Philippine
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.
17:46 — Angela Andrews
On a dime.
17:47 — Johan Philippine
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.
17:57 — Brent Simoneaux
I can see that.
17:58 — Angela Andrews
Every cohort the curriculum changed.
18:01 — Johan Philippine
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.
18:17 — Noel Minchow
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.
18:35 — Brent Simoneaux
Why for better or worse?
18:37 — Johan Philippine
Well, I had the same question. So I asked Noel what he meant.
18:40 — Noel Minchow
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.
19:13 — Johan Philippine
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.
19:48 — Noel Minchow
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.
20:29 — Johan Philippine
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.
20:51 — Noel Minchow
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.
21:12 — Brent Simoneaux
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?
21:34 — Kim Huang
21:34 — Johan Philippine
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.
22:04 — Brent Simoneaux
And that could be why it feels so and is so difficult for a newcomer to break in. Right?
22:10 — Johan Philippine
22:10 — Angela Andrews
22:11 — Johan Philippine
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.
23:08 — Kim Huang
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.
23:58 — Johan Philippine
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.
24:27 — Angela Andrews
24:29 — Brent Simoneaux
Kim, Johan, you've been talking to a lot of people. Right?
24:32 — Johan Philippine
24:33 — Brent Simoneaux
Where are we going from here?
24:35 — Kim Huang
The first stop is the front end.
24:37 — Brent Simoneaux
24:37 — Kim Huang
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.
24:51 — Angela Andrews
So excited. I'm so excited.
24:53 — Brent Simoneaux
So excited. All right. So next episode, The Front End.
25:02 — Angela Andrews
And that does it for the first episode of this series, Stack Unstuck.
25:07 — Brent Simoneaux
Today's episode of Compiler was produced by Kim Huang, Johan Philippine and Caroline Creaghead. Victoria Lotton gets us unstuck every single day.
25:20 — Angela Andrews
Our audio engineer is Christian Prohom. Special thanks to Sean Cole. Our theme song was composed by Maryanne Cheta.
25:29 — Brent Simoneaux
Thank you to our guest Jameel Alston and Noel Minchow.
25:33 — Angela Andrews
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.
25:57 — Brent Simoneaux
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.
26:07 — Angela Andrews
Thanks for listening. Take care, everybody.
26:10 — Brent Simoneaux