I have a different take on this. I am a seasoned programmer who has been in the industry for over 30 years now. I have a background in electrical engineering and that pretty much gave me an edge when I was starting out. I had an in-depth understanding of how computers worked from the basic circuitry. There are so many layers of abstraction even in those circuits and trying to understand all of them won't get you anywhere. The software industry is moving fast and companies are looking for engineers who are familiar with their stack. So I see no harm starting out at a higher layer of abstraction and moving on to lower layers when you get a job or after you get relevant industry experience. In the end people need to get by and it's okay if you want to start from a higher layer. Your value as an engineer is not measured by how much you know, but how you use what you know and what is available to solve existing problems. That's my opinion.
This is such a valid point, but contains a lot of complexity within interpretation: "The software industry is moving fast and companies are looking for engineers who are familiar with their stack. So I see no harm starting out at a higher layer of abstraction and moving on to lower layers when you get a job or after you get relevant industry experience." 'Moving on to lower layers' is either optional or its not. I think over a 30+ year career, it may be not optional. You may need to learn some of those fundamentals of machine organization, if you want to continue doing similar activities. The abstractions will keep maturing, both in what they encapsulate AND proximity to end-user (python in EXCEL). Excel formulas -> VBA+Scripted Python + Python data packages -> Access SQL -> ANSI SQL+dialects -> Python CLI -> Scala for Spark -> Java -> now Rust and Go. The journey is similar to the one described in the video and required some dead-ends which may have been mitigated had I learned in the methodical way. Again - your statement still stands. You can't learn if you have no opportunities to apply any of this, and a job is often the only arena for serious application of your knowwldge. Maybe this is the main entrance route for eventual developers these days...
The problem is, in circuitry, that abstraction tends to be somewhat universal, and it makes sense to go top to bottom on certain things, because the top is the easier thing to do. And some abstractions in circuitry can still be bad, because you're learning something with proprietary quirks, even if its useful. When you start learning programming by building an app that has the entire "communication" stack as its foundation and relies on a framework and syntax that will become nearly obsolete by the time you can be good at it, you're not really building real skill. All you're doing is setting yourself up for a rug pull and very annoying problem solving for a beginner. It's just not sustainable to generate programmers by sending them through some bootcamp and sending them off to the nearest employer. Learning the basics in programming by just typing a bit in a text editor and a terminal, is so much easier, so much less intimidating for beginners, and you're building better foundation that you can capitalise on later. At the end of the day, I just don't want people to "learn programming" to find a job in 6 months, I want them to be educated and have that actual engineering title. If people want to build marketable skills by learning frameworks and relying on extremely fuzzy knowledge, fine, they can do that on their own time and naturally will as they grow as an engineer. But I don't think it should be be how you "learn programming" or how you introduce people to it.
That was literally my case. I started programming with Python, but after I was getting better naturally I'd like to know other things and how "everything" works in a computer. Nowadays I'm working professionally with .NET and Flutter. In my experience, it just depends on what kind of engineer you'd like to be. I think the beginning of our journey doesn't affect us so much after all.
I've been working through the examples in "Learn Python the hard way". When I finish and master that what do you guys think the next step would be? I've been in retail for 22 years. I'm working on pivoting.
@@n.l.875 I don't think it's optional now and I don't think it's been optional for decades. I'm not in the industry professionally, but I've been developing as a hobby since 2nd grade (I'm a junior in college now). My path which was a top-down-top approach gave me a massive step up so far in every IT class I've taken so far. I know just about everything the professors are teaching already, from programming to hardware to networking. Everyone in college I've met so far has questioned how I already know everything and I just tell them it's because I've done it all before, and I have. The top-down-top approach for me was basically taking high level technologies and gradually taking it lower down the rabbit hole before scaling it back up again. So like for websites, I learned HTML, CSS. Then I wanted to publish it (webhosts). Then I wanted to add functionality to it (JavaScript/PHP). Then I wanted to host it myself (VMs, Linux, DNS, Cloudflare, Node.js). Then I wanted to try it out even lower level (Rust Axum) for higher performance. Then scale it back up to a fully working web application that's fast and secure and has all the features that it had when in a higher level environment. Now if somebody asked me to take a Raspberry Pi and make a fully operational website for a small business, I could do it. Sorry for the couple paragraphs.
The old stanford track was to teach programming methodology in Java and then move to algorithms and recursion and low level in c++. Maybe thats what yours will do
@plaidchuck My CS program in my community college was: 0. Intro to CS (Pseudocode/Python) 1. C++ (but mostly focused on basic programming instead of the language itself) 2. C++ (the language) (optionally, people can choose Java) 3. Assembly (can take this with any of the others after intro classes) 4. Data Structures and recursion in C++ 5. Discrete math Super low level compared to what my university did. My classes felt pretty easy until I started on upper division at my uni. Had to repeat some classes that were basically the same but didn't transfer for reasons (probably greed).
On the one hand, having a solid understanding of the foundations is almost always beneficial no matter the field. On the other, the current state of many fields is so far off in space that if you stop to shore up that understanding, it seems impossible to catch up to where everyone else is in current developments. One of my personal issues is a tendency to get obsessed with those basics and never moving on.
I feel like I relate to this a lot, I obsess over little details that I wanna fully understand and end up wasting a lot of time without having learned anything meaningful. Sometimes I need to push myself to just do the thing rather than try to fully understand it because it's impossible to learn everything
I can definitely relate to that! For me, grabbing myself by the throat and moving on from digging into basics usually works. That, and finding some nice fun project to work on. I'm pretty content being a Jack of all trades and master of none - actually making this my profession. Put bread, butter and other nice things on the table for years, not to mention it providing a lot of learning opportunities (on company dime!).
The foundations are good because they prepare you for whatever you end up doing. A lot of people end up in jobs that use frameworks etc. they haven’t used before and it’s part of the job to learn the specific stack of that workplace. So I’m that regard, the foundations are better. E.g. good JS knowledge is good for getting any front end web job.
As a new programmer, learning higher level stuff is kind of like watching family guy without knowing references. You kinda get it because the jokes work on their own so you just move on without much thought. Then when you learn about the references (or tools) you look back at the episode and you’re like “omg I understand everything now!”
That's actually an amazing metaphor. I am programming for 20+ years professionally and I still feel the same way when touching yet another adjacent new (for me) tech. You can chatgpt your way thru the task at hand, google for some recipes, but it takes a while when you have time to read more about it later and lightbulb goes on and I understand what exactly I was doing that when copy pasted something and it worked. Why it worked the way it did and what it actually enables you to do and what maybe was a better way. I help newer devs a lot lately and I am so overwhelmed telling them what they have to learn to do some simple things, Can't imagine how overwhelmed they are then learning all that
What do you even mean by higher level stuff? See? This is exactly the problem I see over and over again, everyone seems to think that everybody knows what they're talking about. By higher level you mean like python is a high level language or you mean that is more complicated stuff? Are you talking about coding or are you talking about a specific algorithm or a specific paradigm?
The bad thing is that after learning all these things, we don't become good at programming; we just become good at using those abstracted tools. We don't know how these things work internally, and the moment these abstracted tools become obsolete, we're thrown back to step one
what about colleges? If collages can do it I believe open education can as well. People just need to keep their expectations in line and not get into the 'extremely short bootcamp will teach me everything camp'
And when these abstractions fall out of favor and the cool new thing comes along you have to start all over again. Instead of being productive you have to spend more and more time learning.
that my big issue with tech now a day network guy used to deal with network stuff database ppl data base now the industries just lumped it all in on basket called it ''IT'' and boom you are doing 2-3 ppl jobs at the same salaries ...
Agree 100%. I got a CS degree almost 20 years ago now, and had impostor syndrome so bad I did something else with my life. I've tried to get back into it a few times. It's amazing that there's a library for everything and modern developer tools are voodoo magic. It's so easy to make a functioning one-off business logic project with infinite tech debt, but that next step is a doozy.
These days you “skip” one year in the industry and you spend five years to catch up and stay current. I was doing mainframes for awhile with their COBOL and MVS environment. When I went back to Linux/x86 it was like totally different world with Docker, Kubernetes, Jenkins, Git, Go/Python, Swagger, REST API Node.js, Nginx and list goes on. And every of these technologies is like separate problem domain on itself.
Thats beacuse its all horseshit lmfao. The biggest problem with CS is learning how to use all the fucking libraries atp. Thats why people love languages like Rust or C now. WHen its forced to work at the hardware level, you dont have to worry about all this bullshit.
This resonates with me as well. I got filtered by Ruby on Rails starting out because there were too many concepts too far removed from what I was trying to do. Then I went to bare PHP and wrote horrible, unmaintainable code, but at least I was learning.
This is so accurate for me as well. I remember trying to learn web dev in high school and just being completely overwhelmed by all the different frameworks, languages you could use, setting up a server, etc etc. Then I did barebones HTML, CSS, JS and a little PHP in university where they set up the server for us and everything felt so much easier to understand.
As someone who is in Uni now, we still do all the things Primagen was talking about and haven't even sniffed in the direction of a GUI. Our intro to programming back in year 1 was in C (not C++), and one of our first courses which is compulsory involved how floats ints etc were represented in memory and we did lots of binary arithmetic and learned MIPS assembly there. I've been feeling somewhat down about not being able to make an actual application outside of a terminal despite years of programming, so this video really helped reassure me that I'm on the right path.
At university, I see so many people with enough superficial knowledge to get by, and sometimes I really feel bad for them. As soon as things get complicated enough to go below theor comfortable layer of abstraction, they are lost.
that's just like in all subjects, not just CS, what are you trying to say? Some people is more comfortable with one subjet, some with others, whats the point dude?
@@jordixboyno thats not like subjects. Suppose you have been using blocks to make a building model and suddenly you are asked to make from clay. People who jave fundamental knowledge will definitely tackle complex bugs one way or another but it'll be very difficult for someone who has use predefined patterns for building things
@@anmolsharma4049Fuck java xD uni sure made me digest a lot of that. Yeh most people in uni are completely lost in life and their only goal is to finish not to learn
@@anmolsharma4049people who have experience/understanding with clay will be fine in that scenario. People who don't will have to learn stuff about it. What's your point, bro bro?
This is why it took me so long to learn basic JavaScript. Because JavaScript used to be "simple" language to manipulate your website, but then it turned into, "We also want OOP, we also want array methods, we also want X, Y, Z" And now there are 50 ways of doing the same thing instead of just one or two. As a beginner that's super overwhelming since programming itself is already quite confusing for a total beginner. This is why modern JS is just a bad way to learn programming IMHO.
Having been away from web development for nearly 20 years, it's insane to me that people actually respect javascript and use it to teach programming. It was a laughing stock of a language back then.
I personally prefer the bottom-up way of learning since your knowledge never depends on things you don't know yet and the bigger picture usually just clicks immediately.
@@UliTroyoIs it really a problem? If you are like 19 and decide to learn programming you have at least few good years to learn basics, some alogirthms, etc before you finish your degree + you can take internships during degree
I do too, but it's not super practical when you have deadlines coming up. I try to do a bit of both and I keep my bottom up learning as something I do in my spare time. It's unfortounate but the best I can do to keep going is to have some imaginative mental model of what I'm guessing is going on behind the scenes, and as time goes on hopefully that mental model becomes more and more accurate. Otherwise I'd have to pause everything for a couple years just so I can understand everything.
@@alang.2054Most of the “modern” stuff will be obsoleted by the time you graduate. But fundamentals (like computational complexity, sorting algorithms, data structures, computer and OS architecture) will remain forever.
Its also pure bullshit too if you think about it. Theres no reason why modern programs cant just be built in C or Rust, and just ran normally like it would on a C64. The biggest cost in computing used to be memmory. Then it was processing power, and now its human resources. Thats why in the past 10 years, CEO's have been making all these coding bootcamps and forcing people into CS. Its all in a failed attempt to pump out more code per human employed.
@@honkhonk8009 it's not because of CEOs or something... People has endlessly trying to create the "general programming language" The one that can make everything, low memory manipulation, UI, data-driven, event-driven, everything-driven. but it doesn't exists. We have c++, but you can see how STL can get extremely boilerplatey, we have layers of abstractions, just to get javascript, which cannot execute really low level code, but that's okay since we need this security layer or else we would have some crazy stuff happening in the web. But you can also have htmx and leverage the logic of the application in the server. At the end of the day the problem is the same, where the hell do I put this code.
It's easy enough learning it, the hard part is for me to retain it all. I guess over time you get a good "generic" mind-model of how everything works, but when put on the spot... it's difficult to churn out answers. Benefit is that you can pick up new or old code quickly once you have enough experience "peeling back the abstraction layers" as you say. So i guess a lot of patterns and modes of thinking are being retained... I just need those little reminders constantly. I should probably make better notes.
As someone who started learning to program a year ago I felt this pain. The first thing I tried to learn was .NET frameworks and it was so overwhelming. I eventually pivoted to Js, though due to the level of abstractions in things like react and other UI frameworks, it just didn’t make sense to me, it felt like there was something missing to connect the dots. I finally got a grip on things when I realized the question you need to ask is why? Why is this framework abstracting this feature and what use is it to me. I found that I much prefer to understand how the cake is made rather than throw icing on it. Now I primarily only use minimal third party libraries as I found it is easier to understand what is going on if you build it yourself from scratch. It may sound counterintuitive but that’s really the best way to understand what is going on.
I code stuff in unity, and i was amazed to find out that people literally just download most code from the store instead of coding it themselves. an example is a movement controller for a character. I've learned a surprising amount just by coding these things, I must have made 10 by now, each better than the last. I've watched people do unity on twitch, and their lack of knowledge of how code works is astounding
Same spot but I'm still kind of stuck in .Net land, mostly because my friends push it so hard. I've been thinking about pivoting to learning Typescript and focusing hard on landing a front end role instead of a full stack one. Any advice is very much appreciated.
@@Jormmg I’m not that experienced so take what I say with a grain of salt. I never learned typescript and I’ve stuck with plain js, I haven’t worked on a project where explicit types really mattered. But that being said if you learned C# your probably already used to that pattern of programming. What I struggled with most when learning C# was OOP just didn’t make much sense to me. Once I learned pho and js I’ve adopted a completely procedural style of programming because it’s more intuitive. Also, keep in mind that js has a rich ecosystem, I’m currently building a full stack app in electron. One thing I really wish someone had told me when I was starting was that a programming language is only as good as it’s tooling and ecosystem.
17:50 This reminds me of something: One of my trainers during my apprenticeship also had some friends who worked at VW. He told me that programming apprentices get electronic training there.
@@kirillvoloshin2065Because learning React without understanding JS makes no sense. Those folks get lost on simplest erros/bugs and won’t know if this is React or JS error.
@@kirillvoloshin2065 You won't be, react is total mess the bigger app is. That's why on bootcamp there is always copy-pasted code. Even angular is better, because between project structure is always same. If u start badly (code inhertied from previous coworkers) u will keep creating more poo.
10:00 A friend of mine and I were talking about this recently. He went through bootcamp and I am currently finishing my senior year. The way we finally came to a conclusion that 4year gives you stronger fundamental and flexibility. Bootcamp teaches you how to code but doesn't enable you with as much problem solving (his experience).
Completely agree with this. Was talking to my friend about this yesterday... With how they try to churn full stack web devs out it feels like they are trying to take shortcuts... Its absolutely insane you are expected to be full stack in a few months with having to know THIS much. Saying that as someone who has gone down this route myself. I'm grateful it's given me a door into the industry at least. I'd love to make Web plan b and get into something else like embedded systems, but it's going to take some time to get there for me.
It really is. I also almost want to tel devs to stop taking full stack roles because were at this point underpaid. There’s soooo much to know to be great full stack devs. We need to get paid more.
@@weirdwesteros1109 completely agree, I held back from saying this in my original comment but it seems a bit to me like Web dev is seen as the low skilled section of programming - which is of course absolutely ridiculous when so much is put on you. Even if it was, treating devs this way is not going to do the Web any favours.
yeah i'm new to programming and went into C++ for embedded systems, but have taken a detour into web because that's my general career anyway. i'm much more interested in getting strong with fundamentals (maybe not all the way down to ASM but that kind of thing) than about knowing 20 different technologies and platforms badly
I don't particularly like these categorized expectations that someone should eventually be classified as "full stack dev". We did have, and still do have, some devs who simply refuse to do database related stuff, even when his scope on the project would require minimal database skills that we'd be more then willing to train and explain it to him. We also have some problems the other way around, when said dev did make his database stuff, and suddendly management starts looking up to him as a full stack dev. I like to be project oriented only - whatever needs to be done, do it as best as possible. Most likely won't be the best most optimal solution, but hey, as long as it works
I don't mean to sound like a downer but I'm kind of glad that this video exists. I tried to learn how to code and get a job throughout the pandemic. I worked hard but it wasn't hard enough AND then I got told by a recruiter, after having multiple projects, interviews, even a little freelance experience, to go back to boot camp. that's when it hit me that I had learned a little versus actually understanding what I was trying to learn and do. So I honestly gave up and am now happily pursing a different career path in tech. If you want to program for a living, the challenge is higher than ever I think so good luck!
I'm 36 in the middle of my cs degree. They taught absolute basics of python, java, and C++. I've been deep diving C++ on my own since there's no more other language courses during the degree. I always like watching prime's videos and play the game of inferring definitions through context clues for all the different technologies that are mentioned on a daily basis. I know I won't learn it all, so I'm just making micro-projects that can perform a task that I didn't know how to make before. Things like monitoring keyboard/mouse events from the windows library, or using sockets. I always have this anxiety in the back of my mind like I need to learn specific things before my final year at school is up. For now, though, I just keep writing things like linked lists or exploring new ways on how to fill up all my memory on my system.
Yeah I agree with you, as long as you can come out of it feeling confident in your ability to learn on the fly and problem solve, you’ll be full fledged in no time.
school will teach you like 5% of what you need to know. You need projects in your spare time. Make a simple game or something using c++ in unreal engine
@@cas6112 yeah I have done a few problems and some of them blew my mind with how some of them are solved, but definitely has been a great learning tool. I asked a few of the discord boys for advice and they have been great in pointing things out for me to teach myself. My data structs and algo's class is next term so I should be definitely prepared for it. (hopefully)
I program as a hobby but I’m so happy I started with C. I learned programming because I wanted to learn about computers, not necessarily because I wanted to make anything. I was just fascinated with the technology. Went from c to c++ and took an assembly course. I switched colleges and they wouldn’t let me continue the CS curriculum because they were learning Java and I was learning c++. I was like, “you realize I bought a book and learned Java in a week, right?” Like you said when you learn the actual art of programming learning a knew language is just matter of learning syntax and remembering how things work, you’re not trying to figure out why things work.
i went university in Turkiye to become computer programmer and yep we also start with C :D I'm glad they did it. Now i just use c# and unity but damn it help a lot. Now c# make me way too lazy to deal with stuff like c++ but at least foundation is there if i want to build on Btw one of the first things i find out about c# is "oh so things i had to do is already exist in c# so i dont need to do them again" XD
While understanding what each command you use does is very important, and understanding a bit of why they do what they do can open you up to new ideas, learning anything lower level than that is pointless in 95% of cases, and otherwise i guess it can be cool trivia to tell other people how clever you are. I don't think most people are coding in Assembly right now to make a modern application. And you're completely right too when switching to other languages. Once it ticks in your head and you "get it", getting into different languages is way easier compared to the first time, as it's often just some different syntax for the same commands.
actually this though, people always ask me what langauge i know/can use but to me it's all the same shit even the differences in syntax are usually pretty small using some bing complicated framework is usually much harder
@@vitalyl1327All HDD (disk). I use old HDD drives for sanding; take off the housing and remove the rust-tape and attach some [aluminum oxide]|[sand paper] to the spindle/axle. Send 12V to the drive via a PSU that has been jumped.... Ha...
I feel like you highlighted the 2 different ways you can aproach a problem. Where taking the university route takes longer, but you learn the absolute basics, allowing you to use that knowledge to quickly learn and understand the higher lvl concepts, ideas and abstractions every one takes for granted (up to a point). While the bootcamp route makes you quickly learn the high lvl stuff, but because you lack the lower lvl understanding might make learning certain things or new stuff more difficult. Of course the hope is that with the bootcamp route you learn the relevant low lvl stuff while doing, while the university expects you to pick up the high lvl stuff while doing. Both are valid but just for different ppl and situations.
This is why i honestly think people should learn c as their first language. If you can build a data structure in c it becomes much easier to understand the abstraction in other languages.
Interesting, you really seem to believe that C is a very low level language. It is not. Not any more. Not since PDP11. It is very far from how real CPUs work.
@@possumkeys and these days even assembly can be too high level and too distant from the actual microarchitecture of your CPU. Learning an assembly on an 8bit MCU can be far more beneficial for understanding of how things work than learning an x86_64 or aarch64 assembly.
Its so fun to browse youtube after finishing some studies (to become a frontend developer) and constantly be blasted by youtubers saying our efforts to become something is useless. ”Why programming is dying” ”Why you wont succeed in 2024 as a programmer”
Yes I am from mechanical engineering background and learning java and python from 2 months and got good at it thinking to move to learn some web dev and now i get these kind of videos in my feed. Every other person is saying either you will succeed or f*cked it really give me sleepless nights, like what to do blah blah AI will take your jobs, what are we supposed to do then if programmers are in danger
just got this recommended after finishing the HTML and CSS part of my course and jumping into java script haha, i'm also starting my first year of computer engineering. i try to not let the negativity get to me, because even with all this in mind. in what world is it better to know nothing instead of now a small part of the whole picture.
Thank you, you have encouraged me. Because sometimes i feel overwhelmed by the amount of knowledge you have, i have 2 years of programming and i am learning rust and seeing you talk i really feel that i know nothing, i wish i could understand the binary thing, but i currently don't have the time to do so, i need to work on the thinks i already know in programming and i have a life besides programming... So thank you, it will reach a point where level of abstraction will become so high that the person will get to choose or understand the metal or do something useful because you will not live longer to understand both. So thank you for saying 28 times: "I feel bad for you", it has motivated me to accept my limitations and my ignorance, i am pushing forward, i heavily suggested the use of Rust so i could learn it... but i cannot go back in time and learn everything that theprimeagen learnt and have a life and work, i cannot, so again thank you for helping to accept my life condidtion! I am from Brazil BTW, love you channel, thank you for reading or not reading this...
9:30 People studying computer science learns the diagram on the right, then when they get into industry,,they are forces to learn the diagram on the left. I gradudated 4 years ago, but i cant imagine those fundamentals wouldnt be there anymore
2 pieces of news for programmers who are just starting out: 1. It's hard, and most of you probably will quit after a few punches you'll inevitably receive. 2. If you can manage the stress and take those punches without throwing your laptop out of the window and staying diligent, you'll have a high chance of becoming a professional in this field.
It really is difficult, I am a self taught from RUclips dev, just starting my 4th year in the industry and currently looking for my 3rd job. I genuinely don't understand anything and the impostor syndrome is absolutely crippling. I started with React/Node/AWS and although I can do the job, it's all so overwhelming and I have zero confidence. I really wish I had studied CS in college
@@FirstLast-gk6lgStudying CS in college wouldn’t necessarily help. Everybody has imposter syndrome in the earlier years of their career as a developer.
@@SwaeTech Thank you, I think I just need to spend a lot more of my free time studying the foundational stuff esp Data Structures. Do you think me getting into a new language in my free time would help me understand? Maybe like C++ since I hear that is a lot more foundational? Since right now all I know is Javascript and mostly just React/Vue/Node
I found that learning ASM on 8-bit PIC microcontrollers helped with the low level stuff. For the modern tower of babel problem where the simplest thing depends on everything and the kitchen sink, I let copilot help with the discovery lol.
I learned those the hard way, try out the game called Turing Complete on steam, it's harmless logic puzzles at the start, and without you even notice, you're already building your own CPU architecture and writing assembly for it. That, as a js kid all along the time, got me into digging into the rest of the hardware world, and stopped hating any programming languages. Everything was built with its purpose to make life easier. (i still hating ruby tho, it exists for nothing valuable)
I absolutely agree with you, Prime!! I honestly struggle with all the abstractions in front end. I don't write code like I do with a shell script or other languages that I'm learning to get away from front end. Instead I google the vast array of "stuff" I need to put together a mishmash of abstract terms that have meaning only in the framework or repo I'm working on. It truly sucks. I can think logically. I can't hold 500 unique terms in my head.
Tbh we have a history of trying to make programming more glamorous/difficult than it needs to be Like formally proving recursion or learning how to make an AbstractFactoryManagerFactory are both completely optional if non-trivial vs just knowing how things fit together and what to consider in code/system design
There is a natural difficulty in many real-world problems. When faced with such, both cowboy engineers with a tendency to overcomplicate things and superficially learnt monkeys are equally helpless, and only those with a thorough findamental knowledge thrive.
what the fuck is TBH? Is there really an excuse as to not write the whole damn word because of the word count that youtube allows in the comment section? Are you using a keyboard so fucking huge that the keys are so far apart that writing a full sentence will take a month out of your life? Are you typing ten thousand comments on youtube that skipping a few letters will add up years to your life span? I don't fucking think so...
A funny story about the current state of technology here. The company I working for tried going serverless, and our team is pretty forward in trying new stuff, so we deployed a few of our services to there. And then, 2 weeks time with a glimpse of success, just to find out that they aren't even trying to solve any problem, but to create a whole another set of problems you need a workaround to go serverless (restricted runtime, randomly dying executions, vendor lock-in etc.). But since we liked the fact that things doesn't need to setup its own routing or port forwarding, the solution? Yes, we wrote our own serverless service and deployed it, works like a charm, doesn't cost us multiple livers a month like in "real" serverless, and it's not even that hard to implement with existing tools either. 🤷🏻♀
Im a self taught developer still kind of finding my way but have gravitated to web over the last couple years as it was easier to make money. The most difficult thing as a new developer with little to no guidance was wrapping my mind around the whole ecosystem of software/web. To make things even more confusing throw in all the buzz and hype for things like blockchain, ai, data science, game development etc and as a beginner its just insane. My first programming experience was a course building a decentralized shop using react and solidity. I managed to get through it but was so mentally taxed it hurt my motivation in some ways BUT I think if you can keep yourself afloat it can be beneficial but its such a whirlwind to start off. After a few similar bouts like this I finally took a step back took time to do some dsa, learn about networks, os, compilers to some degree and didn't try and make a website or application for probably 2 years and when I did I was crushing it. Out performing people who have been developing since before I knew what a function was xD
"The most difficult thing as a new developer with little to no guidance was wrapping my mind around the whole ecosystem of software/web." "After a few similar bouts like this I finally took a step back took time to do some dsa, learn about networks, os, compilers to some degree" I really enjoy reading these lines after finished watching the video. This is where he draws the line in the video. You are naturally a structured person, so no wonder you excel when being self-taught since you will manage to organise a structure for yourself over time. If you are naturally go-with-the-flow kind of person like me and Primeagen, we will forever stumble upon the vast content on the internet until ended up burnt out, so it is better for us to follow the structure provided by universities.
It really is difficult, I am a self taught from RUclips dev, just starting my 4th year in the industry and currently looking for my 3rd job. I genuinely don't understand anything and the impostor syndrome is absolutely crippling. I started with React/Node/AWS and although I can do the job, it's all so overwhelming and I have zero confidence. I really wish I had studied CS in college
@@FirstLast-gk6lg It's never too late. Practice a data structure for a few days at a time or when you can and just keep rotating through them. It will help a lot. If you don't have a project to work on or day job works done then you got something to do. You should be able to create at least the basics. Linked List, BST and a simple graph from scratch. Then practice using language implementations or functions that take one of those data structs as an argument and practice solving problems. Pay attention to the time and space analysis of different operations on the structs
So nice to hear this from you man. I started on pascal in highschool, at uni I started CS in 2005 but failed, 2009 did an IT diploma, 2017-2021 did my CS undergrad, Doing a AI Postgrad Cert now part-time. The point? I've kind of been in the barrel of the technology wave for what feels like forever, every year I feel like "A New Programmer" and never been able to get the illustrious "IT/CS related job". Every time I learn something it seems it's already too late, need to learn another dozen technologies, frameworks, and stacks so I can be employable. I use to run nightclubs during my studies, so throughout my life I've never known anyone technology inclined, in fact most people in my circles would often just mock what I did. But during my postgrad I started my own web agency doing wordpress websites.... and it's nice to have money slowly starting to drip into my home now I have a baby daughter who will be born any minute now. It sucks to have spent nearly 2 decades learning tech to end up using what many of my contemporaries or young working engineers would think is lame... but I really persevered, I really envy guys like you using great technologies professionally that pretty much are enjoyed by every westerner. But in my experience most people just want a wordpress site for small businesses, need it built fast and cheap which just can't be done with a programmer-enviable stack. I did all my studies online after 2009 and so had to live off of Stackoverflow for years because I had no teachers to help me, no colleagues for support or to even compete with, all the while either running nightclubs or doing construction after I got too old and stood out at the club. (I can tell you now, after studying independently long before RUclips tutorials were a thing, now is the dopest time to be an independent programming student. ChatGPT answers all those stupid questions I spent countless hours figuring out my self through trial and error or honestly, maybe never having answered for me). ...have considered teaching a private school as it came up recently through a cousin but they say most teenagers have no idea how to even email let alone how a computer works (you'd think Gen Z were tech literate but it turns out they aren't - not counting social media and related apps). I have been doing this 20 years and I can barely keep up with the studies so kudos to those young new programmers that make it and succeed.
Just to clear my IT and CS studies, I HAD to learn: C, C++, Java, Swift, PHP, C# (along with Angular and Typescript), Python, Vim, XML, Docker, Bash, AWS and GC CLI... Not including all the other obvious theory like databases, project management, Web dev like HTML, CSS, JS (I remember learning JavaScript way after OO, functional and strictly typed languages and being blown away by the ease of using learning it in comparison) user centred design etc. Not gonna lie there was a bunch of times I barely passed but largely HD. Still can't get a job. About to finish a course in Figma and MERN stack, hopefully Theos advice is the magic sauce for a job 😂
True about WordPress, I'm now in my graduate year doing WordPress site cause someone recommended me. Never touched it before although I had experience with php, js, python and a little of C languages. Funny how things work, your comment makes sense
Gen Zers being illiterate techs? Not the ones I know. Maybe the ones who first used smartphones or tablets before computers? (the gen z individuals born in the last years of the generation, just before gen alpha started?)
A testament from a self taught. Before I started, I didn't expect I'll be this deep in CompSci, and that's for a reason. Started coding in Python, then I learned HTML, CSS, JS, and when I'm there learning React and Node js, I discovered how deep the iceberg really is. Long story short, I realized how shallow my understanding is of the tech I'm learning that I have to learn CS 101 by myself. Started with Crash Course Computer Science, then some more CS learnings, heck, even some basic Networking stuff to better understand web dev, then Data Structures and Algorithms, then revisited web tech with HTML, CSS, and JS, and things made much more sense. My key takeaway here is that the innovation in tech made it so much harder for newbies as we have to learn not just the fundamentals, but also the new technologies, at the same time, which can easily confuse any informally unguided newbie like me.
It's not even about the complexity or how close the technology is to the computer. It's about how using languages like c/c++ and focusing on things data structures and algorithms in the early days strengthens one's fundamentals. This not only builds patience as a developer but also helps build a problem solving mentality.
I think the biggest issue, as you've said, is how many different approaches to the same thing you have when learning the ropes. Want a framework? you can pick from 10 available. Want routing? 10 available. CSS styling? 10 available. Database consumption? 10 standards available. What serving strategy will you use? 10 options available. Very few people can learn effectively from this. When I was transitioning from HW to SW, even with a lot of knowledge on fundamentals, peering into web dev already made me flinch from the enormous amount of stuff to learn. There's just so much, happening so fast, and you don't know really where to focus to stand out. It felt like I would have to invest too much to reach a point where I was satisfied with my skills, in something that I wasn't really into. These days I understand much more about the field, but I still don't consider a career in web. It just looks too unstable for me to plan ahead appropriately.
I get that it's proper to learn C or C++ first, but I realized that learning them first usually make people give up early in the process so I switched to learning Python instead first.
What of learning solidity first Or vyper first?🤔 Yh although in the long run I know I'll end up having to learn JavaScript(solidity )or Python(vyper) respectively
You dont "learn" a programming language. Their all the same. Theres barely any differences between them. Just use the most generic language you can find for sumn, and just use it lol.
I get your point, it's beyond easy to get into the meat and potatoes of coding nowadays. Back in the day, I remember placing into a notebook ipo and flowcharts before writing the pseudocode. Accompanied with my notes would be the math for whatever optimizations I needed, along with other problems that needed to be solved. It was fun... I would then go to my computer and start creating the folders and files I needed. The files I created were crated with Notepad using 'save as'.. The examples you gave, I learned very similar. I remember in class, I would have assignments like create a doubly-linked list and make sure it is reusable. Essentially, you built your own stl. I'm sure some colleges follow this format still.
I starting using computers and learning to program in the mid-80s. I've been at it every since... hardware, networking, app programming, web development, and more. I honestly think those learning to code in the last 5 years have the best resources and therefore the best chance(s) to learn what's necessary to develop amazing apps. The main problem I see for today's "students" is there are too many good tools/languages available for them to learn. Best advice I heard is pick an area (ie. Web Apps), find out what *most* mid-level developers are using, and focus on learning ONLY the essential "core" tools... and then build, build, build.
React bootcamper here. I definitely feel the pain. But I wonder how much of this is down to employers. There are so many adverts there demanding aws, docker, kubernetes etc from junior frontend devs
This is soo much true. In my first job and university, i focus only on build and deploy apps in intranet enviroments (no connection to internet). I have to build everything from backend and frontend proyects scratch and deploy it using Apache. It was hard, YES, but it give you the knowlegde of how everything works end to end, that's a great feeling. I recommend everyone to try that at least. The other realization i have when i pass to consuming libraries to write/read or PR libraries code. That give you soo much understanding of more things, because it help you to learn from others people code, is so nice. I don't thing the current state of code is broken, but is harder to get there if you start only with RUclips videos. Learning algorithms in university and for my tesis was a great base, and is harder to get that watching only RUclips videos, i'm not saying that's imposible, but little harder. And yes, in my university i have programming tests in papper :) (really hardcore hahahaha)
In my opinion, and mind you I am a very junior self taught developer with less than a year of experience and stupidly lucky to get a job, is that the way you can go from the bottom up, you can also go from the top down. The difference is those abstractions make it easy to to see progress which is by far the biggest motivation bump and then you see in practise why you must learn all the things those abstractions are based on.
Going top down is an extremely bad idea and it is going to leave you with an awful lot of gaps that you won't even be able to detect, making you very prone to Dunning-Kruger.
I graduated in June 2023. Before my studies in software engineering my only knowledge about coding was modding game file values, which isn't usually doesn't require knowledge over software principles. Abstraction caused a lot of issues. I didn't often even know how to word my questions properly. I was baffled by how did programmers know what methods they can use to do various things, how do they know to add .length after an object? Confused, lost. Nowdays I am a junior fullstack developer doing consulting work at companies and it took a lot of courage to go to the very basics and root of software development into the hardware and lower level programming languages. Over time I began to understand all of it so much better.
Current comp sci uni student here. I have friends who went through boot camps instead of uni like me, they constantly are learning, however when it comes to low level concepts like memory management and building real algorithms they struggle. I think that the uni path is easier because we get to focus on one thing at a time.
Yea, I realized this during my Comp. Sci. degree. Programming can go so deep in so many directions where any one project is gonna be using like 20 different APIs. My strategy has been to learn the main languages at a mid-level (Java - Python - C - HTML - CSS - Javascript) and the rest of my time is spent studying data structures and algorithms. The truth is, anywhere you get hired they are gonna expect you to learn THEIR stack and the chances that you just so happen to learn all of those things are effectively ZERO. Focus on fundamentals and build a few functional websites, web apps, google play store apps, whatever. Build simple apps that have been made before but add your own little twist.
This is the exact problem I have. I have been learning programming since 2018 and I always find it very very hard to learn about the low level stuff. It's not easy to find resources online for low level programming and I'm someone who can't learn (feel comfortable) if I don't know how things works under the hood.
Just find something to work on. At least for me it's the best way. I had a mini project were I was figuring out how to make gameboy games, it taught me tons and was alot of fun.
@@aarondanen3150 the best way to learn how C compilers work is to write one. Gcc is insanely huge and complex, a compiler can be much simpler - see lcc, tcc for example.
Dude you’re the first person I’ve ever seen put this feeling I’ve had into words. I want to learn programming but it feels so, so complicated and I’ve never understood where to start.
I went from an unrelated engineering background to data science to cloud dev. Because at first I stuck to the maths and modeling I kinda got what was happening. Once I got how to model stats I then learnt how to deploy/ host things and that eventually led to me picking up C. I think what REALLY helped was having a logical path and reason for what I'm doing/learning at every point of the way. Otherwise I would be completely lost.
I get your point. I have working for at least 7 years as a programmer, and i have seen that courses nowadays jump top abstraction too quickly and people dont build core concepts such as paralelism, concurrency, pointers, memory allocation... We solve this by educating people. I had to sit down with a friend that is going through his first year of college to helping understand the basic conceps by truth tables.
It is ridiculous how complex modern development is. All CS should be bottom-up. Not top-down. Yes, assembly and machine code are hard... but they are hard not because understanding it is hard but because putting together lots of simple instructions is harder to wrap one's head around. We should all be learning how the machine works and how it has to be talked to first. No other field of engineering starts at the absolute top and works down.
training and learning is becoming less and less important in this age where everything has to be BLAZINGLY FAST, including development. businesses want quick RETURN ON INVESTMENT for their devs, and they dont even care what the dev actually knows or wants to learn, as long as the job gets done. we dont have time to fully learn all the things we are using these days, but it forces us to learn quickly when we do need to dive deeper.. its a double edged sword.. I took this all in my stride, and have been exposed to so many new technologies and projects, and have grown in a way that I dont think would have been possible before this. It was really tough to keep up, but its the only skill i truly got to train: being resourceful and prioritising knowledge. experience: 6years
The problem here, they don't get the job done. They produce utter crap that can superficially pass if you don't look at it too closely, then crumble at a first attempt to use it as intended in production.
I did too but it's different. After I graduated back in June 2023, told my dad that I already lost my mojo in coding (already can't recall Netbeans, Python, Git, and Laravel) now expectations are growing big and I can't seem to do it back in August. Now I just want to move on from Tech.
Been majoring in Computer Engineering, building computer, OS, and compiler from scratch. And when I was picking up on web dev it was suck a walk in a park. I can just bottom up every single concept and understand exactly how those technologies work, and the relationship between them.
@@LukasCobbler I can recommend Project Oberon - a minimalistic computer built from scratch, with an OS and compiler also built from scratch and still small enough for one person to comprehend in a few months.
self taught web dev here in this day and age, there's no wrong answer in picking your stack. Every framework and new technology is copying features from each other, not to mention open source contributions. So any way you take will get the job done, accordingly pick whatever you're comfortable with
Been out of the programming industry for 7 years because of a mental break down I had. Burnout from another job, and ADHD, and other causes. Want to get back in, but often feel really discouraged when I look at job opening being posted. There is like a hundred languages, and then 100 tools for each language they want you to know.
@@myb701 machine shop labor. Kind of doubt I'll ever get back into programming, because with being out of that market years looks bad on a resume. Indie game development interests me, but that's also just a hobby and the chance to be successful is slim.
in 1989 I accepted a short contract to re-write an assembler system. my toolset was the databook for the micro, a pad of paper, an eprom programmer and eraser and the target board. I wrote the assember on paper, assembled it to hex by hand, typed the hex into the eprom programmer, and blew the chip. took the chip out and inserted it into the target board and powerd it up. Then worked out what was wrong with a logic probe and took the chip out, and into a uve eprom eraser and the cycle started again. no oscilloscope, no computer other than the target eeprom based microcotroller.
You can get a math degree, or you can take courses on how to use a TI-84. One will teach you the fundamentals of math enough so you can learn how to use the TI-84 yourself, the other will screw you if a new type of calculator is invented. I graduated during the height of AngularJS and Gulp, if I went through a bootcamp, I would've been screwed. I'm sure Assembly programmers thought the same as C programmers who thought the same as Java who thought the same as PHP and so on. And now with AI the abstraction level will only get higher. That's why I hate it when people complain that their CS degree was useless because they didn't learn how to program. These are only tools, learning the fundamentals of how a computer runs code gives you a holistic view where you can learn anything
New guy here! I've been learning to code for 3 years now on and off since I'm a parent. It wasn't until just recently that I feel comfortable enough to apply for a Jr position. Took me a while to learn what I learned compared to my peers who are all senior developers, but if you have the will it can be done, even if you are a busy parent like me
at my ex-job i had the oportunity to work with junior, mid, senior people in php, they all wanted docker for the server to be up yet non of them where able to start a basic apache/nginx server and they were suposed to reploy and maintain the linux server I had to teach 6 people the basics (1-2hours based on the person)
my personal opinion: which one is easier depends on your goal: 1- you want to program as fast as you can and MAYBE get hired then we have it easier. 2- you want to learn computer science and then dive into the web stuff later on with solid foundation that wouldn't change with new technology that becomes industry standard and end up without a job, you had it easier. but again i'm just a beginner and this just what i got from watching you and doing some courses
@@alang.2054 would you want to waste 4 years of your life and a whole lot of money on useless knowledge that is not applicable in real world when you could have got that job in 6 months for free?
@@alang.2054 Also would you require your carpenter to have an architect's degree? And should every single brick layer also have a specified degree in architecture?
man i feel u!! that linking classes, that tick that this is how memory works i feel u completely. The art of programming!! By going through all that small stuff, we can now solve any kind of program. Like you can make a website sure without knowing the basic, just my learning all the frameworks, but then if you have to do a complex binary tree calculation for giving salary through referred persons on a website, we can see how it all being structured in our head before even sitting in-front of a keyboard. It is just so fun to be able to think like this and solve problems this way. The only real life super power is the art of programming man.
I tried learning to code so many times but got stuck by this very problem. Until I learned super low level stuff nothing clicked for me. Owe a lot to Ben eater's breadboard computer series
As a veteran programmer, I completely agree with you. Sometimes I think about these bootcampers that have no motivation to dig deeper than what their short course taught them, and if they happen to land a job creating life-critical systems... This keeps me awake at night!
I completely understand everything being said here about the bottom up approach and it's long term benefits but at the same time I really don't know whether or not I'm going to have the time necessary to actually go through all the more complex fundamentals first before then finally learning relevant shit (of which there's a hair pulling amount of now) and then finding employment and building sufficient experience after that. We're talking about like half a decade or even a bit more to really get the ball rolling career wise since I'm not the fastest learner around or most highly motivated either and I can't afford to take the risk of wasting that much time so I'm just gonna dive into the relevant shit first I think regardless of the consequences, I can worry about those down the line.
This video is of tremendous value and importance to me. You nailed it by articulating a problem of learning from the top things first or bottom-up. This helped me to realize I'm just not smart enough for this profession and stop torturing myself
I'm a more UI focused person and one big advantage of the top down approach is it allows you to build stuff quickly, giving motivation to learn and build more stuff. Despite all the frameworks, cloud services, dbs, etc; it doesn't take too long for a beginner to throw together a simple React app. For me personally, that was much more rewarding than stdout. Building something first, then learning the theory behind it keeps you from having to ask "why am I learning this?"
A whole lot of this feels to me like it depends on where your interests lie. I don't really want to be a web dev. I think it'd be cool to do embedded systems or maybe just standard application development, but so many people go crazy about emphasizing JS frameworks and whatever the next hype web thing is. I wouldn't want to go the bootcamp route because those seem to be designed to churn out a very particular type of dev that I don't really care to fit into.
Part of it is interest based but some of it is simply market demand too, every business on the planet basically has a website compared with how many need embedded developers. Nothing against embedded development I like to do it on the side but my work for over a decade has been in the web space. I also have a regular bachelors in CS and think the traditional education is good even if you do land in web dev world since have a deeper understanding of the underlying systems and the general computing knowledge you get at school is more portable to different types of development or even other types of work (having any degree helps in terms of job availability)
On the one hand, I am learning these lower-level things on my own time, and there are probably more resources now to do so. But I deffo have to carve out my own time to do it, because my work learning time is spent on these higher-level abstractions, and I suppose it will be on me to learn how to bridge the two to be more flexible as I progress. I can see "So you have a job in web dev...here's how you can take that knowledge to learn the fundamentals" being a solid space for mentorship, which I think you implicitly do, and I appreciate.
As a new programmer, that is why I am trying to learn C and assembly. Using languages like Javascript can be easy but they make me feel like I am not learning much since everything is already built in.
@@kidmosey One of the projects I was thinking about going into was designing a CPU too. But I unfortunately do not have time to complete that at the moment.
As a new js programmer, I really feel for you. The amount of high-level concepts added by all those frameworks and libraries can be overwhelming if you're struggling with the basics. It also pays off though. You can easily get a job, do simple stuff and get paid and figure out more in-depth stuff as you go at a free pace
Well as a literal IT starter (learning for a year now) my experience is that it is so damn overwhelming cuz in the beginning I didn’t know anything at all. I was like trying to observe a single fish in the Pacific Ocean not knowing I am in the fkin Pacific Ocean. After 1 year I can just imagine how big this topic is. i kinda feel like a young pirate starting his adventure and conquering the oceans excited about how far I can get. Uni gives me a concrete route to follow and I try to investigate here and there for myself about things I find interesting
man, you're speaking from my soul. I didn't start out studying IT so I'm fully self-tought and just setting up an environment to follow a tutorial is such a drag. 27 embedded layers wrapped in 4 virtual dockers just takes the fun out of creating code.
Went to a boot camp 7 years ago, and now a Senior Frontend Dev, and I totally agree about boot camps! You have to have the motivation to learn beyond what they're teaching at the BootCamp! You have to spend the hours after you get home practicing, learning, and putting in the extra work! And then you have to continue to do that when the BootCamp is over and you start working! Always have to be learning! I also think that there's probably a fair amount of luck and timing involved when getting into the industry after boot camp, especially in today's world!
i want to start learning code or IT, i have my uncle who has been in it for probably 20 years and does alot of IT. Which should i start with? i have full time job as electrician so trying to manage time efficently
@@TheRealObama420 Also if you're asking about whether to go down the IT or developer path, I really couldn't tell you. I don't have experience in IT. I would say that becoming a developer can probably be a bit more "cushy" than an IT career, thats just what I've heard at least
Self motivation and application is a big part of what makes a good software engineer. You can go through a full 4 year university program and learn all of the theory, but if you never actually apply it in ways that you find meaningful you'll never truly understand it. Bootcamps tend to provide a very fast way to get to something "meaningful" to a lot of people, but I suspect that speeding through some fundamentals will ultimately mean that all other things being equal, the individual that went through university and did their own projects on the side with what they've learned thus far will be far better off long term than the same individual speeding through a bootcamp (that is, unless they're also doing their own things with what they've learned on the side)
I am doing game development as a first year, we are 10 weeks in which I know isn't a lot but we did go over those basics, we have exclusively been doing C++ and learned about what variables are in memory, how the most basic operators worked and built up from there. We only just last week saw what a class is, I was using them in side projects already but we got explained to the very basics what it all means and what actually happens on the cpu and in memory. The basics are still a thing, just not something other courses bother with.
for me two big paradigm shifts in self-learning to code were when I realized how far abstracted React, Webpack, JS, etc really were from what the computer was actually doing .. and then (2) that getting errors doesn't mean I am a de facto bad programmer, ie that working through errors IS programming, and that a lot of mistakes are happening at the abstraction level (eg, version incompatibilities) rather than at the level of predictable logic
Litterally. React runs on JS, which runs on chromium, which runs on C, which runs on Assembly. And thats not counting all the other shit that was "abstracted" away. Its pure brainrot once you think abt it. NodeJS especially is the antichrist. Then people wonder why it feels like computers arent getting any faster. MF Thats because all the physicisit and engineers have been doing all the work for the past 30 years. Meanwhile the Computer "Science" people have just been fucking around with braindead abstractions that dont reduce complexity, and dont run better.
Dude, you hit the nail on the head. My advanced Java class was using Angular. No explanation of what angular was. Just “here’s a project file from Git with everything you need. Code this this and this and show your work”. I was so confused. My questions going into it were like… What even is Angular? Where do I even place my code? What is Spring, docker, etc etc? I went from programming a small application in visual studio to that can of worms and I felt like I had been placed on the moon. Did I figure it out? Yeah. Did it make sense? Heck no. It was way to much abstraction for me and it really discouraged me to even go further.
Job requirements are ridiculous. I’ve seen so many entry level roles where they want someone with 2 years of experience. Which to me just says they want a mid level but want to pay them a junior level salary.
Maybe the best way to describe it is that, in the past is was a lot harder but also a lot simpler. While now things are so much more user friendly and easier, but also a lot more complex (if you really want to get into it).
This is very hard indeed, even though i went to college i was very distracted by the high level abstract stuff. Even if it doesn't make me as relevant job wise I will still be trying to balance fundamentals with learning "abstract modern things", college helped a lot in understanding fundamentals, but even going through college i still think there is a lot more for me to learn on the fundamentals. I'm about to get a VPS to work configuring Nginx and other things from stracth, no GUI or crazy stuff like Terraform, just a terminal and neovim, i'm hoping this forces me to learn more and more about how things actually work. Maybe after that do some graphics with C and OpenGL to understand, instead of just doing the minimum like i did in college, i just did it to get the grade to pass, i didn't understand at the time how much i would miss knowing this stuff, i wasted time, and now i will go back to learn this stuff. Hopefully it is better now that i don't have to worry about exams and professors
This has genuinely been the most frustrating thing to try and overcome. Behind every corner lies another massive abstraction and I'm just trying to fumble my way through. I just can't see the forest for the trees and this whole thing really adds to the imposter syndrome I'm already feeling at university.
Unlike the title of the video I feel really good for new programmers that are starting today. The more time that passes the easier it is to get into this field, because there's more way to access it (nt implying it's becomeing easier, don't misunderstand) I think that of you want to learn CS or get into programming, TODAY is the best moment to start learning. Even if you are skipping some abstraction layers, you are learning and lets be honest, there are so many layers of abstraction that it is definitely overwhelming. If you start right a the high level, you might miss how stuff really works, but if you start at the lowerst level, it is so alien that you will not even understand the purpose of it. Sure, one has to start with a general picture first, then pick one abstraction layer and start learning there and then explore bit by bit higher and lower layers of abstraction. And never stop learning new stuff. Modern bootcamp devs that think learning stops after they graduate from their bootcamp, they are just wrong: learning never stops. You stop, you get stuck, become obsolete and that's it, its over. Never stop learning new stuff fellas.
The way I compare it is that there's 2 types of people, People that learn by 'how', and people that learn by 'why'. These days, people just learn by 'how' because there's way to much information and people just want to know how to get things running. The downside is when they have to do things differently, they BSOD. While there're people that learn by 'why' where they try to understand why things work or why things are done a certain way but in today's world learning 'why' is too hard with the amount of content that usually contradict each other.
When i started to learn programming i was like 13, i went to an extra class for Pascal, and we didnt really learn any data structures or anything, we mostly did simple games. I think what was important is that we didnt have any overly-abstract frameworks/OOP/fancy design patterns, we just used some built-in functions like DrawPicture(x,y), so a lot was still done by hand, and it was a great way to get hooked onto programming without it being too abstract and far from metal like with frameworks, but also without it being "boring" or "useless" like when you start learning from data structures.
I mean, part of it is, there are very very few *good* teachers out there when it comes to learning programming. Most of them are adept coders who are abysmal teachers. They are so far removed from the mindset of someone who is new to coding that they add several layers of abstraction by themselves. That is to be expected though. As a lifelong coder, the last thing you exercise is what happens in the mind of someone else.
@ThePrimeTime I just finished a 2-year bootcamp. I wasn’t fully invested in it, so I only did what was required and didn’t spend much time on additional projects. Now that I’ve finished, I’m focusing a bit on JavaScript and Angular as I start looking for my first job. While I’m still practicing Angular and haven’t applied anywhere yet, I found out about your channel. Just from watching your Twitch VODs, whether it’s coding article reviews or you explaining something, I got so hyped that I enrolled in a university program starting in October! :))))))) I’m hoping to land a front-end developer job in the mornings and study my classes in the evenings. Thank you! Also, you’ve inspired me to learn Go (but not Rust, since I haven’t found a use case that interests me :::)))) )
Based take Prime! I don’t 100% agree that DSA is easier but that also could be my uni bias. Good ish on this one, def opened my perspective to how starting with these web technologies in todays works could be extremely overwhelming.
I too started with Apache and htaccess files to upload my cat photo. But then I became an aircraft mechanic and focused on that for almost 10 years. Then returned to programming and it’s so different. And the shitty thing is that there are so many technologies now it’s hard to feel like you are making the right decision learning one of em.
Agreed, I god damn hate it. I am in my 4th year in the industry, self taught from RUclips during COVID. I honestly hate CS, I hate this job, and I hate coding. It's just a good paying job and I don't feel like i understand ANY of it. Edit. I just needed to vent a little bit of frustration from my brutal impostor syndrome. I'll stick it out and hopefully it will get better.
@andiuptown1711 no..... idk about you but in the real world not liking your job isn't a good enough reason to quit. That "follow your passion" nonsense doesn't pay the bills. I find CS to be deeply uncomfortable and challenging in an unsatisfying way. But it pays many fold more than the alternative and I work remote so I'll stick with it.
@@FirstLast-gk6lg I definitely agree but I at least like the learning aspect of it. Maybe it’ll change when it becomes my job. But that could be said about most careers
@andiuptown1711 I can certainly see myself enjoying software if it wasn't my job ironically. If I could study and code exclusively for fun on my own interests. But to get and maintain a job I am a slave to the job market
As a newcomer(I've learned to write HTML last autumn) I would like to say that I actually feel excited about all these new tech around - so much learning opportunities which make programming always feel novel. I've just yesterday decided to use Redis to make it easier to upload images to the app I'm making and it was so much fun finally realizing how this could be a better solution than what I had initially. (I don't store images in Redis, no)
The main problem I have with Bootcamps (and a lot of teachers in general) is that they only teach the "what", not the "why". And I really struggle to understand (and remember) stuff without the "why".
It's frustrating sometimes having all these frameworks, libraries, abstractions, and APIs, that just do everything for you. Yes, I know it's not good to "reinvent the wheel", but how can you get truly creative with programming when 90% of your code or data is imported, required, or parsed by some 3rd-party library or service, and the little bit of code you do write has to follow some strict paradigm of a framework. I know writing your own crappy web app, or making your own solution to a problem that already has a package, from scratch, is not "good practice", but sometimes I feel like modern coding lacks any creativity or personality--most of it feels "cookie cutter". P.S. ..and most of the little code that we do write can often be generated by AI software like Copilot or ChatGPT. It saves a lot of time, but sometimes I feel like coding no longer has any "personality" or "soul" put into it like it once did.
If you dont understand how electrons work, and how to build a cpu only using a breadboard and transistors, you might as well be using photoshop to make Wix sites.
So much this. I have been working as a desktop dev for a maritime industry for 5 years now. Do you know what I technologies I use? C# and WPF (C# GUI technology) and some SQL. That's all. I make applications for ferries, cargo, luxury yachts, oil tankers, oil derricks, wind farms etc. I have considered changing companies but basically 99% of job ads are for web dev. I read the required technologies and I am like that meme dude "Mhm, mhm, yeah I know some of those words". It's mind blowing how much technologies and frameworks you have to know to develop a freaking website.
I have a different take on this. I am a seasoned programmer who has been in the industry for over 30 years now. I have a background in electrical engineering and that pretty much gave me an edge when I was starting out. I had an in-depth understanding of how computers worked from the basic circuitry. There are so many layers of abstraction even in those circuits and trying to understand all of them won't get you anywhere. The software industry is moving fast and companies are looking for engineers who are familiar with their stack. So I see no harm starting out at a higher layer of abstraction and moving on to lower layers when you get a job or after you get relevant industry experience. In the end people need to get by and it's okay if you want to start from a higher layer. Your value as an engineer is not measured by how much you know, but how you use what you know and what is available to solve existing problems. That's my opinion.
This is such a valid point, but contains a lot of complexity within interpretation: "The software industry is moving fast and companies are looking for engineers who are familiar with their stack. So I see no harm starting out at a higher layer of abstraction and moving on to lower layers when you get a job or after you get relevant industry experience."
'Moving on to lower layers' is either optional or its not. I think over a 30+ year career, it may be not optional. You may need to learn some of those fundamentals of machine organization, if you want to continue doing similar activities. The abstractions will keep maturing, both in what they encapsulate AND proximity to end-user (python in EXCEL). Excel formulas -> VBA+Scripted Python + Python data packages -> Access SQL -> ANSI SQL+dialects -> Python CLI -> Scala for Spark -> Java -> now Rust and Go. The journey is similar to the one described in the video and required some dead-ends which may have been mitigated had I learned in the methodical way.
Again - your statement still stands. You can't learn if you have no opportunities to apply any of this, and a job is often the only arena for serious application of your knowwldge. Maybe this is the main entrance route for eventual developers these days...
The problem is, in circuitry, that abstraction tends to be somewhat universal, and it makes sense to go top to bottom on certain things, because the top is the easier thing to do. And some abstractions in circuitry can still be bad, because you're learning something with proprietary quirks, even if its useful.
When you start learning programming by building an app that has the entire "communication" stack as its foundation and relies on a framework and syntax that will become nearly obsolete by the time you can be good at it, you're not really building real skill. All you're doing is setting yourself up for a rug pull and very annoying problem solving for a beginner. It's just not sustainable to generate programmers by sending them through some bootcamp and sending them off to the nearest employer. Learning the basics in programming by just typing a bit in a text editor and a terminal, is so much easier, so much less intimidating for beginners, and you're building better foundation that you can capitalise on later.
At the end of the day, I just don't want people to "learn programming" to find a job in 6 months, I want them to be educated and have that actual engineering title. If people want to build marketable skills by learning frameworks and relying on extremely fuzzy knowledge, fine, they can do that on their own time and naturally will as they grow as an engineer. But I don't think it should be be how you "learn programming" or how you introduce people to it.
That was literally my case. I started programming with Python, but after I was getting better naturally I'd like to know other things and how "everything" works in a computer. Nowadays I'm working professionally with .NET and Flutter.
In my experience, it just depends on what kind of engineer you'd like to be. I think the beginning of our journey doesn't affect us so much after all.
I've been working through the examples in "Learn Python the hard way". When I finish and master that what do you guys think the next step would be? I've been in retail for 22 years. I'm working on pivoting.
@@n.l.875 I don't think it's optional now and I don't think it's been optional for decades. I'm not in the industry professionally, but I've been developing as a hobby since 2nd grade (I'm a junior in college now). My path which was a top-down-top approach gave me a massive step up so far in every IT class I've taken so far. I know just about everything the professors are teaching already, from programming to hardware to networking. Everyone in college I've met so far has questioned how I already know everything and I just tell them it's because I've done it all before, and I have.
The top-down-top approach for me was basically taking high level technologies and gradually taking it lower down the rabbit hole before scaling it back up again. So like for websites, I learned HTML, CSS. Then I wanted to publish it (webhosts). Then I wanted to add functionality to it (JavaScript/PHP). Then I wanted to host it myself (VMs, Linux, DNS, Cloudflare, Node.js). Then I wanted to try it out even lower level (Rust Axum) for higher performance. Then scale it back up to a fully working web application that's fast and secure and has all the features that it had when in a higher level environment. Now if somebody asked me to take a Raspberry Pi and make a fully operational website for a small business, I could do it.
Sorry for the couple paragraphs.
dude my university doesn't even teach how MEMORY works, none of my peers know what assembly is, the lowest level language we're being taught is JAVA
The old stanford track was to teach programming methodology in Java and then move to algorithms and recursion and low level in c++. Maybe thats what yours will do
@plaidchuck My CS program in my community college was:
0. Intro to CS (Pseudocode/Python)
1. C++ (but mostly focused on basic programming instead of the language itself)
2. C++ (the language) (optionally, people can choose Java)
3. Assembly (can take this with any of the others after intro classes)
4. Data Structures and recursion in C++
5. Discrete math
Super low level compared to what my university did.
My classes felt pretty easy until I started on upper division at my uni. Had to repeat some classes that were basically the same but didn't transfer for reasons (probably greed).
That's a shit course.
In university not long ago, i started with C and also had two classes of assembly, later on with started with Java, python, etc...
My collegues don't know what a packet is. A socket. A buffer. TCP... Nothing besides. Javascript and a js framework for front end and one for backend
On the one hand, having a solid understanding of the foundations is almost always beneficial no matter the field. On the other, the current state of many fields is so far off in space that if you stop to shore up that understanding, it seems impossible to catch up to where everyone else is in current developments.
One of my personal issues is a tendency to get obsessed with those basics and never moving on.
I feel like I relate to this a lot, I obsess over little details that I wanna fully understand and end up wasting a lot of time without having learned anything meaningful. Sometimes I need to push myself to just do the thing rather than try to fully understand it because it's impossible to learn everything
I'm in college rn and also suffer from this. I found a simple hack - just work in the embedded/systems industry 😊.
I can definitely relate to that! For me, grabbing myself by the throat and moving on from digging into basics usually works. That, and finding some nice fun project to work on. I'm pretty content being a Jack of all trades and master of none - actually making this my profession. Put bread, butter and other nice things on the table for years, not to mention it providing a lot of learning opportunities (on company dime!).
The foundations are good because they prepare you for whatever you end up doing. A lot of people end up in jobs that use frameworks etc. they haven’t used before and it’s part of the job to learn the specific stack of that workplace.
So I’m that regard, the foundations are better. E.g. good JS knowledge is good for getting any front end web job.
@@VivekYadav-ds8ozand usually it pays more, while having more job security.
As a new programmer, learning higher level stuff is kind of like watching family guy without knowing references. You kinda get it because the jokes work on their own so you just move on without much thought. Then when you learn about the references (or tools) you look back at the episode and you’re like “omg I understand everything now!”
That's actually an amazing metaphor. I am programming for 20+ years professionally and I still feel the same way when touching yet another adjacent new (for me) tech. You can chatgpt your way thru the task at hand, google for some recipes, but it takes a while when you have time to read more about it later and lightbulb goes on and I understand what exactly I was doing that when copy pasted something and it worked. Why it worked the way it did and what it actually enables you to do and what maybe was a better way. I help newer devs a lot lately and I am so overwhelmed telling them what they have to learn to do some simple things, Can't imagine how overwhelmed they are then learning all that
It feels great when you are able to relate to things you are doing.
when family guy writers think its a good idea to reference some obscure actor or celebrity no one below the age of 30 has ever heard of...
What do you even mean by higher level stuff?
See? This is exactly the problem I see over and over again, everyone seems to think that everybody knows what they're talking about.
By higher level you mean like python is a high level language or you mean that is more complicated stuff? Are you talking about coding or are you talking about a specific algorithm or a specific paradigm?
PERFECT way to phrase it for zoomers
The bad thing is that after learning all these things, we don't become good at programming; we just become good at using those abstracted tools. We don't know how these things work internally, and the moment these abstracted tools become obsolete, we're thrown back to step one
what about colleges? If collages can do it I believe open education can as well. People just need to keep their expectations in line and not get into the 'extremely short bootcamp will teach me everything camp'
And when these abstractions fall out of favor and the cool new thing comes along you have to start all over again. Instead of being productive you have to spend more and more time learning.
that my big issue with tech now a day network guy used to deal with network stuff database ppl data base now the industries just lumped it all in on basket called it ''IT'' and boom you are doing 2-3 ppl jobs at the same salaries ...
@@BillClinton228 you mean the one thousand and one fucking frameworks out there? *fist bump* Got you bro
You can always go and learn the base of everything. The information is out there, it just doesn't do your job
Agree 100%. I got a CS degree almost 20 years ago now, and had impostor syndrome so bad I did something else with my life. I've tried to get back into it a few times. It's amazing that there's a library for everything and modern developer tools are voodoo magic. It's so easy to make a functioning one-off business logic project with infinite tech debt, but that next step is a doozy.
These days you “skip” one year in the industry and you spend five years to catch up and stay current. I was doing mainframes for awhile with their COBOL and MVS environment. When I went back to Linux/x86 it was like totally different world with Docker, Kubernetes, Jenkins, Git, Go/Python, Swagger, REST API Node.js, Nginx and list goes on. And every of these technologies is like separate problem domain on itself.
When everyone has a product to sell I guess
What job did you switch to?
@@alexandersuvorov2002lmao I literally have to learn all of these in less then a month well, . Maybe not nginx
Thats beacuse its all horseshit lmfao.
The biggest problem with CS is learning how to use all the fucking libraries atp.
Thats why people love languages like Rust or C now.
WHen its forced to work at the hardware level, you dont have to worry about all this bullshit.
This resonates with me as well. I got filtered by Ruby on Rails starting out because there were too many concepts too far removed from what I was trying to do. Then I went to bare PHP and wrote horrible, unmaintainable code, but at least I was learning.
This is so accurate for me as well. I remember trying to learn web dev in high school and just being completely overwhelmed by all the different frameworks, languages you could use, setting up a server, etc etc.
Then I did barebones HTML, CSS, JS and a little PHP in university where they set up the server for us and everything felt so much easier to understand.
Never go full PHP Bro.
As someone who is in Uni now, we still do all the things Primagen was talking about and haven't even sniffed in the direction of a GUI. Our intro to programming back in year 1 was in C (not C++), and one of our first courses which is compulsory involved how floats ints etc were represented in memory and we did lots of binary arithmetic and learned MIPS assembly there. I've been feeling somewhat down about not being able to make an actual application outside of a terminal despite years of programming, so this video really helped reassure me that I'm on the right path.
no gui for years nga?
nah bruh years???
At university, I see so many people with enough superficial knowledge to get by, and sometimes I really feel bad for them. As soon as things get complicated enough to go below theor comfortable layer of abstraction, they are lost.
that's just like in all subjects, not just CS, what are you trying to say? Some people is more comfortable with one subjet, some with others, whats the point dude?
@@jordixboyno thats not like subjects. Suppose you have been using blocks to make a building model and suddenly you are asked to make from clay. People who jave fundamental knowledge will definitely tackle complex bugs one way or another but it'll be very difficult for someone who has use predefined patterns for building things
@@anmolsharma4049Fuck java xD uni sure made me digest a lot of that.
Yeh most people in uni are completely lost in life and their only goal is to finish not to learn
@@anmolsharma4049people who have experience/understanding with clay will be fine in that scenario. People who don't will have to learn stuff about it. What's your point, bro bro?
@@jordixboyI think the point is some people know the fundamentals, building blocks and convenience layers. Some people only know convenient wrappers
This is why it took me so long to learn basic JavaScript. Because JavaScript used to be "simple" language to manipulate your website, but then it turned into, "We also want OOP, we also want array methods, we also want X, Y, Z" And now there are 50 ways of doing the same thing instead of just one or two. As a beginner that's super overwhelming since programming itself is already quite confusing for a total beginner. This is why modern JS is just a bad way to learn programming IMHO.
Having been away from web development for nearly 20 years, it's insane to me that people actually respect javascript and use it to teach programming. It was a laughing stock of a language back then.
I personally prefer the bottom-up way of learning since your knowledge never depends on things you don't know yet and the bigger picture usually just clicks immediately.
Me too; the problem is one has to learn a lot more just to catch up.
@@UliTroyoIs it really a problem? If you are like 19 and decide to learn programming you have at least few good years to learn basics, some alogirthms, etc before you finish your degree + you can take internships during degree
I do too, but it's not super practical when you have deadlines coming up. I try to do a bit of both and I keep my bottom up learning as something I do in my spare time. It's unfortounate but the best I can do to keep going is to have some imaginative mental model of what I'm guessing is going on behind the scenes, and as time goes on hopefully that mental model becomes more and more accurate. Otherwise I'd have to pause everything for a couple years just so I can understand everything.
@@alang.2054Most of the “modern” stuff will be obsoleted by the time you graduate. But fundamentals (like computational complexity, sorting algorithms, data structures, computer and OS architecture) will remain forever.
@@alexandersuvorov2002 until react will be the standard in creating web components in chrome/chromium, time will only tell
The discipline required to peel back the abstraction layers is pretty overwhelming these days.
Its also pure bullshit too if you think about it.
Theres no reason why modern programs cant just be built in C or Rust, and just ran normally like it would on a C64.
The biggest cost in computing used to be memmory. Then it was processing power, and now its human resources.
Thats why in the past 10 years, CEO's have been making all these coding bootcamps and forcing people into CS.
Its all in a failed attempt to pump out more code per human employed.
@@honkhonk8009
it's not because of CEOs or something...
People has endlessly trying to create the "general programming language"
The one that can make everything, low memory manipulation, UI, data-driven, event-driven, everything-driven.
but it doesn't exists.
We have c++, but you can see how STL can get extremely boilerplatey, we have layers of abstractions, just to get javascript, which cannot execute really low level code, but that's okay since we need this security layer or else we would have some crazy stuff happening in the web.
But you can also have htmx and leverage the logic of the application in the server.
At the end of the day the problem is the same, where the hell do I put this code.
@@honkhonk8009 it makes sense
It's easy enough learning it, the hard part is for me to retain it all. I guess over time you get a good "generic" mind-model of how everything works, but when put on the spot... it's difficult to churn out answers. Benefit is that you can pick up new or old code quickly once you have enough experience "peeling back the abstraction layers" as you say. So i guess a lot of patterns and modes of thinking are being retained... I just need those little reminders constantly. I should probably make better notes.
Those bootcamps are nothing more than money spinners designed to take money from desperate first worlders while cheaper devs are imported XD
As someone who started learning to program a year ago I felt this pain. The first thing I tried to learn was .NET frameworks and it was so overwhelming. I eventually pivoted to Js, though due to the level of abstractions in things like react and other UI frameworks, it just didn’t make sense to me, it felt like there was something missing to connect the dots. I finally got a grip on things when I realized the question you need to ask is why? Why is this framework abstracting this feature and what use is it to me. I found that I much prefer to understand how the cake is made rather than throw icing on it. Now I primarily only use minimal third party libraries as I found it is easier to understand what is going on if you build it yourself from scratch. It may sound counterintuitive but that’s really the best way to understand what is going on.
I code stuff in unity, and i was amazed to find out that people literally just download most code from the store instead of coding it themselves. an example is a movement controller for a character. I've learned a surprising amount just by coding these things, I must have made 10 by now, each better than the last. I've watched people do unity on twitch, and their lack of knowledge of how code works is astounding
It's actually "intuitive", not the other way around. You understand that all these conveniences comes with overhead.
Same spot but I'm still kind of stuck in .Net land, mostly because my friends push it so hard. I've been thinking about pivoting to learning Typescript and focusing hard on landing a front end role instead of a full stack one. Any advice is very much appreciated.
@@Jormmg whats your overall experience?
@@Jormmg I’m not that experienced so take what I say with a grain of salt. I never learned typescript and I’ve stuck with plain js, I haven’t worked on a project where explicit types really mattered. But that being said if you learned C# your probably already used to that pattern of programming. What I struggled with most when learning C# was OOP just didn’t make much sense to me. Once I learned pho and js I’ve adopted a completely procedural style of programming because it’s more intuitive. Also, keep in mind that js has a rich ecosystem, I’m currently building a full stack app in electron. One thing I really wish someone had told me when I was starting was that a programming language is only as good as it’s tooling and ecosystem.
17:50 This reminds me of something: One of my trainers during my apprenticeship also had some friends who worked at VW. He told me that programming apprentices get electronic training there.
This is why I feel bad for people trying to change careers at React bootcamps.
react will be a huge problem if we still go down its path and companies continue to adopt it.
what's wrong with react?
if you know js, you will be good after learning a couple rules and using some state manager like mobx
@@kirillvoloshin2065Because learning React without understanding JS makes no sense. Those folks get lost on simplest erros/bugs and won’t know if this is React or JS error.
@@kirillvoloshin2065 You won't be, react is total mess the bigger app is. That's why on bootcamp there is always copy-pasted code. Even angular is better, because between project structure is always same. If u start badly (code inhertied from previous coworkers) u will keep creating more poo.
@@RaZziaN1 Yeah, React was supposed to make things simpler, but end up needing to write the double or triple for a form
10:00 A friend of mine and I were talking about this recently. He went through bootcamp and I am currently finishing my senior year. The way we finally came to a conclusion that 4year gives you stronger fundamental and flexibility. Bootcamp teaches you how to code but doesn't enable you with as much problem solving (his experience).
Completely agree with this. Was talking to my friend about this yesterday... With how they try to churn full stack web devs out it feels like they are trying to take shortcuts... Its absolutely insane you are expected to be full stack in a few months with having to know THIS much. Saying that as someone who has gone down this route myself.
I'm grateful it's given me a door into the industry at least. I'd love to make Web plan b and get into something else like embedded systems, but it's going to take some time to get there for me.
It really is. I also almost want to tel devs to stop taking full stack roles because were at this point underpaid. There’s soooo much to know to be great full stack devs. We need to get paid more.
@@weirdwesteros1109 completely agree, I held back from saying this in my original comment but it seems a bit to me like Web dev is seen as the low skilled section of programming - which is of course absolutely ridiculous when so much is put on you.
Even if it was, treating devs this way is not going to do the Web any favours.
yeah i'm new to programming and went into C++ for embedded systems, but have taken a detour into web because that's my general career anyway. i'm much more interested in getting strong with fundamentals (maybe not all the way down to ASM but that kind of thing) than about knowing 20 different technologies and platforms badly
I don't particularly like these categorized expectations that someone should eventually be classified as "full stack dev".
We did have, and still do have, some devs who simply refuse to do database related stuff, even when his scope on the project would require minimal database skills that we'd be more then willing to train and explain it to him.
We also have some problems the other way around, when said dev did make his database stuff, and suddendly management starts looking up to him as a full stack dev.
I like to be project oriented only - whatever needs to be done, do it as best as possible. Most likely won't be the best most optimal solution, but hey, as long as it works
I don't mean to sound like a downer but I'm kind of glad that this video exists. I tried to learn how to code and get a job throughout the pandemic. I worked hard but it wasn't hard enough AND then I got told by a recruiter, after having multiple projects, interviews, even a little freelance experience, to go back to boot camp. that's when it hit me that I had learned a little versus actually understanding what I was trying to learn and do. So I honestly gave up and am now happily pursing a different career path in tech. If you want to program for a living, the challenge is higher than ever I think so good luck!
whats the other career path in tech your pursuing? i might try to get into IT
I'm 36 in the middle of my cs degree. They taught absolute basics of python, java, and C++. I've been deep diving C++ on my own since there's no more other language courses during the degree. I always like watching prime's videos and play the game of inferring definitions through context clues for all the different technologies that are mentioned on a daily basis. I know I won't learn it all, so I'm just making micro-projects that can perform a task that I didn't know how to make before. Things like monitoring keyboard/mouse events from the windows library, or using sockets. I always have this anxiety in the back of my mind like I need to learn specific things before my final year at school is up. For now, though, I just keep writing things like linked lists or exploring new ways on how to fill up all my memory on my system.
Yeah I agree with you, as long as you can come out of it feeling confident in your ability to learn on the fly and problem solve, you’ll be full fledged in no time.
Are you doing the career to break into the field? or are you already working on the field?
school will teach you like 5% of what you need to know. You need projects in your spare time. Make a simple game or something using c++ in unreal engine
And Primeagen has relayed the preference to use an array in lieu of a linked list unless you can PROVE it's better...
@@cas6112 yeah I have done a few problems and some of them blew my mind with how some of them are solved, but definitely has been a great learning tool. I asked a few of the discord boys for advice and they have been great in pointing things out for me to teach myself. My data structs and algo's class is next term so I should be definitely prepared for it. (hopefully)
I program as a hobby but I’m so happy I started with C. I learned programming because I wanted to learn about computers, not necessarily because I wanted to make anything. I was just fascinated with the technology. Went from c to c++ and took an assembly course. I switched colleges and they wouldn’t let me continue the CS curriculum because they were learning Java and I was learning c++. I was like, “you realize I bought a book and learned Java in a week, right?”
Like you said when you learn the actual art of programming learning a knew language is just matter of learning syntax and remembering how things work, you’re not trying to figure out why things work.
i went university in Turkiye to become computer programmer and yep we also start with C :D I'm glad they did it. Now i just use c# and unity but damn it help a lot. Now c# make me way too lazy to deal with stuff like c++ but at least foundation is there if i want to build on
Btw one of the first things i find out about c# is "oh so things i had to do is already exist in c# so i dont need to do them again" XD
While understanding what each command you use does is very important, and understanding a bit of why they do what they do can open you up to new ideas, learning anything lower level than that is pointless in 95% of cases, and otherwise i guess it can be cool trivia to tell other people how clever you are. I don't think most people are coding in Assembly right now to make a modern application.
And you're completely right too when switching to other languages. Once it ticks in your head and you "get it", getting into different languages is way easier compared to the first time, as it's often just some different syntax for the same commands.
actually this though, people always ask me what langauge i know/can use but to me it's all the same shit
even the differences in syntax are usually pretty small
using some bing complicated framework is usually much harder
I agree. I you learn C and C++ you can any of the higher level languages easily. You have to be smart learn C. Average person can learn javascript.
As an electrician that enjoys programming as soon as you said electric motor underneath memory, I started laughing.
Ever seen a rotating drum memory?
@@vitalyl1327All HDD (disk). I use old HDD drives for sanding; take off the housing and remove the rust-tape and attach some [aluminum oxide]|[sand paper] to the spindle/axle. Send 12V to the drive via a PSU that has been jumped.... Ha...
@@vitalyl1327 can’t say I have. My experience is around electro-magnetic stuff like controllers, relays, breakers, solenoids, motors, generators, etc…
sup nerd variant
I feel like you highlighted the 2 different ways you can aproach a problem. Where taking the university route takes longer, but you learn the absolute basics, allowing you to use that knowledge to quickly learn and understand the higher lvl concepts, ideas and abstractions every one takes for granted (up to a point). While the bootcamp route makes you quickly learn the high lvl stuff, but because you lack the lower lvl understanding might make learning certain things or new stuff more difficult. Of course the hope is that with the bootcamp route you learn the relevant low lvl stuff while doing, while the university expects you to pick up the high lvl stuff while doing. Both are valid but just for different ppl and situations.
This is why i honestly think people should learn c as their first language. If you can build a data structure in c it becomes much easier to understand the abstraction in other languages.
Interesting, you really seem to believe that C is a very low level language. It is not. Not any more. Not since PDP11. It is very far from how real CPUs work.
First language should be assembly.
@@possumkeys and these days even assembly can be too high level and too distant from the actual microarchitecture of your CPU. Learning an assembly on an 8bit MCU can be far more beneficial for understanding of how things work than learning an x86_64 or aarch64 assembly.
@@vitalyl1327 I agree assembly is too abstracted, people should be learning to code in binary machine code, anything else is stupid
I learned logic gates, and I could build CPU out of it. It does not help with the work that requires Docker skills.
Its so fun to browse youtube after finishing some studies (to become a frontend developer) and constantly be blasted by youtubers saying our efforts to become something is useless.
”Why programming is dying”
”Why you wont succeed in 2024 as a programmer”
Yes I am from mechanical engineering background and learning java and python from 2 months and got good at it thinking to move to learn some web dev and now i get these kind of videos in my feed. Every other person is saying either you will succeed or f*cked it really give me sleepless nights, like what to do blah blah AI will take your jobs, what are we supposed to do then if programmers are in danger
just got this recommended after finishing the HTML and CSS part of my course and jumping into java script haha, i'm also starting my first year of computer engineering. i try to not let the negativity get to me, because even with all this in mind. in what world is it better to know nothing instead of now a small part of the whole picture.
Thank you, you have encouraged me. Because sometimes i feel overwhelmed by the amount of knowledge you have, i have 2 years of programming and i am learning rust and seeing you talk i really feel that i know nothing, i wish i could understand the binary thing, but i currently don't have the time to do so, i need to work on the thinks i already know in programming and i have a life besides programming... So thank you, it will reach a point where level of abstraction will become so high that the person will get to choose or understand the metal or do something useful because you will not live longer to understand both. So thank you for saying 28 times: "I feel bad for you", it has motivated me to accept my limitations and my ignorance, i am pushing forward, i heavily suggested the use of Rust so i could learn it... but i cannot go back in time and learn everything that theprimeagen learnt and have a life and work, i cannot, so again thank you for helping to accept my life condidtion!
I am from Brazil BTW, love you channel, thank you for reading or not reading this...
9:30 People studying computer science learns the diagram on the right, then when they get into industry,,they are forces to learn the diagram on the left. I gradudated 4 years ago, but i cant imagine those fundamentals wouldnt be there anymore
2 pieces of news for programmers who are just starting out:
1. It's hard, and most of you probably will quit after a few punches you'll inevitably receive.
2. If you can manage the stress and take those punches without throwing your laptop out of the window and staying diligent, you'll have a high chance of becoming a professional in this field.
Just like most other careers.
There isn’t growth without challenges and failures.
It really is difficult, I am a self taught from RUclips dev, just starting my 4th year in the industry and currently looking for my 3rd job. I genuinely don't understand anything and the impostor syndrome is absolutely crippling. I started with React/Node/AWS and although I can do the job, it's all so overwhelming and I have zero confidence.
I really wish I had studied CS in college
@@FirstLast-gk6lgStudying CS in college wouldn’t necessarily help. Everybody has imposter syndrome in the earlier years of their career as a developer.
Yep and yep. At one point I legitimately tore the shirt I was wearing and ran outside in 10 degree weather to cool off. Good times.
@@SwaeTech Thank you, I think I just need to spend a lot more of my free time studying the foundational stuff esp Data Structures. Do you think me getting into a new language in my free time would help me understand? Maybe like C++ since I hear that is a lot more foundational? Since right now all I know is Javascript and mostly just React/Vue/Node
your biggest mistake was assuming that schools keep up with industry...
I found that learning ASM on 8-bit PIC microcontrollers helped with the low level stuff. For the modern tower of babel problem where the simplest thing depends on everything and the kitchen sink, I let copilot help with the discovery lol.
I learned those the hard way, try out the game called Turing Complete on steam, it's harmless logic puzzles at the start, and without you even notice, you're already building your own CPU architecture and writing assembly for it. That, as a js kid all along the time, got me into digging into the rest of the hardware world, and stopped hating any programming languages. Everything was built with its purpose to make life easier. (i still hating ruby tho, it exists for nothing valuable)
Hell yea, I did some pic16 and pic18 programming at work. Terrible for the use case it was used in, but it's a great learning tool
Litterally. I just played around with making my own 6502 computer and it litterally made everything make more sense.
I absolutely agree with you, Prime!! I honestly struggle with all the abstractions in front end. I don't write code like I do with a shell script or other languages that I'm learning to get away from front end. Instead I google the vast array of "stuff" I need to put together a mishmash of abstract terms that have meaning only in the framework or repo I'm working on. It truly sucks. I can think logically. I can't hold 500 unique terms in my head.
Tbh we have a history of trying to make programming more glamorous/difficult than it needs to be
Like formally proving recursion or learning how to make an AbstractFactoryManagerFactory are both completely optional if non-trivial vs just knowing how things fit together and what to consider in code/system design
Exactly. Seems some Devs get orgasm from difficulty 😂
There is a natural difficulty in many real-world problems. When faced with such, both cowboy engineers with a tendency to overcomplicate things and superficially learnt monkeys are equally helpless, and only those with a thorough findamental knowledge thrive.
what the fuck is TBH? Is there really an excuse as to not write the whole damn word because of the word count that youtube allows in the comment section? Are you using a keyboard so fucking huge that the keys are so far apart that writing a full sentence will take a month out of your life? Are you typing ten thousand comments on youtube that skipping a few letters will add up years to your life span?
I don't fucking think so...
A funny story about the current state of technology here. The company I working for tried going serverless, and our team is pretty forward in trying new stuff, so we deployed a few of our services to there. And then, 2 weeks time with a glimpse of success, just to find out that they aren't even trying to solve any problem, but to create a whole another set of problems you need a workaround to go serverless (restricted runtime, randomly dying executions, vendor lock-in etc.).
But since we liked the fact that things doesn't need to setup its own routing or port forwarding, the solution? Yes, we wrote our own serverless service and deployed it, works like a charm, doesn't cost us multiple livers a month like in "real" serverless, and it's not even that hard to implement with existing tools either. 🤷🏻♀
Im a self taught developer still kind of finding my way but have gravitated to web over the last couple years as it was easier to make money. The most difficult thing as a new developer with little to no guidance was wrapping my mind around the whole ecosystem of software/web. To make things even more confusing throw in all the buzz and hype for things like blockchain, ai, data science, game development etc and as a beginner its just insane. My first programming experience was a course building a decentralized shop using react and solidity. I managed to get through it but was so mentally taxed it hurt my motivation in some ways BUT I think if you can keep yourself afloat it can be beneficial but its such a whirlwind to start off. After a few similar bouts like this I finally took a step back took time to do some dsa, learn about networks, os, compilers to some degree and didn't try and make a website or application for probably 2 years and when I did I was crushing it. Out performing people who have been developing since before I knew what a function was xD
"The most difficult thing as a new developer with little to no guidance was wrapping my mind around the whole ecosystem of software/web."
"After a few similar bouts like this I finally took a step back took time to do some dsa, learn about networks, os, compilers to some degree"
I really enjoy reading these lines after finished watching the video.
This is where he draws the line in the video. You are naturally a structured person, so no wonder you excel when being self-taught since you will manage to organise a structure for yourself over time.
If you are naturally go-with-the-flow kind of person like me and Primeagen, we will forever stumble upon the vast content on the internet until ended up burnt out, so it is better for us to follow the structure provided by universities.
2 years sounds like the perfect timeframe too! Just long enough to bask in all that knowledge you’ve collected over the time.
It really is difficult, I am a self taught from RUclips dev, just starting my 4th year in the industry and currently looking for my 3rd job. I genuinely don't understand anything and the impostor syndrome is absolutely crippling. I started with React/Node/AWS and although I can do the job, it's all so overwhelming and I have zero confidence.
I really wish I had studied CS in college
@@FirstLast-gk6lg It's never too late. Practice a data structure for a few days at a time or when you can and just keep rotating through them. It will help a lot. If you don't have a project to work on or day job works done then you got something to do. You should be able to create at least the basics. Linked List, BST and a simple graph from scratch. Then practice using language implementations or functions that take one of those data structs as an argument and practice solving problems. Pay attention to the time and space analysis of different operations on the structs
@@FirstLast-gk6lgbrutal
So nice to hear this from you man. I started on pascal in highschool, at uni I started CS in 2005 but failed, 2009 did an IT diploma, 2017-2021 did my CS undergrad, Doing a AI Postgrad Cert now part-time.
The point? I've kind of been in the barrel of the technology wave for what feels like forever, every year I feel like "A New Programmer" and never been able to get the illustrious "IT/CS related job". Every time I learn something it seems it's already too late, need to learn another dozen technologies, frameworks, and stacks so I can be employable. I use to run nightclubs during my studies, so throughout my life I've never known anyone technology inclined, in fact most people in my circles would often just mock what I did.
But during my postgrad I started my own web agency doing wordpress websites.... and it's nice to have money slowly starting to drip into my home now I have a baby daughter who will be born any minute now. It sucks to have spent nearly 2 decades learning tech to end up using what many of my contemporaries or young working engineers would think is lame... but I really persevered, I really envy guys like you using great technologies professionally that pretty much are enjoyed by every westerner. But in my experience most people just want a wordpress site for small businesses, need it built fast and cheap which just can't be done with a programmer-enviable stack. I did all my studies online after 2009 and so had to live off of Stackoverflow for years because I had no teachers to help me, no colleagues for support or to even compete with, all the while either running nightclubs or doing construction after I got too old and stood out at the club. (I can tell you now, after studying independently long before RUclips tutorials were a thing, now is the dopest time to be an independent programming student. ChatGPT answers all those stupid questions I spent countless hours figuring out my self through trial and error or honestly, maybe never having answered for me).
...have considered teaching a private school as it came up recently through a cousin but they say most teenagers have no idea how to even email let alone how a computer works (you'd think Gen Z were tech literate but it turns out they aren't - not counting social media and related apps). I have been doing this 20 years and I can barely keep up with the studies so kudos to those young new programmers that make it and succeed.
Just to clear my IT and CS studies, I HAD to learn: C, C++, Java, Swift, PHP, C# (along with Angular and Typescript), Python, Vim, XML, Docker, Bash, AWS and GC CLI... Not including all the other obvious theory like databases, project management, Web dev like HTML, CSS, JS (I remember learning JavaScript way after OO, functional and strictly typed languages and being blown away by the ease of using learning it in comparison) user centred design etc. Not gonna lie there was a bunch of times I barely passed but largely HD. Still can't get a job.
About to finish a course in Figma and MERN stack, hopefully Theos advice is the magic sauce for a job 😂
True about WordPress, I'm now in my graduate year doing WordPress site cause someone recommended me. Never touched it before although I had experience with php, js, python and a little of C languages. Funny how things work, your comment makes sense
Gen Zers being illiterate techs? Not the ones I know. Maybe the ones who first used smartphones or tablets before computers? (the gen z individuals born in the last years of the generation, just before gen alpha started?)
Man, your a chad
You put into words what i have been feeling for months. Motivation runs very thin when simple things are fullstack apps. Thanks for the video❤
A testament from a self taught.
Before I started, I didn't expect I'll be this deep in CompSci, and that's for a reason. Started coding in Python, then I learned HTML, CSS, JS, and when I'm there learning React and Node js, I discovered how deep the iceberg really is. Long story short, I realized how shallow my understanding is of the tech I'm learning that I have to learn CS 101 by myself. Started with Crash Course Computer Science, then some more CS learnings, heck, even some basic Networking stuff to better understand web dev, then Data Structures and Algorithms, then revisited web tech with HTML, CSS, and JS, and things made much more sense.
My key takeaway here is that the innovation in tech made it so much harder for newbies as we have to learn not just the fundamentals, but also the new technologies, at the same time, which can easily confuse any informally unguided newbie like me.
It's not even about the complexity or how close the technology is to the computer. It's about how using languages like c/c++ and focusing on things data structures and algorithms in the early days strengthens one's fundamentals. This not only builds patience as a developer but also helps build a problem solving mentality.
I think the biggest issue, as you've said, is how many different approaches to the same thing you have when learning the ropes. Want a framework? you can pick from 10 available. Want routing? 10 available. CSS styling? 10 available. Database consumption? 10 standards available. What serving strategy will you use? 10 options available.
Very few people can learn effectively from this.
When I was transitioning from HW to SW, even with a lot of knowledge on fundamentals, peering into web dev already made me flinch from the enormous amount of stuff to learn. There's just so much, happening so fast, and you don't know really where to focus to stand out. It felt like I would have to invest too much to reach a point where I was satisfied with my skills, in something that I wasn't really into.
These days I understand much more about the field, but I still don't consider a career in web. It just looks too unstable for me to plan ahead appropriately.
I get that it's proper to learn C or C++ first, but I realized that learning them first usually make people give up early in the process so I switched to learning Python instead first.
yeah I started with C++ when I was 16 and didn't end up coming back to web development until I was 21
LOL ME TOO im doing js and html & css rn tho@@KillasStayFly
What of learning solidity first
Or vyper first?🤔
Yh although in the long run I know I'll end up having to learn JavaScript(solidity )or Python(vyper) respectively
Which do you think of both?
You dont "learn" a programming language. Their all the same. Theres barely any differences between them.
Just use the most generic language you can find for sumn, and just use it lol.
I get your point, it's beyond easy to get into the meat and potatoes of coding nowadays. Back in the day, I remember placing into a notebook ipo and flowcharts before writing the pseudocode. Accompanied with my notes would be the math for whatever optimizations I needed, along with other problems that needed to be solved. It was fun... I would then go to my computer and start creating the folders and files I needed. The files I created were crated with Notepad using 'save as'.. The examples you gave, I learned very similar. I remember in class, I would have assignments like create a doubly-linked list and make sure it is reusable. Essentially, you built your own stl. I'm sure some colleges follow this format still.
I starting using computers and learning to program in the mid-80s. I've been at it every since... hardware, networking, app programming, web development, and more. I honestly think those learning to code in the last 5 years have the best resources and therefore the best chance(s) to learn what's necessary to develop amazing apps. The main problem I see for today's "students" is there are too many good tools/languages available for them to learn. Best advice I heard is pick an area (ie. Web Apps), find out what *most* mid-level developers are using, and focus on learning ONLY the essential "core" tools... and then build, build, build.
React bootcamper here. I definitely feel the pain. But I wonder how much of this is down to employers. There are so many adverts there demanding aws, docker, kubernetes etc from junior frontend devs
good news for you, you literally just lie on your resume and then you learn it on the job
This is soo much true. In my first job and university, i focus only on build and deploy apps in intranet enviroments (no connection to internet). I have to build everything from backend and frontend proyects scratch and deploy it using Apache. It was hard, YES, but it give you the knowlegde of how everything works end to end, that's a great feeling. I recommend everyone to try that at least.
The other realization i have when i pass to consuming libraries to write/read or PR libraries code. That give you soo much understanding of more things, because it help you to learn from others people code, is so nice.
I don't thing the current state of code is broken, but is harder to get there if you start only with RUclips videos. Learning algorithms in university and for my tesis was a great base, and is harder to get that watching only RUclips videos, i'm not saying that's imposible, but little harder. And yes, in my university i have programming tests in papper :) (really hardcore hahahaha)
In my opinion, and mind you I am a very junior self taught developer with less than a year of experience and stupidly lucky to get a job, is that the way you can go from the bottom up, you can also go from the top down. The difference is those abstractions make it easy to to see progress which is by far the biggest motivation bump and then you see in practise why you must learn all the things those abstractions are based on.
Going top down is an extremely bad idea and it is going to leave you with an awful lot of gaps that you won't even be able to detect, making you very prone to Dunning-Kruger.
How's the job going?
@@gerardonavarro3400 really good thanks! Even managed to get a raise!
I graduated in June 2023. Before my studies in software engineering my only knowledge about coding was modding game file values, which isn't usually doesn't require knowledge over software principles. Abstraction caused a lot of issues. I didn't often even know how to word my questions properly. I was baffled by how did programmers know what methods they can use to do various things, how do they know to add .length after an object? Confused, lost. Nowdays I am a junior fullstack developer doing consulting work at companies and it took a lot of courage to go to the very basics and root of software development into the hardware and lower level programming languages. Over time I began to understand all of it so much better.
Current comp sci uni student here. I have friends who went through boot camps instead of uni like me, they constantly are learning, however when it comes to low level concepts like memory management and building real algorithms they struggle. I think that the uni path is easier because we get to focus on one thing at a time.
Yea, I realized this during my Comp. Sci. degree. Programming can go so deep in so many directions where any one project is gonna be using like 20 different APIs. My strategy has been to learn the main languages at a mid-level (Java - Python - C - HTML - CSS - Javascript) and the rest of my time is spent studying data structures and algorithms. The truth is, anywhere you get hired they are gonna expect you to learn THEIR stack and the chances that you just so happen to learn all of those things are effectively ZERO. Focus on fundamentals and build a few functional websites, web apps, google play store apps, whatever. Build simple apps that have been made before but add your own little twist.
This is the exact problem I have. I have been learning programming since 2018 and I always find it very very hard to learn about the low level stuff. It's not easy to find resources online for low level programming and I'm someone who can't learn (feel comfortable) if I don't know how things works under the hood.
Just find something to work on. At least for me it's the best way. I had a mini project were I was figuring out how to make gameboy games, it taught me tons and was alot of fun.
Just do nand2tetris, it will guide you through the hard stuff. Also, read the "Code" by Petzold.
Yea I know what you mean. I was tryna learn how c compiles and in the end the best way was to bite the bullet and read the gcc manual.
@@aarondanen3150 the best way to learn how C compilers work is to write one. Gcc is insanely huge and complex, a compiler can be much simpler - see lcc, tcc for example.
@@aarondanen3150just do Harvard CS50
Dude you’re the first person I’ve ever seen put this feeling I’ve had into words. I want to learn programming but it feels so, so complicated and I’ve never understood where to start.
I went from an unrelated engineering background to data science to cloud dev. Because at first I stuck to the maths and modeling I kinda got what was happening. Once I got how to model stats I then learnt how to deploy/ host things and that eventually led to me picking up C. I think what REALLY helped was having a logical path and reason for what I'm doing/learning at every point of the way. Otherwise I would be completely lost.
I get your point. I have working for at least 7 years as a programmer, and i have seen that courses nowadays jump top abstraction too quickly and people dont build core concepts such as paralelism, concurrency, pointers, memory allocation...
We solve this by educating people.
I had to sit down with a friend that is going through his first year of college to helping understand the basic conceps by truth tables.
It is ridiculous how complex modern development is.
All CS should be bottom-up. Not top-down.
Yes, assembly and machine code are hard... but they are hard not because understanding it is hard but because putting together lots of simple instructions is harder to wrap one's head around. We should all be learning how the machine works and how it has to be talked to first. No other field of engineering starts at the absolute top and works down.
training and learning is becoming less and less important in this age where everything has to be BLAZINGLY FAST, including development. businesses want quick RETURN ON INVESTMENT for their devs, and they dont even care what the dev actually knows or wants to learn, as long as the job gets done. we dont have time to fully learn all the things we are using these days, but it forces us to learn quickly when we do need to dive deeper.. its a double edged sword.. I took this all in my stride, and have been exposed to so many new technologies and projects, and have grown in a way that I dont think would have been possible before this. It was really tough to keep up, but its the only skill i truly got to train: being resourceful and prioritising knowledge. experience: 6years
Yep, wait 5 years till someone will have to maintain those spaghetti codebases. Guess what? That won't be a bootcamp developer
@@alang.2054 which spaghetti codebases?
The problem here, they don't get the job done. They produce utter crap that can superficially pass if you don't look at it too closely, then crumble at a first attempt to use it as intended in production.
@@vitalyl1327 its an unhealthy generalisation to make, for sure
This made my day. I feel so overwhelmed starting to learn python. I have a midterm in 10 days and I'm literally plagued by fear.
I did too but it's different. After I graduated back in June 2023, told my dad that I already lost my mojo in coding (already can't recall Netbeans, Python, Git, and Laravel) now expectations are growing big and I can't seem to do it back in August. Now I just want to move on from Tech.
Been majoring in Computer Engineering, building computer, OS, and compiler from scratch. And when I was picking up on web dev it was suck a walk in a park. I can just bottom up every single concept and understand exactly how those technologies work, and the relationship between them.
🎉
what books / tutorials / resources are you using for the custom os? and what language is it built in?
And that's exactly *why* you start from the bottom up. Imagine trying to go the other way. There's probably tons of misconceptions to flip.
@@LukasCobbler I can recommend Project Oberon - a minimalistic computer built from scratch, with an OS and compiler also built from scratch and still small enough for one person to comprehend in a few months.
from my experience, 'computer science' is the scam one, 'computer engineering' is the good one
In my day you could show your cat pictures with HTML and nothing else. No PHP or JS needed.
self taught web dev here
in this day and age, there's no wrong answer in picking your stack. Every framework and new technology is copying features from each other, not to mention open source contributions. So any way you take will get the job done, accordingly pick whatever you're comfortable with
Been out of the programming industry for 7 years because of a mental break down I had. Burnout from another job, and ADHD, and other causes. Want to get back in, but often feel really discouraged when I look at job opening being posted. There is like a hundred languages, and then 100 tools for each language they want you to know.
Damm bud, I hope you're ok, what are you doing now?
@@myb701 machine shop labor. Kind of doubt I'll ever get back into programming, because with being out of that market years looks bad on a resume. Indie game development interests me, but that's also just a hobby and the chance to be successful is slim.
in 1989 I accepted a short contract to re-write an assembler system. my toolset was the databook for the micro, a pad of paper, an eprom programmer and eraser and the target board. I wrote the assember on paper, assembled it to hex by hand, typed the hex into the eprom programmer, and blew the chip. took the chip out and inserted it into the target board and powerd it up. Then worked out what was wrong with a logic probe and took the chip out, and into a uve eprom eraser and the cycle started again. no oscilloscope, no computer other than the target eeprom based microcotroller.
You can get a math degree, or you can take courses on how to use a TI-84. One will teach you the fundamentals of math enough so you can learn how to use the TI-84 yourself, the other will screw you if a new type of calculator is invented. I graduated during the height of AngularJS and Gulp, if I went through a bootcamp, I would've been screwed. I'm sure Assembly programmers thought the same as C programmers who thought the same as Java who thought the same as PHP and so on. And now with AI the abstraction level will only get higher. That's why I hate it when people complain that their CS degree was useless because they didn't learn how to program. These are only tools, learning the fundamentals of how a computer runs code gives you a holistic view where you can learn anything
New guy here! I've been learning to code for 3 years now on and off since I'm a parent. It wasn't until just recently that I feel comfortable enough to apply for a Jr position. Took me a while to learn what I learned compared to my peers who are all senior developers, but if you have the will it can be done, even if you are a busy parent like me
This is why 97% of the people out there are not cut out for this job
:c
at my ex-job i had the oportunity to work with junior, mid, senior people in php, they all wanted docker for the server to be up yet non of them where able to start a basic apache/nginx server
and they were suposed to reploy and maintain the linux server
I had to teach 6 people the basics (1-2hours based on the person)
my personal opinion:
which one is easier depends on your goal:
1- you want to program as fast as you can and MAYBE get hired then we have it easier.
2- you want to learn computer science and then dive into the web stuff later on with solid foundation that wouldn't change with new technology that becomes industry standard and end up without a job, you had it easier.
but again i'm just a beginner and this just what i got from watching you and doing some courses
You can learn CS on your own.
@@jordixboy You can learn anything on your own
@@YeetYeetYeWould you like to give responsibility for your life to self taught doctor? Or lawyer?
@@alang.2054 would you want to waste 4 years of your life and a whole lot of money on useless knowledge that is not applicable in real world when you could have got that job in 6 months for free?
@@alang.2054 Also would you require your carpenter to have an architect's degree? And should every single brick layer also have a specified degree in architecture?
man i feel u!! that linking classes, that tick that this is how memory works i feel u completely. The art of programming!! By going through all that small stuff, we can now solve any kind of program. Like you can make a website sure without knowing the basic, just my learning all the frameworks, but then if you have to do a complex binary tree calculation for giving salary through referred persons on a website, we can see how it all being structured in our head before even sitting in-front of a keyboard. It is just so fun to be able to think like this and solve problems this way.
The only real life super power is the art of programming man.
I tried learning to code so many times but got stuck by this very problem.
Until I learned super low level stuff nothing clicked for me.
Owe a lot to Ben eater's breadboard computer series
Yep, his stuff is amazing!!! They don’t teach that in CS and he def closed the gap!
Yep I agree with this video... it's like people starting today and thinking a full stack app is a next js, react, vercel, and firebase db...
As a veteran programmer, I completely agree with you.
Sometimes I think about these bootcampers that have no motivation to dig deeper than what their short course taught them, and if they happen to land a job creating life-critical systems... This keeps me awake at night!
You can be a bootcamper and still dig deeper afterwards
I completely disagree with you
I completely understand everything being said here about the bottom up approach and it's long term benefits but at the same time I really don't know whether or not I'm going to have the time necessary to actually go through all the more complex fundamentals first before then finally learning relevant shit (of which there's a hair pulling amount of now) and then finding employment and building sufficient experience after that.
We're talking about like half a decade or even a bit more to really get the ball rolling career wise since I'm not the fastest learner around or most highly motivated either and I can't afford to take the risk of wasting that much time so I'm just gonna dive into the relevant shit first I think regardless of the consequences, I can worry about those down the line.
I find myself in the exact same situation. sometimes i become hopeless and nihilistic LOL
I'd say on average, every 4 days the overwhelm of it all really gets to me. Then I bounce back and learn as much as I can before the next wave hits
Same. This actually causes me to go back and forth between different tech stacks instead of learning one properly.
same for me 😢
This video is of tremendous value and importance to me. You nailed it by articulating a problem of learning from the top things first or bottom-up. This helped me to realize I'm just not smart enough for this profession and stop torturing myself
I'm a more UI focused person and one big advantage of the top down approach is it allows you to build stuff quickly, giving motivation to learn and build more stuff. Despite all the frameworks, cloud services, dbs, etc; it doesn't take too long for a beginner to throw together a simple React app. For me personally, that was much more rewarding than stdout. Building something first, then learning the theory behind it keeps you from having to ask "why am I learning this?"
this this what I was looking for
A whole lot of this feels to me like it depends on where your interests lie. I don't really want to be a web dev. I think it'd be cool to do embedded systems or maybe just standard application development, but so many people go crazy about emphasizing JS frameworks and whatever the next hype web thing is. I wouldn't want to go the bootcamp route because those seem to be designed to churn out a very particular type of dev that I don't really care to fit into.
Part of it is interest based but some of it is simply market demand too, every business on the planet basically has a website compared with how many need embedded developers. Nothing against embedded development I like to do it on the side but my work for over a decade has been in the web space. I also have a regular bachelors in CS and think the traditional education is good even if you do land in web dev world since have a deeper understanding of the underlying systems and the general computing knowledge you get at school is more portable to different types of development or even other types of work (having any degree helps in terms of job availability)
On the one hand, I am learning these lower-level things on my own time, and there are probably more resources now to do so. But I deffo have to carve out my own time to do it, because my work learning time is spent on these higher-level abstractions, and I suppose it will be on me to learn how to bridge the two to be more flexible as I progress.
I can see "So you have a job in web dev...here's how you can take that knowledge to learn the fundamentals" being a solid space for mentorship, which I think you implicitly do, and I appreciate.
As a new programmer, that is why I am trying to learn C and assembly. Using languages like Javascript can be easy but they make me feel like I am not learning much since everything is already built in.
@@kidmosey One of the projects I was thinking about going into was designing a CPU too. But I unfortunately do not have time to complete that at the moment.
You’ll never need assembly for a job. Unless it’s for a hobby, little need for either
As a new js programmer, I really feel for you. The amount of high-level concepts added by all those frameworks and libraries can be overwhelming if you're struggling with the basics.
It also pays off though. You can easily get a job, do simple stuff and get paid and figure out more in-depth stuff as you go at a free pace
Well as a literal IT starter (learning for a year now) my experience is that it is so damn overwhelming cuz in the beginning I didn’t know anything at all. I was like trying to observe a single fish in the Pacific Ocean not knowing I am in the fkin Pacific Ocean.
After 1 year I can just imagine how big this topic is. i kinda feel like a young pirate starting his adventure and conquering the oceans excited about how far I can get. Uni gives me a concrete route to follow and I try to investigate here and there for myself about things I find interesting
man, you're speaking from my soul. I didn't start out studying IT so I'm fully self-tought and just setting up an environment to follow a tutorial is such a drag. 27 embedded layers wrapped in 4 virtual dockers just takes the fun out of creating code.
That doesb't sound like well written code
Went to a boot camp 7 years ago, and now a Senior Frontend Dev, and I totally agree about boot camps! You have to have the motivation to learn beyond what they're teaching at the BootCamp! You have to spend the hours after you get home practicing, learning, and putting in the extra work! And then you have to continue to do that when the BootCamp is over and you start working! Always have to be learning! I also think that there's probably a fair amount of luck and timing involved when getting into the industry after boot camp, especially in today's world!
i want to start learning code or IT, i have my uncle who has been in it for probably 20 years and does alot of IT. Which should i start with? i have full time job as electrician so trying to manage time efficently
@@TheRealObama420 Also if you're asking about whether to go down the IT or developer path, I really couldn't tell you. I don't have experience in IT. I would say that becoming a developer can probably be a bit more "cushy" than an IT career, thats just what I've heard at least
Self motivation and application is a big part of what makes a good software engineer. You can go through a full 4 year university program and learn all of the theory, but if you never actually apply it in ways that you find meaningful you'll never truly understand it.
Bootcamps tend to provide a very fast way to get to something "meaningful" to a lot of people, but I suspect that speeding through some fundamentals will ultimately mean that all other things being equal, the individual that went through university and did their own projects on the side with what they've learned thus far will be far better off long term than the same individual speeding through a bootcamp (that is, unless they're also doing their own things with what they've learned on the side)
I am doing game development as a first year, we are 10 weeks in which I know isn't a lot but we did go over those basics, we have exclusively been doing C++ and learned about what variables are in memory, how the most basic operators worked and built up from there. We only just last week saw what a class is, I was using them in side projects already but we got explained to the very basics what it all means and what actually happens on the cpu and in memory. The basics are still a thing, just not something other courses bother with.
for me two big paradigm shifts in self-learning to code were when I realized how far abstracted React, Webpack, JS, etc really were from what the computer was actually doing .. and then (2) that getting errors doesn't mean I am a de facto bad programmer, ie that working through errors IS programming, and that a lot of mistakes are happening at the abstraction level (eg, version incompatibilities) rather than at the level of predictable logic
Litterally. React runs on JS, which runs on chromium, which runs on C, which runs on Assembly. And thats not counting all the other shit that was "abstracted" away.
Its pure brainrot once you think abt it. NodeJS especially is the antichrist.
Then people wonder why it feels like computers arent getting any faster.
MF Thats because all the physicisit and engineers have been doing all the work for the past 30 years.
Meanwhile the Computer "Science" people have just been fucking around with braindead abstractions that dont reduce complexity, and dont run better.
Dude, you hit the nail on the head. My advanced Java class was using Angular. No explanation of what angular was. Just “here’s a project file from Git with everything you need. Code this this and this and show your work”. I was so confused. My questions going into it were like… What even is Angular? Where do I even place my code? What is Spring, docker, etc etc?
I went from programming a small application in visual studio to that can of worms and I felt like I had been placed on the moon. Did I figure it out? Yeah. Did it make sense? Heck no. It was way to much abstraction for me and it really discouraged me to even go further.
The problem is job requirements need a lot more these days and getting a job is really a higher barrier to entry…
Job requirements are ridiculous. I’ve seen so many entry level roles where they want someone with 2 years of experience. Which to me just says they want a mid level but want to pay them a junior level salary.
@@weirdwesteros1109 That's true! Learn React, Angular, Vue, SCSS, SASS , NodeJS, Java and 100 more things :D
@@weirdwesteros1109ratio here ! 🎉
Maybe the best way to describe it is that, in the past is was a lot harder but also a lot simpler. While now things are so much more user friendly and easier, but also a lot more complex (if you really want to get into it).
This is very hard indeed, even though i went to college i was very distracted by the high level abstract stuff. Even if it doesn't make me as relevant job wise I will still be trying to balance fundamentals with learning "abstract modern things", college helped a lot in understanding fundamentals, but even going through college i still think there is a lot more for me to learn on the fundamentals. I'm about to get a VPS to work configuring Nginx and other things from stracth, no GUI or crazy stuff like Terraform, just a terminal and neovim, i'm hoping this forces me to learn more and more about how things actually work. Maybe after that do some graphics with C and OpenGL to understand, instead of just doing the minimum like i did in college, i just did it to get the grade to pass, i didn't understand at the time how much i would miss knowing this stuff, i wasted time, and now i will go back to learn this stuff. Hopefully it is better now that i don't have to worry about exams and professors
This has genuinely been the most frustrating thing to try and overcome. Behind every corner lies another massive abstraction and I'm just trying to fumble my way through. I just can't see the forest for the trees and this whole thing really adds to the imposter syndrome I'm already feeling at university.
Unlike the title of the video I feel really good for new programmers that are starting today. The more time that passes the easier it is to get into this field, because there's more way to access it (nt implying it's becomeing easier, don't misunderstand)
I think that of you want to learn CS or get into programming, TODAY is the best moment to start learning. Even if you are skipping some abstraction layers, you are learning and lets be honest, there are so many layers of abstraction that it is definitely overwhelming. If you start right a the high level, you might miss how stuff really works, but if you start at the lowerst level, it is so alien that you will not even understand the purpose of it.
Sure, one has to start with a general picture first, then pick one abstraction layer and start learning there and then explore bit by bit higher and lower layers of abstraction. And never stop learning new stuff. Modern bootcamp devs that think learning stops after they graduate from their bootcamp, they are just wrong: learning never stops. You stop, you get stuck, become obsolete and that's it, its over.
Never stop learning new stuff fellas.
The way I compare it is that there's 2 types of people, People that learn by 'how', and people that learn by 'why'. These days, people just learn by 'how' because there's way to much information and people just want to know how to get things running. The downside is when they have to do things differently, they BSOD. While there're people that learn by 'why' where they try to understand why things work or why things are done a certain way but in today's world learning 'why' is too hard with the amount of content that usually contradict each other.
Learning specialized topics like compiler optimisation is also a big reason to go to university.
When i started to learn programming i was like 13, i went to an extra class for Pascal, and we didnt really learn any data structures or anything, we mostly did simple games. I think what was important is that we didnt have any overly-abstract frameworks/OOP/fancy design patterns, we just used some built-in functions like DrawPicture(x,y), so a lot was still done by hand, and it was a great way to get hooked onto programming without it being too abstract and far from metal like with frameworks, but also without it being "boring" or "useless" like when you start learning from data structures.
I mean, part of it is, there are very very few *good* teachers out there when it comes to learning programming. Most of them are adept coders who are abysmal teachers. They are so far removed from the mindset of someone who is new to coding that they add several layers of abstraction by themselves.
That is to be expected though. As a lifelong coder, the last thing you exercise is what happens in the mind of someone else.
@ThePrimeTime
I just finished a 2-year bootcamp. I wasn’t fully invested in it, so I only did what was required and didn’t spend much time on additional projects. Now that I’ve finished, I’m focusing a bit on JavaScript and Angular as I start looking for my first job. While I’m still practicing Angular and haven’t applied anywhere yet, I found out about your channel. Just from watching your Twitch VODs, whether it’s coding article reviews or you explaining something, I got so hyped that I enrolled in a university program starting in October! :))))))) I’m hoping to land a front-end developer job in the mornings and study my classes in the evenings. Thank you! Also, you’ve inspired me to learn Go (but not Rust, since I haven’t found a use case that interests me :::))))
)
Based take Prime! I don’t 100% agree that DSA is easier but that also could be my uni bias. Good ish on this one, def opened my perspective to how starting with these web technologies in todays works could be extremely overwhelming.
I too started with Apache and htaccess files to upload my cat photo. But then I became an aircraft mechanic and focused on that for almost 10 years. Then returned to programming and it’s so different. And the shitty thing is that there are so many technologies now it’s hard to feel like you are making the right decision learning one of em.
Agreed, I god damn hate it. I am in my 4th year in the industry, self taught from RUclips during COVID. I honestly hate CS, I hate this job, and I hate coding. It's just a good paying job and I don't feel like i understand ANY of it.
Edit. I just needed to vent a little bit of frustration from my brutal impostor syndrome. I'll stick it out and hopefully it will get better.
So ….quit?
@andiuptown1711 no..... idk about you but in the real world not liking your job isn't a good enough reason to quit. That "follow your passion" nonsense doesn't pay the bills.
I find CS to be deeply uncomfortable and challenging in an unsatisfying way. But it pays many fold more than the alternative and I work remote so I'll stick with it.
@@FirstLast-gk6lg I definitely agree but I at least like the learning aspect of it. Maybe it’ll change when it becomes my job. But that could be said about most careers
@andiuptown1711 I can certainly see myself enjoying software if it wasn't my job ironically. If I could study and code exclusively for fun on my own interests. But to get and maintain a job I am a slave to the job market
Don't do it then, bake cookies
As a newcomer(I've learned to write HTML last autumn) I would like to say that I actually feel excited about all these new tech around - so much learning opportunities which make programming always feel novel. I've just yesterday decided to use Redis to make it easier to upload images to the app I'm making and it was so much fun finally realizing how this could be a better solution than what I had initially.
(I don't store images in Redis, no)
The main problem I have with Bootcamps (and a lot of teachers in general) is that they only teach the "what", not the "why".
And I really struggle to understand (and remember) stuff without the "why".
It's frustrating sometimes having all these frameworks, libraries, abstractions, and APIs, that just do everything for you. Yes, I know it's not good to "reinvent the wheel", but how can you get truly creative with programming when 90% of your code or data is imported, required, or parsed by some 3rd-party library or service, and the little bit of code you do write has to follow some strict paradigm of a framework.
I know writing your own crappy web app, or making your own solution to a problem that already has a package, from scratch, is not "good practice", but sometimes I feel like modern coding lacks any creativity or personality--most of it feels "cookie cutter".
P.S. ..and most of the little code that we do write can often be generated by AI software like Copilot or ChatGPT. It saves a lot of time, but sometimes I feel like coding no longer has any "personality" or "soul" put into it like it once did.
If you dont understand how electrons work, and how to build a cpu only using a breadboard and transistors, you might as well be using photoshop to make Wix sites.
If you wish to bake a pie from scratch, you must first create the universe
So much this. I have been working as a desktop dev for a maritime industry for 5 years now. Do you know what I technologies I use? C# and WPF (C# GUI technology) and some SQL. That's all. I make applications for ferries, cargo, luxury yachts, oil tankers, oil derricks, wind farms etc.
I have considered changing companies but basically 99% of job ads are for web dev. I read the required technologies and I am like that meme dude "Mhm, mhm, yeah I know some of those words". It's mind blowing how much technologies and frameworks you have to know to develop a freaking website.