As a Devops i must admit that "tool overload" hits sooooo hard ... "Me: i know jenkins" "interviewer1: well ... we work with github actions" "interviewer2: well ... we work with gitlab pipelines" "interviewerN: well we work with aws pipelines" "interviewer N: well ... we work with bangaluna-bimbozuma pipelines" ... f&&&&k! And its just a pipelines tool. To build a infrastructure you also need some cloud (AWS, Azure, GCP, Oracle - all offcourse different), some IaC tool (Terraform, Cloudformation, Ansible,Puppet, Chef - each of them different), some proxy/ingress controller (apache, nginx, traefik, haproxy), logs tools (ELK, Loki, Greylog, fluentd) a lot of other things which you have to learn because market demands it (kubernetes, rancher, helm, prometheus, grafana, splunk, velero, minio, argocd, openvpn, wireguard, zerotrust, karpenter, kustomize and on and on ... ) and even though you say you are middle/regular devops (not senior or even strong-middle/regular!!!), that you have 3years experience in technology X they ask you about deep details of technology Y and dont care about yours "ok i dont know it but im ready to learn and ill try to do my best to catch up quickly"... And you're rejected Nth time and you end up with with a feeling "damn ... i dont feel even as a junior, maybe i should just switch to some truck driver job or mcdonalds" and every evening you go to sleep with an anxiety thought "im not good enough" and you wake up and slap yourself in the face with "ok, get yourself together man, you have family to feed" and you go to another interview ...... damn im so pissed now ... :(
DevOps here, this is partially true. Most companies understand it's not about the specific tool but will ask more generic question. Then there are universal things like Linux, Cloud, Kubernets, terraform etc which every company requires. Btw Ansible, chef and puppet are in a completely different category than terraform
@@cerulity32kit's much easier than you think, I've written multiple languages now (most were interpreted) and recently wrote a compiled Python-like language
Fortunately, my first language was C. I took a course of design and analysis of algorithms in my 1st year of major which was taught in 2nd. I had to learn most of the things myself. I didn't knew C++ STL existed and I had to write most of the data structures from scratch during assignments. Even though I don't write C/C++ now, working on hard programming problems with a strongly typed, low level language taught me a lot.
@@phoenix-tt Yup dude, dealing with pointers and Seg faults was straight horror. I remember a time almost giving up because I couldn't figure out why my code was giving seg fault.
Hot take, but I think if you're overwhelmed every time a new framework comes out and you feel like a beginner again, you're still a beginner. Instead of learning programming you've learned a certain framework/library/technology. You're a good programmer once you can adapt to these changes because you have the ability to think abstractly and you can transfer your existing knowledge.
Agree. I recently wrote a Higher Order Component in React taking some inspiration from design patterns and my colleagues were like whoop. I mean like once you get a just of things, it is really easy to identify common problems and the solutions you learnt.
Agreed, but this is mostly valid if you already have a job. For jobseekers it maybe rough because in interviews they may go deep into a framework that you are actually a beginner of.
Yes agreed, if a new framework comes out, using the new features and working with it should make your life easier. If you're overwhelmed you just don't know the fundamentals that all these framworks build off from.
Agreed. I'm excited to see new frameworks come out because I don't mind moving and learning new ways to do the same thing that are more performant or have better DX. So many people complain, but if something looks cool I just spend a couple days playing around and I mostly understand how to do things. I do a project and I will have a good grasp. And I do projects im passionate about, combined with better DX or performance it just feels fun to me. For example, moving from React to Svelte once the ecosystem matures a bit more.
I'm one of those troubling beginners you described. It's a tricky position because on one hand you have the "path to getting hired", which is the main goal, but that doesn't coincide with actually learning what's going on at a deeper level. However, I also see how learning that deeper level is 100% on me to pursue. It just feels weird and feels like I'm going in the wrong direction (if that makes sense).
@@vaisakh_km yea for sure. it's certainly a conflict between learning the tools like React because that's what will lead to being hired, yet wanting to learn the topics on a deeper level because it's interesting. i wasnt able to go to college so I missed out on learning the computer science topics. luckily since there are tons of resources online now, I'm hoping that after getting settled into a job I can use my spare time to go back and learn those topics on my own lol
I'm at that same spot you're at. It's gotten to the point where I'm not sure if I even want a job working development because it seems you have to learn the incorrect way to stay "up to date" with the technologies and just follow the trend. I think I would much rather just keep this as a hobby and develop the software I want using the languages and stacks I prefer.
Don't learn to get hired, instead learn programming. Get a good understanding of the fundamentals instead of learning a popular framwork without understanding how it works on a deeper level. I think that's the mistake of the person in the video, he only learns the technology and as soon as it changes (which it will) he has to start from scratch again.
Yup, it's an issue for the whole of technology industry, not just us. There was "less to learn" in the 2000's, although building a passable web page was way harder than now. At least where I come from, the schooling has also pivoted strongly towards the commercial side of software: learning how to use libraries and other software actual engineers have built to achieve something that can be sold. I actually think it's *shouldn't* be ON YOU to go deeper, but rather if you've got a degree it should be the other way around. The libraries are actually an after thought once you learn to build software and program well. But as it is right now, the onus is on the new dev to learn everything below the surface.
I started using Python 3 years ago at my previous job to automate some stuff. Turned out I liked doing it more than the actual job, so the next time I was on parental leave I did a self-taught course on Udacity to be a webdev. Done some projects in my freetime, got a Python job at a large company because I could sell that 2+ years I spent at my other job. During all of this time I spent every minute of my free time learning the inner workings of the computer. About a year ago I started learning Rust and I am just now starting to feel comfortable using it; recently I managed to bring it into the company to start using it on smaller independent projects that don't rely on the existing Python or Java codebases. Never been happier
so your company now uses 3 language rather than 2 huh? Genuine question, how are you going to hire future Rest developer? I heard Rust has pretty steep learning curve
@@chawza8402 My company uses probably 10+ languages, if not more. We have 200,000 employees worldwide and when I say small projects, they are small. One of the CLI apps I wrote is probably ~500LoC and been properly working for 5 weeks straight. If it works out, people at the company might be inclined to use Rust in incrementally larger projects. For now I am more than happy to write small but reliable tools that are being used by 1-2 colleagues at a time. The code is documented well enough that probably someone with minimal Rust experience could maintain it if needed.
@@chawza8402 "how are you going to hire future [Rust] developer?" You don't. >>> Job security! jkjk but yeah I agree with @ant1fact. If it's small projects and documented well, why not? It's only going to get more popular over time. It's like having something in C. Just because it's steep learning curve doesn't mean no one will learn it.
@@chawza8402 he made himself more valuable and more hard to fire/replace and learnt a new language along the way. What’s wrong with that for him? As for the company…well, he doesn’t own it))
Damn prime this one really resonated with me. I’ve often looked back on my university days with slight disdain. The course felt outdated as we weren’t using the “latest” way of doing things back in 2012, I used to resent the fact id go from my datastructures and algorithms course to finite state automate classes and then to some software engineering class using c# or java; I’d come home and spend countless hours practicing these things and would then pursue some new framework (which I thought was delivering more value) but never had I reflected on the fact that all of those other modules were providing a deeper understanding of how everything comes together under the hood. Thanks for opening my eyes on this one!
Thank you! People underappreciated college. College is about learning how to think. Sometimes in an unapologetic ways. I mean some of the odder languages I learned in college: Ocaml, Smalltalk (yeah, really), Prolog, Haskell. Don't worry, we also used normal stuff. I always understood I have to learn the latest greatest useful stuff all by myself. But compared to that odd lot it was not particularly hard.
if you can grok ocaml, haskell, and prolog, then javascript is nothing. I have never messed around with smalltalk so I can't say anything about that. At my college the intro class was taught in ocaml. I think the class was actually easier for the students who had no prior programming experience.
it is so true about the front end ecosystem - I think it boils down to how companies hire, they'd rather get someone that's already familiar with x framework instead of someone who'd be able to pick up any framework in two weeks But yeah, I've recently moved roles and I found it super hard to switch to a job that used different libraries from what I've used in the past because the interviews I had were mostly library based - which is fine, but when you have a candidate that's willing to learn the framework/library and another who's an expert with x years of experience you're going to hire the experienced one. Front end is crazy - but yes, the fundamentals are incredibly important and when I was starting out I remember having a hard time understanding what was javascript and what was react, then I had to take a step back and get deep into just javascript
it's weird because i feel the same in CS degree. i am familiar with data structures and algorithms etc but it's not like we build apps. i make stuff on my own but it always feels like someone out of a 2 week bootcamp is just way better. like they can build interesting looking things and i am just trying to write recursive min heap
Don't get discouraged. If that person only has bootcamp experience, they will most likely take a long time to actually become a good programmer just because they don't understand fundamentally how some things work. They might produce something that looks good at the moment, but might be horrible to work with in 3 months, 6 months etc. Don't let first looks deceive you. I am self taught myself, but I realize now how much of the theoretical knowledge about programming and design patterns I'm missing now and I'm actively working on it. I do offset some of that by being really curious and by expanding my knowledge beyond programming into other areas such as developer tooling, Linux, Docker, Ansible etc.
the thing is to not start chasing new shiny things, As my physics teacher told me when i was but a simple script kiddie and scratch game developer, "The rabbit who always chases the next carrot is never gonna actually eat the carrot"
being a self taught web dev this hits really close to me as i feel like i barely learned enough to get a job and do well at very specific tasks but my general programming skills are really bad because i never had that proper education
dont stress it bro im self taught, lets get the fundamentals down, Data Structures, Design Pattersn, algorithms, that's literally only thing stopping us from being Sr level
@@dronestrikejr I'm also self-taught but that is supplemented with 3 years of university. You described what a Jr coming out of University will understand. There is so much more to learn that is very applicable to web dev that you missed. The hard part about learning it alone, is understanding what is truly fundamental, and it's really hard to recognize what else you need to learn. It doesn't help that all these brogrammer influencers tell you that you only need design patterns, data structures and algos. This isn't to say self-taught isn't possible, but spend the time to learn fundamental tech as well as programming fundamentals. Otherwise you won't be able to figure out how to begin diagnosing issues down the road. Also, learn how to write good tests!
Im college drop out been working with rust the past 2 yrs and i don’t feel like a jr, i mastered some design patterns, algos, and even studies SysDesign/Distributed systems We have to grind extra harder guys to close our knowledge gap. It is do able!!
This is why I value my CS degree so much as a frontend dev. I learned fundamentals first and then learned react on my own as I put together projects. I certainly lack some fundamentals in webpack, but otherwise I feel I have a good general process of what is going on in a new language I learn
@@nicolausdasilva8133 Not op but most of a CS curriculum could be considered "fundamental" Data structures, algorithms (+ paradigms), discrete math, finite state machines, compilers and probably more. You dont need all of that of course, but all of those things could be considered fundamentals. Start with data structures and algorithms and branch out from there.
I glad I did not paid much attention on webpack because Create React App and Turbo/Vite handle those bundling for me. Thankfully i joined a project where the setting has been configured so I never touch the webpack config file
I started out on my own programming C#. I got hired and improved over the span of years. My understanding of everything relevant related to informatics increased to a high point as well. I also know C and how data is structured. I know about performance, I know about byte and bit-level operations, about memory usage, networking, IO operations, and a lot more. I learned by doing my private projects unrelated to my job, and I grew from my mistakes (the dark era of too much inheritance) - some of which are quite complicated and well done. I hated university and I dropped rather quickly. By then I was already able to code, and I was really annoyed by the needlessly high difficulty and redundancy of what was taught. Now I am a freelancer working 100% remote, and my company really doesn't want to lose me.
The Terminal Junior...I like it. Let's strategize here: Continue to edit your resume and LinkedIn to reflect the experience of a junior. Land junior roles and pretend to be a potato to keep expectations low. If you work hybrid/have a creepy employer who wants cams on all the time, make sure to drool and pick your nose often, when people ask if you're special needs they'll say "No, he is just a junior dev". Literally NOBODY will have any expectations of you. Depending on where you work you'll have about a 6-12 month grace (or disgrace?) period for being an absolute tater tot. Now here's where the hidden genius comes in...you do this at 3-4 other jobs simultaneously. And in reality you're not a potato dev, you're just living life on cruise control earning 4 $70k/year salaries. Just be careful not to show up to your once a month meeting looking like you're balling out of control. Remember, you're a poverty potato. (Obvs don't do this)
This is what I don't get, you don't lose your experience when another framework shows up. The function names are different and there's some new syntax to get used to, but it's all the same stuff in the end. On the other hand, I spent way too much time creating my own shitty frameworks so I probably got some experience out of that. But I feel like a lot of devs are scared of things they don't know yet and second guess their abilities. I'm the opposite, "Oh I'm going to build a GraphQL server, no problem, I've heard of it so I'm basically an expert".
That's a somewhat shortsighted view. Sure, you just have to "get used to" some new syntax and function names, and if that's where it ended that would be easy. But that's not where it ends. You still have to maintain those old systems. If you're jumping on the "next big thing" every 6-12 months, you very rapidly end up with dozens of languages and frameworks within those languages and tools to support those languages and so on. Yes you theoretically "know" them all and can handle that, but it becomes a heck of a lot of context switching. That's before we look into the addition of entirely different skill sets. A modern "full stack" dev needs to know more than just programming - they need to know the database layer, how to setup a CI/CD pipeline, how to provision any number of the 35 trillion AWS services and understand the slight nuanced differences between those 3 that all sound the same on the surface, they need to know UI/UX design for any number of form factors and how to do DOM manipulation that won't freak out in any of the 3-4 common browser engines that all do things slightly differently, how to publish to the various app stores and at a least a basic knowledge of the legal and financial impacts of that. Sure those are all arguably "related" and are part of software development as a whole, but learning the legal requirements for publishing on the Play store is just a bit more than "new syntax" when your experience is in C++ programming. Creating a UI that works for colorblindness is not just a difference in "function names". These are entirely new disciplines you need to learn.
3:19 Yes, but subconsciously. *Pianists don't complain about the number of chords they have to memorize.* They *play* music. Developers should *play* code.
Well, I like the comparison, but to be complete, I'd like to hear how a pianist's job interview sounds. Because according to your comparison, then it should be like "okay, play the C# major chord in the key of E and you're hired" (btw i don't even know if it's something that exists). But I doubt it is.
@@LuccDev if you want a gig as a jazz musician you need to be able to demonstrate you can sight read charts and you know how to play different modes, and different scales at the very least, and show that you can compose a solo. If you have experience, people know you're good, but if you're new, you'll need to sit in with a group and show them your technique. This isn't really all that different, but you can't really expect analogies to hold up in every way. Analogies are used to explain a concept in another way someone might understand. It's not meant to have everything poked and proofed, because analogies are not the same as the thing you're comparing. If it was the same, it wouldn't be analogy. Refuting an analogy based on the thing you're comparing it to is kinda goofy imo.
@@ClowdyHowdy But that's my point, it means that the interviews are "natural" things, it's not regurgitating theory that you might not even use in the job.
As someone who went through a bootcamp I agree entirely with your perspective on them. I learned how to write react and some node and some SQL but I always hated how black box everything felt. I’ve been spending all my free time since learning DS (using your FEM course) and writing some C to understand what I’m actually doing in Reactland.
Funny enough, I TOO, am a bootcamp grad. It gave me skills to build something in react but not the knowledge of how to do it and the why. So I thought to myself, well, lets learn DS & Algo in C to understand they why and knowledge. Is it worth it? Maybe. I see DS & Algorithms like math formulas. You learn that a^2 + b^2 = c^2 formula, then you realize you can switch it around, modify it do what you need to with it for whatever problem you're facing that requires it. :)
If you dont know how to create a basic CPU using raw materials you mined yourself with your own tools, you cannot truly understand what Javascript or C is doing, and you might as well be a wix developer
It is pretty hard to not only learn how to use new frameworks and tools but also understand the "lore" of the language and how the design has changed over time
2012, started learning Clojure casually in side projects, 2014 started working in it full time. Almost every bit of knowledge I’ve picked up from those first several years is applicable to my work in other languages since - also still directly useful in Clojure, which is very stable - every single project I’ve ever made in it still compiles and runs to this day. Vast majority just fine on later JVMs than they were written in, including the fractured space of temurin, corretto etc. Most of my other learning outside data science/ML (my original background) goes to low level langs, compilers, etc. The benefits of sticking to two language worlds: both where you use a few data structures - and functions that work on all of them, in one case close to the metal, in the other as high level as you can get, solving problems by making mini languages to solve them on the fly… I think this is the best recipe for learning fundamental, transferable skills. As Prime mentions, abstraction trends come and go, algorithms and data structures stay the same. Learning frameworks and trend chasing in JS land while cargo cutting design patterns from whatever talking head in the abstraction industrial complex gets to you first is a career trap.
Part of being a Dev that's so great is having that feeling of being 'lost' when something new comes out. I love learning new stuff and i've never turned down a project that required learning a new integration. Too many devs are just 'react devs' or 'angular devs' or '.NET devs'. Those static environments have always been so boring to me. To any devs out there that have been putting off applying to somewhere--if you meet 70% of the requirements, just go apply.
1) Attitude to shiny things is orthogonal. I, for example, usually don't care. 2) I don't think I've met a single-environment dev in person. When someone says they're "X dev" they probably mean that's what they're doing right now. All places I worked at had the attitude of "it's just another language, how hard can it be". I'm probably lucky though. 3) I think people who write job listings often mistake "requirements" with "job description". When they write "you need X" they usually mean "you'll be expected to work with X". If the interviewer thinks you'll figure it out you're good to go.
This is 100% correct, I have been a software engineer for 7 years and I knew that I still needed to learn more stuff but didn't know. I got in before I got a degree, but I did go back to get my bachelor's degree and even with this I did not learn the fundamentals like data structures or algorithms. Now I'm finally realizing what I need to go back and learn. I was able to get by because I knew how to use React, Bootstrap, Php with CodeIgniter, Vuejs and Nuxtjs, but still didn't feel like I was a legit software engineer. Thanks to your videos I now know that I am a bad developer and what I need to work hard on. I want to get to the point where I can contribute to a framework and understand what is going on.
This takes me back :). I'm self taught and employed. But I also started with Bare metal programming, C, C++, C#. My Uni did teach us Games Engineers not programming, only math and algorithm theory. But nothing else and the code I had to work with from lab team members was horrifying. Had to quit because I was working part time as a programmer to finance the Uni studies and living expenses and was slammed with too many hours. So I quit. I really have no hard feelings towards college or Uni, everyone learns differently. But If I could back in time, I would not waste my time there again. That being said, I was already learning programming and working on projects in my free time for 10 years. So my views may be not the optimal one :). I got only a few small tips for anyone wanting to become a programmer or are currently one: 1. Never stop learning, stay curious and at least look into your stack you are using currently :). 2. Don't get hung up on "religious" debates such as what language is best, tabs or spaces and so on^^. 3. Stay humble and learn to admit if you don't know something and learn it. Don't stay ignorant.
at this point I dont bother getting good at any frontend framework. I do just well enough to get by, because I know in 1 year there will be something new and everyone abandons the old framework
I am currently implementing a microservice application using Java and I must say I thought I knew what I am doing but writing that system from scratch is really taking a lot of thinking and time to understand what the hell is going on under the hood. But I do believe that going through exactly that struggle will pay off in the future because I understand how things work, communicate and everything that goes along with it
I started with my first job same time 2010, after being a self taught jquery/html/css guy, I'm now 39 , married with a kid. I've spent a couple thousand hours of my spare time over the years keeping up to date and progressing into some full stack and I'm only what I would consider a good junior dev as far as coding ability, my knowledge on putting it together and debugging is probably that of an intermediate, but at the end of the day I know I will never be a good dev and probably not a senior, and I'm ok with that. Remember we work to live, not live to work.
You speak from my heart. I was a graphic designer and changed my career to be a dev. I was somehow something like a frontend developer. But i only templated sites in Oxid and some other frameworks. I knew some JS. (no Frameworks, like React, ...) But i couldn't call me a programmer. Now, after a long illness, i am visiting a bootcamp that lasts 10 months. Its a python bootcamp (initially i wanted to learn Java, but no none wants to learn Java, theses days). I thought, ok, 10 Month are enough to get a proper knowlegde of python. But we only got a brief introduction and then stuck with django. The decision, to teach django, instead of programming, really bugs me. I feel comfortable in django, but i know that it hides a lot of its mechanics. And most of the people in the course are struggling with django, because they don't understand the mechanics, that django is doing for them. I really regret that i didn't study informatics. But i will continue to learn programming on my own, once i got a job again. Because otherwise i don't feel confident.
This was my entire career summed up year by year almost exactly. Although I picked up Vue in 2019 and lucked into having decent work after that. Now this year I got a next.js job and ... man does it suck. Hooks is the worst dx imo. I never felt like I moved back to beginner level at any point, but switching frameworks gives you the choice of thinking either you aren't good or the framework isn't good. For the sake of my sanity I choose the latter lol
This, I have never felt so understood in my life. React hooks are the worst thing in the history of programming, all because React devs can't bother to learn OOP principles and just general code organization; instead you got functions acting like fake classes and forcing the one-way data flow on everything.
14:10 You need to learn: Software Development, Software CI/CD, Frameworks, Deployment Tools, Packagers, Task Managements, Databases, Caching, Connecters, Cloud Tools, More than 3 Languages, Automation Tools, Linux, Networking (if you want to debug some weird schitt), Software Security All this to be called Jr Full Stack Web Developer
Great video, I'm a beginner but more interested in video games and learned a bit of C# and Lua on my spare time. Mostly reading pdfs I can find online and a lot of it doesnt even touch into under the hood stuff. Which makes it rather difficult to learn as well... all the new stuff does deprecate old stuff if all you care/know how to get the thing to work instead of data allocation. Something that could be measured so you can double check your work type of stuff instead of just connecting dots.
As a non-programmer, I’ve never felt compelled to comment, but your insights about knowing JavaScript vs knowing libraries is a perfect analogy of the photo industry (my forte). A lot of people are disappointed in their photographers because they’ve paid them so much money to take such mediocre photos. “but they use [popular brand]! I know that brand is good!”, they say, not realizing that brand does not create or shape light, nor push the button… Fundamental understanding and exploration are paramount to being good/best at anything.
Oh, I actually didn't realize your algorithms course was free, I saw a preview recently and it looked interesting. Thanks for taking a moment to point that out, I'm gonna put that on my to-do list.
@@taserianAlephNull yeah very misleading. Edit: Apparently you can sign up for free without a credit card and get lifetime free access to 5 courses (pre-selected but good arrangement) one of which being the one he pointed out.
I'm a React dev and I hate when someone spits on Angular. I worked on NestJS(inspired by Angular) and just loved the framework. Many people hated it because of performance(which was fair) but most of them in my opinion hated it because there smoothe brains couldn't comprehend the average level complexity. Also, ben Awad is the guy to blame mostly
@@akshay-kumar-007 and one thing that annoys me is that Ben Awad usually spits on AngularJs (Angular 1), when it has been long abandoned by Google. For some people who are not familiar with the framework development, they may think that Angular (2) is as bad as AngularJs (1) because of that.
Algorithms and data structures are one of those things where you suffer to learn them, but once you know it, you look back and think, "why did I ever have a problem learning this?" So if a more experienced programmer looks at you like you are dumb for not understanding breadth first search that is why.
Thanks Prime for focusing on the foundation stone: the flippin' fundamentals. If you know the fundamentals then you can work your way up to any kind of framework / library / whatever programming doodad de jour.
6:30 this is why whenever one of my friends wants me to teach them programming, the first thing that I have them do after learning basic programming and using the libraries, I guide them through making a low-level project like a 3d-renderer or BASIC compiler.
I totally get that part about language vs framework. People nowadays jump straight into frameworks without learning the languages. We recently had a project and I was instructed to learn flutter. Went flutter and saw that it used Dart, I immediately stoped and went looking for Dart. Made sure to understand its syntax basics, compiler etc. You would be shocked how many beginners are doing flutter without actually ever going through Dart docs itself.
In my Dev journey I got an Associates from a community college that was actually well respected for churning out ready to work .NET programmers. That was in 2011, everything around me changed so fast that by the time I graduated I was absolutely obsolete and what I "knew" was barely worth it. The SQL knowledge was very helpful though. I got totally destroyed in Interview after Interview. Went back to school and got a bachelor's and an internship. Now I have been doing this for 6 years professionally now what I have learned was the following, I should have just lied on my resume got a job and learned on the job. It's exactly what I did basically anyways. "Adam you have done Angular? We need a full stack app using Angular as our front end" Yup got it, between Google and our existing code base nothing I can't figure out. Been doing that the whole time, everything I have learned has mostly been "They want me to do this, how do I do this?"
@@skyhappy actually that was the short version of the story. I actually only went to get my bachelor's just so I could get an internship. My goal was to turn it into a full-time job or something. I turned that experience from an internship on top of my associates into a full-time job getting paid too little money. But after that I got enough REAL experience and now I work for a company I like, for people I enjoy doing work that is pretty ok. I never finished my bachelor's.
@@adamschneider868 that is a good plan. I wish I never did my bachelor's at the university I did. I wish I did an online one that I could speed run in 2 years. I was so clueless about the bloated university system.
NEVER managed to get a job for understanding concepts and how things work. Demand is always 5+ years of experience in some specific technology. Once got rejected for manual tester position because I did right click->inspect... This industry sucks, and it will take your soul, but if you play really smart and get a bit lucky you can earn nice money. Just remember, earn as much as you can, as quickly as you can and GET THE FUCK OUT!
It resonates with me. If 15 years ago I was bad at C++ , now I'm bad at C++, Java, Ruby, Js, Golang, Python, Kubernetes, GCP/AWS, not mentioning a long list of databases, frameworks, libraries. It's never ending uphill battle with learning stuff and, what's even worse, with retaining obtained knowledge. The most happy I've felt was when I was writing in Ruby on Rails. I knew it really well and was able to be really creative in it, answer almost any tricky interview question.
1 - Turbo C++ Compiler with C was where I learning to programming (2018 ~2019) I do CS and the begin Math is too much easy than programming 2 - My first database connection was with Mysql and Java (First OOP language too) 3 - The first job like intern I start to learning more Spring and Jquery (First experience with Javascript, I think today people start with React) 4 - After that I spent some years with Java 5 - Few years ago I receive a opportunity to work in a new project with php, vue, aws .. but I never left Java 6 - Last year I resolve to change and learning Neovim for everything, start to learning more about architecture, review DS and studying Rust 7 - Now I'm in this Continues Learning like a Software Engineer and in the Work Lead a Team.. this is a true challenge!
I might be the only person on the planet but the fact that I need to learn new shit every so often makes me enjoy being a software engineer even more. Im always hyped for a project which is different from what I really do. When there is a new thing in the company I always go for it.
So... i've been in this company for 5 years, we do individual software stuff.. like... building a middleware if someone needs one or building a platform to manage budgets... etc., i started taking full responsibility 2 years after i started there for 5 "older" (like 1-5 year old) projects so all others can focus on new stuff. We are not a big company, we didn't have a lot of projects. Me taking the five projects was basically 70% of all running projects at the time. I managed everything from support, to estimating the cost of new features, talking to the customers, designing ui and ux, managing billable stuff, programing front- and backend.. updating all the outdated libraries without breaking stuff... doing all the necessary stuff.. everything. At this point i am basically what feels like a underpaid freelancer for 3 years now. People treated me like i was a junior dev and they still do. That got to me and i started to write like a junior developer again... a shit ton of bugs, missing obvious stuff and when someone tells me that i messed up i just say "junior". Important to know is that i started with a very limited understanding of java and i didn't even know what typescript was.... or wicket... or maven... gradle... heck i didn't even knew what json was.. because i mainly programmed super basic tools and never studied. I also started to review code from others and finding crazy obvious bugs and problems which nobody thought of in their projects... when i told them this.. i was always told that i am a junior and have no idea. This is a downwards spiral... either you can't let that get to you or you're helping them.. but no matter what, they will not change their mind on you being a junior. Sometimes... a little appreciation wouldn't hurt. EDIT// yes, i get paid like junior dev who just started working in tech... actually.. a junior developer who starts now would make more money.
I honestly felt like an idiot because when I graduated college and started working as a developer, all these people would come around knowing the hell out of reach and sass and a bunch of frontend tools and I couldn’t figure out how they worked. Over time I realized how important it was to know shit like big O notation, sorting algos, OOP, stuff in the CS major that was taught by 80yr old teachers with pen and paper. You learn the fundamentals and everything flows from there, lots of people know react and jump from svelte to x or bun or y or whatever but they can’t answer a question of how to actually rewrite and redirect http requests or basic web dev things -__-
You know, sometimes I hate how useful computer science is and especially understanding it on like a deep fundamental level. I'm barely a "software developer", that's what stood in my last job description but literally within my first month there I started doing 3D and photo editing whenever I could and by the end only about half my job was actually programming. I'm an artist, I wanna do design, drawing, animation, 3D, video maybe some frontend stuff. All that creative jazz but, when I run into problems, need to figure out how something works or do something unusual, most of the time, it's my cs knowledge that helps me the most and going any further is only more cs. Just having a basic understanding of graphs and vectors and how they are programmed helped me a lot when 3D-modelling being able to write my own graphics engines, shaders or even just blender addons would make such a difference. I'm probably going to college for a bachelor in digital art next year but after that, I might just actually go for another bachelor in computer science just because it gives you so much more creative freedom. Anyways I'm rambling, the tie in to the video was actually just to give an example of how useful it can be to just have a good understanding of the fundamentals. I already have 5 years of mostly computer science, electronics and general stem education (not too deep but very broad), cause where I live, we have high schools that do that. That stuff has helped me so much just because I could view everything through that lense and for example often allowed me to get a pretty good guess of how things might be set-up in the background which is insanely helpful when trying to understand how something works or how to fix it. Learning how something fundamentally works really makes such a big difference.
If you know data struczures you can solve most problems. I'm currently working on an experimental slicer for 3d printing that ditches slicing shapes entirely allowing for simple non planar slicing. Do you know how I solved the actual slicing part? I simply move data from one type of data structure to the next with the right traversal alrgorithm. The entire slicing process involves 0 complicated algorithms, everything is just moving data from a to b after getting the mesh into a usable format and the whole thing "magically" solves itself
If I started again, I would certainly learn something like Lisp as my first language. Truly teach how to program and the mathematical models behind it, higher order abstraction, best practices, and no constant OOP brainwashing. Feel bad when I see people start programming with OOP and mutability.
I've been studying computer science at a university for about 2 years now. I love my study but how do I prevent this (like the one dude from the video) from happening? How do I become a "good programmer"? What can I learn or what should I do?
I had the situation of having no informatics in school and just learning everything by myself. I selftought Java from 2016 onwards and got to understand some basics in informatics while doing an apprenticeship for three years but I never got to this point or had time to go that much deeper (like understanding how compilers work and how to optimize with assembly) because I had to work while being an apprentice and stuff. And it's then hard to understand how C or C++ works. During apprenticeship I had some C in school but it was so overwelming while being massaged by Java and its Features that I never had fun working with C, what I regret now because I see how important C is for a basic level of knowledge how these features work and that you don't have to manually remove all the created objects from the memory and the references too so that they don't point on nothing and so on...
In uni i had to learn 30 different languages across 3 years. After that I've learned another 10. Every project requires different tech to be employed. Learning on the go is fulfilling and this job never gets boring. Nothing to complain about. Just got used to learning things.
This is exactly why I think the ability to learn on the move is an employable skill. They might feel like they have trouble keeping up, and while it's hard to tell from the video of how much effort they put in, they're still learning.
thats something i realized lately. no one (at least in developed world) seems to truly make anything from scratch anymore except for the guys building all the houses
7:00 - yes, when i was starting with laravel and vue and then whatever else i was really confused because i always hated when stuff happend automagically. Really helped me to just read the f-ing manuals to understand how the magic works - but most people dont get payed for doing nothing but reading manuals and playing with random garbage for several months. I was just thrown into a botched project and my job was to salvage it - on one hand that was kind of a shit thing to do to a junior dev but on the other hand being forced to read and rewrite raw dog javascript to Vue in a project written by 7 different people across 10 years forced me to learn how all the magic worx.
You always speak the truth. Theirs a very big difference between the framework creator + maintainer vs the framework user. Honestly I know nothing. I am just a loser who knows how to glue some JS library and write crap code.
8:15 Speaking on this Universities teach you the concepts not just the language. I.e., when learning Databases I was taught Relational Algebra before SQL.
15 years in and i'm still a beginner here as well (dunning kruger)! Agree with everything, 2 space indents is horrible to code review, 4 is where it's at. Learn some solid fundamentals then move onto a well documented framework, do courses / watch prime / read books everyday and you'll keep your head above water.
Every programming language is just a problem-solving medium. And there's 3 parts to learning any programming language: The first is the language syntax and its semantics The second is knowledge of the libraries or frameworks available The third is expressiveness/grammar of the language - how to write descriptively so that other 'speakers' of the language understand your code Fundamentally, problem solving skills and communication skills can carry over between languages. The real task when picking up a new language is figuring out how to apply your skills in the new context. The reason why I think so many people working in JavaScript or TypeScript prefer to describe their expertise by library/framework is that the actual grammar of the framework is a dialect of JS/TS. I speak English, but even so I might have a hard time with some other English-speakers. A React and an Angular developer, for example, are like a Scottish man and a Southern American. Both are speaking English - they just have different common turns of phrase and a different accent. They place the emphasis differently.
"It's a hand-rolled framework to be the best for their site." You know, I think a lot about Casey Muratori saying 90% of optimization is just avoiding "pessimization." JS frameworks help you write code faster by pre-solving some things, but they overload you with assumptions that are often wrong for your use case. When you actually know the underlying tech, things get easier and faster.
And after all these frameworks and libraries, they make unbrowsable websites with a million pop-ups that it feels like being taken hostage. The web is a mess for both developers and users
It's very telling that this guy's idea of "blazing fast" is a website that loads in 600 milliseconds. A whopping 2 billion cycles on a modern cpu. To render a freaking website. And the worst part is, he's not wrong -- that _is_ blazingly fast compared to most of the web. But it's still embarrassing.
As a web developer, I identified with 2 things in particular. One, how many things it feels like you're expected to know, from frontend to backend to APIs to containerization, build tools, CI/CD, and cloud platforms, it's too much, and I think it's because so few people know any of them really well, they all get lumped to the web developer. "It's so simple! You just have to install your dependencies, make all the things, update your Dockerfile, push your code, run the governance gates, create your Jenkins pipelines, configure your networking in the cloud, pray like crazy, and boom! Your app is live!" (Except that I forgot to mention "uninstalling and reinstalling everything because a dependency changed somewhere, or you have to update a build tool, or whatever.") The second thing is a comment made by a viewer about JavaScript frameworks being treated like languages, which I think is totally true. Job postings are for React developers, not frontend or JavaScript developers, and so if you want a job, the emphasis is on learning how to do stuff in framework X, rather than on having learned programming, and I see the effect of this time and time again from people who are supposedly programmers, but really they're just people who learned to code in a certain syntax. Conventions and good programming practices? Ain't nobody got time for that!
Basic in 97, Turbo Pascal in 01, Delphi in 02, and Borland C++ at the same time, and now I'm a 15+ years skilled front-end developer. It's funny to summarize it like this.
In a lot of cases to save a burning project, I have to invent new technology that bridges the old code to the new code temporary. No tool or library exist for these broken projects. You can only do that when you go off the beaten path of design patterns and rules and have full control over the language.
Idk man, I'm a puny medior but I think after a while it really shouldn't take much to adapt to a new library or framework or language, I really don't get this guy's panic every time something new rolls along. I feel excited and alive when I can dig into something new especially if it's for actual work and not just for fun.
Your take on college is something I could can't relate with. I went to an 'ok' private college in the early 2000's. For those younger readers, this was at a time where computer science programs were generally thought my Math professors. Only the elite, expensive schools got actual programmers teaching their classes. I was consistently a good student that didn't struggle with anything outside of Assembly, and on top of that, I'm the type of person to go home and do random coding projects just for fun. I can tell you with ChatGPT levels of confidence that I didn't get my moneys worth out of my college experience. The basics of programming can be taught in a semester, but college stretched it out over 4 long, slow years. The only valuable things I got out of it was a subpar data structures class. So like 30-40k of debt to learn something that could be taught over several TH-cam videos. And ever since I found your channel (recently), it really solidified how useless college was for me. I really struggle to follow OOP code, and I've come to learn that the reason for that is because what looked like overcomplicated gobbly gook was actually just well designed Creational/Structural/Behavioral design patterns. Something never taught in my college, the furthest covered in OOP was classes, inheritance and polymorphism using animals and shapes as examples -_- At the end of the day that knowledge failure falls on me, but college should not only be about teaching the basics, but you should taught practical real world skills that you can take with you day 1 of graduation that actually make you hirable. And those classes should be changed/added/removed on a yearly basis based on what's most relevant. Especially now that good colleges easily cost in excess of 100k+
i have the opposite problem with learning languages, i can write anything in them myself, but once you give me a library/framework i will be throwing many many clutches at it to make it stop breaking down
I absolutely love Prime, but I respectfully disagree with his opinion regarding individuals who solely rely on "frameworks." While it is true that we often use higher-level systems in our work, I don't believe that drawing a line in the sand is necessary. For example, must we write an entire operating system before developing a web app? Of course not, as others have already done that. Likewise, it's unreasonable to expect developers to know all the v8 C++ bindings before using JS in Chrome. While it's arguable that a "good" developer should be familiar with the nuts and bolts, it's also important to remember that in many companies, success is measured by the completion of feature tickets. Being proficient with a mainstream framework can take you a long way, and there's nothing wrong with that.
i get what you are saying. i have a different perspective because i get the 100s of messages a day askingfor help, being stuck with just using react, how to move forward, that their job is just an api plumber. so many people get stuck in this plumber role and have no idea how to leave.
About what you said at 6:44 I had the same realisation when tailwind came to the scene, I got good at CSS and then I used tailwind so I understood what was happening and how to do things sooooo much quicker then my friend who does mainly backend stuff and never got started with CSS just learnt tailwind. (Also ik it’s a very amateur example but I thought it applied)
I did one off the most considered theoritical degrees in cs in my area ... I remembere having and existential crisis thinking that was useless ohh boyy was I wrong . Today I regret nothing, like you said now I understand evrything under the hood and the time it takes me to learn new stuff is probably faster than most people.
@@skyhappy He's right though. You learn a lot more by getting a CS degree than you learn by completing some bootcamp or udemy course or whatever it is. At some point, every new technology feels somewhat familiar because you've seen a variation of it before, or it's based on principles that you're familiar with.
@@harleyspeedthrust4013 what principles are you talking about? This big wording does not give me much insight I have a friend who graduated with me that told me he can't make a full stack website. Another friend as well never made a full stack website.
@@skyhappy I can give you some examples. If you learned functional programming in college with a language like Haskell or Ocaml, you're probably not going to use it directly in industry - but you will have learned about (and seen firsthand) the benefits of composition. If you've ever been satisfied to see that the solution to some problem boils down to a clever application of a few simple functions (e.g. map, reduce, zip, etc.), then you might know what I'm talking about. It turns out that knowing how and when to compose things, whether those are functions, classes, entire services, or whatever they may be - is one of the essential skills that you'll need as a software engineer. You really can't design software effectively without it. Another example: if you ever took a class taught in a systems language like C, you were most definitely taught about (or expected to know about) memory, and your assignments may have been run through valgrind and scored on their use of memory. You would have learned about memory management along with techniques and/or principles to follow to ensure that you're not wasting or leaking memory. Again, this is something that you need to know about as a software engineer, because no programming language, even those with garbage collectors, is immune to memory leaks. If you've only ever built CRUD apps, you probably haven't been exposed to these things. You may not even know that they're important.
5:30 Absolutely this 100x over. I know so many developers and engineers who can connect all the pieces of different API's or libraries. Try to get them to implement something new though and they are completely clueless.
being able to create a spa with routing, state management, proper pwa manifest, service worker, workers for hard things, actual reactivity and so on in vanilla JavaScript sadly is not worth anything today.
University is the best thing I ever did, I was a self taught python programmer for 5 years or so, then decided to go to Uni, then I had to write everything in C.. And then I realized that I knew absolutely nothing. In the embedded world we are still just writing C, and Rust. But the protocols.... that's where it gets really difficult
It’s so refreshing to have someone say a University Degree is actually a desired thing. Over 30yrs of hiring tech folks there are pretty much 0 that I’ve hired without a degree. A particular skill is unimportant to me, I want people who know “how to program” and think at a fundamental and critical level. Frameworks and methodologies come and go ( and are cyclical - nothing is actually new at this point - early web -> VT100 terminals, late 90s early 2000s web -> 3270 terminals, etc… self hosting to AWS lambda to SASS is the same as three decades earlier in the mainframe era - own -> timeshare machines )
I recently turned very anti framework and it feels great. I use C, js, css, html. I still have to use frameworks at work though. But generally, I found that I am a lot more productive in C. With C, I'll just solve the problem and thats it. I dont have to dig through API's to figure out if some framework will let me do smth. I'll just do it. And its nice not being tied to runtimes anymore. I'll make smth, build, test, deploy, and thats that. No need getting infrastructure teams involved to try to fit a runtime into some legacy - or not - environment. I feel u on the feeling bad for ppl that are stuck in frameworks. I was already before, a little bit more, framework/language independant than most, since I had spent meaningful amount of time in most languages and frameworks you can think off, and I spend time learning computer stuff and protocols. But since I went the whole way, it's sad. Ppl that have spent a lot more time than me in the industry that are considered skilled, that clearly have no clue how their software actually works, they know how to apply clean architecture and how to call framework methods to make smth happen and thats it...
Why is it called bread first search? Do you want to make a sandwich?
Breadth* so they want many sandwiches. Bread^th
scratch the bread search party, have you heard of this so called death first search?? why are developers grave robbing????
Lookin up the documentation for bread
Bread search leaves a breadcrumb trail for preseeding cookies.
Bc when you know it, all you do is make bread 💵💵💵💵
As a Devops i must admit that "tool overload" hits sooooo hard ... "Me: i know jenkins" "interviewer1: well ... we work with github actions" "interviewer2: well ... we work with gitlab pipelines" "interviewerN: well we work with aws pipelines" "interviewer N: well ... we work with bangaluna-bimbozuma pipelines" ... f&&&&k! And its just a pipelines tool. To build a infrastructure you also need some cloud (AWS, Azure, GCP, Oracle - all offcourse different), some IaC tool (Terraform, Cloudformation, Ansible,Puppet, Chef - each of them different), some proxy/ingress controller (apache, nginx, traefik, haproxy), logs tools (ELK, Loki, Greylog, fluentd) a lot of other things which you have to learn because market demands it (kubernetes, rancher, helm, prometheus, grafana, splunk, velero, minio, argocd, openvpn, wireguard, zerotrust, karpenter, kustomize and on and on ... ) and even though you say you are middle/regular devops (not senior or even strong-middle/regular!!!), that you have 3years experience in technology X they ask you about deep details of technology Y and dont care about yours "ok i dont know it but im ready to learn and ill try to do my best to catch up quickly"... And you're rejected Nth time and you end up with with a feeling "damn ... i dont feel even as a junior, maybe i should just switch to some truck driver job or mcdonalds" and every evening you go to sleep with an anxiety thought "im not good enough" and you wake up and slap yourself in the face with "ok, get yourself together man, you have family to feed" and you go to another interview ...... damn im so pissed now ... :(
How do you stay sane at all
@@User948Z7Z-w7nthats the sad life of an DevOps/Platform Engineer, somehow you push forward 💀
DevOps here, this is partially true.
Most companies understand it's not about the specific tool but will ask more generic question. Then there are universal things like Linux, Cloud, Kubernets, terraform etc which every company requires.
Btw Ansible, chef and puppet are in a completely different category than terraform
I hope you have landed a job by now
If this is the case probably hiring process in company is mainly done by HR department. And they simply look at words on job offers.
Whenever someone says "My first compiler" you know he's a serious developer.
i should really make a compiler
Because they started in a compiled (non-JIT) language?
@@Turalcar Still, making a compiler is a feat. Saying "my first compiler" implies the creation of multiple compilers.
@@cerulity32kit's much easier than you think, I've written multiple languages now (most were interpreted) and recently wrote a compiled Python-like language
@@cerulity32kYes you should!
Fortunately, my first language was C. I took a course of design and analysis of algorithms in my 1st year of major which was taught in 2nd. I had to learn most of the things myself. I didn't knew C++ STL existed and I had to write most of the data structures from scratch during assignments. Even though I don't write C/C++ now, working on hard programming problems with a strongly typed, low level language taught me a lot.
Same here. I think C is how I grew alot of fundamental computer science knowledge compared to someone that started on Python.
@@jel1951 Haha I'm living proof of that. But it gets easier
Me too. I was using char** to represent strings and doing malloc/calloc to create lists. When I learned about strings and vecs I was shocked
I will die on the hill that C is the best first programming language for longer term computer science education
@@phoenix-tt Yup dude, dealing with pointers and Seg faults was straight horror. I remember a time almost giving up because I couldn't figure out why my code was giving seg fault.
Hot take, but I think if you're overwhelmed every time a new framework comes out and you feel like a beginner again, you're still a beginner. Instead of learning programming you've learned a certain framework/library/technology. You're a good programmer once you can adapt to these changes because you have the ability to think abstractly and you can transfer your existing knowledge.
Agree. I recently wrote a Higher Order Component in React taking some inspiration from design patterns and my colleagues were like whoop. I mean like once you get a just of things, it is really easy to identify common problems and the solutions you learnt.
Agreed, but this is mostly valid if you already have a job. For jobseekers it maybe rough because in interviews they may go deep into a framework that you are actually a beginner of.
Yes agreed, if a new framework comes out, using the new features and working with it should make your life easier. If you're overwhelmed you just don't know the fundamentals that all these framworks build off from.
Agreed. I'm excited to see new frameworks come out because I don't mind moving and learning new ways to do the same thing that are more performant or have better DX. So many people complain, but if something looks cool I just spend a couple days playing around and I mostly understand how to do things. I do a project and I will have a good grasp. And I do projects im passionate about, combined with better DX or performance it just feels fun to me. For example, moving from React to Svelte once the ecosystem matures a bit more.
just say 'what ever prime said, with more words' and save us some time
I'm one of those troubling beginners you described. It's a tricky position because on one hand you have the "path to getting hired", which is the main goal, but that doesn't coincide with actually learning what's going on at a deeper level.
However, I also see how learning that deeper level is 100% on me to pursue. It just feels weird and feels like I'm going in the wrong direction (if that makes sense).
yes that's why i am started rust... and python
and just moderate webdev
webdev is just crazy and i can't keepup with it...
@@vaisakh_km yea for sure. it's certainly a conflict between learning the tools like React because that's what will lead to being hired, yet wanting to learn the topics on a deeper level because it's interesting. i wasnt able to go to college so I missed out on learning the computer science topics.
luckily since there are tons of resources online now, I'm hoping that after getting settled into a job I can use my spare time to go back and learn those topics on my own lol
I'm at that same spot you're at. It's gotten to the point where I'm not sure if I even want a job working development because it seems you have to learn the incorrect way to stay "up to date" with the technologies and just follow the trend. I think I would much rather just keep this as a hobby and develop the software I want using the languages and stacks I prefer.
Don't learn to get hired, instead learn programming. Get a good understanding of the fundamentals instead of learning a popular framwork without understanding how it works on a deeper level. I think that's the mistake of the person in the video, he only learns the technology and as soon as it changes (which it will) he has to start from scratch again.
Yup, it's an issue for the whole of technology industry, not just us. There was "less to learn" in the 2000's, although building a passable web page was way harder than now. At least where I come from, the schooling has also pivoted strongly towards the commercial side of software: learning how to use libraries and other software actual engineers have built to achieve something that can be sold.
I actually think it's *shouldn't* be ON YOU to go deeper, but rather if you've got a degree it should be the other way around. The libraries are actually an after thought once you learn to build software and program well. But as it is right now, the onus is on the new dev to learn everything below the surface.
I started using Python 3 years ago at my previous job to automate some stuff. Turned out I liked doing it more than the actual job, so the next time I was on parental leave I did a self-taught course on Udacity to be a webdev. Done some projects in my freetime, got a Python job at a large company because I could sell that 2+ years I spent at my other job. During all of this time I spent every minute of my free time learning the inner workings of the computer. About a year ago I started learning Rust and I am just now starting to feel comfortable using it; recently I managed to bring it into the company to start using it on smaller independent projects that don't rely on the existing Python or Java codebases. Never been happier
so your company now uses 3 language rather than 2 huh?
Genuine question, how are you going to hire future Rest developer? I heard Rust has pretty steep learning curve
@@chawza8402 My company uses probably 10+ languages, if not more. We have 200,000 employees worldwide and when I say small projects, they are small. One of the CLI apps I wrote is probably ~500LoC and been properly working for 5 weeks straight. If it works out, people at the company might be inclined to use Rust in incrementally larger projects. For now I am more than happy to write small but reliable tools that are being used by 1-2 colleagues at a time. The code is documented well enough that probably someone with minimal Rust experience could maintain it if needed.
@@chawza8402 "how are you going to hire future [Rust] developer?"
You don't. >>> Job security!
jkjk but yeah I agree with @ant1fact. If it's small projects and documented well, why not? It's only going to get more popular over time. It's like having something in C. Just because it's steep learning curve doesn't mean no one will learn it.
@@chawza8402 he made himself more valuable and more hard to fire/replace and learnt a new language along the way. What’s wrong with that for him?
As for the company…well, he doesn’t own it))
Damn prime this one really resonated with me. I’ve often looked back on my university days with slight disdain. The course felt outdated as we weren’t using the “latest” way of doing things back in 2012, I used to resent the fact id go from my datastructures and algorithms course to finite state automate classes and then to some software engineering class using c# or java; I’d come home and spend countless hours practicing these things and would then pursue some new framework (which I thought was delivering more value) but never had I reflected on the fact that all of those other modules were providing a deeper understanding of how everything comes together under the hood. Thanks for opening my eyes on this one!
Thank you! People underappreciated college. College is about learning how to think. Sometimes in an unapologetic ways. I mean some of the odder languages I learned in college: Ocaml, Smalltalk (yeah, really), Prolog, Haskell. Don't worry, we also used normal stuff. I always understood I have to learn the latest greatest useful stuff all by myself. But compared to that odd lot it was not particularly hard.
if you can grok ocaml, haskell, and prolog, then javascript is nothing. I have never messed around with smalltalk so I can't say anything about that. At my college the intro class was taught in ocaml. I think the class was actually easier for the students who had no prior programming experience.
it is so true about the front end ecosystem - I think it boils down to how companies hire, they'd rather get someone that's already familiar with x framework instead of someone who'd be able to pick up any framework in two weeks
But yeah, I've recently moved roles and I found it super hard to switch to a job that used different libraries from what I've used in the past because the interviews I had were mostly library based - which is fine, but when you have a candidate that's willing to learn the framework/library and another who's an expert with x years of experience you're going to hire the experienced one.
Front end is crazy - but yes, the fundamentals are incredibly important and when I was starting out I remember having a hard time understanding what was javascript and what was react, then I had to take a step back and get deep into just javascript
it's weird because i feel the same in CS degree. i am familiar with data structures and algorithms etc but it's not like we build apps. i make stuff on my own but it always feels like someone out of a 2 week bootcamp is just way better. like they can build interesting looking things and i am just trying to write recursive min heap
Oh they are way better at building stuff.... For now.
Once you start going you will crush them, take a bit of rampup but it will happen
Don't get discouraged. If that person only has bootcamp experience, they will most likely take a long time to actually become a good programmer just because they don't understand fundamentally how some things work. They might produce something that looks good at the moment, but might be horrible to work with in 3 months, 6 months etc. Don't let first looks deceive you.
I am self taught myself, but I realize now how much of the theoretical knowledge about programming and design patterns I'm missing now and I'm actively working on it. I do offset some of that by being really curious and by expanding my knowledge beyond programming into other areas such as developer tooling, Linux, Docker, Ansible etc.
Holy shit I feel the same way!!!
the thing is to not start chasing new shiny things, As my physics teacher told me when i was but a simple script kiddie and scratch game developer, "The rabbit who always chases the next carrot is never gonna actually eat the carrot"
being a self taught web dev this hits really close to me as i feel like i barely learned enough to get a job and do well at very specific tasks but my general programming skills are really bad because i never had that proper education
dont stress it bro im self taught, lets get the fundamentals down, Data Structures, Design Pattersn, algorithms, that's literally only thing stopping us from being Sr level
@@dronestrikejr easier said than done haha but yeah youre right
@@dronestrikejr I'm also self-taught but that is supplemented with 3 years of university. You described what a Jr coming out of University will understand. There is so much more to learn that is very applicable to web dev that you missed. The hard part about learning it alone, is understanding what is truly fundamental, and it's really hard to recognize what else you need to learn. It doesn't help that all these brogrammer influencers tell you that you only need design patterns, data structures and algos.
This isn't to say self-taught isn't possible, but spend the time to learn fundamental tech as well as programming fundamentals. Otherwise you won't be able to figure out how to begin diagnosing issues down the road. Also, learn how to write good tests!
Feels.
Im college drop out been working with rust the past 2 yrs and i don’t feel like a jr, i mastered some design patterns, algos, and even studies SysDesign/Distributed systems
We have to grind extra harder guys to close our knowledge gap. It is do able!!
This is why I value my CS degree so much as a frontend dev. I learned fundamentals first and then learned react on my own as I put together projects. I certainly lack some fundamentals in webpack, but otherwise I feel I have a good general process of what is going on in a new language I learn
What fundamentals did you learn? Anything you recommend?
@@nicolausdasilva8133 Not op but most of a CS curriculum could be considered "fundamental"
Data structures, algorithms (+ paradigms), discrete math, finite state machines, compilers and probably more.
You dont need all of that of course, but all of those things could be considered fundamentals. Start with data structures and algorithms and branch out from there.
I glad I did not paid much attention on webpack because Create React App and Turbo/Vite handle those bundling for me. Thankfully i joined a project where the setting has been configured so I never touch the webpack config file
@@lucasbrant9856 compilers basically abstract syntax trees.
I started out on my own programming C#. I got hired and improved over the span of years. My understanding of everything relevant related to informatics increased to a high point as well. I also know C and how data is structured. I know about performance, I know about byte and bit-level operations, about memory usage, networking, IO operations, and a lot more. I learned by doing my private projects unrelated to my job, and I grew from my mistakes (the dark era of too much inheritance) - some of which are quite complicated and well done.
I hated university and I dropped rather quickly. By then I was already able to code, and I was really annoyed by the needlessly high difficulty and redundancy of what was taught. Now I am a freelancer working 100% remote, and my company really doesn't want to lose me.
The Terminal Junior...I like it. Let's strategize here: Continue to edit your resume and LinkedIn to reflect the experience of a junior. Land junior roles and pretend to be a potato to keep expectations low. If you work hybrid/have a creepy employer who wants cams on all the time, make sure to drool and pick your nose often, when people ask if you're special needs they'll say "No, he is just a junior dev". Literally NOBODY will have any expectations of you. Depending on where you work you'll have about a 6-12 month grace (or disgrace?) period for being an absolute tater tot. Now here's where the hidden genius comes in...you do this at 3-4 other jobs simultaneously. And in reality you're not a potato dev, you're just living life on cruise control earning 4 $70k/year salaries. Just be careful not to show up to your once a month meeting looking like you're balling out of control. Remember, you're a poverty potato.
(Obvs don't do this)
This is what I don't get, you don't lose your experience when another framework shows up. The function names are different and there's some new syntax to get used to, but it's all the same stuff in the end. On the other hand, I spent way too much time creating my own shitty frameworks so I probably got some experience out of that.
But I feel like a lot of devs are scared of things they don't know yet and second guess their abilities. I'm the opposite, "Oh I'm going to build a GraphQL server, no problem, I've heard of it so I'm basically an expert".
yea so is everyone applying to the role on linkedin lol
That's a somewhat shortsighted view. Sure, you just have to "get used to" some new syntax and function names, and if that's where it ended that would be easy.
But that's not where it ends. You still have to maintain those old systems. If you're jumping on the "next big thing" every 6-12 months, you very rapidly end up with dozens of languages and frameworks within those languages and tools to support those languages and so on. Yes you theoretically "know" them all and can handle that, but it becomes a heck of a lot of context switching.
That's before we look into the addition of entirely different skill sets. A modern "full stack" dev needs to know more than just programming - they need to know the database layer, how to setup a CI/CD pipeline, how to provision any number of the 35 trillion AWS services and understand the slight nuanced differences between those 3 that all sound the same on the surface, they need to know UI/UX design for any number of form factors and how to do DOM manipulation that won't freak out in any of the 3-4 common browser engines that all do things slightly differently, how to publish to the various app stores and at a least a basic knowledge of the legal and financial impacts of that.
Sure those are all arguably "related" and are part of software development as a whole, but learning the legal requirements for publishing on the Play store is just a bit more than "new syntax" when your experience is in C++ programming. Creating a UI that works for colorblindness is not just a difference in "function names". These are entirely new disciplines you need to learn.
@@altrag Or just leave webdev. Sounds awful.
3:19 Yes, but subconsciously. *Pianists don't complain about the number of chords they have to memorize.* They *play* music. Developers should *play* code.
Well, I like the comparison, but to be complete, I'd like to hear how a pianist's job interview sounds. Because according to your comparison, then it should be like "okay, play the C# major chord in the key of E and you're hired" (btw i don't even know if it's something that exists). But I doubt it is.
@@LuccDev if you want a gig as a jazz musician you need to be able to demonstrate you can sight read charts and you know how to play different modes, and different scales at the very least, and show that you can compose a solo. If you have experience, people know you're good, but if you're new, you'll need to sit in with a group and show them your technique.
This isn't really all that different, but you can't really expect analogies to hold up in every way. Analogies are used to explain a concept in another way someone might understand. It's not meant to have everything poked and proofed, because analogies are not the same as the thing you're comparing. If it was the same, it wouldn't be analogy.
Refuting an analogy based on the thing you're comparing it to is kinda goofy imo.
@@ClowdyHowdy But that's my point, it means that the interviews are "natural" things, it's not regurgitating theory that you might not even use in the job.
@Luc This is what I mean: interviews for programmer positions should not be like interviews for programming teacher positions.
@@ClowdyHowdy Now we have both the practice and theory about analogies.
We're getting ready. :)
I make sure I'm good at base languages and then go into frameworks. It helps whenever you come to a problem in the framework.
this guy speaks from experience his words are pure wisdom that are hard to find these days , thank you for sharing your experience with us
As someone who went through a bootcamp I agree entirely with your perspective on them. I learned how to write react and some node and some SQL but I always hated how black box everything felt. I’ve been spending all my free time since learning DS (using your FEM course) and writing some C to understand what I’m actually doing in Reactland.
Funny enough, I TOO, am a bootcamp grad. It gave me skills to build something in react but not the knowledge of how to do it and the why.
So I thought to myself, well, lets learn DS & Algo in C to understand they why and knowledge. Is it worth it? Maybe.
I see DS & Algorithms like math formulas. You learn that a^2 + b^2 = c^2 formula, then you realize you can switch it around, modify it do what you need to with it for whatever problem you're facing that requires it.
:)
If you dont know how to create a basic CPU using raw materials you mined yourself with your own tools, you cannot truly understand what Javascript or C is doing, and you might as well be a wix developer
@@ilearncode7365funny comment.
It is pretty hard to not only learn how to use new frameworks and tools but also understand the "lore" of the language and how the design has changed over time
2012, started learning Clojure casually in side projects, 2014 started working in it full time. Almost every bit of knowledge I’ve picked up from those first several years is applicable to my work in other languages since - also still directly useful in Clojure, which is very stable - every single project I’ve ever made in it still compiles and runs to this day. Vast majority just fine on later JVMs than they were written in, including the fractured space of temurin, corretto etc. Most of my other learning outside data science/ML (my original background) goes to low level langs, compilers, etc.
The benefits of sticking to two language worlds: both where you use a few data structures - and functions that work on all of them, in one case close to the metal, in the other as high level as you can get, solving problems by making mini languages to solve them on the fly… I think this is the best recipe for learning fundamental, transferable skills. As Prime mentions, abstraction trends come and go, algorithms and data structures stay the same. Learning frameworks and trend chasing in JS land while cargo cutting design patterns from whatever talking head in the abstraction industrial complex gets to you first is a career trap.
Part of being a Dev that's so great is having that feeling of being 'lost' when something new comes out. I love learning new stuff and i've never turned down a project that required learning a new integration. Too many devs are just 'react devs' or 'angular devs' or '.NET devs'. Those static environments have always been so boring to me. To any devs out there that have been putting off applying to somewhere--if you meet 70% of the requirements, just go apply.
1) Attitude to shiny things is orthogonal. I, for example, usually don't care.
2) I don't think I've met a single-environment dev in person. When someone says they're "X dev" they probably mean that's what they're doing right now. All places I worked at had the attitude of "it's just another language, how hard can it be". I'm probably lucky though.
3) I think people who write job listings often mistake "requirements" with "job description". When they write "you need X" they usually mean "you'll be expected to work with X". If the interviewer thinks you'll figure it out you're good to go.
This is 100% correct, I have been a software engineer for 7 years and I knew that I still needed to learn more stuff but didn't know. I got in before I got a degree, but I did go back to get my bachelor's degree and even with this I did not learn the fundamentals like data structures or algorithms. Now I'm finally realizing what I need to go back and learn. I was able to get by because I knew how to use React, Bootstrap, Php with CodeIgniter, Vuejs and Nuxtjs, but still didn't feel like I was a legit software engineer. Thanks to your videos I now know that I am a bad developer and what I need to work hard on. I want to get to the point where I can contribute to a framework and understand what is going on.
Love how the recommended videos at the end are either waifus or programming.
oops
I can’t tell you how much I appreciate the advice you’re putting out here man.
This takes me back :).
I'm self taught and employed. But I also started with Bare metal programming, C, C++, C#.
My Uni did teach us Games Engineers not programming, only math and algorithm theory. But nothing else and the code I had to work with from lab team members was horrifying.
Had to quit because I was working part time as a programmer to finance the Uni studies and living expenses and was slammed with too many hours. So I quit.
I really have no hard feelings towards college or Uni, everyone learns differently. But If I could back in time, I would not waste my time there again. That being said, I was already learning programming and working on projects in my free time for 10 years. So my views may be not the optimal one :).
I got only a few small tips for anyone wanting to become a programmer or are currently one:
1. Never stop learning, stay curious and at least look into your stack you are using currently :).
2. Don't get hung up on "religious" debates such as what language is best, tabs or spaces and so on^^.
3. Stay humble and learn to admit if you don't know something and learn it. Don't stay ignorant.
at this point I dont bother getting good at any frontend framework. I do just well enough to get by, because I know in 1 year there will be something new and everyone abandons the old framework
10:30 "a suit or a dirty old t-shirt from a conference" 😂😂😂
I am currently implementing a microservice application using Java and I must say I thought I knew what I am doing but writing that system from scratch is really taking a lot of thinking and time to understand what the hell is going on under the hood. But I do believe that going through exactly that struggle will pay off in the future because I understand how things work, communicate and everything that goes along with it
I do remember Pascal programming in school and college 😂
I started with my first job same time 2010, after being a self taught jquery/html/css guy, I'm now 39 , married with a kid. I've spent a couple thousand hours of my spare time over the years keeping up to date and progressing into some full stack and I'm only what I would consider a good junior dev as far as coding ability, my knowledge on putting it together and debugging is probably that of an intermediate, but at the end of the day I know I will never be a good dev and probably not a senior, and I'm ok with that. Remember we work to live, not live to work.
You speak from my heart. I was a graphic designer and changed my career to be a dev. I was somehow something like a frontend developer. But i only templated sites in Oxid and some other frameworks. I knew some JS. (no Frameworks, like React, ...) But i couldn't call me a programmer. Now, after a long illness, i am visiting a bootcamp that lasts 10 months. Its a python bootcamp (initially i wanted to learn Java, but no none wants to learn Java, theses days). I thought, ok, 10 Month are enough to get a proper knowlegde of python. But we only got a brief introduction and then stuck with django. The decision, to teach django, instead of programming, really bugs me. I feel comfortable in django, but i know that it hides a lot of its mechanics. And most of the people in the course are struggling with django, because they don't understand the mechanics, that django is doing for them.
I really regret that i didn't study informatics. But i will continue to learn programming on my own, once i got a job again. Because otherwise i don't feel confident.
The more you know the more you realize you don't know. A vicious circle.
This was my entire career summed up year by year almost exactly. Although I picked up Vue in 2019 and lucked into having decent work after that. Now this year I got a next.js job and ... man does it suck. Hooks is the worst dx imo. I never felt like I moved back to beginner level at any point, but switching frameworks gives you the choice of thinking either you aren't good or the framework isn't good. For the sake of my sanity I choose the latter lol
This, I have never felt so understood in my life. React hooks are the worst thing in the history of programming, all because React devs can't bother to learn OOP principles and just general code organization; instead you got functions acting like fake classes and forcing the one-way data flow on everything.
14:10 You need to learn: Software Development, Software CI/CD, Frameworks, Deployment Tools, Packagers, Task Managements, Databases, Caching, Connecters, Cloud Tools, More than 3 Languages, Automation Tools, Linux, Networking (if you want to debug some weird schitt), Software Security
All this to be called Jr Full Stack Web Developer
Great video, I'm a beginner but more interested in video games and learned a bit of C# and Lua on my spare time. Mostly reading pdfs I can find online and a lot of it doesnt even touch into under the hood stuff. Which makes it rather difficult to learn as well... all the new stuff does deprecate old stuff if all you care/know how to get the thing to work instead of data allocation. Something that could be measured so you can double check your work type of stuff instead of just connecting dots.
As a non-programmer, I’ve never felt compelled to comment, but your insights about knowing JavaScript vs knowing libraries is a perfect analogy of the photo industry (my forte).
A lot of people are disappointed in their photographers because they’ve paid them so much money to take such mediocre photos. “but they use [popular brand]! I know that brand is good!”, they say, not realizing that brand does not create or shape light, nor push the button…
Fundamental understanding and exploration are paramount to being good/best at anything.
Oh, I actually didn't realize your algorithms course was free, I saw a preview recently and it looked interesting. Thanks for taking a moment to point that out, I'm gonna put that on my to-do list.
You have to enroll in one of their plans, monthly or yearly, which have a fee.
@@taserianAlephNull yeah very misleading.
Edit: Apparently you can sign up for free without a credit card and get lifetime free access to 5 courses (pre-selected but good arrangement) one of which being the one he pointed out.
I'm an Angular fan but I love your prime reacts stuff, very entertaining, subscribed !
I'm a React dev and I hate when someone spits on Angular. I worked on NestJS(inspired by Angular) and just loved the framework. Many people hated it because of performance(which was fair) but most of them in my opinion hated it because there smoothe brains couldn't comprehend the average level complexity. Also, ben Awad is the guy to blame mostly
@@akshay-kumar-007 i worked on nest a few months ago , i would say it is neat , i loved it
@@akshay-kumar-007 and one thing that annoys me is that Ben Awad usually spits on AngularJs (Angular 1), when it has been long abandoned by Google. For some people who are not familiar with the framework development, they may think that Angular (2) is as bad as AngularJs (1) because of that.
I agree with your point about computer science. My CS class was like 90% just math and we didnt even write many programs
Algorithms and data structures are one of those things where you suffer to learn them, but once you know it, you look back and think, "why did I ever have a problem learning this?"
So if a more experienced programmer looks at you like you are dumb for not understanding breadth first search that is why.
Thanks Prime for focusing on the foundation stone: the flippin' fundamentals. If you know the fundamentals then you can work your way up to any kind of framework / library / whatever programming doodad de jour.
6:30 this is why whenever one of my friends wants me to teach them programming, the first thing that I have them do after learning basic programming and using the libraries, I guide them through making a low-level project like a 3d-renderer or BASIC compiler.
I totally get that part about language vs framework. People nowadays jump straight into frameworks without learning the languages. We recently had a project and I was instructed to learn flutter. Went flutter and saw that it used Dart, I immediately stoped and went looking for Dart. Made sure to understand its syntax basics, compiler etc. You would be shocked how many beginners are doing flutter without actually ever going through Dart docs itself.
In my Dev journey I got an Associates from a community college that was actually well respected for churning out ready to work .NET programmers.
That was in 2011, everything around me changed so fast that by the time I graduated I was absolutely obsolete and what I "knew" was barely worth it. The SQL knowledge was very helpful though.
I got totally destroyed in Interview after Interview. Went back to school and got a bachelor's and an internship. Now I have been doing this for 6 years professionally now what I have learned was the following, I should have just lied on my resume got a job and learned on the job. It's exactly what I did basically anyways.
"Adam you have done Angular? We need a full stack app using Angular as our front end"
Yup got it, between Google and our existing code base nothing I can't figure out.
Been doing that the whole time, everything I have learned has mostly been "They want me to do this, how do I do this?"
Getting a bachelor's was a waste of time. How did it help you anymore than community college?
@@skyhappy actually that was the short version of the story. I actually only went to get my bachelor's just so I could get an internship. My goal was to turn it into a full-time job or something.
I turned that experience from an internship on top of my associates into a full-time job getting paid too little money.
But after that I got enough REAL experience and now I work for a company I like, for people I enjoy doing work that is pretty ok.
I never finished my bachelor's.
@@adamschneider868 that is a good plan. I wish I never did my bachelor's at the university I did. I wish I did an online one that I could speed run in 2 years. I was so clueless about the bloated university system.
NEVER managed to get a job for understanding concepts and how things work. Demand is always 5+ years of experience in some specific technology. Once got rejected for manual tester position because I did right click->inspect... This industry sucks, and it will take your soul, but if you play really smart and get a bit lucky you can earn nice money. Just remember, earn as much as you can, as quickly as you can and GET THE FUCK OUT!
It resonates with me. If 15 years ago I was bad at C++ , now I'm bad at C++, Java, Ruby, Js, Golang, Python, Kubernetes, GCP/AWS, not mentioning a long list of databases, frameworks, libraries. It's never ending uphill battle with learning stuff and, what's even worse, with retaining obtained knowledge. The most happy I've felt was when I was writing in Ruby on Rails. I knew it really well and was able to be really creative in it, answer almost any tricky interview question.
1 - Turbo C++ Compiler with C was where I learning to programming (2018 ~2019) I do CS and the begin Math is too much easy than programming
2 - My first database connection was with Mysql and Java (First OOP language too)
3 - The first job like intern I start to learning more Spring and Jquery (First experience with Javascript, I think today people start with React)
4 - After that I spent some years with Java
5 - Few years ago I receive a opportunity to work in a new project with php, vue, aws .. but I never left Java
6 - Last year I resolve to change and learning Neovim for everything, start to learning more about architecture, review DS and studying Rust
7 - Now I'm in this Continues Learning like a Software Engineer and in the Work Lead a Team.. this is a true challenge!
I might be the only person on the planet but the fact that I need to learn new shit every so often makes me enjoy being a software engineer even more. Im always hyped for a project which is different from what I really do. When there is a new thing in the company I always go for it.
So... i've been in this company for 5 years, we do individual software stuff.. like... building a middleware if someone needs one or building a platform to manage budgets... etc., i started taking full responsibility 2 years after i started there for 5 "older" (like 1-5 year old) projects so all others can focus on new stuff. We are not a big company, we didn't have a lot of projects. Me taking the five projects was basically 70% of all running projects at the time. I managed everything from support, to estimating the cost of new features, talking to the customers, designing ui and ux, managing billable stuff, programing front- and backend.. updating all the outdated libraries without breaking stuff... doing all the necessary stuff.. everything. At this point i am basically what feels like a underpaid freelancer for 3 years now. People treated me like i was a junior dev and they still do. That got to me and i started to write like a junior developer again... a shit ton of bugs, missing obvious stuff and when someone tells me that i messed up i just say "junior". Important to know is that i started with a very limited understanding of java and i didn't even know what typescript was.... or wicket... or maven... gradle... heck i didn't even knew what json was.. because i mainly programmed super basic tools and never studied. I also started to review code from others and finding crazy obvious bugs and problems which nobody thought of in their projects... when i told them this.. i was always told that i am a junior and have no idea. This is a downwards spiral... either you can't let that get to you or you're helping them.. but no matter what, they will not change their mind on you being a junior.
Sometimes... a little appreciation wouldn't hurt.
EDIT// yes, i get paid like junior dev who just started working in tech... actually.. a junior developer who starts now would make more money.
I honestly felt like an idiot because when I graduated college and started working as a developer, all these people would come around knowing the hell out of reach and sass and a bunch of frontend tools and I couldn’t figure out how they worked. Over time I realized how important it was to know shit like big O notation, sorting algos, OOP, stuff in the CS major that was taught by 80yr old teachers with pen and paper. You learn the fundamentals and everything flows from there, lots of people know react and jump from svelte to x or bun or y or whatever but they can’t answer a question of how to actually rewrite and redirect http requests or basic web dev things -__-
Wanted to say thanks for linking the video in the description! I noticed
Why is web like that? The more I learn about webdev the more I feel like I shouldn't go there. It's a no man's land
I do feel bad for people who don't have the foundations down. All of these tools are tough if you don't know the basics of how things work.
You know, sometimes I hate how useful computer science is and especially understanding it on like a deep fundamental level. I'm barely a "software developer", that's what stood in my last job description but literally within my first month there I started doing 3D and photo editing whenever I could and by the end only about half my job was actually programming. I'm an artist, I wanna do design, drawing, animation, 3D, video maybe some frontend stuff. All that creative jazz but, when I run into problems, need to figure out how something works or do something unusual, most of the time, it's my cs knowledge that helps me the most and going any further is only more cs.
Just having a basic understanding of graphs and vectors and how they are programmed helped me a lot when 3D-modelling being able to write my own graphics engines, shaders or even just blender addons would make such a difference. I'm probably going to college for a bachelor in digital art next year but after that, I might just actually go for another bachelor in computer science just because it gives you so much more creative freedom.
Anyways I'm rambling, the tie in to the video was actually just to give an example of how useful it can be to just have a good understanding of the fundamentals. I already have 5 years of mostly computer science, electronics and general stem education (not too deep but very broad), cause where I live, we have high schools that do that. That stuff has helped me so much just because I could view everything through that lense and for example often allowed me to get a pretty good guess of how things might be set-up in the background which is insanely helpful when trying to understand how something works or how to fix it. Learning how something fundamentally works really makes such a big difference.
This is so true. I went from:
"College is useless" to "I need to remember how I passed my DSA and systems design courses"
If you know data struczures you can solve most problems. I'm currently working on an experimental slicer for 3d printing that ditches slicing shapes entirely allowing for simple non planar slicing.
Do you know how I solved the actual slicing part? I simply move data from one type of data structure to the next with the right traversal alrgorithm. The entire slicing process involves 0 complicated algorithms, everything is just moving data from a to b after getting the mesh into a usable format and the whole thing "magically" solves itself
Yeah. I think many problems can have nice solutions like that
If I started again, I would certainly learn something like Lisp as my first language. Truly teach how to program and the mathematical models behind it, higher order abstraction, best practices, and no constant OOP brainwashing. Feel bad when I see people start programming with OOP and mutability.
I've been studying computer science at a university for about 2 years now. I love my study but how do I prevent this (like the one dude from the video) from happening? How do I become a "good programmer"? What can I learn or what should I do?
I had the situation of having no informatics in school and just learning everything by myself. I selftought Java from 2016 onwards and got to understand some basics in informatics while doing an apprenticeship for three years but I never got to this point or had time to go that much deeper (like understanding how compilers work and how to optimize with assembly) because I had to work while being an apprentice and stuff. And it's then hard to understand how C or C++ works. During apprenticeship I had some C in school but it was so overwelming while being massaged by Java and its Features that I never had fun working with C, what I regret now because I see how important C is for a basic level of knowledge how these features work and that you don't have to manually remove all the created objects from the memory and the references too so that they don't point on nothing and so on...
In uni i had to learn 30 different languages across 3 years. After that I've learned another 10. Every project requires different tech to be employed. Learning on the go is fulfilling and this job never gets boring.
Nothing to complain about. Just got used to learning things.
🤣
He looks like the dr disrespect of programming
This is exactly why I think the ability to learn on the move is an employable skill. They might feel like they have trouble keeping up, and while it's hard to tell from the video of how much effort they put in, they're still learning.
So FrontendMasters is coded in Vanilla JS, CSS and Golang? amazing
and its an incredible site
thats something i realized lately. no one (at least in developed world) seems to truly make anything from scratch anymore
except for the guys building all the houses
7:00 - yes, when i was starting with laravel and vue and then whatever else i was really confused because i always hated when stuff happend automagically.
Really helped me to just read the f-ing manuals to understand how the magic works - but most people dont get payed for doing nothing but reading manuals and playing with random garbage for several months.
I was just thrown into a botched project and my job was to salvage it - on one hand that was kind of a shit thing to do to a junior dev but on the other hand being forced to read and rewrite raw dog javascript to Vue in a project written by 7 different people across 10 years forced me to learn how all the magic worx.
You always speak the truth. Theirs a very big difference between the framework creator + maintainer vs the framework user.
Honestly I know nothing. I am just a loser who knows how to glue some JS library and write crap code.
8:15 Speaking on this Universities teach you the concepts not just the language. I.e., when learning Databases I was taught Relational Algebra before SQL.
15 years in and i'm still a beginner here as well (dunning kruger)! Agree with everything, 2 space indents is horrible to code review, 4 is where it's at. Learn some solid fundamentals then move onto a well documented framework, do courses / watch prime / read books everyday and you'll keep your head above water.
Every programming language is just a problem-solving medium. And there's 3 parts to learning any programming language:
The first is the language syntax and its semantics
The second is knowledge of the libraries or frameworks available
The third is expressiveness/grammar of the language - how to write descriptively so that other 'speakers' of the language understand your code
Fundamentally, problem solving skills and communication skills can carry over between languages. The real task when picking up a new language is figuring out how to apply your skills in the new context. The reason why I think so many people working in JavaScript or TypeScript prefer to describe their expertise by library/framework is that the actual grammar of the framework is a dialect of JS/TS.
I speak English, but even so I might have a hard time with some other English-speakers. A React and an Angular developer, for example, are like a Scottish man and a Southern American. Both are speaking English - they just have different common turns of phrase and a different accent. They place the emphasis differently.
Just casually "oh yeah I built a compiler once"
"It's a hand-rolled framework to be the best for their site." You know, I think a lot about Casey Muratori saying 90% of optimization is just avoiding "pessimization." JS frameworks help you write code faster by pre-solving some things, but they overload you with assumptions that are often wrong for your use case. When you actually know the underlying tech, things get easier and faster.
And after all these frameworks and libraries, they make unbrowsable websites with a million pop-ups that it feels like being taken hostage. The web is a mess for both developers and users
It's very telling that this guy's idea of "blazing fast" is a website that loads in 600 milliseconds. A whopping 2 billion cycles on a modern cpu. To render a freaking website. And the worst part is, he's not wrong -- that _is_ blazingly fast compared to most of the web. But it's still embarrassing.
As a web developer, I identified with 2 things in particular. One, how many things it feels like you're expected to know, from frontend to backend to APIs to containerization, build tools, CI/CD, and cloud platforms, it's too much, and I think it's because so few people know any of them really well, they all get lumped to the web developer. "It's so simple! You just have to install your dependencies, make all the things, update your Dockerfile, push your code, run the governance gates, create your Jenkins pipelines, configure your networking in the cloud, pray like crazy, and boom! Your app is live!" (Except that I forgot to mention "uninstalling and reinstalling everything because a dependency changed somewhere, or you have to update a build tool, or whatever.")
The second thing is a comment made by a viewer about JavaScript frameworks being treated like languages, which I think is totally true. Job postings are for React developers, not frontend or JavaScript developers, and so if you want a job, the emphasis is on learning how to do stuff in framework X, rather than on having learned programming, and I see the effect of this time and time again from people who are supposedly programmers, but really they're just people who learned to code in a certain syntax. Conventions and good programming practices? Ain't nobody got time for that!
That FACT SPITTING between 06:00 to 08:30, is FIERY GOLD, LOVE IT!❣️
Basic in 97, Turbo Pascal in 01, Delphi in 02, and Borland C++ at the same time, and now I'm a 15+ years skilled front-end developer. It's funny to summarize it like this.
In a lot of cases to save a burning project, I have to invent new technology that bridges the old code to the new code temporary.
No tool or library exist for these broken projects. You can only do that when you go off the beaten path of design patterns and rules and have full control over the language.
Idk man, I'm a puny medior but I think after a while it really shouldn't take much to adapt to a new library or framework or language, I really don't get this guy's panic every time something new rolls along. I feel excited and alive when I can dig into something new especially if it's for actual work and not just for fun.
Your take on college is something I could can't relate with. I went to an 'ok' private college in the early 2000's. For those younger readers, this was at a time where computer science programs were generally thought my Math professors. Only the elite, expensive schools got actual programmers teaching their classes. I was consistently a good student that didn't struggle with anything outside of Assembly, and on top of that, I'm the type of person to go home and do random coding projects just for fun.
I can tell you with ChatGPT levels of confidence that I didn't get my moneys worth out of my college experience. The basics of programming can be taught in a semester, but college stretched it out over 4 long, slow years. The only valuable things I got out of it was a subpar data structures class. So like 30-40k of debt to learn something that could be taught over several TH-cam videos.
And ever since I found your channel (recently), it really solidified how useless college was for me. I really struggle to follow OOP code, and I've come to learn that the reason for that is because what looked like overcomplicated gobbly gook was actually just well designed Creational/Structural/Behavioral design patterns. Something never taught in my college, the furthest covered in OOP was classes, inheritance and polymorphism using animals and shapes as examples -_-
At the end of the day that knowledge failure falls on me, but college should not only be about teaching the basics, but you should taught practical real world skills that you can take with you day 1 of graduation that actually make you hirable. And those classes should be changed/added/removed on a yearly basis based on what's most relevant. Especially now that good colleges easily cost in excess of 100k+
i have the opposite problem with learning languages, i can write anything in them myself, but once you give me a library/framework i will be throwing many many clutches at it to make it stop breaking down
ES2015 wasn't a "relatively small change over time". That was the big boy change!
I’m glad I went to college where I could get that solid foundation. I’m learning new languages/frameworks all the time
5:21 exactly. Most people can’t program; they learned a trick they can repeat.
I'm so glad program mostly in C++. No need to relearn everything every year. Things change a little but every several years and that's it.
I absolutely love Prime, but I respectfully disagree with his opinion regarding individuals who solely rely on "frameworks." While it is true that we often use higher-level systems in our work, I don't believe that drawing a line in the sand is necessary. For example, must we write an entire operating system before developing a web app? Of course not, as others have already done that. Likewise, it's unreasonable to expect developers to know all the v8 C++ bindings before using JS in Chrome. While it's arguable that a "good" developer should be familiar with the nuts and bolts, it's also important to remember that in many companies, success is measured by the completion of feature tickets. Being proficient with a mainstream framework can take you a long way, and there's nothing wrong with that.
i get what you are saying.
i have a different perspective because i get the 100s of messages a day askingfor help, being stuck with just using react, how to move forward, that their job is just an api plumber.
so many people get stuck in this plumber role and have no idea how to leave.
@@ThePrimeTimeagen API plumber, definitely going to work that into some meetings now lol 💖
About what you said at 6:44 I had the same realisation when tailwind came to the scene, I got good at CSS and then I used tailwind so I understood what was happening and how to do things sooooo much quicker then my friend who does mainly backend stuff and never got started with CSS just learnt tailwind. (Also ik it’s a very amateur example but I thought it applied)
I did one off the most considered theoritical degrees in cs in my area ... I remembere having and existential crisis thinking that was useless ohh boyy was I wrong . Today I regret nothing, like you said now I understand evrything under the hood and the time it takes me to learn new stuff is probably faster than most people.
My dude, knowing C does not help you learn anything higher level faster. Being able to identify good learning resources is what helps you learn faster
@@skyhappy He's right though. You learn a lot more by getting a CS degree than you learn by completing some bootcamp or udemy course or whatever it is. At some point, every new technology feels somewhat familiar because you've seen a variation of it before, or it's based on principles that you're familiar with.
@@harleyspeedthrust4013 what principles are you talking about? This big wording does not give me much insight
I have a friend who graduated with me that told me he can't make a full stack website. Another friend as well never made a full stack website.
@@skyhappy I can give you some examples. If you learned functional programming in college with a language like Haskell or Ocaml, you're probably not going to use it directly in industry - but you will have learned about (and seen firsthand) the benefits of composition. If you've ever been satisfied to see that the solution to some problem boils down to a clever application of a few simple functions (e.g. map, reduce, zip, etc.), then you might know what I'm talking about. It turns out that knowing how and when to compose things, whether those are functions, classes, entire services, or whatever they may be - is one of the essential skills that you'll need as a software engineer. You really can't design software effectively without it.
Another example: if you ever took a class taught in a systems language like C, you were most definitely taught about (or expected to know about) memory, and your assignments may have been run through valgrind and scored on their use of memory. You would have learned about memory management along with techniques and/or principles to follow to ensure that you're not wasting or leaking memory. Again, this is something that you need to know about as a software engineer, because no programming language, even those with garbage collectors, is immune to memory leaks. If you've only ever built CRUD apps, you probably haven't been exposed to these things. You may not even know that they're important.
5:30
Absolutely this 100x over. I know so many developers and engineers who can connect all the pieces of different API's or libraries. Try to get them to implement something new though and they are completely clueless.
I have worked as a dev for 10 years now. I have never needed to do any sort of searching, sorting, using trees, stacks, etc. etc...
Similar beginning trajectory here, started with php/MySQL/JavaScript around year 2005 and leveraged jQuery when it came out.
FonrtendMasters is 39USD a month..
being able to create a spa with routing, state management, proper pwa manifest, service worker, workers for hard things, actual reactivity and so on in vanilla JavaScript sadly is not worth anything today.
University is the best thing I ever did, I was a self taught python programmer for 5 years or so, then decided to go to Uni, then I had to write everything in C.. And then I realized that I knew absolutely nothing. In the embedded world we are still just writing C, and Rust. But the protocols.... that's where it gets really difficult
It’s so refreshing to have someone say a University Degree is actually a desired thing. Over 30yrs of hiring tech folks there are pretty much 0 that I’ve hired without a degree. A particular skill is unimportant to me, I want people who know “how to program” and think at a fundamental and critical level. Frameworks and methodologies come and go ( and are cyclical - nothing is actually new at this point - early web -> VT100 terminals, late 90s early 2000s web -> 3270 terminals, etc… self hosting to AWS lambda to SASS is the same as three decades earlier in the mainframe era - own -> timeshare machines )
I recently turned very anti framework and it feels great. I use C, js, css, html. I still have to use frameworks at work though. But generally, I found that I am a lot more productive in C. With C, I'll just solve the problem and thats it. I dont have to dig through API's to figure out if some framework will let me do smth. I'll just do it. And its nice not being tied to runtimes anymore. I'll make smth, build, test, deploy, and thats that. No need getting infrastructure teams involved to try to fit a runtime into some legacy - or not - environment.
I feel u on the feeling bad for ppl that are stuck in frameworks. I was already before, a little bit more, framework/language independant than most, since I had spent meaningful amount of time in most languages and frameworks you can think off, and I spend time learning computer stuff and protocols. But since I went the whole way, it's sad. Ppl that have spent a lot more time than me in the industry that are considered skilled, that clearly have no clue how their software actually works, they know how to apply clean architecture and how to call framework methods to make smth happen and thats it...
He should give himself credit for learning how to learn.
I find data structures very easy, im just bad at remembering they exist when i actually need to use them
99% of the times all you're gonna need is arrays lists and hashmaps
Man, I know very, I mean very little about programming. But I looove listening to you! You give me such philly vibes