I think that's actually internally how VB{A,6,.net} arrays can be handled. Like, not as a collection, but "it's a queue, stack, vector, and map and you can address it as any of those or all of those... Unless you want to just use indices to the shape of your multidimensional array" We used to keep the kids asking those questions in the windows ecosystem where they belong and Microsoft humors their mental model of data structs. Now they're all web devs and JavaScript loads the gun, points it at their feet and cheers them on. That's something C would do, but with consequences.
read this comment and clicked the link to go to the site but trust me coming back and listening to him stretch over each paragraph with his own insights and worldview is something i can't compare and would gladly spend my time over
As a recent CS graduate, the problem is that we're taught the fundamentals purely as theory, and then made to implement them either using frameworks that completely obfuscate them or using some new language or technique to double up on learning time that ultimately makes it so that you're so focused on figuring out how to make anything work that you don't have the headspace to fully grasp the core concept. Either way, those fundamentals fade into the background, it's like it doesn't exist. And since it has no practical application you can see, it's easy to assume that it's just another bit of assorted info that you learn because its what you're supposed to learn, and not because it's useful. There's no connection, so it's just data floating in a void, waiting to be overwritten by the next subject in the textbook. Maybe things were just particularly disjointed for me and my year because everyone was trying to readjust to Covid restrictions and then readjust from Covid restrictions afterwards, but it really felt like in every class I was just being taught a bunch of stuff that had next to nothing to do with each other and would get overwhelmed because I was being told to juggle twenty different things at the same time. And then, after I would leave the class feeling like I didn't learn anything, I would look into it more personally, only to realize that it was all interconnected all along, we were just never told that.
This!! I had the same experience in uni but luckily I have been a professional dev since 2018 while I was in school. I remember clearly a day when I and a friend tried to tell the rest of our class that individual research is very important if you want to make it in IT (we were both working in the industry at the time) but the reaction was antagonistic, everyone was prioritising getting the degree instead of actually learning about the craft. It was sad to see lecturers not emphasise individual learning and students following suit, heartbreaking. Although a good number of us are doing well for ourselves after graduation, the economic realities of post-covid have not been very kind to others.
Anecdotally this is a big problem in education, too many times when I’m doing something, it randomly and suddenly allows me to understand that abstract diagram of colored boxes stacked on top of each other that featured in a lecture years earlier.
I know someone who's newly graduated. The first thing he does when approaching a problem is look for something that already solved it and then building that into his react etc project.
Someone in chat mentioned that they have started to hate abstractions and I do feel same. The more I learn, the less do I want a black box package do something for me.
"black box" is the key to your comment. A Good abstraction is clear and consistent about what it does and how it works. See also Joel on Software's "leaky abstractions" article, or anything by Rich Hickey ( especially "simple made easy")
@@hamm8934 What does that even mean? Anyone can complete tasks (i.e. write code) without excessive abstraction. You can just write with the built in language features. People write code in C all the time.
This really hits for me. I'm 50. When I left school in the late 90s, my experience was mostly C, C++ and VMS pascal in my CS program. I had to learn Java 1.0 at my first job because the company wanted a "web presence". I've been an enterprise Java developer/Web Developer for almost 28 years. When I started learning JS, we called it Ecmascript and I used Netscape documentation to learn it originally. Back then, we didn't have frameworks or libraries. We had to write our own components and functions to do what we wanted. That doesn't mean I want to go back to that, but I think it helps you to understand how the things you use work, at least in a way you could explain how it works conceptually. There are so many things I probably could say but I don't want to sound like some grumpy old man. My advice is if you want to be in this field, you need to have curiosity and a desire to learn new things. If that's not for you, you probably will shortly move onto middle management. In that case, get an MBA as soon as you can. As for me, I'll resist that till the day they take my red stapler from my cold dead hands. 🙂
Similar thing for me but in another domain: I wrote a simple libc from scratch (based on POSIX docs), in order to train myself while learning the intricacies of POSIX. Never got around to completing the whole libc, but it was pretty much functional.
If people ask me where they should start, when learning web development, I tell them don't bother. Not because of some bleak future for developers, but because if you've reached college, and you haven't at least learned some HTML, it's not for you. Because if you didn't have the curiosity and desire to learn by then, and if you have to ask what to start with, it's too late. I've heard the US is running short of dentists, plumbers and veterinarians. You might get your hands wet, but you'll probably make more money.
I thought I'd be okay learning new things, until one day I wasn't. I liked (and still love) what programming was in the 90s; now I barely recognize it. I was always very picky about what I wanted to work with and on and I guess that caught up with me. This did not end up being a life-long career path for me, sadly.
On the back end, do you know how long it took me to realize how important and powerful creating and learning how to use libraries was? I was fully dropped out of college and in my first year of engineering before a lot of the concepts that I knew academically really clicked. One of my biggest gripes with school is the lack of projects that require you to maintain, document and code with others in any meaningful way. If you have a ball of spaghetti, so long as it runs (for depressing values of "run") by midnight on the deadline, you throw the project away and never really learn what only experience and wisdom can teach. I did have one amazing prof, my advisor, who did semesters with a single project and milestone code deadlines. Anyways, my point is, there's nothing shameful about being ignorant. We all are to a degree on many things we do every day. There should be shame in not wanting to cure that ignorance. Either way, remaining willfully ignorant is a bad career move.
I got so annoyed when i wanted to make my own physics for a first game to learn the workings a few years ago. I just saw everyone saying no need, just use prebuilt ones in nost videos and forums i was looking through
"Game Physics Engine Development" by Ian Millington is great. You'll learn a lot if you try to build some physics stuff with that book as your guide. Don't try to build your big physics engine straightaway though; build little demos (guided by the book), play with them, and learn from them. You'll find that there are many different types of physics engines, and you might find that you like another approach over the ones presented in the book (I like the approach presented in "Position Based Dynamics" by Muller et al. with a few modifications for resting contacts). Forget reddit, stackoverflow, and anyplace else where people say "you shouldn't reinvent the wheel."
I've had the same issue it's not just web dev, so many people seem to put more effort into rationalising why they don't need to know something than just learning things.
To be fair, web development with baseline tools is already crazy. There are so many points where “Why?” does not have a technical answer at all, it is just that way because because.
I aegue web should have singe browser engine and html, css and js should have a breaking version every 10 or so years to remove all legacy crap. Being a single brwoswr it should be able to support old pages for a 10 years ( security patches) and not have browser tied to os like windows or ios has ( that should be illegal. When browser goes end of life it is end of life. Install new version
You might enjoy that as a developer, but the 99% of the world who just wants to see the website they've been using for 20+ years work the same way it was working 20+ years ago will not agree with your sentiment. Most people don't actually want websites to change. They get used to what they are using and get frustrated when they have to re-learn it.
This just clicked for me. I never considered that there are actual living programmers who don't know a world other than SPAs. I was so confused when the SPA world got so excited about SSR as though they had just invented something. SSR is all we knew until 2010, starting with Perl/CGI(gulp) in the 90s and moving on to PHP, Python, Java, .Net and Rails. Many of us transitioned to the backend because we couldn't come to terms with adding another whole MVC to what we already considered as just the View. And then the "Just the View" spawned an entire industry and ecosystem so complex that backend devs stared on in bewilderment. Occasionally, a brave soul would cross the chasm and become a full-stack dev, but most of us got left behind. This is why HTMX is such a breath of fresh air. It's like an old song on the radio, triggering a memory of the good old days.
htmx is ugly, you need htmx + vanilla js which is more ugly again, and cant be used to create pwa out of the box, you will need to write the boirplate js for pwa maybe but can htmx syntax become pwa?. svelte is the king, simple, amazing, feature rich that make me dont need to write boirplate vanilla js, compiled to optimized vanilla js
theres a lot to learn on the frontend, don't get all in yourself because you run backend. frontend for ultimate dynamism gets crazy, I get overwhelmed sometimes with the crazy work it takes and you gotta have a good eye for aesthetics which most don't have. the best way to learn about web servers is build them from scratch, some cpp http servers with custom sockets, but yes htmx is great but you can't be super ambitious on dynamism, I tried using hover effects and stuff like that while the server was concurrent processes and it messes the ui because everything is being rendered on the server. you can only use click event triggers, but still such a great lightweight tech. but you can't simply build netflix and modern facebook with it. I love htmx and I hope to use it more in the future. for python devs its just awsome.
How many full stack devs are actually full stack devs though. A lot of people I've seen say they are full stack can hardly write anything backend that isn't a spaghetti mess
@@ricardomartinhodacruz front end dev is not hard. You're drawing pixels and changing divs most of the time. I'm a full stack dev and the stuff I have to do on the back-end is way harder even in trivial projects.
@@СергейГалиуллин-п9ю ? If you're using a component framework to build a SPA Webapp (not a TODO list) it's really not that easy and more than just drawing pixels and changing divs.
Alternate future: We see the rise of functional-style and system-level programming languages In response to the unmanageable amount of bloat that this next generation is introduced with
The DOD already solved the systems-programming language with Ada; it's actually really well-designed and has some really nice features like TASKs as a language-level construct and a GENERIC that can take subprograms, objects, and/or generic packages as parameters.
I think this is good advice. It's important to avoid the "all rockstars want to be footballers and all footballers want to be rockstars". If you work at a lower level you tend to have more vertical complexity (hardware constraints, instruction choice, cache misses, compiler tuning) while at higher levels you have much more lateral complexity (distribution, framework choices and mappings, database models). So folks at lower levels tend to admire those working at higher levels and vice versa. IMHO, you shouldn't get too hung-up on the development chain you're using and where you sit in the "stack" - one level below and one level above will give you good grounding.
4:52 Prime is right about this. I have the same approach as him (I go 2 and 5 levels deeper sometimes). Yet, I am an MD and BA Biochem by training. My extend of CS was Python, data structures and algo, bioinformatics, electronics (C), and thesis (bioinformatics/biochem hybrid). My point is, like prime’s, you don’t necessarily need the vanilla full CS experience if you have this kind of learning mindset. CS does help elevate some aspects of my personal understanding of computer systems but it is neither required nor sufficient to be an outstanding engineer. P.S. as a bonus, you end up using systems better than peers and can pivot between IT, Cybersecurity, traditional development, lead development, and architecture design/systems engineering as needed in your career. Ironically, watching airline crash investigation has done just as much as the CS courses to elevate my programming skills.
@@ReadersOfTheApocalypse Say I start with a React website as the highest level of abstraction. I may go down to DOM manipulation in JS. I might go down to simple html + CSS + very little JS for some things. I might work on the protocol layer and write a ws receiver in the backend. I may write a set of dynamic plug ins to compose an Apache style AGI/API with pipelining in mind. I might work on C++ for the back end. I might look at some trivial optimization cases for this project in compiler explorer to analyze what assembly I am generating or if I can do a better job of packing my structures to maximize cache hits. I sometimes have gone as low as looking at putting together leds and lcd screens on an esp32 to push some message to screen or analyze some LoRa packet. You are right though. There is some form of arbitrary cherry picking of what constitutes a level, but I think prime’s point stands. There is something to be said about increasing your microscope magnification and learning how these pieces and concepts come together to run … wait for it … JavaScript. Whatever you determine to be the next level deeper, there is a whole layer of ideas you can learn about and make you more effective even if realistically you don’t touch it for your day to day.
I started two years ago with the classic PHP + MySQL, did a couple projects, and skipped straight into Laravel, which was extremely fun, but after a couple more projects, I realized that, even though I knew the fundamentals, I didn't know what was happening between PHP and Laravel to make something like an application entry point with a router work. I made my own PHP framework which helped a ton, then went through the same with Vue and JavaScript. Luckily I got hired pretty quickly (yes, Laravel + Vue job) so I can now just code mindlessly until I die.
This is a great idea to understand what is happening under the hood. After nearly 20 years of PHP I still find the odd function I never knew about, or forgot about.
So true. Same reason I quit Laravel. It is so abstracted, and I wanted to know the why underneath. Also, going against convention is hell. I switched to Node JS. It's easier to make your own framework on top of Node JS or express/fastify than it is on top of vanilla PHP. Then I wrote a project in XAMPP stack with raw JS DOM manipulations. That was messy but I appreciated why frameworks like Vue exist. I'm trying to learn Nuxt JS rn but the levels of abstraction are so off-putting. Why must I install most things magically with Nuxt modules? They even removed direct access to the index.html, like wtf. Let me not even mention being locked into Nitro and H3 which insist on doing things their own not-so-intuitive way instead of the widespread Express-like API.
I had a coworker who almost cried when he found out he had to write CSS without using Bootstrap to deal with issues from our customers who were still using IE-10 customers.
One habit I've fallen into is writing without a framework until I end up rolling my own. At that point, I take a step back and ask whether I should be reinventing the wheel or use an existing framework. Nearly always I choose not to use an existing framework but remind myself to KISS and not allow my framework to become too magical. I think a good rule of thumb is if you start preprocessing your code, then you've gone too far.
I just stick with libraries. Frameworks are great when they are the product you want to make. Game engines for a game. VN engines for a VN (shout out to Ren'Py if one wants to make a VN) However, if you want to roll out your own thing, stick to libraries. That's my Motto since 1 year in the industry. I'm counting way more than 3 now.
@@isabellydias2515 Probably meta programming. Like writing your own macros and writing some script to read your self made code before compiling and replacing it with a bunch of boilerplate or implementations so it will compile and run correctly.
I love what you talk about in your streams, here's my issue with it. You are right to point out the issue, but the problem is that is what companies are hiring for. They write 5 years of experience for an entry level role with every new framework imaginable. As a software engineer, you are going not going to get hired if you tell them: " I'm taking my time to learn the basics, for web dev I'm going to learn PHP. " If a company wanted to hire for fundamentals, they would test for fundamentals. They wouldn't test for React, or Next.js or any web dev framework.
I have been on the interview crew for my team for some time now, and while already knowing a framework we use is a factor, I am much more interested in someone who displays they ability to learn new things quickly and has a basic level of problem-solving independence than someone who already has experience.
@@gamechannel1271 This is refreshing to hear, thanks for commenting. I appreciate your team putting the nuance into the skills they are looking for when hiring. Cheers!
The window of abstraction has always shifted from generation to generation. Prime, you and I are similarly aged, I'm sure you recall discussions when you were in your 20's with the 50+ year olds that were telling you about system constraints, having to manage the actual pixels on display, 32mb of memory, etc
JS frameworks made me hate my job as a web developer. I used to be able to get things done and have a feeling of accomplishment, making things for customers. Now my whole day is managing JS dependencies or figuring out why Typescript is giving me an cryptic error message that scrolls 3 times the width for the screen. I didn't make the stack choices to use these bloated infrastructures, but I have to deal with them because of industry group think.
I enjoy the typescript / vue combination for large apps, typescript is absolutely necessary to guarantee a successful codebase refactoring, and Vue greatly simplifies keeping your application in sync with your state. If you're using these technologies for a small simple app that doesn't need the benefits they provide, I can see there being a problem.
@gamechannel1271 Same. In my opinion, Vue is the best popular JS library. TypeScript is awesome when you figure it out but I do agree with OP that some of the errors are just stupidly long and complex, feels like C++ errors sometimes
@@gamechannel1271 Yea I don't think it's feasible to create a complex state app, like a marketplace with advanced filtering, without using React/Vue. WIthout Typescript it's debug hell? So it's a neccessary complexity to dev complex apps.
When you get into a lower level of programming, you start to feel mental pain with every allocation and deep copying of an allocated object. Btw, you will feel physical pain when using dynamic dispatch.
Completely shut down the person who tried to say you can only go a level deeper if you learned CS lol. The reality is there are so many resources out there to learn anything tech related, especially for programming. The issue is the majority of people just handicap themselves with frameworks etc. CS can 100% help you grasp these topics easier, but it doesn't magically bar someone from learning them on their own.
The fact that people think their piece of paper a college gave them instantly gives you all the knowledge you need is most of the problem. You write code that is shared over the internet, and you still haven't figured out that very nearly all of human knowledge has been shared on the internet and is out there for you to consume.
Yeah why are jobs even going after people with degrees they get all demanding and their ego sometimes stops them from being able to accept that they’re wrong sometimes. People will defend things that they spent a ton of money on or got in debt from.
I’m the type of person that benefited from a CS degree. I’m sure part of that was having a solid array of classes with a group of competent professors, but I don’t think I would have had the depth of exposure to how machines work or the breadth of exposure to algorithms and statistics trying to do it on my own. It was also before the internet was this huge amalgamation of information and tutorials. There is a lot of good information that’s free or reasonably priced, but there’s also a swamp of beginner and esoteric information. It’s easy to ignore the fundamentals of CS unless you are deeply curious. Ideally a CS degree can equip you with the tools you need to self-learn as you need to, imo.
I'm sorry but I can't wrap my head around the fact that a web developer doesn't know the concept of http requests. Or it's truly a junior developer, but this is essential knowledge as web developer. Also SPA's are so not a requirement for all use cases, and they are overrated
Lets not sugarcoat it. Nowadays people just pretend to be "frontend devs" just to not write complex code. 20 Years ago a webdev needed the same knowledge of any other software dev, but frameworks on top of frameworks... nowadays a lot of so called "webdevs" spend all day on Figma, don't even ask them to set a basic API.
@@nocturne2172 In fairness, 20 years ago AWS was barely out the door, TH-cam didn't exist, and almost nobody was browsing the internet on a pocketable screen. It's hardly surprising that both frontend and backend have diverged and specialized since. Frankly, if someone can build a convenient, accessible, responsive, good-looking site, that is a rarer skillset than rolling a basic django API - and I'd love to see the average backend dev attempt it. Of course, in the same light, if someone can build a server architecture that scales to millions of concurrent requests, that is a rarer skillset than slapping a few bootstrap buttons on a page and calling it a day. If there are people spending their entire day on Figma touching 0 code, your complaint is with time & capitalism creating that niche, not with the people filling it. Different job, same title - these things change. Calling the other side's job busy work, directly or indirectly, is pure hubris. That being said... Agreed, there are too many damn frameworks.
@@nocturne2172 i met a girl who worked as "web dev" for 3 years at a big corp and only then realized that CSS ≠ [add preprocessor here]. All she knew was their heap of a framework and the basics she barely ever looked at before.
@nocturne2172 Ugh, and so called web designers and 'UX engineers' spend their hours in Figma too, and don't know about flexible type, flexible layouts, or basically anything that modern CSS can do. Don't get me started on the fact that a11y, web standards and performance is part of their job too. If you design for Figma, and not for the browser, you're disconnected.
I’m fuming that there’s someone out there that didn’t have this basic knowledge but still managed to get a job… who the fuck interviewed them? Here I am understanding that in full and I can’t get a simple web dev job in the UK.
Business world. Just want something on the screen to bring in cash or spin up product or process excitement. Engineers are heard only in so far as they are a cash minting unicorn.
Stupid thing is though, all these frameworks, wrappers, libraries and ever increasing stack complexities don't result in faster results. Turn around of features has become so slow, and the endless framework version breaking changes, rewrites and npm dependency fixes are frankly insane, it's so more productive just using plain js or something like phoenix and liveview
This actually explains why I have an instinctual aversion to React's and Laravel's documentation: they make it very hard to go one level deeper. They assume you already know all the abstractions that the topmost abstraction is built on, so you can intuit how the topmost abstraction works just by looking at what it does. Svelte is an example of a documentation that makes it easy to go one level deeper. Not only are docs open about how Svelte abstractions work on a deeper level, their REPL also has functionality to show how transpiling transforms Svelte code into JS.
In comparison to React, Laravel makes it very easy. Just browse the pure PHP implementation of the framework in your project files, it's not like it's compiled or transpiled.
@@Leonhart_93 lol, you mean go to definition in your IDE (that may not even properly work) to find methods that may or may not exist because of all Laravel's magic?
@@devvorb1571 have you looked at the docs? They literally say "don't worry about how it works, here's the concepts you need" and give you basic cookie cutter examples. New React docs are unironically far superior
I'm both amused and irritated when younger web devs get excited about the "NEW" concept of "SSR" (server-side rendering) and related features in modern JS frameworks...Like - "wait - what if, instead, we generate the page on...are you ready? the SERVER"...*mind blown*
When I build personal tools at work, I pretty much only use vanilla js because I generally don't need more than that, even for a simple SPA. Yeah, you don't need React or Vue or whatever to build a simple SPA and your code can be super simple still
Idk tbh I started coding not very long ago and was lucky enough to teach myself and not even be exposed to the whole framework world and I build everything myself (often felt a lot like a hammer that works for everything). It was a great experience and taught me a lot about what's under the hood but I certainly don't mind the conveniences of something like alpine, and htmx. These tools are not revolutionary or anything for me. In fact I could probably build some basic versions of them pretty easily and quickly on my own (it wouldn't be as good but would work for basic functions). I am very much uncomfortable using tools like react or other big frameworks where I know I wouldn't be able to build it myself. I feel knowing that the tool isn't that complex to the point where I can do it on my own is incredibly valuable and makes me a lot more comfortable using it. Ofc I can go back to using vanilla js. It's not more difficult than using those tools, it's just more tedious. I sometimes do that just for fun and sometimes I do it because I need to write something that those tools don't easily cover. Btw everything I said applies to frameworks in all languages and not just js
It seems like there are bunch of people that just dont have an understanding of the "full stack". We can build gates from transistors, ALUs from gates, pentiums from ALUs, slap something Unix-y on it and get to the races. Its a hop skip and jump to get an IP address, build a garbage collector, and respond to an HTTP request from Perl. That gets you to Web 1.0. But from there i think folks think there is some magical quantum leap to get to where we are currently. It's _possible_ to roll your own webgpu in assembler (but god, please dont, unless that is a learning exercise) Im not suggesting we should all go back to only using punchcards. But it seems a lot of folks cant even conceive of doing any useful computation only using punchcards.
Very true. Most devs I've heard call themselves full stack when they know how to use js on the client side and some serverless js system. Very often it's all even hidden behind many layers of abstraction. Very far from the real full stack
I remember using VI... then saying "why use VIM when I have VI?" Then moved on to Sublime Text, Atom, and now VS Code. Fast forward, I see Primeagen saying "I have VIM." I'm waiting for NEOVI, so I can hear him say, "why use NEOVI when I have NEOVIM." ;)
I honestly feel that while you don't HAVE to go "lower", there's real benefits to it. Even if you only have a broad mental model of what's happening behind the curtains, it helps understanding what's happening in front of you. And quite honestly i do feel that the younger gen is being a bit thrown to the wolves straight up. It's like giving them a hammer and nails and saying "this blunt thing hits that pointy thing". Then they try and nail them upside down because they don't know better and might not have the critical thinking skills to think "blunt hits blunt, pointy goes in".
It truly is a failure of the education system. Unsurprising given that education's roots were in creating a workforce capable of factory labor. Even the rare CS program with course-long projects cap out at semester-end. Hardly gives time to learn the first layer, let alone go any lower or learn how to collaborate and maintain legacy code.
I am the younger generation. It has been a LONG journey for me to understand how all these abstractions work. I went down the self study route so it was both easier and harder, depending on the subject.
So glad im not a web developer. I develop operating systems, virtual machines and surrounding low-level systems and I'm so thankful for being in this part of programming.
What language do you work with most? And how long have you been doing it / how did you get into it? I'm sure people will find your answers interesting!
@@stephenvsawyer I have 3 years of experience now, I work with C and Assembly language the most. How I got into OS dev? I just really liked coding in C back when I was trying out different languages in university. So I knew I was gonna be working wherever C is used, which happens to be operating systems and compilers and stuff. The areas where C and assembly are used turned out to be very fun for me. It also turned out to be where most other programmers struggle or are afraid to go, so that made it even more attractive - fewer programmers applying for my jobs. In my new job I start soon, I'll be implementing a highly optimized replacement of the linux kernel's IP and UDP protocols and inject packets directly into the hardware network card via userspace network drivers, allowing packets to completely bypass the linux kernel, in order to boost network throughput for a latency critical system. Assembly language is fun for me because I enjoy learning the hardware architecture of modern CPUs and various ways to optimize software to run faster on said architecture, and a big part of that is reading compiler-generated assembly code and seeing whether it generated the most optimal assembly instructions possible, or not, and possibly change them.
With half a decade in web dev from the start, I so regret not being in this same side. Job market here is atrocious from how saturated is the competition, how insignificant is the remuneration versus the growth and how little does your work reflect upon your own portfolio that you can show to the world - just a bunch of legacy CRM's that I could not find a single f*ck to give about.
@@stephenvsawyer I mainly use C and Assembly language. It's been 3 years since I got my first job after graduating. I got into it because I found C programming to be really fun back when I was trying out different languages as a noob. So I knew I wanted to work in whatever area C is used - that just happened to be operating systems, compilers, embedded, firmware, etc. Another big thing I find really interesting and fascinating is the hardware architecture of modern CPUs and finding ways to optimize software to run faster on said CPUs. This rabbit hole eventually leads you to assembly language and knowing how compilers work, because most of the initial optimizations are gonna be done by the compiler, you just have to know how to use the compiler well to enable it to optimize your code better. A lot of that is reading the assembly instructions your compiler emitted from your source code, and understanding why it emitted them and in that order, and how you can change the instructions and their scheduling to improve performance on modern CPUs.
@@ward7576 I can see how that's true. Web development is an easy field to get into, and one with a lower skill roof, aka how big of an expert you can really become before hitting the endgame, when compared to something like operating systems development or compiler development. Indeed, while many programmers nowadays are complaining of a bad job market and difficulty landing a job, I am happy to report that even though I live in an eastern european country with not that many tech companies and only have 3 years of experience so far, the jobs have been finding me, not me them. I literally have multiple companies trying to convince me why I should go work there. But this is probably because C/assembly developers are a lot rarer than something like web developers.
I went from working on modern cloud only microservices at a private company to bare metal at the government. I hated it at first, everything was dumb and made no sense. I was lost and didn't know how to contribute. I still hate it (mostly because of bureaucracy ), but man I've learned a lot.
I'm curious what "bare metal" means in this context. This may be a language barrier similar to those in the article. Where I'm from, it means running code (often C) directly on the processor(s) with no operating system involved.
@@caseykawamura8718 It looks like you used the term correctly. A bare-metal server is a server that is only used by one tenant. Apparently, bare-metal is used differently in the embedded and the web world.
Everyone should make a web app using a Go server that serves up the HTML. It's surprising how much you can do with this, you can even send up the necessary JavaScript to run buttons, make requests, do whatever you want. You can get A LOT done without a client server and just using a backend. I don't think a lot of people even know this is possible and would never think to use something like this even though it can be super secure and very fast for certain things.
Almost as if web was imagined in such a way that server serves a document, html document styled with cascading style sheets and made interactive with hyperlinks and JavaScript.
I've written the web server for a website in C several times. It's pretty fun. It seems like something not many web devs nowadays even know is possible. I'm an operating systems dev btw.
I was a Web Master back in the days, I agree that helps understanding the whole picture. I'm not sure if young devs today are focused only on NextJS, the good ones will still learn the whole thing, I hope
It's funny because I'm currently 6 months away from getting my degree in Software Dev and I've been taught Assembly, C, Java, HTML, CSS, PHP, JS but none of the modern frameworks. I understand it's important to learn the low-level stuff, but I'm still not ready to get a job anywhere with what I've been taught. The fact I must learn all these modern frameworks now bothers me, because I'm almost 34 and I'm not getting any younger. It's true that now I can look at any of those frameworks and realize it's pretty much all the same inside.
Yeah but Frameworks are like learning a new game. It doesn’t take too long to get the gist of how it works. And your underlying technology/CS knowledge will always be useful.
One of the items you can look at in the Electronics Shop in Under A Killing Moon is a computer. Tex comments "An old 1286 with a super-duper-wowzer-VGA monitor." The game is set in 2042, so the computer in question has probably been sitting unsold for 30 years.
What level of abstraction do you need to take, and what level of abstraction should you start at? I actually know the answer, and I learned it from making a cake. Story Time: I love baking.... I bake cakes and bread and pizza and everything and anything that I want. I love it, and it started when I was starvingly poor in college (for those not in the know, it's just flour and water and an optional pinch of salt in most all cases... flour is almost free and water is more or less free and a pinch of salt is essentially free - psst its free real estate), and it's something I never lost an interest in. One year I was invited to my friends family Christmas party, and I was quickly and unexpectedly tossed into the kitchen to help, they were behind and needed the extra hands - which I don't mind and was happy to help. I was given a box cake mix and told to get that made, and they were in a rush so, without turning my nose up at it too much (being nice and all), I went ahead and just made it, then I went and helped with peeling the potatoes and so on and so forth. I remember getting about a dozen complements on the cake being so good and so moist and on and on... and each time, I just said "yeah, not bad for being made out of boxed cake mix, heh". And with each complement, I got a little more frustrated, but I didn't let it show. When I got home I got to thinking... "grumble grumble... it was just boxed cake mix,... it's the paint by numbers type of baking... there's no real effort... It's not even really baking"... then I stopped and thought about it... what I was doing before is just taking flour and using that... what's the difference between it being in a box or not? Is it really that the difference between a 'real baker' and a 'faker' is just measuring the ingredients yourself? If that's true, then maybe the 'real bakers' would mill their own flour... and even them, they aren't 'real bakers' because they didn't harvest the flour berries, and even them, they are not 'real bakers' because they didn't grow the flour to begin with, and even them they are not 'real bakers' because they didn't selectively breed the crop, and even them they are not 'real bakers' because they didn't create the tools used in growing crops in general, and even them they are not 'real bakers' because they didn't invent the type of tools needed to grow the crops, and even them they are not 'real bakers' because they didn't mine for the minerals needed to make the tools, and even them they are not 'real bakers' because they didn't discover the physics and science behind metallurgy, and so on and so forth... until the only 'real bakers' lived and died in the stone age. In that moment I realized... you should only judge the output upon its quality rather than the technique used to make it. If the cake from a box is good, it doesn't make it better intrinsically if you made it from scratch (aka same ingredients bought from the same store, but just separately). I gave it a big think... and I came up with some basic rules. THERE ARE ONLY FOUR REASONS WHEN TO CARE ABOUT LEVEL OF ABSTRACTION: 1) If you are not able to get the final result you are looking for using your current level of abstraction so you need to go deeper to have more fine control to get a different output. (with the cake analogy, maybe there is a specific type of flour from a specific geographic location that you want to use because of its very distinct and nuanced attributes,... you'll just need to make the cake from scratch, because the boxed cake wont use it - they are using that cheap stuff without a doubt). 2) If there are undesired side effects in the final result (in the cake analogy, maybe you are doing low sodium and the cake mix comes with it included or maybe you want to use less preservatives, etc), you'll have to go deeper to find a solution for that specific problem. 3) If you want to learn how do to it yourself, either for fun or to help mitigate the other two (if you only know how to make a cake from a box, and you don't really want to know what goes into it, then you'll always just know how to make a cake from a box). 4) If it takes more time than you have, it might be worth going up a layer of abstraction (maybe just grabbing cake mix, even though it is slightly more expensive and you don't get to choose exactly which ingredient you want to use, is worth it because it saves you effort and the results are somewhat anticipatable). So, if you're getting results that you want, and there are no poor side effects and no limitations that are holding you back... then there is no shame in that intrinsically. If the results are cruddy, then maybe its time to learn why and how to fix it. Typically there is a tradeoff between 'time'+'effort' vs 'customization'+'performance', when it comes to abstraction... higher the abstraction, the more limitations that are imposed on you but also working within those limitations results in the desired output faster. The moment you demand more than your layer of abstraction allows for, you're going to be losing time and increasing effort, and it is better to just go a layer down where you'll get exactly what you want and usually quicker (rather than a hacky solution at the higher abstraction). Sometimes if the end result is good enough and it takes the least amount of time, it's a good solution. I think the same is true for programming... it's not like your mining the minerals needed for semiconductors, or at least, I don't - maybe I'll get something better if I did, but at the cost of time and effort... if what you make is crummy, you should go a level deeper to understand why and how you can do it even better.... and repeat until you get the desired output. You should land on the layer of abstraction that gets you the result that you need (not the best, but the 'good enough') with the least amount of headache. And that's the law of cake abstraction as applied to software engineering.
This was a fun read man thanks lol. I love your mindset. I really don't interact with programmers at all on any forums because of this very topic. Always a back and forth about who's a "real programmer" and who isn't. Man, who cares if at the end of the day the job's getting done? Like seriously.
That’s a fun way to do it haha :) But network protocols are a whole subject onto itself. And if you’ve never had the curiosity to play around with them and see all what they can do it’s not surprising someone wouldn’t know what’s possible.
Great video! 5:08 "One level deeper is purely learned by motivation" 👍🏽 I remember back in 2002, I was a C++ dev & others were VB Devs on a project. The word optimization came up. One of them said, "What does optimization even mean? My code doesn't do any extra unnecessary stuff." Optimization at the time was about compiler optimization. But they didn't understand what that meant. It means that the high-level language you are writing in can be compiled to better (or worse) processor op codes & the VB devs never had to think at that level so the idea escaped them. Now compiler optimization is so good that few people ever think at that level (nor do they need to) bec they can just let the compiler handle it.
It's funny how SPAs started out as trying to emulate desktop apps in a web browser and now everything anyone wants is a mobile app with a single scrollable view, a hamburger menu and maybe a static toolbar at the bottom, all of which are trivial to do with vanilla everything but instead end up being "rendered" on the client by a 20 MB chunk of JS.
SPA is elevator pitch and jargon specifically coming out of the Facebook camp for react when they copied [functional JavaScript] from ClojureScript. It used to be called AJAX and before that XHR by Microsoft who invented it. That one statement is like 12 years of events. It was a terrible time to be a web-developer but the jobs we worked on would pay $10_000+ an e-commerce full stack site. Now it would cost $500 or less. We can sling websites up in like 2 hours now via templates. But back in the day, animations and customizations and the 8 different web-browsers and WAP mobile phones and all types of crazy devices (like blackberry, symbian, apple, android, windows mobile, macos/safari), ..... all had separate source code for each particular combination. I remember I did one website for $22_000 for a car dealership. It did all the sales stuff and customer cataloging. It wasn't difficult, but the constant tweeking to make it work on all devices and geolocations was insane. There was not one library to rule them all. There was no nodejs. We were raw dogging everything + jquery (and flash). It was literally h311. And I am a computer science contractor for multiple fields. I am glad the browser wars are over.
@@necuz I still remember when they became popular and broke basic browser behaviour like back and forward, opening in new tabs, bookmarks, etc. I still come across sites that do this because they inject a dummy page or two in-between the navigation. As a technique, probably should be illegal
We built a SPA for a site. It actually made development a lot smoother, faster, and less error prone, surprising. Mainly because the previous tech stack was so old that some of the tools needed to work on parts of it didn't even exist anymore. However, we have ran into the classic SEO issue with a SPA. Time to rewrite significant parts of the app... So I guess it's worked really well for us until it didn't.
It's always great to have these high level abstractions that save time and hide everything that's happening underneath until you realize that's the only way you know how to do that thing
My website has no JS. It has XML source files that are run through XSLT every night by a cron job to produce XHTML and it has cascading layers of CSS files. My wife, on the other hand, took the traditional path of geocities website, then art school for graphic design, then teaching herself enough of everything else to do front-end design in JS. She once sat down with me and one of my grad school textbooks to learn what a relational database is on a theory level so she could specify one sufficiently for a backend coworker to build it. ETA: I did eventually learn some JS, but only for an idle game that requires you to program the automation in JS. I'm an information scientist, not a webdev.
That's so quant man, but I bet your website works perfectly well. You might have been a trailblazer because this kind of method has actually become quite popular in recent years for certain kinds of websites. The tools are known as "static site generators". Docusaurus, created by Facebook, is one such tool.
This so much. I'm an EE/Comp E. major and I'm a little bit older than most other students. I realize they have what I call "black box syndrome." I grew up taking apart old PCs, IBM machines (yes creating a PHP/SQL server), etc. and I notice that their only prior experience with technology is like a single button or a touch screen that does everything. It's a MASSIVE hindrance to being able to teach folks how things work if they've only ever dealt with technology through an extremely limited interface. It is also prevalent in more aspects of STEM than just programming and/or webdev. The concept of analog to some folks is ENTIRELY foreign.
@4:50 I mean, if you go to a for-profit or even a non-ABET accredited CS program, it’s a 50/50 gamble if you actually learn the fundamentals of computer science, architecture, memory management, actual implementations of common data structures by hand and pros/cons, etc vs the equivalent of Python at some random boot camp. Some schools are NOT ABET accredited and are amazing, but any school that is means you know exactly what minimum information is taught. You’re also right that it is motivation (as I learned assembly and C/C++ before I was even a teen), but having an accreditation means you KNOW where the line is drawn and that graduate is capable of learning anything higher since they must prove being adept with low-level languages (at least, they used to require it).
Been experiencing same level of shock when working with new coders. The most mental fights I had with juniors is explaining to them that node.js is not the same thing as browser JS. But coming to think about it I believe there is no bad or good starting point or abstraction level from which new developers can start their journey, as long as you direct your passion into it. We old farts climbed through many mind-bending steps and we adopted alright (can’t say we made it through unscathed though hahaha). Html to server language, server language to framework to CMS, JS to Angular / React / JSX, SQL to ORM and so on. If you are passionate about it then no jump is too scary - be it jump up or down.
I've been programming without learning many new things way outside of my comfort zone for 5+ years. These videos give me so much motivation, validation and vibes to go outside my comfort zone and learn so many cool new things. And it all started with HTMX.
Back then, I wrote a whole entertainment site for a theater movie marjeting campaign in pure javascript and css. It was a wild ride but it was absolutely possible. The site included games, animations transitions and audio as loop and oneshots. The frontend used data from a backend and saved data back to it. It wasnt as sophisticated as todays backends but it worked. The animated frontend was able to run in all browsers of that time. It was absolutely worth it in terms of learning. Sure, these days it woukdnt be a project as the effort is nit worth it so finding suvh a project judt fir learning might be a bit difficuilt but still, it would be worth doing it. Agreed.
Video game from scratch isn't comparable to non-framework web dev imo. But both do have the same principal in that you can chop things up into smaller parts... its just the game engine has about 50x+ more parts you need to understand and research. I think everyone should build a game engine. Just a basic 2d tile-based thing that uses 3d assets. The amount of stuff you will learn and understand in other contexts is pretty crazy.
Tbf, if you go far enough low-level, it CAN be like non-framework web dev. Creating a game via using a library like SDL requires you to have at least some level of abstraction, and you can get even lower and just write the entire graphic and audio library yourself. At that of a low level, you are doing library development so that you can create a layer of abstraction to work with. It's like a worse version of non-framework web dev.
2:48 That is one advantages to getting a traditional CS degree from a university. When I was in university, we had to learn assembly and build some basic things with it (randomly generated maze that solves itself, rudimentary USB driver, etc...). Having that understanding of how assembly works really helped to bridge the gap between higher level languages and bare metal. Now I don't think you need to understand assembly to understand Web Dev necessarily, but I think at least a basic understanding of the underlying technologies (hardware, OS, browser, networking...) is essential to properly understand what is going on. I agree with you about it being important to understand at least "1 level deeper"
This is the advantage of being curious about how things work. University just FORCES YOU to learn because you care about graduating, but it's not the only approach.
@@meltygear5955 My case might be a bit different. I was studying business and added a CS minor because I was so fascinated by it. It actually brought my GPA down considerably (very worth it in the long run).
Oh, this brings back memories playing around the LAMP or WAMP (Windows-version of LAMP) stack. Wow, the disconnect is too much. Either the higher ups in management or the common folk do not understand what CS is, it's not all about programming and the examples presented are limited to Javascript. The level of abstraction is insane, you don't need that many layers. I remember, learning Javascript which was limited to web browsers, that was vanilla JS.
I leaned basic font end web development in my teens in the 90s. In 2010, as a challenge, I tried to develop a video game on my hacked PSP in Lua language. I learned a lot about low level coding, garbage collection and memory management. I went on to get some nice well paid web development contracts and never felt out of my depth. Always stretch yourself. Also, understanding Vanilla js makes me appreciate Solid js sooo much.
There are some people whose entire experience is to write code but they absolutely don’t know how the code is being executed on the machine or their only understanding is what framework tell them I have seen backend developer who don’t know how to find the IP address of his computer and he does not know I can connect to his server within internal network …. I have seen backend developer who don’t know how to deploy code to the web server and absolutely don’t know how it works to serve the end user. They only live within the IDE and follow the instructions. I have seen J2EE developer who can’t understand web server can be just a standalone executable. I have seen J2EE developer who think cloud is just like J2EE, you can have EJB to other system deployed on the cloud etc.
Thats how today's now lot of software guys are. I have become frustrated that this lot dont seem to to care about the hardware they code on. What is the need to know about hardware they retort back.
I've seen 'web developers' link fonts and reference images on their local machines, having no idea that the published site doesn't display either. I've seen this in 1999, and I've seen it in 2024.
Yea, given that I am in my 50s and started my BS program in the early 90s, the amount I was required to learn (algo/ds, programming languages, operating systems, compilers, databases, computer architecture, theory, software engineering and so on) compared to what is required now is hard to imagine. Many of those classes I had to take are now graduate level or optional for seniors. Yes, I had Structure and Interpretation of Computer Programs as a textbook for a required class. As part of me understands the change as the cost of entry in to the field is next to nothing. When I started, you needed access to very expensive resources in a computer lab. You had to show that you wanted to learn. You don't get to goof off on twenty thousand dollar workstations. Another part is just stunned how little anybody actually knows as a new programmer, given how much *easier* it is to explore all this stuff. But, where you draw the line is hard. There are so many more areas to be in. Yes, web programming is one. I can't see a CS program not having an elective on JS, TS and common web frameworks given the demand. Same with data sciences. I do know this. It is clear that some people have too narrow a view of the art of programming and the cargo cults around some web frameworks and languages doesn't help that at all.
I built my first Web app in Django and Python before discovering JS and react. I think it’s also a good idea to understand different ways to do the same thing (build a web app). It really solidifies your understanding
When I do interviews, I just wanna make sure that the person we’re hiring can actually make what we want. I don’t care if they know algorithms or computer science questions I just wanna know if they can get the product made. Obviously it has to be performant, but computers are so fast these days And especially if it’s a compiled language they’re gonna perform just fine and in the code review is where I teach them the error of their ways.
Yep. That's how we got here. People focus on learning just the things that print money, and ignore everything else. Remind this to yourself the next time a video game forces you to upgrade your GPU because the upper management wanted the devs to ship fast, when "optimization" means "force the consumer to buy newer hardware".
Knowing at least one level of abstraction deeper than the level you are typically working in is a great strategy that I have used throughout my career as well and that has worked out really well. You get the right understanding that many of your colleagues often lack. That is very useful when you design your systems and debugging complex problems. Sometimes it is of course good to dive even deeper. Always try to follow your curiosity if you have the time.
As I am typing this you mentioned "One level deeper". 100% agree on this. Don't need to build it but at least understand how it works. I have come across many devs who only work in their bubble and can't explain what's going on behind the scenes and end up finding it difficult to debug issues. Call them "Finger pointers" 😅
1:20 You started webdev with PHP and SQL? I started learning to make a server a few years ago by learning html and some http lib in some language I already knew. Or maybe I already parsed the headers myself.
I expect from a developer a solid understanding of the world he or she is working in. Hence the OS (more than one!), networking (more than just ping), hardware (more than the name of the latest MacBook model) and the database should be well known territory. I‘ve seen it more than once, that a fullstack ‚dev‘ was only able to develop an app using their preferred techstack. Anything outside the comfort zone, let alone debugging were simply out of question.
the problem is, the wider your field if wirk is , the less conpetent you will be. just because it is impossible to know everything when you try to be good in x-different technologies. i think you can Maximum master 1 technology in 10 years to be an expert. so in yiur whole life career, you can be naximum expert in maybe 3 technologies. i guess full stack developers will always have a lack of knowledge in some parts, because the range of knowledge is just too big. as a backend or frontend dev of just 1 technology, it is much more easy to know all details
I‘m talking about foundations. A dev cannot rely on the availability of a certain environment for the next 20yrs. Back in the 90s and early 2000s many of the business developers (RPG, COBOL) on midrange systems realized that they are on a dead track. Never had a formal CS training, learned programming on the job. A number of them ended up unemployed.
It took me an embarrassingly long time to realize first paragraph was about navigating to different urls without persist logs and not some issue/bug/security by obscurity. Man, how do you webdev without persist logs
long story short: you want to learn how shit actually works, and not have next js or some other framework do everything for you. too much abstraction is absolutely a thing. i am a web dev, but i've been working for a while at a big project with perl CGI scripts on a huuge existing codebase. really did help me broaden my view.
I feel like there is an interesting analogy, comparing the early days of js to the use of "no code" AI. There were so many people just cutting and pasting js code with no understanding at all. Now we are going to have these apps that nobody knows how they work for a similar reason.
"Started with LAMP" - oh that's precious. I started with cgi-bin. :) There is a reason to go a level deeper besides just intellectual curiosity. When things go wrong, you are in much better shape if you understand what's going on under the abstraction. Learn how memory management and garbage collection works, then use those abstractions instead of doing all that work yourself. I was happy to get Visual Basic forms after trying to write Windows apps using C++ and MFC/ATL. Those of you who used WPF or WinUI know that understanding Win32 and MFC helps you when you want to do something outside of the WPF abstraction or when things just aren't quite working right. It's the same with web frameworks. If you understand how JS works, it makes it easier to debug your react code.
1:55 I agree on this a lot, because I did try to use and learn from the LAMP stack back when I was in middle school. But I learnt a few more things (mostly comparison based) when I tried more stuff like the MERN stack for example. I think it's true that I'd never really figured out certain things in the first place, if I would have directly gone with some course, which already went through multiple revisions to remove mistakes (parts where the actual learning likely happened). Great videos man. Relatable and understandable.
@theprimagen thanks for having overcome the habit of screaming and backpaddle for 2 minutes because you made a 0.5 second spelling error. much more enjoyable than older content now.
I had a question recently. When developing a system for sending e-mails. Stack Rails, Sidekiq and Redis. What does the most amount of work? And yeah. My answer was that the backend does. Fetching so formulating the request to the db, the db is doing its thing with searching the db, then it's giving you a result loading it up to memory. Then sidekiq does the serializatiation of the answer to hash and storing it into redis with jobid. This was the correct answer, but I was interviewed by a guy with half my experience. Those job interviews are crazy nowadays.
singe page applications broke the internet. You can't just link to a page on a SPA with a URL. You can't use the back button. There is no document to share. It's not a page. It's a black box of bullshit.
SPAs can and do work with linked URLs, back buttons, documents, etc. Hell, most decent SPAs I've seen, write to your browser history. And it is still quite literally a page. A page made out of the current state, you are SEEING it. Making websites myself, I would call a framework kinda crap if it couldn't offer any of those.
@@raremc1620 So you broke the entire framework of the internet that is gifted to you by default, and then hack a bunch of shit together to recreate it and call it a feature.
As a non-web dev, I feel very disconnected from most of the content on this channel - everything is JS-centric, and I never use JS (well, except that one time I needed to make a very small custom web app, and for me it was faster to do it from scratch in pure JS than to even figure out what stupid 'framework' I should use - same thing with the python backend that is essentially just the go-between between HTTP and a small DB - even Flask was 100x more framework than was needed). Also having interviewed many people, and asked fundamental CS questions about data structures and complexity / big Oh, no one seems to know any of that anymore at all. It's basically just "I can glue python libraries together [using AI generated code]". Just after I left, I found out that everyone else on my team was basically using AI to write 95% of 'their' code, even though the official company policy was that using AI was forbidden for confidentiality / trade secret reasons.
You are experiencing what actually matters to the people who fund the software industry - getting stuff done for cheap & fast. Knowing how to optimize is a noble task, but if it's code running on someone else's computer where your business is not paying for CPU time, it's not in budget.
When I was a kiddo, the web wasn't mainstream. People used a variety of home computers like the C64 or none at all and rare were the ones who also had a modem at home; modems which were used to connect to a variety of dial-in BBS operated by random people.
Not in an a11y manner. Using CSS for interactivity breaks a lot of functionality for blind and otherwise disabled users. The classic example being using it to show navigation dropdowns on hover.
Eh this reminds me a bit of those 'strong men create easy times/weak men/hard times' nonsense. I don't know precisely how the transport layer works and I couldn't implement it for the life of me. But I do know it's there; I think that's kind of the rub here. You don't have to create a toy framework to realize there is a world outside react...
definitely has been a great struggle for me being introduced from a classmate to nextjs. I wish they had never shown me that framework, but slowly, I'm learning actual web dev
Same here! None of these JS frameworks never seemed like they made things better. I think I spent more time setting it all up than doing anything else with them.
Ehhh, kinda. Maybe it's the argument for an idealized CS program that not enough places implement properly. You always certainly learn a lot, but learn the real fundamentals? It's kind of hard to say, not just due to incompetence in designing the program (though I've seen that guest hand) but also because what is actually important to know, and what's cool but a waste of time, is certainly up for debate. I think if you had a 4 year training program for software engineering that mixed some general education with bottom up useful skills focused on giving you practical coding proficiency as well as a diverse understanding of the discipline, that would obviously be amazing. How could 4+ dedicated years of learning not be valuable to you right? But like 80-90% of my time in college was spent learning things that never have been and never will be useful to me professionally.
Exactly what I was thinking but I don't know if every CS degree actually goes into detail that way. Mine happened to but even there I've seen things get easier over time. When I started everyone had to use C and C++ for algorithms and data structures classes. Now they teach it in python!? To me, you can't really dive that deep into things with a language like python. It's just too easy to use the language to help out as opposed to C where you most likely have to make your own stuff for things to work.
A cs degree makes it easier to learn, but it doesn't keep someone from learning it on their own which i believe was his point. And as @ShootingUtah said, not every curriculum is the same. Some CS curriculum are far better than others. The average CS student from Carnell could likely run circles around the average CS student from NC State. Regardless, this isn't a career where after you get your degree you're done learning. You will learn your whole career. It doesn't stop there. In 10 years, the amount of resources available to learn anything tech related will be extremely vast. Especially with MOOCs becoming far more common.
I disagree with college degree for most things. Problem here is someone will start a react dev job and think they now it. You should over time spend time learning new things. Pay was great for so long most people could have worked 32h + 8h study a week and we still have shit software. I check from time to time on my old project and they still fail at basics when it comes to page load times. People are just lazy. School does not fix that. Or ego as well
"It's good that an authority figure needlessly redressed you because it should toughen you up." Cool beans. Let's see if that engenders a good workplace culture when those students enter the workforce. 👍 God help anyone who works under a manager with that attitude.
My gf is in finance, she is a excel wizard and is learning how to "program" is really cool to see how much more into documentation "data science" shit is compared to my web dev Journey back in the day.
My lukewarm take is that modern frameworks and abstractions are fine, so long as you actually understand whatever tradeoffs you're making. My hot take is that teaching JS, Python, LISP, or any other dynamically typed language to a beginner is a horrible practice, as the fundamentals are far too abstracted away and the scope of the language can often be far too vast to produce a strong foundational experience. I don't care if it's a faster feedback loop for a learner when that "learner" swiftly becomes a comfortable, uncurious person that cares more about productivity than quality.
i had to write some c/c++ for the first time in about a decade when a client needed me to translate their c++/CLI code to process-invoke. i gotta say working this close to the cpu was refreshing after years of writing on top of layers of abstractions. i felt a certain level of alarm that almost no one else there (a company with a literal machine as their product) apart from me knew how to manually menage memory.
I started programming about the same time as the IBM PC was first introduced. Wrote BASIC on a Tandy PC-1 Pocket Computer, then on an Atari 400. Then at college, I took some electronics and programming classes, and we learned 8080/8085 ASM in the Digital Computer Electronics course. Had to drop the class due to health issues, and when I retook it, we were on 8086/8088 ASM. Back then, we knew about the number of clock cycles each ASM command took. Writing code for a framework is so far separated from those days, it seems like a completely different world. Personally, I don't use frameworks, and really don't like using these packages that abstract away the boilerplate that is required to make "magic happen." I mostly work with PHP, JavaScript and MySQL, with a little bash tossed in when I need it.
Ok unironcially I do use vanilla js (i.e. No frameworks, libraries, not even stuff like jquery) but at the end of the day I just need some funky preprocessing for my static site and don't care for any frameworking
For me I believe in iterative construction of knowledge by human experts. For every field out there, whether it be web development, game development and all that, if you actually are learning and building on top of existing knowledgeable, there will be experts who learned it all, the useful stuff, the useless stuff, the stuff one layer, two layers, three layers, whatever. They know what is needed and required to do a job. If you write web, you know what to teach. Well, the competent ones. The problem is because many people are self-taught, and many unqualified teachers exist on the internet, and in the job market. Also people genuinely don't know how to learn. We don't really teach that, and some people are very bad at learning.
@@fulconandroadcone9488 like 3 if you're talking about ones that people use en masse: webkit, blink, and gecko. I'm pretty sure no one uses trident anymore (hopefully)
I remember doing development outside of sql server for the first time with javascript in like 2009 (ajax) and looking at it now everything is so different (sql server stayed pretty much the same). On my first consulting gig I wanted to import a third party library into a solution and the amount of red tape would make your head spin. Today import padleft and no one bats an eye.
Next year CS question: What prompt do you give to get the code to pop an array element off the end of an array.
Lmaoo "Uhhh is it append"
"How do you assign a variable in React v69"
Terrifying
Why code at all? Just pass AI's response to eval function of JavaScript and then you can use prompts to render your page.
I think that's actually internally how VB{A,6,.net} arrays can be handled. Like, not as a collection, but "it's a queue, stack, vector, and map and you can address it as any of those or all of those... Unless you want to just use indices to the shape of your multidimensional array"
We used to keep the kids asking those questions in the windows ecosystem where they belong and Microsoft humors their mental model of data structs. Now they're all web devs and JavaScript loads the gun, points it at their feet and cheers them on. That's something C would do, but with consequences.
hey babe, the guy that stretches 2 minutes of content to 20 minutes posted again. i ll be back in 20 minutes
Description > click link > read > save 90% of video length
Theo? xd
Perfect to time a long Pomodoro break!
Yeah, but you can't get as much ad revenue on shorts, unless you post A LOT of shorts and they get A LOT of watchtime, lol! xP
read this comment and clicked the link to go to the site but trust me coming back and listening to him stretch over each paragraph with his own insights and worldview is something i can't compare and would gladly spend my time over
As a recent CS graduate, the problem is that we're taught the fundamentals purely as theory, and then made to implement them either using frameworks that completely obfuscate them or using some new language or technique to double up on learning time that ultimately makes it so that you're so focused on figuring out how to make anything work that you don't have the headspace to fully grasp the core concept. Either way, those fundamentals fade into the background, it's like it doesn't exist. And since it has no practical application you can see, it's easy to assume that it's just another bit of assorted info that you learn because its what you're supposed to learn, and not because it's useful. There's no connection, so it's just data floating in a void, waiting to be overwritten by the next subject in the textbook.
Maybe things were just particularly disjointed for me and my year because everyone was trying to readjust to Covid restrictions and then readjust from Covid restrictions afterwards, but it really felt like in every class I was just being taught a bunch of stuff that had next to nothing to do with each other and would get overwhelmed because I was being told to juggle twenty different things at the same time. And then, after I would leave the class feeling like I didn't learn anything, I would look into it more personally, only to realize that it was all interconnected all along, we were just never told that.
This!! I had the same experience in uni but luckily I have been a professional dev since 2018 while I was in school. I remember clearly a day when I and a friend tried to tell the rest of our class that individual research is very important if you want to make it in IT (we were both working in the industry at the time) but the reaction was antagonistic, everyone was prioritising getting the degree instead of actually learning about the craft. It was sad to see lecturers not emphasise individual learning and students following suit, heartbreaking. Although a good number of us are doing well for ourselves after graduation, the economic realities of post-covid have not been very kind to others.
Anecdotally this is a big problem in education, too many times when I’m doing something, it randomly and suddenly allows me to understand that abstract diagram of colored boxes stacked on top of each other that featured in a lecture years earlier.
I know someone who's newly graduated. The first thing he does when approaching a problem is look for something that already solved it and then building that into his react etc project.
Luckily my uni wasn't like that. We learnt assembly. We wrote code in it. But we did that after learning the basics of Java
Every CS student‘s experience seems to be this. I am about to graduate in May and feel the same way.
It took me an embarrassingly long time to realize that an API endpoint is just a webpage that writes JSON instead of HTML.
Doesn't even have to be JSON
Or is a webpage just an API endpoint that returns HTML instead of JSON?
literally all that happens is you hit a specific address and get some data. What you do with it depends on your browser + the headers in the data.
Dude it can return xml or even binary (although parsing it in javascript its nightmare (I think))
You blew my mind
Someone in chat mentioned that they have started to hate abstractions and I do feel same. The more I learn, the less do I want a black box package do something for me.
"black box" is the key to your comment. A Good abstraction is clear and consistent about what it does and how it works. See also Joel on Software's "leaky abstractions" article, or anything by Rich Hickey ( especially "simple made easy")
If you avoid abstractions, you will have no leverage to complete a task. The goal is to learn the fundamental and how to effectively use abstractions.
@@hamm8934 What does that even mean? Anyone can complete tasks (i.e. write code) without excessive abstraction. You can just write with the built in language features. People write code in C all the time.
@@hamm8934 Depending on the scope of the task, the abstractions may be a hindrance rather than assistance.
It's up to you to learn what's underneath (which, most never do simply because they aren't curious).
This really hits for me. I'm 50. When I left school in the late 90s, my experience was mostly C, C++ and VMS pascal in my CS program. I had to learn Java 1.0 at my first job because the company wanted a "web presence". I've been an enterprise Java developer/Web Developer for almost 28 years. When I started learning JS, we called it Ecmascript and I used Netscape documentation to learn it originally. Back then, we didn't have frameworks or libraries. We had to write our own components and functions to do what we wanted. That doesn't mean I want to go back to that, but I think it helps you to understand how the things you use work, at least in a way you could explain how it works conceptually.
There are so many things I probably could say but I don't want to sound like some grumpy old man. My advice is if you want to be in this field, you need to have curiosity and a desire to learn new things. If that's not for you, you probably will shortly move onto middle management. In that case, get an MBA as soon as you can. As for me, I'll resist that till the day they take my red stapler from my cold dead hands. 🙂
ECMAScript is the correct name for js
Similar thing for me but in another domain: I wrote a simple libc from scratch (based on POSIX docs), in order to train myself while learning the intricacies of POSIX.
Never got around to completing the whole libc, but it was pretty much functional.
If people ask me where they should start, when learning web development, I tell them don't bother. Not because of some bleak future for developers, but because if you've reached college, and you haven't at least learned some HTML, it's not for you.
Because if you didn't have the curiosity and desire to learn by then, and if you have to ask what to start with, it's too late.
I've heard the US is running short of dentists, plumbers and veterinarians. You might get your hands wet, but you'll probably make more money.
I thought I'd be okay learning new things, until one day I wasn't. I liked (and still love) what programming was in the 90s; now I barely recognize it. I was always very picky about what I wanted to work with and on and I guess that caught up with me. This did not end up being a life-long career path for me, sadly.
MBAs are useless if you're not in the ivy league. They are primarily for networking, nothing you learn in them is actually that difficult.
On the back end, do you know how long it took me to realize how important and powerful creating and learning how to use libraries was? I was fully dropped out of college and in my first year of engineering before a lot of the concepts that I knew academically really clicked.
One of my biggest gripes with school is the lack of projects that require you to maintain, document and code with others in any meaningful way. If you have a ball of spaghetti, so long as it runs (for depressing values of "run") by midnight on the deadline, you throw the project away and never really learn what only experience and wisdom can teach. I did have one amazing prof, my advisor, who did semesters with a single project and milestone code deadlines.
Anyways, my point is, there's nothing shameful about being ignorant. We all are to a degree on many things we do every day. There should be shame in not wanting to cure that ignorance. Either way, remaining willfully ignorant is a bad career move.
That is one problem with school it happens only one semester and each semester is discreet from the others.
I got so annoyed when i wanted to make my own physics for a first game to learn the workings a few years ago.
I just saw everyone saying no need, just use prebuilt ones in nost videos and forums i was looking through
"Game Physics Engine Development" by Ian Millington is great. You'll learn a lot if you try to build some physics stuff with that book as your guide. Don't try to build your big physics engine straightaway though; build little demos (guided by the book), play with them, and learn from them. You'll find that there are many different types of physics engines, and you might find that you like another approach over the ones presented in the book (I like the approach presented in "Position Based Dynamics" by Muller et al. with a few modifications for resting contacts). Forget reddit, stackoverflow, and anyplace else where people say "you shouldn't reinvent the wheel."
I've had the same issue it's not just web dev, so many people seem to put more effort into rationalising why they don't need to know something than just learning things.
To be fair, web development with baseline tools is already crazy. There are so many points where “Why?” does not have a technical answer at all, it is just that way because because.
I aegue web should have singe browser engine and html, css and js should have a breaking version every 10 or so years to remove all legacy crap. Being a single brwoswr it should be able to support old pages for a 10 years ( security patches) and not have browser tied to os like windows or ios has ( that should be illegal. When browser goes end of life it is end of life. Install new version
@@fulconandroadcone9488Edge is already chrome under the hood, so we are most of the way there
@@fulconandroadcone9488 Laughable.
You might enjoy that as a developer, but the 99% of the world who just wants to see the website they've been using for 20+ years work the same way it was working 20+ years ago will not agree with your sentiment. Most people don't actually want websites to change. They get used to what they are using and get frustrated when they have to re-learn it.
lol it doesnt have an answer because you don't know about it. not because there isn't a answer.
This just clicked for me. I never considered that there are actual living programmers who don't know a world other than SPAs. I was so confused when the SPA world got so excited about SSR as though they had just invented something. SSR is all we knew until 2010, starting with Perl/CGI(gulp) in the 90s and moving on to PHP, Python, Java, .Net and Rails.
Many of us transitioned to the backend because we couldn't come to terms with adding another whole MVC to what we already considered as just the View. And then the "Just the View" spawned an entire industry and ecosystem so complex that backend devs stared on in bewilderment. Occasionally, a brave soul would cross the chasm and become a full-stack dev, but most of us got left behind.
This is why HTMX is such a breath of fresh air. It's like an old song on the radio, triggering a memory of the good old days.
htmx is ugly, you need htmx + vanilla js which is more ugly again, and cant be used to create pwa out of the box, you will need to write the boirplate js for pwa maybe but can htmx syntax become pwa?. svelte is the king, simple, amazing, feature rich that make me dont need to write boirplate vanilla js, compiled to optimized vanilla js
theres a lot to learn on the frontend, don't get all in yourself because you run backend. frontend for ultimate dynamism gets crazy, I get overwhelmed sometimes with the crazy work it takes and you gotta have a good eye for aesthetics which most don't have. the best way to learn about web servers is build them from scratch, some cpp http servers with custom sockets, but yes htmx is great but you can't be super ambitious on dynamism, I tried using hover effects and stuff like that while the server was concurrent processes and it messes the ui because everything is being rendered on the server. you can only use click event triggers, but still such a great lightweight tech. but you can't simply build netflix and modern facebook with it. I love htmx and I hope to use it more in the future. for python devs its just awsome.
How many full stack devs are actually full stack devs though. A lot of people I've seen say they are full stack can hardly write anything backend that isn't a spaghetti mess
@@ricardomartinhodacruz front end dev is not hard. You're drawing pixels and changing divs most of the time. I'm a full stack dev and the stuff I have to do on the back-end is way harder even in trivial projects.
@@СергейГалиуллин-п9ю ? If you're using a component framework to build a SPA Webapp (not a TODO list) it's really not that easy and more than just drawing pixels and changing divs.
Alternate future: We see the rise of functional-style and system-level programming languages In response to the unmanageable amount of bloat that this next generation is introduced with
The DOD already solved the systems-programming language with Ada; it's actually really well-designed and has some really nice features like TASKs as a language-level construct and a GENERIC that can take subprograms, objects, and/or generic packages as parameters.
ZIIGGGGG
Erlang / Elixir / LiveView FTW
The moment you enter the project and see whole ngRx boilerplate for CRUD operations without a single thing done with fetched data :D
I think this is good advice. It's important to avoid the "all rockstars want to be footballers and all footballers want to be rockstars". If you work at a lower level you tend to have more vertical complexity (hardware constraints, instruction choice, cache misses, compiler tuning) while at higher levels you have much more lateral complexity (distribution, framework choices and mappings, database models). So folks at lower levels tend to admire those working at higher levels and vice versa. IMHO, you shouldn't get too hung-up on the development chain you're using and where you sit in the "stack" - one level below and one level above will give you good grounding.
Well said!
Exactly this
4:52 Prime is right about this. I have the same approach as him (I go 2 and 5 levels deeper sometimes). Yet, I am an MD and BA Biochem by training. My extend of CS was Python, data structures and algo, bioinformatics, electronics (C), and thesis (bioinformatics/biochem hybrid). My point is, like prime’s, you don’t necessarily need the vanilla full CS experience if you have this kind of learning mindset. CS does help elevate some aspects of my personal understanding of computer systems but it is neither required nor sufficient to be an outstanding engineer.
P.S. as a bonus, you end up using systems better than peers and can pivot between IT, Cybersecurity, traditional development, lead development, and architecture design/systems engineering as needed in your career. Ironically, watching airline crash investigation has done just as much as the CS courses to elevate my programming skills.
How do you define a "level"?
I'd expect to encounter something like electrical engineering 5 levels below JS...
@@ReadersOfTheApocalypse Say I start with a React website as the highest level of abstraction. I may go down to DOM manipulation in JS. I might go down to simple html + CSS + very little JS for some things. I might work on the protocol layer and write a ws receiver in the backend. I may write a set of dynamic plug ins to compose an Apache style AGI/API with pipelining in mind. I might work on C++ for the back end. I might look at some trivial optimization cases for this project in compiler explorer to analyze what assembly I am generating or if I can do a better job of packing my structures to maximize cache hits. I sometimes have gone as low as looking at putting together leds and lcd screens on an esp32 to push some message to screen or analyze some LoRa packet.
You are right though. There is some form of arbitrary cherry picking of what constitutes a level, but I think prime’s point stands. There is something to be said about increasing your microscope magnification and learning how these pieces and concepts come together to run … wait for it … JavaScript.
Whatever you determine to be the next level deeper, there is a whole layer of ideas you can learn about and make you more effective even if realistically you don’t touch it for your day to day.
I started two years ago with the classic PHP + MySQL, did a couple projects, and skipped straight into Laravel, which was extremely fun, but after a couple more projects, I realized that, even though I knew the fundamentals, I didn't know what was happening between PHP and Laravel to make something like an application entry point with a router work. I made my own PHP framework which helped a ton, then went through the same with Vue and JavaScript.
Luckily I got hired pretty quickly (yes, Laravel + Vue job) so I can now just code mindlessly until I die.
This is a great idea to understand what is happening under the hood. After nearly 20 years of PHP I still find the odd function I never knew about, or forgot about.
So true. Same reason I quit Laravel. It is so abstracted, and I wanted to know the why underneath. Also, going against convention is hell. I switched to Node JS. It's easier to make your own framework on top of Node JS or express/fastify than it is on top of vanilla PHP. Then I wrote a project in XAMPP stack with raw JS DOM manipulations. That was messy but I appreciated why frameworks like Vue exist.
I'm trying to learn Nuxt JS rn but the levels of abstraction are so off-putting. Why must I install most things magically with Nuxt modules? They even removed direct access to the index.html, like wtf. Let me not even mention being locked into Nitro and H3 which insist on doing things their own not-so-intuitive way instead of the widespread Express-like API.
I had a coworker who almost cried when he found out he had to write CSS without using Bootstrap to deal with issues from our customers who were still using IE-10 customers.
Understandable. It's awful. Clearfix and floats all over the place.
i would cry if i had to use Bootstrap honestly
I would cry if i had to develop for customers using IE-10
How CSS is easy
using bootstrap ain't that hard
One habit I've fallen into is writing without a framework until I end up rolling my own. At that point, I take a step back and ask whether I should be reinventing the wheel or use an existing framework. Nearly always I choose not to use an existing framework but remind myself to KISS and not allow my framework to become too magical. I think a good rule of thumb is if you start preprocessing your code, then you've gone too far.
I just stick with libraries. Frameworks are great when they are the product you want to make.
Game engines for a game.
VN engines for a VN (shout out to Ren'Py if one wants to make a VN)
However, if you want to roll out your own thing, stick to libraries. That's my Motto since 1 year in the industry. I'm counting way more than 3 now.
I'm sorry, what do you mean with preprocessing your code?
@@isabellydias2515 By preprocessing I mean using a script or otherwise to generate the actual source code from skeleton code.
@@isabellydias2515 Probably meta programming. Like writing your own macros and writing some script to read your self made code before compiling and replacing it with a bunch of boilerplate or implementations so it will compile and run correctly.
@@lyingcat9022 yeah makes sense lol, thanks!
I love what you talk about in your streams, here's my issue with it. You are right to point out the issue, but the problem is that is what companies are hiring for. They write 5 years of experience for an entry level role with every new framework imaginable. As a software engineer, you are going not going to get hired if you tell them: " I'm taking my time to learn the basics, for web dev I'm going to learn PHP. " If a company wanted to hire for fundamentals, they would test for fundamentals. They wouldn't test for React, or Next.js or any web dev framework.
I have been on the interview crew for my team for some time now, and while already knowing a framework we use is a factor, I am much more interested in someone who displays they ability to learn new things quickly and has a basic level of problem-solving independence than someone who already has experience.
@@gamechannel1271 This is refreshing to hear, thanks for commenting. I appreciate your team putting the nuance into the skills they are looking for when hiring. Cheers!
this isn't true at all. I've never though about what framework someone knows when hiring
The window of abstraction has always shifted from generation to generation.
Prime, you and I are similarly aged, I'm sure you recall discussions when you were in your 20's with the 50+ year olds that were telling you about system constraints, having to manage the actual pixels on display, 32mb of memory, etc
True, but sometimes one may wonder when the house of cards will come crashing down.
JS frameworks made me hate my job as a web developer. I used to be able to get things done and have a feeling of accomplishment, making things for customers. Now my whole day is managing JS dependencies or figuring out why Typescript is giving me an cryptic error message that scrolls 3 times the width for the screen. I didn't make the stack choices to use these bloated infrastructures, but I have to deal with them because of industry group think.
I enjoy the typescript / vue combination for large apps, typescript is absolutely necessary to guarantee a successful codebase refactoring, and Vue greatly simplifies keeping your application in sync with your state. If you're using these technologies for a small simple app that doesn't need the benefits they provide, I can see there being a problem.
@@gamechannel1271 While I love ts, it is not necessary. Type annotations get you the exact same result. Ask me how I know :'(
@gamechannel1271 Same. In my opinion, Vue is the best popular JS library. TypeScript is awesome when you figure it out but I do agree with OP that some of the errors are just stupidly long and complex, feels like C++ errors sometimes
@@gamechannel1271 Yea I don't think it's feasible to create a complex state app, like a marketplace with advanced filtering, without using React/Vue. WIthout Typescript it's debug hell? So it's a neccessary complexity to dev complex apps.
I know this isn’t the point but as an aside.. for typescript errors in vscode I use an extension called Pretty Typescript Errors. Changed my life
When you get into a lower level of programming, you start to feel mental pain with every allocation and deep copying of an allocated object. Btw, you will feel physical pain when using dynamic dispatch.
Take the pills, Jeff.
@@bullpup1337 not those disgusting dynamically typed pills! Let me tell you, they are coming for me.
@@bullpup1337 ddint expect a lienhwa qingwen ref here lol
Bruh I thought I was alone on this.
Every 'virtual' in C++ or 'dyn' in Rust feels sooo bad
Completely shut down the person who tried to say you can only go a level deeper if you learned CS lol. The reality is there are so many resources out there to learn anything tech related, especially for programming. The issue is the majority of people just handicap themselves with frameworks etc.
CS can 100% help you grasp these topics easier, but it doesn't magically bar someone from learning them on their own.
The fact that people think their piece of paper a college gave them instantly gives you all the knowledge you need is most of the problem. You write code that is shared over the internet, and you still haven't figured out that very nearly all of human knowledge has been shared on the internet and is out there for you to consume.
@@Trae4kThe paper is meant to prove that you have the knowledge or thought process needed to get the knowledge.
If you don't, it's just fraudulent.
all that CS taught me is that i need to learn everything myself
Yeah why are jobs even going after people with degrees they get all demanding and their ego sometimes stops them from being able to accept that they’re wrong sometimes. People will defend things that they spent a ton of money on or got in debt from.
I’m the type of person that benefited from a CS degree. I’m sure part of that was having a solid array of classes with a group of competent professors, but I don’t think I would have had the depth of exposure to how machines work or the breadth of exposure to algorithms and statistics trying to do it on my own.
It was also before the internet was this huge amalgamation of information and tutorials. There is a lot of good information that’s free or reasonably priced, but there’s also a swamp of beginner and esoteric information. It’s easy to ignore the fundamentals of CS unless you are deeply curious. Ideally a CS degree can equip you with the tools you need to self-learn as you need to, imo.
I'm sorry but I can't wrap my head around the fact that a web developer doesn't know the concept of http requests. Or it's truly a junior developer, but this is essential knowledge as web developer.
Also SPA's are so not a requirement for all use cases, and they are overrated
Lets not sugarcoat it. Nowadays people just pretend to be "frontend devs" just to not write complex code. 20 Years ago a webdev needed the same knowledge of any other software dev, but frameworks on top of frameworks... nowadays a lot of so called "webdevs" spend all day on Figma, don't even ask them to set a basic API.
@@nocturne2172 In fairness, 20 years ago AWS was barely out the door, TH-cam didn't exist, and almost nobody was browsing the internet on a pocketable screen. It's hardly surprising that both frontend and backend have diverged and specialized since. Frankly, if someone can build a convenient, accessible, responsive, good-looking site, that is a rarer skillset than rolling a basic django API - and I'd love to see the average backend dev attempt it. Of course, in the same light, if someone can build a server architecture that scales to millions of concurrent requests, that is a rarer skillset than slapping a few bootstrap buttons on a page and calling it a day.
If there are people spending their entire day on Figma touching 0 code, your complaint is with time & capitalism creating that niche, not with the people filling it. Different job, same title - these things change. Calling the other side's job busy work, directly or indirectly, is pure hubris.
That being said... Agreed, there are too many damn frameworks.
@@nocturne2172 i met a girl who worked as "web dev" for 3 years at a big corp and only then realized that CSS ≠ [add preprocessor here].
All she knew was their heap of a framework and the basics she barely ever looked at before.
@nocturne2172 Ugh, and so called web designers and 'UX engineers' spend their hours in Figma too, and don't know about flexible type, flexible layouts, or basically anything that modern CSS can do. Don't get me started on the fact that a11y, web standards and performance is part of their job too. If you design for Figma, and not for the browser, you're disconnected.
I’m fuming that there’s someone out there that didn’t have this basic knowledge but still managed to get a job… who the fuck interviewed them?
Here I am understanding that in full and I can’t get a simple web dev job in the UK.
Business world. Just want something on the screen to bring in cash or spin up product or process excitement. Engineers are heard only in so far as they are a cash minting unicorn.
Stupid thing is though, all these frameworks, wrappers, libraries and ever increasing stack complexities don't result in faster results. Turn around of features has become so slow, and the endless framework version breaking changes, rewrites and npm dependency fixes are frankly insane, it's so more productive just using plain js or something like phoenix and liveview
This actually explains why I have an instinctual aversion to React's and Laravel's documentation: they make it very hard to go one level deeper.
They assume you already know all the abstractions that the topmost abstraction is built on, so you can intuit how the topmost abstraction works just by looking at what it does.
Svelte is an example of a documentation that makes it easy to go one level deeper. Not only are docs open about how Svelte abstractions work on a deeper level, their REPL also has functionality to show how transpiling transforms Svelte code into JS.
React I get but how the hell don't you think laravel makes it not brutally easy to go a level deeper?
to be fair, the new React docs solve a lot of these issues
In comparison to React, Laravel makes it very easy. Just browse the pure PHP implementation of the framework in your project files, it's not like it's compiled or transpiled.
@@Leonhart_93 lol, you mean go to definition in your IDE (that may not even properly work) to find methods that may or may not exist because of all Laravel's magic?
@@devvorb1571 have you looked at the docs? They literally say "don't worry about how it works, here's the concepts you need" and give you basic cookie cutter examples.
New React docs are unironically far superior
the line is at the electrons, you don't have to mess with quarks...
I'm both amused and irritated when younger web devs get excited about the "NEW" concept of "SSR" (server-side rendering) and related features in modern JS frameworks...Like - "wait - what if, instead, we generate the page on...are you ready? the SERVER"...*mind blown*
9:00 This reminds me, everytime I go again to OS development...
Everytime I come back to the project, I understand more and more.
When I build personal tools at work, I pretty much only use vanilla js because I generally don't need more than that, even for a simple SPA. Yeah, you don't need React or Vue or whatever to build a simple SPA and your code can be super simple still
If you try to say this to a front end dev today, they will probably try to npm install vanilla.
😂😂😂😂😂😂😂😂😂@@georgehelyar
@@georgehelyargood one 👍
@@georgehelyar😂😂
Idk tbh I started coding not very long ago and was lucky enough to teach myself and not even be exposed to the whole framework world and I build everything myself (often felt a lot like a hammer that works for everything). It was a great experience and taught me a lot about what's under the hood but I certainly don't mind the conveniences of something like alpine, and htmx. These tools are not revolutionary or anything for me. In fact I could probably build some basic versions of them pretty easily and quickly on my own (it wouldn't be as good but would work for basic functions). I am very much uncomfortable using tools like react or other big frameworks where I know I wouldn't be able to build it myself. I feel knowing that the tool isn't that complex to the point where I can do it on my own is incredibly valuable and makes me a lot more comfortable using it. Ofc I can go back to using vanilla js. It's not more difficult than using those tools, it's just more tedious. I sometimes do that just for fun and sometimes I do it because I need to write something that those tools don't easily cover. Btw everything I said applies to frameworks in all languages and not just js
It seems like there are bunch of people that just dont have an understanding of the "full stack".
We can build gates from transistors, ALUs from gates, pentiums from ALUs, slap something Unix-y on it and get to the races. Its a hop skip and jump to get an IP address, build a garbage collector, and respond to an HTTP request from Perl. That gets you to Web 1.0.
But from there i think folks think there is some magical quantum leap to get to where we are currently. It's _possible_ to roll your own webgpu in assembler (but god, please dont, unless that is a learning exercise)
Im not suggesting we should all go back to only using punchcards. But it seems a lot of folks cant even conceive of doing any useful computation only using punchcards.
Very true. Most devs I've heard call themselves full stack when they know how to use js on the client side and some serverless js system. Very often it's all even hidden behind many layers of abstraction. Very far from the real full stack
I agree, we shouldn't go back to punchcards. We must banish the thinking machines instead.
@@kaelon9170 Fear, and JS, is the mind killer
I remember using VI... then saying "why use VIM when I have VI?" Then moved on to Sublime Text, Atom, and now VS Code. Fast forward, I see Primeagen saying "I have VIM." I'm waiting for NEOVI, so I can hear him say, "why use NEOVI when I have NEOVIM." ;)
Why use VI when you have ed/ex?
@ I did have to use Ed once (legitimately). But (jokingly) found it too powerful and productive.
For 1 April, Prime should showcase Neoed.
I honestly feel that while you don't HAVE to go "lower", there's real benefits to it. Even if you only have a broad mental model of what's happening behind the curtains, it helps understanding what's happening in front of you. And quite honestly i do feel that the younger gen is being a bit thrown to the wolves straight up. It's like giving them a hammer and nails and saying "this blunt thing hits that pointy thing". Then they try and nail them upside down because they don't know better and might not have the critical thinking skills to think "blunt hits blunt, pointy goes in".
It truly is a failure of the education system. Unsurprising given that education's roots were in creating a workforce capable of factory labor. Even the rare CS program with course-long projects cap out at semester-end. Hardly gives time to learn the first layer, let alone go any lower or learn how to collaborate and maintain legacy code.
I am the younger generation. It has been a LONG journey for me to understand how all these abstractions work. I went down the self study route so it was both easier and harder, depending on the subject.
So glad im not a web developer. I develop operating systems, virtual machines and surrounding low-level systems and I'm so thankful for being in this part of programming.
What language do you work with most? And how long have you been doing it / how did you get into it? I'm sure people will find your answers interesting!
@@stephenvsawyer I have 3 years of experience now, I work with C and Assembly language the most. How I got into OS dev? I just really liked coding in C back when I was trying out different languages in university. So I knew I was gonna be working wherever C is used, which happens to be operating systems and compilers and stuff. The areas where C and assembly are used turned out to be very fun for me. It also turned out to be where most other programmers struggle or are afraid to go, so that made it even more attractive - fewer programmers applying for my jobs. In my new job I start soon, I'll be implementing a highly optimized replacement of the linux kernel's IP and UDP protocols and inject packets directly into the hardware network card via userspace network drivers, allowing packets to completely bypass the linux kernel, in order to boost network throughput for a latency critical system. Assembly language is fun for me because I enjoy learning the hardware architecture of modern CPUs and various ways to optimize software to run faster on said architecture, and a big part of that is reading compiler-generated assembly code and seeing whether it generated the most optimal assembly instructions possible, or not, and possibly change them.
With half a decade in web dev from the start, I so regret not being in this same side. Job market here is atrocious from how saturated is the competition, how insignificant is the remuneration versus the growth and how little does your work reflect upon your own portfolio that you can show to the world - just a bunch of legacy CRM's that I could not find a single f*ck to give about.
@@stephenvsawyer I mainly use C and Assembly language. It's been 3 years since I got my first job after graduating. I got into it because I found C programming to be really fun back when I was trying out different languages as a noob. So I knew I wanted to work in whatever area C is used - that just happened to be operating systems, compilers, embedded, firmware, etc. Another big thing I find really interesting and fascinating is the hardware architecture of modern CPUs and finding ways to optimize software to run faster on said CPUs. This rabbit hole eventually leads you to assembly language and knowing how compilers work, because most of the initial optimizations are gonna be done by the compiler, you just have to know how to use the compiler well to enable it to optimize your code better. A lot of that is reading the assembly instructions your compiler emitted from your source code, and understanding why it emitted them and in that order, and how you can change the instructions and their scheduling to improve performance on modern CPUs.
@@ward7576 I can see how that's true. Web development is an easy field to get into, and one with a lower skill roof, aka how big of an expert you can really become before hitting the endgame, when compared to something like operating systems development or compiler development. Indeed, while many programmers nowadays are complaining of a bad job market and difficulty landing a job, I am happy to report that even though I live in an eastern european country with not that many tech companies and only have 3 years of experience so far, the jobs have been finding me, not me them. I literally have multiple companies trying to convince me why I should go work there. But this is probably because C/assembly developers are a lot rarer than something like web developers.
I went from working on modern cloud only microservices at a private company to bare metal at the government. I hated it at first, everything was dumb and made no sense. I was lost and didn't know how to contribute. I still hate it (mostly because of bureaucracy ), but man I've learned a lot.
I'm curious what "bare metal" means in this context. This may be a language barrier similar to those in the article.
Where I'm from, it means running code (often C) directly on the processor(s) with no operating system involved.
@ maybe I misused the term. We own all of our hardware and do not use cloud providers.
@@caseykawamura8718 It looks like you used the term correctly. A bare-metal server is a server that is only used by one tenant. Apparently, bare-metal is used differently in the embedded and the web world.
Everyone should make a web app using a Go server that serves up the HTML. It's surprising how much you can do with this, you can even send up the necessary JavaScript to run buttons, make requests, do whatever you want. You can get A LOT done without a client server and just using a backend. I don't think a lot of people even know this is possible and would never think to use something like this even though it can be super secure and very fast for certain things.
Go is cringe. Use an actual language
Almost as if web was imagined in such a way that server serves a document, html document styled with cascading style sheets and made interactive with hyperlinks and JavaScript.
I've written the web server for a website in C several times. It's pretty fun. It seems like something not many web devs nowadays even know is possible. I'm an operating systems dev btw.
cringe the code will be very ugly, and every click needs reloading
@@my_online_logs ok kiddo
I was a Web Master back in the days, I agree that helps understanding the whole picture. I'm not sure if young devs today are focused only on NextJS, the good ones will still learn the whole thing, I hope
You can still be a webmaster today. Especially if the email address is aliased to your inbox 😂
It's funny because I'm currently 6 months away from getting my degree in Software Dev and I've been taught Assembly, C, Java, HTML, CSS, PHP, JS but none of the modern frameworks. I understand it's important to learn the low-level stuff, but I'm still not ready to get a job anywhere with what I've been taught. The fact I must learn all these modern frameworks now bothers me, because I'm almost 34 and I'm not getting any younger. It's true that now I can look at any of those frameworks and realize it's pretty much all the same inside.
Yeah but Frameworks are like learning a new game. It doesn’t take too long to get the gist of how it works. And your underlying technology/CS knowledge will always be useful.
"An eighty twenty eighty six." Oh Prime, you youngster.
that made my ears bleed
One of the items you can look at in the Electronics Shop in Under A Killing Moon is a computer. Tex comments "An old 1286 with a super-duper-wowzer-VGA monitor." The game is set in 2042, so the computer in question has probably been sitting unsold for 30 years.
@@Roxor128 "Available in EGA, VGA, MCGA, PGA, and Ta-ra-ra-boomGA".
What level of abstraction do you need to take, and what level of abstraction should you start at?
I actually know the answer, and I learned it from making a cake.
Story Time:
I love baking.... I bake cakes and bread and pizza and everything and anything that I want. I love it, and it started when I was starvingly poor in college (for those not in the know, it's just flour and water and an optional pinch of salt in most all cases... flour is almost free and water is more or less free and a pinch of salt is essentially free - psst its free real estate), and it's something I never lost an interest in. One year I was invited to my friends family Christmas party, and I was quickly and unexpectedly tossed into the kitchen to help, they were behind and needed the extra hands - which I don't mind and was happy to help. I was given a box cake mix and told to get that made, and they were in a rush so, without turning my nose up at it too much (being nice and all), I went ahead and just made it, then I went and helped with peeling the potatoes and so on and so forth. I remember getting about a dozen complements on the cake being so good and so moist and on and on... and each time, I just said "yeah, not bad for being made out of boxed cake mix, heh". And with each complement, I got a little more frustrated, but I didn't let it show. When I got home I got to thinking... "grumble grumble... it was just boxed cake mix,... it's the paint by numbers type of baking... there's no real effort... It's not even really baking"... then I stopped and thought about it... what I was doing before is just taking flour and using that... what's the difference between it being in a box or not? Is it really that the difference between a 'real baker' and a 'faker' is just measuring the ingredients yourself? If that's true, then maybe the 'real bakers' would mill their own flour... and even them, they aren't 'real bakers' because they didn't harvest the flour berries, and even them, they are not 'real bakers' because they didn't grow the flour to begin with, and even them they are not 'real bakers' because they didn't selectively breed the crop, and even them they are not 'real bakers' because they didn't create the tools used in growing crops in general, and even them they are not 'real bakers' because they didn't invent the type of tools needed to grow the crops, and even them they are not 'real bakers' because they didn't mine for the minerals needed to make the tools, and even them they are not 'real bakers' because they didn't discover the physics and science behind metallurgy, and so on and so forth... until the only 'real bakers' lived and died in the stone age. In that moment I realized... you should only judge the output upon its quality rather than the technique used to make it. If the cake from a box is good, it doesn't make it better intrinsically if you made it from scratch (aka same ingredients bought from the same store, but just separately).
I gave it a big think... and I came up with some basic rules.
THERE ARE ONLY FOUR REASONS WHEN TO CARE ABOUT LEVEL OF ABSTRACTION:
1) If you are not able to get the final result you are looking for using your current level of abstraction so you need to go deeper to have more fine control to get a different output. (with the cake analogy, maybe there is a specific type of flour from a specific geographic location that you want to use because of its very distinct and nuanced attributes,... you'll just need to make the cake from scratch, because the boxed cake wont use it - they are using that cheap stuff without a doubt).
2) If there are undesired side effects in the final result (in the cake analogy, maybe you are doing low sodium and the cake mix comes with it included or maybe you want to use less preservatives, etc), you'll have to go deeper to find a solution for that specific problem.
3) If you want to learn how do to it yourself, either for fun or to help mitigate the other two (if you only know how to make a cake from a box, and you don't really want to know what goes into it, then you'll always just know how to make a cake from a box).
4) If it takes more time than you have, it might be worth going up a layer of abstraction (maybe just grabbing cake mix, even though it is slightly more expensive and you don't get to choose exactly which ingredient you want to use, is worth it because it saves you effort and the results are somewhat anticipatable).
So, if you're getting results that you want, and there are no poor side effects and no limitations that are holding you back... then there is no shame in that intrinsically. If the results are cruddy, then maybe its time to learn why and how to fix it.
Typically there is a tradeoff between 'time'+'effort' vs 'customization'+'performance', when it comes to abstraction... higher the abstraction, the more limitations that are imposed on you but also working within those limitations results in the desired output faster. The moment you demand more than your layer of abstraction allows for, you're going to be losing time and increasing effort, and it is better to just go a layer down where you'll get exactly what you want and usually quicker (rather than a hacky solution at the higher abstraction). Sometimes if the end result is good enough and it takes the least amount of time, it's a good solution.
I think the same is true for programming... it's not like your mining the minerals needed for semiconductors, or at least, I don't - maybe I'll get something better if I did, but at the cost of time and effort... if what you make is crummy, you should go a level deeper to understand why and how you can do it even better.... and repeat until you get the desired output. You should land on the layer of abstraction that gets you the result that you need (not the best, but the 'good enough') with the least amount of headache.
And that's the law of cake abstraction as applied to software engineering.
Was scrolling hoping to find a comment like this to confirm my view, finally
This was 100% worth the read lol
This was a fun read man thanks lol. I love your mindset. I really don't interact with programmers at all on any forums because of this very topic. Always a back and forth about who's a "real programmer" and who isn't. Man, who cares if at the end of the day the job's getting done? Like seriously.
my abstraction level is not reading all that bs and skipping
@@ricardomartinhodacruz now you're think'n with portals
I had colleagues who couldn't believe that a HTTP GET response could be a file in binary form. They base64 encoded the file and dumped into JSON.
That’s a fun way to do it haha :) But network protocols are a whole subject onto itself. And if you’ve never had the curiosity to play around with them and see all what they can do it’s not surprising someone wouldn’t know what’s possible.
Great video! 5:08 "One level deeper is purely learned by motivation" 👍🏽 I remember back in 2002, I was a C++ dev & others were VB Devs on a project. The word optimization came up. One of them said, "What does optimization even mean? My code doesn't do any extra unnecessary stuff." Optimization at the time was about compiler optimization. But they didn't understand what that meant. It means that the high-level language you are writing in can be compiled to better (or worse) processor op codes & the VB devs never had to think at that level so the idea escaped them. Now compiler optimization is so good that few people ever think at that level (nor do they need to) bec they can just let the compiler handle it.
SPAs are genuinely a mistake for the majority of platforms
It's funny how SPAs started out as trying to emulate desktop apps in a web browser and now everything anyone wants is a mobile app with a single scrollable view, a hamburger menu and maybe a static toolbar at the bottom, all of which are trivial to do with vanilla everything but instead end up being "rendered" on the client by a 20 MB chunk of JS.
@@necuz believe it or not, there actually are other types of apps.
SPA is elevator pitch and jargon specifically coming out of the Facebook camp for react when they copied [functional JavaScript] from ClojureScript. It used to be called AJAX and before that XHR by Microsoft who invented it. That one statement is like 12 years of events. It was a terrible time to be a web-developer but the jobs we worked on would pay $10_000+ an e-commerce full stack site. Now it would cost $500 or less. We can sling websites up in like 2 hours now via templates. But back in the day, animations and customizations and the 8 different web-browsers and WAP mobile phones and all types of crazy devices (like blackberry, symbian, apple, android, windows mobile, macos/safari), ..... all had separate source code for each particular combination. I remember I did one website for $22_000 for a car dealership. It did all the sales stuff and customer cataloging. It wasn't difficult, but the constant tweeking to make it work on all devices and geolocations was insane. There was not one library to rule them all. There was no nodejs. We were raw dogging everything + jquery (and flash). It was literally h311. And I am a computer science contractor for multiple fields. I am glad the browser wars are over.
@@necuz I still remember when they became popular and broke basic browser behaviour like back and forward, opening in new tabs, bookmarks, etc.
I still come across sites that do this because they inject a dummy page or two in-between the navigation.
As a technique, probably should be illegal
We built a SPA for a site. It actually made development a lot smoother, faster, and less error prone, surprising. Mainly because the previous tech stack was so old that some of the tools needed to work on parts of it didn't even exist anymore.
However, we have ran into the classic SEO issue with a SPA. Time to rewrite significant parts of the app... So I guess it's worked really well for us until it didn't.
It's always great to have these high level abstractions that save time and hide everything that's happening underneath until you realize that's the only way you know how to do that thing
My website has no JS. It has XML source files that are run through XSLT every night by a cron job to produce XHTML and it has cascading layers of CSS files.
My wife, on the other hand, took the traditional path of geocities website, then art school for graphic design, then teaching herself enough of everything else to do front-end design in JS. She once sat down with me and one of my grad school textbooks to learn what a relational database is on a theory level so she could specify one sufficiently for a backend coworker to build it.
ETA: I did eventually learn some JS, but only for an idle game that requires you to program the automation in JS. I'm an information scientist, not a webdev.
Ok boomer
Cool story.
XHTML 😢
That's so quant man, but I bet your website works perfectly well. You might have been a trailblazer because this kind of method has actually become quite popular in recent years for certain kinds of websites. The tools are known as "static site generators". Docusaurus, created by Facebook, is one such tool.
Bro this is sad.
This so much. I'm an EE/Comp E. major and I'm a little bit older than most other students. I realize they have what I call "black box syndrome." I grew up taking apart old PCs, IBM machines (yes creating a PHP/SQL server), etc. and I notice that their only prior experience with technology is like a single button or a touch screen that does everything. It's a MASSIVE hindrance to being able to teach folks how things work if they've only ever dealt with technology through an extremely limited interface. It is also prevalent in more aspects of STEM than just programming and/or webdev. The concept of analog to some folks is ENTIRELY foreign.
@4:50 I mean, if you go to a for-profit or even a non-ABET accredited CS program, it’s a 50/50 gamble if you actually learn the fundamentals of computer science, architecture, memory management, actual implementations of common data structures by hand and pros/cons, etc vs the equivalent of Python at some random boot camp. Some schools are NOT ABET accredited and are amazing, but any school that is means you know exactly what minimum information is taught. You’re also right that it is motivation (as I learned assembly and C/C++ before I was even a teen), but having an accreditation means you KNOW where the line is drawn and that graduate is capable of learning anything higher since they must prove being adept with low-level languages (at least, they used to require it).
Been experiencing same level of shock when working with new coders.
The most mental fights I had with juniors is explaining to them that node.js is not the same thing as browser JS.
But coming to think about it I believe there is no bad or good starting point or abstraction level from which new developers can start their journey, as long as you direct your passion into it.
We old farts climbed through many mind-bending steps and we adopted alright (can’t say we made it through unscathed though hahaha).
Html to server language, server language to framework to CMS, JS to Angular / React / JSX, SQL to ORM and so on.
If you are passionate about it then no jump is too scary - be it jump up or down.
I've been programming without learning many new things way outside of my comfort zone for 5+ years. These videos give me so much motivation, validation and vibes to go outside my comfort zone and learn so many cool new things. And it all started with HTMX.
Back then, I wrote a whole entertainment site for a theater movie marjeting campaign in pure javascript and css. It was a wild ride but it was absolutely possible. The site included games, animations transitions and audio as loop and oneshots. The frontend used data from a backend and saved data back to it. It wasnt as sophisticated as todays backends but it worked. The animated frontend was able to run in all browsers of that time. It was absolutely worth it in terms of learning. Sure, these days it woukdnt be a project as the effort is nit worth it so finding suvh a project judt fir learning might be a bit difficuilt but still, it would be worth doing it. Agreed.
Video game from scratch isn't comparable to non-framework web dev imo. But both do have the same principal in that you can chop things up into smaller parts... its just the game engine has about 50x+ more parts you need to understand and research.
I think everyone should build a game engine. Just a basic 2d tile-based thing that uses 3d assets. The amount of stuff you will learn and understand in other contexts is pretty crazy.
Tbf, if you go far enough low-level, it CAN be like non-framework web dev. Creating a game via using a library like SDL requires you to have at least some level of abstraction, and you can get even lower and just write the entire graphic and audio library yourself. At that of a low level, you are doing library development so that you can create a layer of abstraction to work with. It's like a worse version of non-framework web dev.
2:48 That is one advantages to getting a traditional CS degree from a university. When I was in university, we had to learn assembly and build some basic things with it (randomly generated maze that solves itself, rudimentary USB driver, etc...). Having that understanding of how assembly works really helped to bridge the gap between higher level languages and bare metal. Now I don't think you need to understand assembly to understand Web Dev necessarily, but I think at least a basic understanding of the underlying technologies (hardware, OS, browser, networking...) is essential to properly understand what is going on. I agree with you about it being important to understand at least "1 level deeper"
This is the advantage of being curious about how things work. University just FORCES YOU to learn because you care about graduating, but it's not the only approach.
@@meltygear5955 My case might be a bit different. I was studying business and added a CS minor because I was so fascinated by it. It actually brought my GPA down considerably (very worth it in the long run).
Wait--people don't use XAMPP anymore????
Oh, this brings back memories playing around the LAMP or WAMP (Windows-version of LAMP) stack. Wow, the disconnect is too much. Either the higher ups in management or the common folk do not understand what CS is, it's not all about programming and the examples presented are limited to Javascript. The level of abstraction is insane, you don't need that many layers. I remember, learning Javascript which was limited to web browsers, that was vanilla JS.
I would thought the article was exaggerating, but I experienced an Junior React dev be confused by a for loop.
I leaned basic font end web development in my teens in the 90s. In 2010, as a challenge, I tried to develop a video game on my hacked PSP in Lua language. I learned a lot about low level coding, garbage collection and memory management. I went on to get some nice well paid web development contracts and never felt out of my depth. Always stretch yourself.
Also, understanding Vanilla js makes me appreciate Solid js sooo much.
LAMP is silent hero of the world
3:28 my university hasn’t drawn the line, we are learning everything from the raw materials xD
There are some people whose entire experience is to write code but they absolutely don’t know how the code is being executed on the machine or their only understanding is what framework tell them
I have seen backend developer who don’t know how to find the IP address of his computer and he does not know I can connect to his server within internal network ….
I have seen backend developer who don’t know how to deploy code to the web server and absolutely don’t know how it works to serve the end user. They only live within the IDE and follow the instructions.
I have seen J2EE developer who can’t understand web server can be just a standalone executable.
I have seen J2EE developer who think cloud is just like J2EE, you can have EJB to other system deployed on the cloud etc.
Thats how today's now lot of software guys are. I have become frustrated that this lot dont seem to to care about the hardware they code on. What is the need to know about hardware they retort back.
I've seen 'web developers' link fonts and reference images on their local machines, having no idea that the published site doesn't display either.
I've seen this in 1999, and I've seen it in 2024.
Yea, given that I am in my 50s and started my BS program in the early 90s, the amount I was required to learn (algo/ds, programming languages, operating systems, compilers, databases, computer architecture, theory, software engineering and so on) compared to what is required now is hard to imagine. Many of those classes I had to take are now graduate level or optional for seniors. Yes, I had Structure and Interpretation of Computer Programs as a textbook for a required class.
As part of me understands the change as the cost of entry in to the field is next to nothing. When I started, you needed access to very expensive resources in a computer lab. You had to show that you wanted to learn. You don't get to goof off on twenty thousand dollar workstations.
Another part is just stunned how little anybody actually knows as a new programmer, given how much *easier* it is to explore all this stuff.
But, where you draw the line is hard. There are so many more areas to be in. Yes, web programming is one. I can't see a CS program not having an elective on JS, TS and common web frameworks given the demand. Same with data sciences.
I do know this. It is clear that some people have too narrow a view of the art of programming and the cargo cults around some web frameworks and languages doesn't help that at all.
0:20 one other option would be probably doing everything through a websocket, or just not make it a SPA
I built my first Web app in Django and Python before discovering JS and react. I think it’s also a good idea to understand different ways to do the same thing (build a web app). It really solidifies your understanding
When I do interviews, I just wanna make sure that the person we’re hiring can actually make what we want. I don’t care if they know algorithms or computer science questions I just wanna know if they can get the product made. Obviously it has to be performant, but computers are so fast these days And especially if it’s a compiled language they’re gonna perform just fine and in the code review is where I teach them the error of their ways.
Yep. That's how we got here. People focus on learning just the things that print money, and ignore everything else. Remind this to yourself the next time a video game forces you to upgrade your GPU because the upper management wanted the devs to ship fast, when "optimization" means "force the consumer to buy newer hardware".
@ I don’t work in the video game industry. That’s the worst industry to work in.
Knowing at least one level of abstraction deeper than the level you are typically working in is a great strategy that I have used throughout my career as well and that has worked out really well. You get the right understanding that many of your colleagues often lack. That is very useful when you design your systems and debugging complex problems.
Sometimes it is of course good to dive even deeper. Always try to follow your curiosity if you have the time.
Some of us started from Assembly. Now doing web.
Or started on BASIC... now doing Swift!
Or started on BREAD, thank god for BUTTER 😂
Started with electronics and full adder circuits and now doing system programming and backend dev. wouldn't have it any other way.
As I am typing this you mentioned "One level deeper". 100% agree on this. Don't need to build it but at least understand how it works. I have come across many devs who only work in their bubble and can't explain what's going on behind the scenes and end up finding it difficult to debug issues. Call them "Finger pointers" 😅
My CS degree didn't teach web development at all. Like, 0
1:20 You started webdev with PHP and SQL?
I started learning to make a server a few years ago by learning html and some http lib in some language I already knew.
Or maybe I already parsed the headers myself.
I expect from a developer a solid understanding of the world he or she is working in. Hence the OS (more than one!), networking (more than just ping), hardware (more than the name of the latest MacBook model) and the database should be well known territory.
I‘ve seen it more than once, that a fullstack ‚dev‘ was only able to develop an app using their preferred techstack. Anything outside the comfort zone, let alone debugging were simply out of question.
the problem is, the wider your field if wirk is , the less conpetent you will be. just because it is impossible to know everything when you try to be good in x-different technologies. i think you can Maximum master 1 technology in 10 years to be an expert. so in yiur whole life career, you can be naximum expert in maybe 3 technologies.
i guess full stack developers will always have a lack of knowledge in some parts, because the range of knowledge is just too big. as a backend or frontend dev of just 1 technology, it is much more easy to know all details
I‘m talking about foundations. A dev cannot rely on the availability of a certain environment for the next 20yrs.
Back in the 90s and early 2000s many of the business developers (RPG, COBOL) on midrange systems realized that they are on a dead track. Never had a formal CS training, learned programming on the job. A number of them ended up unemployed.
It took me an embarrassingly long time to realize first paragraph was about navigating to different urls without persist logs and not some issue/bug/security by obscurity. Man, how do you webdev without persist logs
long story short: you want to learn how shit actually works, and not have next js or some other framework do everything for you. too much abstraction is absolutely a thing.
i am a web dev, but i've been working for a while at a big project with perl CGI scripts on a huuge existing codebase. really did help me broaden my view.
I feel like there is an interesting analogy, comparing the early days of js to the use of "no code" AI. There were so many people just cutting and pasting js code with no understanding at all. Now we are going to have these apps that nobody knows how they work for a similar reason.
"Started with LAMP" - oh that's precious. I started with cgi-bin. :)
There is a reason to go a level deeper besides just intellectual curiosity. When things go wrong, you are in much better shape if you understand what's going on under the abstraction. Learn how memory management and garbage collection works, then use those abstractions instead of doing all that work yourself.
I was happy to get Visual Basic forms after trying to write Windows apps using C++ and MFC/ATL. Those of you who used WPF or WinUI know that understanding Win32 and MFC helps you when you want to do something outside of the WPF abstraction or when things just aren't quite working right. It's the same with web frameworks. If you understand how JS works, it makes it easier to debug your react code.
oh my god WinUI... I'm getting PTSD
1:55 I agree on this a lot, because I did try to use and learn from the LAMP stack back when I was in middle school. But I learnt a few more things (mostly comparison based) when I tried more stuff like the MERN stack for example. I think it's true that I'd never really figured out certain things in the first place, if I would have directly gone with some course, which already went through multiple revisions to remove mistakes (parts where the actual learning likely happened). Great videos man. Relatable and understandable.
I graduated in 2024 and had to run a php server using XAMPP for my DBMS course
@theprimagen thanks for having overcome the habit of screaming and backpaddle for 2 minutes because you made a 0.5 second spelling error.
much more enjoyable than older content now.
Everyone knows that the method to remove the last element of an array is to make a smaller array and memcpy all the elements except the last 😂
I had a question recently. When developing a system for sending e-mails. Stack Rails, Sidekiq and Redis. What does the most amount of work? And yeah. My answer was that the backend does. Fetching so formulating the request to the db, the db is doing its thing with searching the db, then it's giving you a result loading it up to memory. Then sidekiq does the serializatiation of the answer to hash and storing it into redis with jobid. This was the correct answer, but I was interviewed by a guy with half my experience. Those job interviews are crazy nowadays.
singe page applications broke the internet. You can't just link to a page on a SPA with a URL. You can't use the back button. There is no document to share. It's not a page. It's a black box of bullshit.
A good SPA will work with back buttons.
all issues you mentioned are skill issues
SPAs can and do work with linked URLs, back buttons, documents, etc. Hell, most decent SPAs I've seen, write to your browser history. And it is still quite literally a page. A page made out of the current state, you are SEEING it.
Making websites myself, I would call a framework kinda crap if it couldn't offer any of those.
@@dxtrum None exist.
@@raremc1620 So you broke the entire framework of the internet that is gifted to you by default, and then hack a bunch of shit together to recreate it and call it a feature.
I'm finishing up my CS degree, and none of my teammates for the final project knowing how to do git merges was an experience.
As a non-web dev, I feel very disconnected from most of the content on this channel - everything is JS-centric, and I never use JS (well, except that one time I needed to make a very small custom web app, and for me it was faster to do it from scratch in pure JS than to even figure out what stupid 'framework' I should use - same thing with the python backend that is essentially just the go-between between HTTP and a small DB - even Flask was 100x more framework than was needed). Also having interviewed many people, and asked fundamental CS questions about data structures and complexity / big Oh, no one seems to know any of that anymore at all. It's basically just "I can glue python libraries together [using AI generated code]". Just after I left, I found out that everyone else on my team was basically using AI to write 95% of 'their' code, even though the official company policy was that using AI was forbidden for confidentiality / trade secret reasons.
You are experiencing what actually matters to the people who fund the software industry - getting stuff done for cheap & fast. Knowing how to optimize is a noble task, but if it's code running on someone else's computer where your business is not paying for CPU time, it's not in budget.
When I was a kiddo, the web wasn't mainstream. People used a variety of home computers like the C64 or none at all and rare were the ones who also had a modem at home; modems which were used to connect to a variety of dial-in BBS operated by random people.
I still have 2 websites running on html+css with a little js for tabs.
You can do tabs with css.
@@farrongoth6712 with html*
Not in an a11y manner. Using CSS for interactivity breaks a lot of functionality for blind and otherwise disabled users. The classic example being using it to show navigation dropdowns on hover.
one level below convenience is a great way to work. one level below comfort also is a great one.
Eh this reminds me a bit of those 'strong men create easy times/weak men/hard times' nonsense. I don't know precisely how the transport layer works and I couldn't implement it for the life of me. But I do know it's there; I think that's kind of the rub here. You don't have to create a toy framework to realize there is a world outside react...
definitely has been a great struggle for me being introduced from a classmate to nextjs. I wish they had never shown me that framework, but slowly, I'm learning actual web dev
I have never moved on past PHP for web development
You've got Laravel and Symfony, so PHP ftw
I've used a lot of the various frameworks/languages out there for the web, and frankly, for the web, there's little reason to use much else.
Same here! None of these JS frameworks never seemed like they made things better. I think I spent more time setting it all up than doing anything else with them.
We still use webforms
Once I’ve googled what is this super performant framework “vanilla js”? Never seen that…been there, yep
Isn't this an argument for CS degrees? If nothing else they certainly reach you the fundamentals all the way down to machine code.
Ehhh, kinda. Maybe it's the argument for an idealized CS program that not enough places implement properly. You always certainly learn a lot, but learn the real fundamentals? It's kind of hard to say, not just due to incompetence in designing the program (though I've seen that guest hand) but also because what is actually important to know, and what's cool but a waste of time, is certainly up for debate.
I think if you had a 4 year training program for software engineering that mixed some general education with bottom up useful skills focused on giving you practical coding proficiency as well as a diverse understanding of the discipline, that would obviously be amazing. How could 4+ dedicated years of learning not be valuable to you right?
But like 80-90% of my time in college was spent learning things that never have been and never will be useful to me professionally.
*first hand, not "guest hand." Damn auto correct hasn't worked properly since I swapped phones.
Exactly what I was thinking but I don't know if every CS degree actually goes into detail that way. Mine happened to but even there I've seen things get easier over time. When I started everyone had to use C and C++ for algorithms and data structures classes. Now they teach it in python!?
To me, you can't really dive that deep into things with a language like python. It's just too easy to use the language to help out as opposed to C where you most likely have to make your own stuff for things to work.
A cs degree makes it easier to learn, but it doesn't keep someone from learning it on their own which i believe was his point. And as @ShootingUtah said, not every curriculum is the same. Some CS curriculum are far better than others. The average CS student from Carnell could likely run circles around the average CS student from NC State.
Regardless, this isn't a career where after you get your degree you're done learning. You will learn your whole career. It doesn't stop there. In 10 years, the amount of resources available to learn anything tech related will be extremely vast. Especially with MOOCs becoming far more common.
I disagree with college degree for most things. Problem here is someone will start a react dev job and think they now it. You should over time spend time learning new things. Pay was great for so long most people could have worked 32h + 8h study a week and we still have shit software. I check from time to time on my old project and they still fail at basics when it comes to page load times. People are just lazy. School does not fix that. Or ego as well
I felt exactly the same when a junior could not give me his local network IP...
"It's good that an authority figure needlessly redressed you because it should toughen you up." Cool beans. Let's see if that engenders a good workplace culture when those students enter the workforce. 👍
God help anyone who works under a manager with that attitude.
My gf is in finance, she is a excel wizard and is learning how to "program" is really cool to see how much more into documentation "data science" shit is compared to my web dev Journey back in the day.
My lukewarm take is that modern frameworks and abstractions are fine, so long as you actually understand whatever tradeoffs you're making. My hot take is that teaching JS, Python, LISP, or any other dynamically typed language to a beginner is a horrible practice, as the fundamentals are far too abstracted away and the scope of the language can often be far too vast to produce a strong foundational experience. I don't care if it's a faster feedback loop for a learner when that "learner" swiftly becomes a comfortable, uncurious person that cares more about productivity than quality.
Same. As always, learning C and Assembly is the way to go.
Only C or C++ for a beginner. Teach them Python and they won't have any idea what they're actually doing
i had to write some c/c++ for the first time in about a decade when a client needed me to translate their c++/CLI code to process-invoke.
i gotta say working this close to the cpu was refreshing after years of writing on top of layers of abstractions.
i felt a certain level of alarm that almost no one else there (a company with a literal machine as their product) apart from me knew how to manually menage memory.
Couldn't watch the video I disconnected
I started programming about the same time as the IBM PC was first introduced. Wrote BASIC on a Tandy PC-1 Pocket Computer, then on an Atari 400. Then at college, I took some electronics and programming classes, and we learned 8080/8085 ASM in the Digital Computer Electronics course. Had to drop the class due to health issues, and when I retook it, we were on 8086/8088 ASM. Back then, we knew about the number of clock cycles each ASM command took. Writing code for a framework is so far separated from those days, it seems like a completely different world. Personally, I don't use frameworks, and really don't like using these packages that abstract away the boilerplate that is required to make "magic happen." I mostly work with PHP, JavaScript and MySQL, with a little bash tossed in when I need it.
Ok unironcially I do use vanilla js (i.e. No frameworks, libraries, not even stuff like jquery) but at the end of the day I just need some funky preprocessing for my static site and don't care for any frameworking
For me I believe in iterative construction of knowledge by human experts. For every field out there, whether it be web development, game development and all that, if you actually are learning and building on top of existing knowledgeable, there will be experts who learned it all, the useful stuff, the useless stuff, the stuff one layer, two layers, three layers, whatever. They know what is needed and required to do a job.
If you write web, you know what to teach. Well, the competent ones.
The problem is because many people are self-taught, and many unqualified teachers exist on the internet, and in the job market. Also people genuinely don't know how to learn. We don't really teach that, and some people are very bad at learning.
0:16 how to explain something? Draw as many boxes as you can
😂😂😂😂 so true
i think transistor to assembly layer is a good line to draw. so is assembly to non-assembly (say c w/o assembly), unmanaged to managed memory
Opinions in the comments are a skill issue. Real devs ship, no time for opinions
CrowdStrike, is that you?
Is it a skill issue that we have how many browser engines that don't have 100% compliance with each other? I'm not even talking about the standard
@@fulconandroadcone9488 like 3 if you're talking about ones that people use en masse: webkit, blink, and gecko. I'm pretty sure no one uses trident anymore (hopefully)
Here's the Doom 1 clone you asked bro. Minimum requirements: 128GB RAM. What are you, brokie? Pay up. It's shipped therefore it's made by real devs.
I remember doing development outside of sql server for the first time with javascript in like 2009 (ajax) and looking at it now everything is so different (sql server stayed pretty much the same). On my first consulting gig I wanted to import a third party library into a solution and the amount of red tape would make your head spin. Today import padleft and no one bats an eye.