DonTheDeveloper Podcast

The MERN Stack Failed Junior Developers

Don Hansen Season 1 Episode 204

The popular MERN stack tutorials and the larger JavaScript ecosystem in general has failed to prepare junior developers for professional jobs. This is a rant about that...

---------------------------------------------------

💻 Learn Frontend (20% off): https://scrimba.com/the-frontend-developer-career-path-c0j?via=donthedeveloper
⚙️ Learn Backend (25% off): https://boot.dev/?promo=DONTHEDEVELOPER
🤖 Learn AI Engineering (20% off): https://scrimba.com/the-ai-engineer-path-c02v?via=donthedeveloper
🐱 Learn NestJS (free) - https://scrimba.com/nestjs-c0n7djgjma?via=donthedeveloper
🧠 Advanced Coding (40% off) - https://app.codecrafters.io/join?via=donthedeveloper

👥 1 on 1 Mentorship - https://calendly.com/donthedeveloper/coaching
👁️‍🗨️ Join Discord - https://discord.gg/TpQe2k8Ab3
🐦 Follow on X - https://x.com/thedonofcode
👾 Follow on Twitch - https://twitch.tv/donthedeveloper

Disclaimer: Some product links are affiliate links which means if you buy something I'll receive a small commission at no extra cost to you.

Don Hansen:

The Mernstack tutorial has failed you. If you are a junior developer trying to become a professional developer, you've most likely been introduced to MERnstack tutorials. It's just this templated approach that is pushed everywhere where it has been for many years. And this is what you need to dive into to become a developer as fast as possible. And a very common question I get is, Don, how do I become a developer as fast as possible? And I respond with, well, that's a problem with your question. The word fast should not even be involved. But Don, I have to become a developer within three months, within six months. I just I have to, or I'm screwed financially. It's like, what, what the fuck? What why are you screwed if you don't become a developer? And so I think some people they look at coding as this savior of all their poor financial habits or poor financial or situations that affected their finances negatively. Usually it's poor financial habits and just poor habits in general. Um coding isn't gonna save you. And this is like one of the first things that I tell people coding is not going to save your financial situation. It is going to take way too long for that to save most of you. And a lot of people, they don't deal with this well. And so they get into coding, and they might believe me, they might not, but they pursue it anyways, and they get into coding with this idea that I have to become a developer as fast as possible. What is the most efficient path, right? And so here comes the MERNSTAC tutorial, which was very popular in coding boot camps for the longest time, for years. And it taught you that you can learn the front end and back end with JavaScript. In itself, that isn't such a bad idea. Despite what some other people think, I think JavaScript on the back end works just fine for majority of applications, majority of professional applications with large teams working on them. But if you look at a lot of your typical MERN stack tutorials, I'm just gonna jump to it. They are way too surface level. And so what I want to share with you is why they're so surface level and what you probably should be expanding on. But a lot of like a lot of the tutorials really started to evolve and take shape and become a template because of the coding bootcamp industry. And so you would learn HTML, you would learn semantic HTML, now we gotta style it, now we got to bring some interactivity into it with some JavaScript, and then we need to make some API calls. And what happens when we make those API calls? Where do they go? Just they go into a black box. We have no idea. And so we learn kind of what that black box is. We don't quite learn how it works, but we learn what it is and what it sends back to us and what we can expect, right? And so we're still kind of exploring the front end. Most people go down this path, they start with the front end and then eventually they move into the back end, right? Okay, so what is this black box? How does it work? Right? How does it figure out what it needs to send me? And so very basic things spin up a node app, and then we learn routing with Express, and then we can respond to the client, which is really cool, and then we want to save our data and we want to manipulate that data, right? And so what tends to happen is when you approach coding through JavaScript, very often it's purpose-driven. And this is a bad thing to an extent. Meaning, actually, let me clarify it. You want to see a practical result of you learning to code. You need to build an application, and so you are offered project-based learning, which again, in itself, isn't bad. But project-based learning often is a little bit gamified, and it's meant to keep your attention because you have the attention of a goldfish, and course creators know that, right? So project-based learning keeps your attention, it keeps you moving forward, and you are growing a little bit. The problem with this, it's not the path of kind of learning the front end and the back end that's the problem. The problem is the JavaScript ecosystem. This is I I was thinking about if I wanted to expand on this. I don't think I'm gonna go into a lot of detail. It is important, but a problem with the JavaScript ecosystem is everyone has trained each other to just lean heavily on abstractions very quickly, right? If we want to get a project up, we want to get it up in front of a user, and then we want to build a back end for it. We want to get it working, right? And so the typical CRUD app is what is taught with a lot of these Mern Stack tutorials, and we get an app working. That's kind of cool. Here's the problem. We can add abstractions to maybe go the service serverless route. We can um choose an ORM to make this a little bit more convenient for us. We can um use maybe some built-in caching with the templating system that we're implementing. But a lot of these tutorials just teach you how to get a working app up. They don't teach you how these abstractions work. I think it's completely fine to learn Full Stack in the JavaScript ecosystem. I think it's fine to learn the backend with JavaScript, but all too quickly these tutorials ramp you up into abstractions and get you to be lazy. They distract you from wanting to go deeper. Abstractions are the solution in the JavaScript world. The JavaScript ecosystem is about enabling indie hackers and businesses to be able to just learn one language and get an entire application up and running. That is kind of the culture around it. The focus is on building applications, building web apps. The focus is not going lower level. You aren't touching anything past even the abstraction that JavaScript is. You don't have to do any manual garbage collection. A lot of these libraries come with caching systems, so you don't have to learn caching. A lot of times you might go through an SQL course, right? And you'll kind of learn some basic SQL commands, but you don't really learn how heavy some of these commands are with large sets of data. And if you do, there you go over it briefly just to learn it. Hey, we taught you this. We introduced this information to you. Now let us give you an ORM to make this easier because companies use ORMs. And that's easier. It's easier to maintain with an ORM. It's easier to build kind of a lot of helper functions and get these convenient life cycle hooks in there that you don't have to build out. It's just this is what professional companies do. This is what you see in professional applications, and this is all true, and this is also very misleading. Because good developers, really good developers, don't need these abstractions. Good developers have probably explored other programming languages. Good developers have thought to themselves that I don't think I feel comfortable or trust these abstractions and how they're working. Like, why do I need these abstractions? Why are they being pushed in front of me? I'm curious how they work under the hood. Good developers will actually dig into the code. Good developers will build a basic MVC framework themselves. Good developers will build a basic caching system themselves. I'm not saying you're going to be building like a production ready caching system. But as a junior developer, if you don't know how to build a really basic one, you've been misled. You should be able to. When you build up a solid foundation and you get a little bit of guidance to like w even just utilizing a caching system, how it works, and then customizing it a little bit to get an idea of how it works, you should be able to build a basic one. You should have it's just a lot of these abstractions are just fundamentals built on fundamentals built on fundamentals, and they're just building blocks. And there's just some disconnect with MERN stack tutorials that don't encourage developers to dive lower level, to be curious about how these abstractions work. And so then you get this push of well, a lot of companies are hiring full stack positions right now, and we're not really seeing as many like front-end focus positions or back-end focus positions, which there are a lot. I think a lot of people just have trouble finding them. Um that that again, different videos, I'm not going to expand on that. But next JS has been significantly pushed out to so many junior developers that if you just learn the front end and then you learn React and then you learn next, now you are going to be marketable as a full stack developer. JavaScript, I I want to touch on next in a sec, but JavaScript just keeps evolving into this pattern of abstractions and then eventually serverless and trying to disconnect. It's like JavaScript is kind of just being formed for a lot of indie hackers who don't really care to be good developers. You can, JavaScript can support really good software engineers, but a lot of the tutorials, especially aimed at junior developers, lead them down the wrong path with the wrong mindset to just be comfortable with these abstractions. Just let them in. And so you get a lot of people that now have found this new templated approach. Companies are hiring a lot of full stack developers. Let's learn next. That's full stack, right? You don't know a fucking thing about the back end if you are telling anyone that you are a full stack developer because you can build an application with next. You don't know what the fuck you're talking about. And that is concerning. Because I know a lot of junior developers have this belief and they are following this path of the full stack JavaScript path, and it is failing them. We shouldn't be adopting, like if you're aiming for full stack, and especially back end, we shouldn't be adopting serverless solutions. We should be rolling our own auth. And maybe this is where I'm just gonna start diving into things that most MERN stack tutorials, JavaScript tutorials, don't dive deep into. And you know what? I'm not even gonna start on the back end, I'm gonna start on the front end. By the way, if you are diving deep into Node and you've already built a few things with Express, it might be time to challenge yourself with a more scalable framework, NSJS. It's one of the most popular frameworks for Node, and I personally use it to build my projects. It's one of the reasons why I decided to build a course for it, to get people up to speed with the basics. You can find that course at Scrimba.com. Oh, it's also free. If you use my link in the description to sign up for Scrimba, and you decide to upgrade to the pro plan, which unlocks a ton of different courses, you actually get a discount. Again, I partner with them because they are actually really good at building up junior developers. Check it out. What do you have to lose? Now let's get back to the video. A lot of times you'll just learn HTML, CSS, JavaScript, React, and then eventually Next. Most companies don't use Next, by the way. Actually, I do want to emphasize that. Again, no notes, a little scattered, so I'll go back and forth. But most companies aren't using Next.js. Most companies that are hiring full stack software engineers, they're hiring software engineers with experience. They're hiring real full stack software engineers, not fucking posers, not people who aren't who don't care about being good developers, who are outsourcing a lot of their back-end to serverless solutions, to really just easy abstractions, or even just like outsourcing, like setting up some SDK with superbase and storing data that way, and they kind of provide a really convenient authentication solution. You don't really have to learn authentication. It's companies aren't looking for developers that are going down that path. They're looking for actual good developers that have spread that have solved problems both on the front end and back end over time with their experience. Just because you see more of those positions does not mean you're going to become more marketable by trying to become a full-stack developer. But you're not really learning. So React, you know, it's it's just a library. It's not a full framework. Um, you have to come up with your own architecture. A lot of people will just organize the files by types and call it a day because they're building really simple applications that don't require you to have to organize your app so it's not this chaotic mess in six months. And then no one wants to touch Redux. Sometimes companies do prefer a little bit more of uh they want more debugging options and they want kind of a stricter data flow, and they might even implement something custom similar to Redux, right? Um, a lot of your JavaScript tutorials aren't going over Angular and how Angular does things and how it separates things. No, they just introduce you to the Wild West that is React, where even if you go into different companies, you're just gonna get tons of organizational patterns and it just gets messy with React pretty quickly, unless you bring in 15,000 libraries that are just based off of the preference of the developers on the team. And then a lot of testing, writing automated tests, they're not really pushed in tutorials. They're like, hey, you probably should do this. Here's how you do it. Let's write a test, and then we're gonna move on. Because that's not the main thing. Well, it's not the main thing, but a lot of companies want you to be able to write automated tests, and they want you to know what to test. How the hell do you know what to test if you're not writing tests? How do you know what to test if you don't start ramping up a lot of the automated tests based off of you creating a shitload of bugs that goes out to users, you have unhappy users, and you want to reduce that. That's what automated tests are for. I don't really believe in, I mean, I guess automated tests can help you solidify the requirements of the app and what your functions do. They can also be a bit of documentation, but I think good function names can do that. I think good tickets can do that, good GitHub issues can do that. Like, really, they do tend to prevent bugs down the road, especially for core parts of your application. But what does that even mean? If I'm gonna write automated tests for core parts of my application, what's core? You don't fucking know because you've just seen in the typical MernStack tutorial that you should write tests. Write a few tests. What the fuck does that even mean on the front end? It's way different than the back end, by the way. There are very different testing philosophies on the front end and back end. Now, how the fuck are you gonna know that because Mernstack tutorials don't cover this shit? They really don't. Or they don't enforce it, or junior developers are not given the right mindset to take this stuff seriously. And so a lot of Mernstack tutorials will briefly touch on maybe maybe you should use a CDM, whatever that is, right? A cache of stings. That's cool. Maybe it's like a lot of these things that are actually pretty important. It's like, well, here it is, here's what it is, and you should use it, but here's like the main thing you really should focus on. And so, what do what are you gonna do as a new developer coming in and you're like, man, this is taking a long time and forgetting some things, I gotta focus on certain things. I just you start neglecting all this stuff that matters that when you're hired, they want you to at least be familiar with like how to use a CD and how to store stuff in it, and like how it works and why you want to use it. They want you to be comfortable with automated testing, and you should kind of understand requests and headers, things that you might see if you open up the network tab. But do you really know it? Do you really know a lot of the headers that are used in a lot of your um request cycles and how they change and when they change, why they change, and how each of those specific headers affect things? You really know? No. Because MERN stack tutorials by and large do not go over this stuff. So you have aspiring front end developers that have no fucking idea like what the client is even doing. They just make an API request. I get it, JSON data back, and I've built an app. So is 500 other people that are applying for the same position you are. That's just the front end, and there are actually quite a bit more. I I'm realizing this video is gonna be a long one. It's quite a few more things that I think people are lacking on the front end, but you know, it let's just assume you don't get trapped in the next world and you actually start diving into the back end, and maybe I want to become a back-end software engineer. Like, how many Mernstack tutorials are getting you or courses are getting you to like really practice Docker containerization? And then, like, let's even say we're in the node world, right? Um, what are we gonna use um alongside Docker? Maybe Docker Compose, a lot of apps, but you you know I'm right. If you've you see this in tutorials, they're pushing things like they used to push Heroku. Um, they would push uh now. I think it's like render and railway are like the two easy solutions. Or if you're using a next application, you're gonna use a Vercell solution, just easy hosting solutions. Uh if you're trying to become a backend developer, I I just you're just hopeless if you're trying to like build applications with Next.js. I hope no one is doing that. I know a few people are please stop that. So we're gonna assume that you're not trapped in this next world, right? So now a lot of back-end developers kind of have a node app, but they're encouraged to push it towards um into a uh easy hosting solution, like one of the ones that I just mentioned. But you never get practice with setting it up with a VPS. A lot of MernStack tutorials aren't going heavy into Linux stuff and permission stuff. Like you hosting something on a especially like an unmanaged VPS is just a security nightmare for your application. And then where do you host a database? How do you host it on that server? Do you want to abstract it out to a different server? What the fuck do you do to have these multiple services that you need running for your backend? Because you really haven't practiced containerization yet. You haven't really practiced creating kind of a template with Docker to be able to spin some of this stuff up easily. And then what happens if um you do like maybe you run a managed solution, now you have to go to an unmanaged VPS and uh because you're running low on money, because I'm assuming we're moving away from easy hosting solutions that are usually free. Now we we gotta pay for some shit. You probably don't want to pay a lot, so it's gonna be unmanaged. So, like a lot of aspiring backend developers should be getting really fucking comfortable with Docker. A lot of it it like it makes it so incredibly easy to just create this container full of everything that you need and just get that running on the VPS. But that's just something that you should do for practice. You should get comfortable SSH SSHing into that container. Communicating with a Linux server. Everything with MernStack Tutorials just encourages you to run it locally and install global packages and not really pay attention to the security concerns of npm, and they you don't really know how a package manager even works. So, but as long as we install Node and a package manager, we can run any application, so you don't really give a fuck about security at all. Because it's your personal application. You learned a Mernstack tutorial, and it's good enough, right? But a lot of companies, like you should get comfortable communicating through SSH with a Linux server, but a lot of companies are using cloud hosting now. How often are you seeing tutorials around spitting up an EC2 instance with AWS? One of the most common expectations for aspiring backend developers. What about Google Cloud? It's very different. I don't know about you. I don't like Google APIs. I'm not a fan. I'm not a fan of just setting all that up. Google is a pain in the ass. Um I haven't used AWS. AWS is also like there's a learning curve for sure, but setting up cloud hosting is not easy, and that's an expectation for back-end developers. And so there are different hosting solutions, but do you even know the difference between different servers that you're going to need? Do you want to host a database on the same server? Do you want it on a separate server? Why would you want it on a separate server? Because you can optimize it. But you're not building applications when you were just trying to go quickly through learning to code, trying to follow the Mernstack tutorial. You're not building impressive applications, you're not building complex applications, your applications aren't managing a serious amount of data, so you don't give a shit about any of this efficiency, you don't give a shit about the security. Why should you? I wouldn't. If I'm trying to become a developer as fast as possible, and everything is just promoting a Murnstack tutorial, how am I supposed to know about these things? There's a lot more we can go into. This video is already getting long enough. But here's my big concern about Mernstack tutorials. It's not like the lack of information that you're going to need is it's concerning. It's really concerning. A lot of MernStack tutorials focus you or focus or manipulate you into thinking you're becoming full stack developers when no company is going to want to hire you. You might get a job, especially if you know people, but like the average developer is not going to get a job and go into the MernStack tutorial phase. They're just not. And it's the people that break out of that and start learning different programming languages, ways of doing things, maybe you know, exploring a little bit of system design just to get that familiarity and then maybe trying to implement some of that in your application. Yes, it might be overkill. That's okay. Your personal projects, it's okay for overkill. It's okay for if you are spending eight months on a project for you to focus on, you know, heavy architecture and a heavy framework, um, and then maybe building customizations for that framework. And before you even do that, probably building like a simple version. If you're doing an MVC framework, build a simple version of that MVC framework to really understand what's happening under hood. But this, these kind of things take so much time that you need to go from build just building CRUD applications from building applications, which can kind of take about a year if you're going the full stack route, to expanding it to years of understanding the entire cycle of a web request. The entire cycle and what's happening throughout that entire thing. Get a little bit familiar with DNS stuff. Get a little bit familiar with basic networking stuff. What are protocols? There's just like so many little things about a web request as it goes all the way through, and your server does a bunch of stuff, and then it does whatever it needs to, and it communicates with what it needs to, and it sends that response back. And the way that the client and server communicate under these abstractions is more complicated than you think. You need to be that developer that just says, fuck you, to these MERN stack tutorials and getting comfortable with these abstractions, and you need to dive really deep. But the problem is a lot of these tutorials are teaching the wrong mindset, and it's attracting people who have the mindset of just trying to become a developer as fast as possible. So teach me these abstractions so I can build an application and show a company. I can build an application, but then when I am tested in the interview and my fundamentals are tested, even just with basic DSA questions, I fumble because I don't know what the fuck I'm doing at all. And I am years away from becoming a developer, and that is most of you. You are years away from becoming a developer, and you have no fucking idea. And it's sad because I know a lot of people there are a lot of people that do want to do the right thing and they've just been misled. And I think the problem is a JavaScript ecosystem. It allures you like it's junior friendly, and it is one of the biggest culprits for fucking over junior developers that I have seen. And it's one of the biggest reasons why most junior developers never break into the industry.