This is also something I see a lot. People compare their abilities to mine all the time, and assume they aren’t good, which is totally not the case; I’ve just had more experience. Usually, if I can get them to believe they can do it, they solve the problem just fine; they just need more time, but they don’t even attempt it because they think it’s too complicated. When I look at a problem, I see the obstacles, but I always start with the mindset that it is solvable. The question isn’t “can I solve this,” it’s “is the solution worth the repercussions?”
This. The most important skill in a programmer's arsenal isn't their library of code patterns, or any of that - it's the hubris to assume they can do what they're going to. Not immediately, because that'll be proven wrong when they inevitably have to go look up documentation or think on it while making coffee or whatever, but that given a week or a month, they can.
I often deal with people who don’t solve a problem simply because they don’t care about solving it well, they are absolutely fine with brushing stuff under the rug.
For me it's not so much that I don't believe it's _possible,_ I just believe someone else could do it better, hence I _should not be trusted_ with it. I can cope with failure when it doesn't matter, but it's not my right to decide what matters to anyone else. No I don't work or study or have any hobbies, how did you know?
they should rate their thoughts on a 1 to 100 scale for its importance to getting what they want done. like 'i am not a good developer' would be rated 1 out of a hundred if the goal is to get something specific done. its not eliminate these thoughts because we dont decide what pops into our head by thinking dont think that. its to let our subconscious know that what the goal really is.
"Expert beginner" is similar to the 100 hr pilot in aviation. It's the point where confidence begins to outstrip experience and ability. You don't notice the bad habits that have set in, and don't realize the extent to which luck has gotten you through; and haven't experienced the system(s) failing. Interesting to note that "co-pilot" is the name given to our IDE AI assistants...let's not be the overconfident 100 hr pilot.
That's where I feel like I ended up in and goddamn it feels absolutely draining. I honestly did because I like the cocepts and structure (I like understanding, analyzing and designing systems) but the amount of absolute cluelessness and lack of intuition I see are mindboggling. I my positions mostly exists as a buffer to shield developers for the blithering incometence of clueless business analysts that are unable to put specs in writing and even more clueless clients.
One of the most terrifying things that happened to me during my career was the rockstar stagnation phase. I was so good at my niche on my supportive team that I completely stopped learning and just cranked out things that were essentially the same for 3 years. I'm working to make up for that wasted time and videos like these keep me on that path.
Not employed - graduating from CS soon - but damn I feel this bro. Almost everyone in my school was focused on web CRUD apps and it became all I could focus on too. I was basically making the same thing with extra steps. I got sick of it. Even during a mandatory internship, it was mostly backend CRUD work. My turning point was when I realized that the company didn't use a web framework, and I started to wonder how that worked. So, I managed to put together a server from (almost) scratch using Kotlin. It felt good. It felt fun. It felt like I realized what I had been missing. Now I'm focusing more on learning stuff that always confused me or I took for granted, so I can try new stuff. It's really taxing, but I know it'll be worth it.
I’ve run into this three times in 25 years, each sucking a few years of my expertise and career advancement. I have had employers that willingly sacrifice 99% of my ability in order to maintain some mundane garbage, just because I tidy things up and keep things so ridiculously reliable. Granted, I pretty much rock at long-term, big picture, stability and disaster planning. I recently worked my way away from the old stuff, but there was ZERO time to learn or even practice NEW skills on my old team, outside of my free time. I get to work on fast, interesting, questionable code bases now but have quite a bit of time to make up to shift back to greenfield work.
Follow your curiosity. So many people seem afraid of this. If you don't know how something works, find out. I've been doing this for 20 years and have hundreds of side "projects" whose whole aim was to simply be more knowledgeable in some subject, library, or framework.
I was a bit scared to read kernel code until I saw a couple of videos by LiveOverflow where he just showed the implementation of a couple of syscalls or something like that. And it's just... regular code, fairly accesible if you know C. And of course it is, how else would the kernel have so many contributors? Also, Arduino libraries. They often are so simple and so small that I just implement my own version if the library doesn't do exactly what I need.
@@aduhaneh1057 nah, they're all in my dropbox. For various reasons, I prefer to keep my online presence as incognito as possible. I had some bad experiences in the '90s.
"You're going to get way worse before you get better" - I went through this when I was learning blind typing. It feels bad, but it is necessary to evolve.
Been feeling this with VIM (for visual studio). I feel fine with the basic motions and now I can even use some of the cool stuff like macros, but man it was rough at first not reaching for those arrow keys and mouse. Still learning but man it’s so much cooler
@@dmitriyrasskazov8858IKR!? I remember looking at my hands while typing when I was 8 years old, but had a class with a typing speed test in 4th or 5th grade where the keyboard was inside the desk. Years later I found out they stopped teaching typing in elementary school, and what used to be called "hunting and pecking" started to pass as typing. I've even been told it's "creepy" to type without looking at your hands.
I read this article years ago after attending a session at a local developers conference. It is by far the most influential thing I have ever read, and really explained not just the problems I was encountering but even some of the problems I was creating.
"Maintenance of a large program can be very very detrimental to skill growth." I agree that it can be, however I cut my teeth on maintaining large legacy systems. Not only did I learn more about the language and different techniques, but I also learned how to persevere in the face of frustration. I also learned what works and what doesn't. If you only do maintenance, it will hamper your skillset, but legacy maintenance can be a specialization that is highly sought after. I was bad at my first greenfield implementation, but I still brought something to the table. For example, I was on a project building a brand new product from scratch. I had trouble with getting started, but I was able to point out our tech debt before it happened that everyone else missed because I had that prior experience. Now I am very good at both.
Doing both is such an experience. And it makes you better at both. I truly believe that if you are a maintainer, then you are in a really bright position, because you can have a side project with the latest stack, or anything really. While you’re maintaining, you sometimes have thoughts of “man this is shit, who made this”, and then you do it your way. The greatness of it is, you either experience your better idea on how to do something and you reinforce understanding and what not, or you fall flat on your face and realize they wrote the shit code, because it’s how they had to. It’s a win-win.
This is a real thing, it's the smash player showing up to the local thinking he's the best, because he beats all his friends and 4 stocked by the worst regular
My brother used to be a ranked smash player. He decided to skip a tournament I told him about, and his friend went. His friend tells him later, "I knew as soon as I walked in I was getting first place. It was the only person using a pseudonym." Lol
There's a saying, "if you're the smartest person in the room, you should move to a different room". I think that this post really nails it that one of the problems of being the smartest person in the room is that you mistakenly think that you're the expert. I've made that mistake myself, and my biggest progressions as a developer was when new team members joined that taught me a completely new perspective. One guy in particular who stands out in that regard. I often meet the "expert beginners" when I join a project that practice "TDD", where they are so focused on writing "unit" tests that the test suite resists any significant refactoring of the code base. These people are often treated as experts in the organisation, and their views have become the "baseline truth". I've made the same mistakes as them in the past, but I learned from them. When joining a team practicing TDD, convincing these "experts", and the organisation, that they are on the wrong path is virtually impossible.
I’m in the opposite environment. Mine has absolutely no TDD at all. I completely agree that the more automated tests you make, the harder it gets to make changes. But in my environment, practicing a little bit of it has helped me so much in being able to automate tests, and it helps me code and catch things I wouldn’t have otherwise. Thankfully the beauty is I can choose when I feel like a test is necessary. There isn’t some manager breathing down my neck on a review asking me where the unit test is. The test is purely for my benefit alone and it’s great.
@@joelwillis2043 There's a solution. If each person occupies 2-3 rooms, then you can be the smartest one in one room while not being smart in another room.
An incredibly common occurence unfortunately- many people I know who are into CS aren't in it because they love it, they're in it for the money,- they're essentially soon-to-be managers who only look upon CS as "work to be done" to earn money and have a good CV.
Cs is "work to be done". Those peers won't get far because they lack the motivation to actually work on things. The life style is not worth the money at all
@@fauge7 I'm afraid it might be to the contrary- the more I see the world, the more I feel like skills are secondary to the ability to network, bootlick and manipulate your way through the layers of corporate hell. I've seen people lie, cheat and manipulate their way to glory , after all, it's only wrong if you get caught, right?
On the other hand, that means if you're learning programming because you genuinely like it, then you're already off to a better start than a ton of people who are already employed in software (because they don't actually enjoy the craft) Passion is important, moreso than talent imo
There’s nothing wrong with that. I dislike how everyone says that you should be passionate about CS. They never tell construction workers and plumbers that they should be passionate about their work. We all gotta pay bills, feed our families, and make ends meet. It’s all about discipline in my opinion. Passions fade.
That bowling manager advice is 100% true. It happened to me in music: before learning proper form and theory, my composition and improv peaked. Then I got super shitty for a while when learning proper fundamentals. Then I came out years later much better than I was before. It's like cacooning to become something better. I always assume the same process is needed for any skill, atleast to reach mastery.
Trying to transfer from Mechanical Engineering into Software Engineering and seeing my peers borderline rely on AI for their apps always rubbed me the wrong way. Don't get me wrong, I like using chat, especially for SQL queries, but the way my friend stated they were a "Frontend Engineer", from being UI Design while writing everything with CoPilot, and React, while knowing nothing about Javascript and Optimization blew my mind
I'd say theres a balance - the older generation of software engineers grew up hacking and building things for themselves because there was no internet to rely upon. Their problem was a lack of information. This generation's problem is the opposite - with all the training wheels you can't be too sure that you truly understand what you are doing at a lower level. If you truly understand whats going on (having done things manually, encountered and solved problems) while using such tools, I think nothing is lost. Its about being honest what you really know
There has to be a balance. Unfortunately those who dont use AI to better themselves will not survive in future Better use it than let it take over your job
I have a coworker who clearly uses GPT and Copilot and it is incredibly frustrating to work with them. They are not incompetent but are very close to. Their soft skills are worthless and they essentially "yes-man" me about everything I tell them. My biggest complaints is the high volume of code they churn out (or copilot churns out, really). It's very difficult to review PRs that are over 1K loc and the author does not answer questions as if they don't even know what they wrote (because they don't). Copilot also writes code that is not in our in-house style (we use eslint as much as possible to prevent this) but its really frustrating to see ugly blocky crap code ALL over. This reminds me that using copilot and writing nice code IS a skill, you have to prompt copilot to use the right language construct for the right job and not just wing it.
If your other co-workers would allow it, add a git pre commit hook to fail on unfixable eslint errors. You will cut down on this guy's output immediately😁
I think AI are a amazing tools, it just depends how and who use it... the problems you face is not GPT or copilot, it's your lazy coworkers, This kind of PRs are a real concern for the team, the company and the codebase...
"Their soft skills are worthless and they essentially "yes-man" me about everything I tell them" have you ever thought that the reason they're like that is because keeping this job and gain experience is their life thread, and they do everything possible to stay alive, even if this means not pushing back or questioning how things are done?
This is an ironic statement. The generally accepted definition of the Dunning-Kruger effect is incorrect, and the people who use that term are essentially examples of the misunderstood phenomenon they are describing. The only question is whether or not your co-workers believe that their incorrect perception of a faulty phenomenon makes them better than you.
@@josephfcarrillo lol no, just because some people use "dunning krueger" incorrectly does not mean that you can claim that anyone who says the term must have used it incorrectly. You do not have sufficient data here to determine if the person is using it correctly or not.
low iq: these old guys suck and are dunning krueger midwit: Actually, the real Dunning-Kruger Effect refers to a different phenomenon. This is ironic because- high iq: these old guys suck and are dunning krueger
@@NihongoWakannai He prefaced his statement with "This is an ironic statement". @josephfcarrillo made the statement ironically so he was probably just commenting on too many people pointing out that general usage of Dunning-Kruger is Dunning-Kruger in it's general meaning since the real meaning of Dunning-Kruger is not what it's generally thought to be.
37 year old here. 100% yes mainstream media and teachers were all saying Google was going to cause people to not have to learn anything. It still exists to this day! Except now it's a saying of "Back then you needed to memorize facts with rout memorization. Now true skill is knowing how to find the information on the internet". It's quite literally the exact same thing but with better P.R.
I've had jobs where I felt pretty talented all around, though I focused mostly on frontend work. The thing that prevents you from succumbing to that "expert beginner" thinking is surrounding yourself with and interacting with people that are better than yourself. I eventually found myself being the most knowledgeable frontend dev working on a react application. That lasted years. I could still feel I wasn't progressing in terms of my abilities because I was doing the same thing day in and day out. Then I joined a large company on a huge project, my focus now shifted much harder toward backend, where I get to touch most of the stack. My other teammates have been there years. For the first time in years, I felt like I was all the way back in the first year of learning programming. There was so much I didn't know, but I needed to stand on my own two feet amongst these other backend devs. It is eye-opening... and incredibly stressful. lol
it just drives me crazy how every time Prime selects text - he doesn't include the first and last character of the selection. Every single time. I am pretty sure it's done on purpose to annoy ppl, and he specifically trained this skill to trigger ppl.
He says he likes the symmetry of it. I personally don't understand how he doesn't see the symmetry of selecting everything, but I usually listen more than watch, so I don't mind. Moreover, it's not the important bit of his videos.
Sometimes if you include the first letter it selects a bunch of blank space and in poorly made websites, entire elements that aren't necessary, so choosing it this way consistently avoids that problem such that the full selected text is inside the paragraph
"Its like life, you pick each thing up piece by piece as you go through it" -- This really hit me hard. I've always been worrying that I'm not improving enough or that I'm constantly falling behind in todays world with programming. I now realize, I dont have to go as fast as possible to catch up, if anything it'll hurt me more. Thank you prime.
LOOL the multiple inheritance comment hit so hard. Years ago I hit a point in a project where I thought multiple inheritance was the perfect solution when things inevitably went wrong. I discovered the virtual keyword and wondered why it was not used more often..... well let's just say I found out why
😂classic. We've all been there. I once made a really fancy dynamic table that could display and CRUD any object it was given using reflection. . .yeah it was a mess.
tell us more. Me, an undergraduate student, don't even know why inheritance is such a bad idea. But I can see how the "virtual" can cause problems hahah
@segueoyuri @SeCluDred Alright sit around it's story time. A while ago I was trying to write a simulation project It got into me to describe everything as a class with a huge hierarchy. Start with simobject type alright so far so good. Add a physicalObject make it inherit simobject: still fine. A few weeks later i have this huge hierarchy some 40 classes all derived from the original generic type or one of it's descendant. In there is compositeObject that is a simobject that contains other simobjects. Now I need a physicalCompositeObject on the surface easy enough. Make it inherit physicalObject and compositeObject. Realize that I have a problem. Both physicalObject and compositeObject have the same parents somewhere up the hierarchy. So one of them hide the members of the other. Find about the virtual inheritance in C++ and think "I can fix this". The fact that almost no one uses it should have been a warning. but I keep going. I add virtual inheritance to children of simobject: virtual public simobject. now you can have a physicalObject that is also a compositeObject. But you need to manually call the constructor of the virtual parent. Even worse since it seem the issue is fixed you become addicted to using virtual inheritance. Add virtual public in from of so many parents when declaring classes the whole hierarchy is a mess. A big tangled mess. Every use of virtual inheritance just kicked the can down the road. Never fixed the issue as some other class down the hierarchy would need to inherit from two classes in the hierarchy. At some point the code reuse gain from inheritance is compensated by the amount of parent you have to manually call the constructor of. So It took me a few years to get the motivation to convert the whole thing to composition.
The analogy i use is playing an instrument vs programming in midi. On a practical level, you can 'play' any instrument from extinct to fantastical and create entire arrangements by yourself with midi. It's always perfect and consistent. However, you are missing a vital tool: the feedback loop of ad-hoc creation; of improvisation and inspiration. Those things matter when you're not quite sure where you want to go but have a general idea.
To be clear, midi is just a communication protocol between sources and receivers. If the source you're using is a sequencer or piano roll, then yes there is a bit of a disconnect between the two that can make learning music difficult. However, if your source is some type of real time midi controller that responds to physical input, the feedback is much more immediate and is pretty much the same as using any other instrument. In fact, many midi controllers that that have come out in the past decade or so provide even more direct, real time control of the music you're playing than a real life piano using an extension of midi called MPE, or 'Mutli Polyphonic Expression'. Notable examples include the Haken Continuum, the Osmose Expressive E, and the Striso board to name a few. These are all midi controllers that give direct, real time control over the sound synthesizers make to an extent that would make most other instruments blush in embarrassment.
Working with an architect that's like this. He can't make anything working properly so we constantly have to fix the shit he leaves behind (and yes we do make clear he is causing the problems). It ranges from basic typo's to not knowing concurrency is a thing let alone knowing what to do with coupling and cohesion. It's mind boggling how such persons don't get fired instantly but instead get promotions.
They probably understand business very well but are average at coding. They know how to build the right thing more than they know how to build it the right way.
@@majorhumbert676took him years to setup all the clean architecture microservices. It's cargo cult programming all the way. Could probably remake the whole system in less than a year without all the overengineering and just building what's actually needed. No way you could sell that to the business though.
It's very similar to learning how to solve a Rubik's Cube. There are patterns one can learn and apply a specific algorithm to solve it faster. But there are also algorithms which solve the cube each and every time and one only has to learn a handful of patterns. At the cost of more turns per solve. So sure one can learn how to turn fast and be better than most who know how to solve it. But you won't be able to be blazingly fast unless you've trained yourself on more patterns and their specific algorithms.
ive been programming for 2 years now, I have a rule I don't allow myself to use chat gpt for things I don't know for more than giving me a starting point to start learning, and I don't use any kind of editor ai like copilot to avoid brain rot
Chatgpt is great to use as a search engine when you encounter stuff you don't know. Of course it's still just a starting point but helped me save alot of time when encountering some new concepts that had too much magic to be clear from code.
@@Rick104547 Yeah but I hurt my progress quite a bit while using chatgpt as a search engine for more than one prompt, since you never know if anything that it says isn't a hallucination. Soo when we add validation time to the equation it balances out the benefit. Still a great learning tool can't deny that
@@jacksoncremean1664 I used to have a habit to try and brute force a problem with chatgpt didn't go well since I noticed that sometimes for the time I wasted trying to "save" time I actually would've been able to learn it and do it myself
If you never take off the training wheels - are you a good cyclist or are you good at writing a bicycle with 4 wheels? I am still in the learning process but I avoid stuff like Copilot completely. What use is that code for me if I would not be able to get there on my own? How am I supposed to fix "my code", if I could not create it on my own? I think it has a lot to do with how we learn. If you go through a programming course / book / tutorial and just blindly type down the code, nod and think you learned something, you are foolish. I don't write a single line if I don't know what it means. When the learning material states "don't worry, you don't need to understand that part yet" I almost feel personally attacked and challenged. And it makes me look up what it means even more. Documentation reading is vital for that of course. And if its some OpenSource library with a bad doc? Well, trial and error and find out what it does, also a great moment to learn Debugging.
Literally from the first paragraph of Wikipedia: "Over the past few decades, neuroscience has provided insight into learned helplessness and shown that the original theory had it backward: the brain's default state is to assume that control is not present, and the presence of "helplessness" is what is learned first. However, it is unlearned when a subject is faced with prolonged aversive stimulation"
I can definitely relate to that statement. So many times i try to do a task(be it a math assignment back when i was in uni, or a coding problem) and it just seems daunting and i don't even know where to begin. Then i struggle with it for a bit, and then it just clicks, and i was wondering why i thought it was so difficult to begin with.
This problem started before chatgpt become popular, the main thing I saw was gamers thinking they would be good at coding but didn't actually have the passion for it and didn't want to learn.
@@notsojharedtroll23 what's wrong with people wanting to do gamedev? How is that different from someone that just wants to do webdev or just wants to do cybersec
@@NihongoWakannaiI assume that likely the problem isn't gamedev or wanting to do gamedev, it's more the fact of people that think gamedev is like “playing a game” and when a hardship or intuitive concept presents itself they dislike it or don't wanna do it? Imo gamedev is very hard when you have to account not just code but also teamworking, design and limitations, to me that doesn't sound like a place where id like to work, maybe it also it has something to do with the people of gamedev being delusional? 🤷 (Saying this from the perspective of someone that has **talked** with people that have had classmates like this in uni, who thought CS was going to be like playing a game, as I said earlier).
At 21:00, I like that phrase about "It's not the destination, it's the journey." I think it applies far more heavily to learning skills, vs having fun. I spent some months tooling around with Blender, spending hours working on something like a snowy mountain, or following a "10 minute" tutorial to make a volcano tropical island. I spent 3 hours making mine because I wanted to add more things.
Very interesting. Idk how so many people jump into CS without having any passion for it. If I didnt genuinely enjoy hacking together my dogshit lil projects I would absolutely have given up on CS many years ago, its a tuff ting to find motivation to keep competing when youre not a smart person naturally, or if you have zero talent for it. I know im never gonna be anywhere near the top level where primeagen and friends all hang out but its just too addicting. And if I can pay the bills doing something I love then its a blessing even if comparatively im a complete smoothbrain trashpile. Im cool with it cause in my heart i know im at least *trying* to improve, and in the meantime i can poop out code that people ask me for
@@waterbloom1213that's interesting. I was always interested in it but I was a degenerate when I was younger and having ADHD didn't help. I dropped out of school for it, but interest in game development pulled me back in. In college I would do other people's homework for money lmao. I genuinely enjoyed it.
A person comparing the code I write for work with the code I write at home and assume that it was written by two completely different people. But my dogshit projects are my playground, the lack of constraints gives me freedom to move fast and try new things. At home I feel no guilt about writing an entire application that is "operated" by editing the code between runs, because I know I know better. At work my focus was network acceleration tech R&D. At home I ping-pong all over the place, but often do a lot of digital signal processing and image manipulation. So many times there were situations where my hobby stuff led to new ways of thinking about work stuff.
The problem is that AI can be even more useful so the issues are going to become even more prominent. AI can definitely be useful in the learning process just like stack overflow, but you also have to be willing to actually learn what the code you're copying does.
33:05 I can code (Python dev) fine without an LSP or even an IDE except for debugging, but reflecting on this I think it's more because I don't use most of the fancy features (find definition, syntax highlighting etc.) except 'change all occurrences', which is easy to do on a text editor, and therefore my workflow is slower than it needs to be! Thanks for bringing it up and offering a proper discussion.
This video adresses many of the thoughts I've been having lately. It's grounding really. This is what I needed to hear. I am sure this will make many of us better software engineers.
A better analogy for the effect of AI: it's like memorizing all the openings by name, the formalized tactics and endgames of chess, except you haven't played a single game, or made any sense of it. All you have is a messy collection of tools that you don't know how to use and what purpose they serve.
I've always been into programming. I remember I wrote a whole funky-ass 3d graphics engine wrapped into a dynamic library. It would raster the dirtiest of triangle on a now 20 years old CPU. I learnt so much that time.
We use "multiple inheritance" in game design all the time. It's far more based around interface implementation than what textbook definition "single inheritance" would leave you with.
One thing I wish schools would teach you is how to identify what works for your personal learning. Most students don't really know how they learn best and just blindly follow the teacher and their friends in how to learn and more importantly study. I personally never studied once during all of school and college, in fact I managed to teach myself how to code without having to sit down and study a textbook once. The secret is that I realized that I had a good memory as a kid and relied on that to carry me through tests and hw. In coding I just learned the language as I would for a spoken language and used reasoning to walk through my code as I write it. Being smart isn't knowing more than someone else, or having a higher IQ, it's knowing yourself enough to the be able to leverage it to your advantage. And trust me knowing how to maximize your learning and pick things up as fast as possible is way more important than it seems because school counter-productively teaches you that learning stops when you leave school, so it becomes much harder to learn when you're outside of the environment you're conditioned to learn in.
I liked what you said in a previous video that people are not using AI for the simple mundane problems, its for bigger problems. Myself, I dont use CoPilot, but jippity. The way I use it is to ask about a complex problem, ask for no solution (which it does not understand...) but give me resources to finding out myself (which is does sometimes). I rather understand why stuff happens rather than "this is how to do it."
I switched away from VSCode before copilot was even added. For me, reading code is way harder than just writing it, so given the error rate of tools like copilot, you still have to read & understand its output, and my problem solving speed in most situations that copilot would be any good for is near instantaneous, so there’s really no point. I can usually just type the solution faster than I can formulate a prompt, wait for the response, analyze & understand it, and tweak it so it works properly
This is where being a senior software engineer at a well recognized company can usually help. Sometimes even these companies make mistakes. But a really good programmer can recognize even at the beginning of learning a language what stage of the beginner->expert spectrum they are on, simply because they’ve been through this spectrum several times on other programming languages & runtimes/frameworks
The easy way is amazing in university because it allows you to pass the exams with relatively high grades by using a mix of cramming and infering the pattern of what the Professors want you to solve. I feel like this is where the problem starts. If you really want to learn something you have to do it through the hard way I feel like. No solutions, no copy-pasted answer, and inferring how to solve the problem on your own. This is how you properly build a skill and your problem solving capabilities.
26:11 great take! I struggled through college/university math courses because I’d never learned the order of operations. I look back on how much of a struggle it was and think about how simple it all would have been if I’d had that one missing piece of knowledge.
Just my take on "How to stop copy pasting code" Ask yourself, this question, why are you copy pasting code? Is It A.) You don't know what's happening. B.) You know what's happening, but don't believe in yourself. If you answer A. That means you lack fundamentals. And the thing you are doing is more advanced than you think it is. If you answer B. That means you lack practice. Or you don't know how to judge your worth. For me, (idk if it will work for you). Both A and B can be solved. Here are the steps. 1.) Don't take the next step, until you learn the basic components of what you are doing. 2.) Learn the fundamentals of the things you want. Learn its properties. (At this point you can use books or the web to know, important point here is don't look at the code) 3.) Using your current understanding. Try to implement any properties (and or flow), etc. Don't mind it if your code is bad. Your goal here is to implement. 4.) Once you can implement something. See if you can improve on it. Go back to step 3 and implement more. (Until you can implement all the properties) 5.) Have fun (don''t be afraid to experiment), Do some UA-cam Video or Leetcode or challenge yourself, etc to see if you improve. 6.) Repeat Step 1 (soon you'll be doing a lot of things, without copy pasting code). Note: I learn a lot of DS and Algo and more just by following those. Like last time I'm trying to create DFS and BFS. I don't see any code at any point I'm doing it. I'm just looking how its properties works, its flows, and its component. Technically my BFS is still bad since I'm still missing something. But it is ok I can figure it out.
@@Daniel_WR_Hart That's technically A. But let's say you don't know the syntax but somehow in your brain, I think I know this, but idk the correct word or flow. That's B. I think the only time you need exact syntax is for very exact program.
@@asagiai4965 When I made my comment I had CSS animations in mind, because it's easy to learn how it works, but I keep forgetting that it's @keyframes and not something like @animation or @frames. I guess that would be B though
I used to code PHP without anything fancy, just like rawdog notepad, back when I started my career on programming. Even StackOverflow was in it's infancy back then. I've accepted LSP now, but something like Copilot, I just cant fantom something like that. But at same time I think I'm something like expert beginner in this field...
8:22 this was literally my experience. I was naturally good but when I got the promotion and held more responsibilities, I realized that I had to relearn everything and actually care about how to do things right before I could go any further in my career.
Microservices was by far the biggest offender with the crazy tech. B2B companines having more microservices than billable clients. Then sales (for the lack of billable clients) promises the heavens and all the features. But because of everything being microservices, implementing them will either take much longer, or will be a hack job and you are yet again building a fragmented monolith, with protobuf in the middle.
I can’t imagine using LLMs for everything. They are really good for cases where there are a bunch of existing examples of almost exactly what you are trying to do. Accuracy drops slightly off if you combine a couple of existing examples in a novel way but you still get a good starting point (and maybe even working code after giving it feedback over the course of a bunch of iterations). Anything past that and the most you get is a list of functions that you might find useful.
Been watching your channel for a week and have zero coding experience… which means I’m not only the most humble person in this comment section, I’m also an expert on coding.
Thats exactly how I felt at end of my internship. I was tasked with making a pocket process for a web based system(for transfering info from peripheral devices). I wrote 2000~ lines of code and had to read some documentations and had to implement solutions in different fields of software(like remote file access, cryptography, XML documents) andndid really a good job in modularizing and abstracting everything. But that was all I did, create or bring together some APIs only 2000 lines of code complexity. And some of the employees really liked the style of my code, so I added remainder of my time implementing pettt features all wonderfully refactored and styled(I could've watch to learn from others after finishing the project). It was only the last day I decided to watch employees that I realized their system was really complex and big(especially the data model) and that İ wasted my time playing in my puddle rather than to learn to swim in the sea.
Neo: "I know kung fu" Morpheus: "Show me" they had (ostensibly) the same exact set of martial arts programs downloaded, and yet Morpheus was obviously more proficient. Due to his experience. maybe this is an alternate metaphor for your blue belt thing, 33:27
Kind of the opposite metaphor since morpheus beat Neo not because the latter had bad technique, but rather because he had internalized beliefs about his own limitations that were no longer valid outside of his pod. So his problem was lack of confidence, while the broad problem at play here is overconfidence.
I feel like the idea of taking a leap of faith and just storming the barn first than fixing the aftermath rather than trying to fix the problem before we encounter it, is an approach that I want to try and take going forwards when programming. I think I'd learn more trying to fix the broken equipment that the charging bull was responsible than trying to use LLMs to lead me to the right answer. or at the very least use an LLM when you are truly stuck (like with 99% of null pointer exceptions).
I read Pragmatic Thinking & Learning some years ago, when we learned more from books. Many of the points are covered there. There is value in those ancient manuscripts. 😁
That bowling story is a lot like learning guitar. Feels good and fast to just fudge out the practice with thumb wraparound and fingers at angles to the frets when starting out. But the skill ceiling is WAY low when we learn that way. Takes longer to teach a hand to fret correctly, but it massively raises the skill ceiling.
I play games for two main reasons to develop my skills in the game and understand it's systems and to enjoy the story, completing it is an afterthought and something I avoid until I get as much out of the game as I can.
I don't think the learned helplessness is any worse now than it was 20 years ago. I'm shifting careers from chemistry to cs and it doesn't currently seem more than when I started school 12 years ago. Using AI in school is considered cheating. There were always people who cheated there way through school and they suffer more when they hit the market. The people who rely on cheating to get through will still drop out halfway through when copilot cant do there entire assignment for them.
We got a foosball table at work about six years ago. I had a crappy home model as a kid and this allowed me to beat most of my colleagues easily. But I wanted to get “even better”, so I found a local group of foosers that play weekly tournaments. I showed up thinking I’d be able to hold my own-I mean, I wasn’t a _complete_ n00b, after all. Holy 💩! Turns out I was an expert beginner at table soccer! Been playing in national tournaments for the last 5 years now, and finally improved my ranking from Beginner to Rookie. This is an almost perfect analogy for software development: it’s freakin’ hard to become a true Expert.
I graduated as an Industrial Engineer and started working in logistics. I have always wanted to make a video game, so I explored AR and took online courses. After a year, I started working on a React project. A year later, I moved to Android development, where I have been for the last three years. I'm really happy that I changed my career path, but it’s been hard to understand the fundamentals of computer science since the way it is taught in universities has a reason to be.
When I hear devs call a feature impossible it drives me insane. Big agree that every problem that pops up comes down to how much time we need to put into it
it depends is a thought-terminating clich. I hate when people say "it is what it is" or "It depends" just feels like a cop-out on thinking about something a little more..... This article was great.
By the way. Copilot pause is some thing you can overcome by enabling / disabling Copilot few times. Then you train your brain not to wait for it, but have "oh, it did the thing, accept" when you pause natural instead.
I had "copilot pause" before copilot existed, simply because I always knew there was someone who can help me with my problem therefore why bother putting in the effort. It's destructive efficiency at its finest.
Didn't realize copilot was being used that widely, or even believed to be used that widely. Using AI as part of my programming is still something I go out of my way for if I've exhausted other avenues. Which, probably is slowing me down, but I just haven't rolled it in to being one of my default tools yet.
Making things more difficult deliberately in order to learn faster is something that people already have to do and are incentivised to do, AI makes it easier to get by without learning properly but things will adjust again once market forces incentivise people who are willing to learn properly. Although the scale of the issue is different the actual problem is the same one you have when learning anything. Maths I think is a good example because you can spend hours staring at a problem without getting it (and knowing the whole time that the solution is sitting there in the back of the book and you could look at it very easily). So you set a personal strategy like 'I can't look at the solution until I've tried for 2-4hrs and slept on it somewhere in the middle', knowing it optimises your learning in the medium-long term. Or the temptation to play a whole piece of music through rather than focus on the one difficult section you know you are struggling with when learning an instrument, or not playing with a metronome because you find it difficult, or whatever. AI is just means you have to apply the same thing to more situations, and it increases the temptation, but when you do need the extra assistance it is a very useful thing to quickly get knowledge that would take quite a while to put together from lots of different sources manually if you had to do the research. (Especially when compared to things like stack overflow, which might give you a snippet that fixes your problem, but an LLM will give you the snippet and you can then ask WHY that snippet works and find out about underlying components or concepts that were in a blind spot for you that you can then dive into). It might also just give you the wrong snippet or make up a reason of course, but nothing's perfect.
26:25 as a mathematician I agree that the Laplace transform is one of the funnest parts of your typical course on differential equations, that and operator theory methods (think linear algebra with extra steps) along with numerical methods are what constitutes a modern understanding of the subject matter rather than just going "here's a made up equation! here's the weird algebraic trick you use to solve it!"
one time you might want it to work: the page object model in web ui automation. Representing each page as a page class/object. you can extend each page to an authenticatedPage class which contains the shared functionality of all of auth'ed pages such as topnav, etc.
Wow, the graphics of this video about this game impress, it caught my attention, I will play it since the instructions on how to start it are easy. Thanks for the video.
37:15 I agree that what the article is describing is "settling" and I'll add that all the negative behaviour mentioned is the advanced beginner "defending his right to settle" I recognize a little of myself of this "settling behavior" in the last months. My motivation of training in cloud technologies has been very low, mainly because I am already very good in doing data science locally, but I need to learn cloud to do the same in a cloud environment and is painful for my ego, because I don't know how much I need to learn of cloud technologies to being able to do the "same thing" I'm good right now, even if data science in the cloud is quite different to data science locally. Mi little pond is very cozy.
I only took one semester of C in college and didn't really get serious about programming until I was 40. The part about not understanding classes hits me because I felt the same. It didn't help that I learned mostly from books and they all described advantages of classes in vague terms. If someone would have just told me a class is a more advanced version of a function it would have helped me understand faster. Not just understand what they are, but why you'd want to use them.
As a bjj blue belt, strongly agree with the copilot take Higher belts can literally use white belt techtique 100% of the time, but timings and weight distribution you get only after 10k times of getting choked out Invisible jiu jitsu is real
But you didn't invent quad-trees, iterators, compression or calculus, you're just going through the motions of implementing them. INVENTING a quad tree, coming up with the idea of an iterator, or calculus takes a mind that only occurs a few times a generation. So I disagree that all "software is easy"; it's only easy in hindsight.
I think this a stupid argument, no one ever invents an entire thing. Technology as a concept always stands on the progress of those who came before us, otherwise progress wouldn't be possible, and even if it were it would be ephemeral. Software isn't necessarily "inventing" entire broad concepts and ways to solve problems like quad-trees, that's research. Applying knowledge that has already been invented to solve other problems is the key to innovation.
Everything looks complex if you look at the end result, but every man-made thing is a collection of small simple steps. A computer chip is an insane object if you only know that it holds trillions nano scale components
25:29 that's because ODEs ARE easy - there's a reason they're a 200-level course, while undergraduate math programs don't even require you to take PDEs to graduate with the major. ODEs are an elementary, foundational part of math. On the flip side, this is precisely why ODEs was my favorite course - it is the final form before math gets hard. You see all of your algebra AND calculus come together for the first time, and it's SO BEAUTIFUL! Everything beyond ODEs is a completely different skillset, so the "expert beginner" - likely out of fear of shifting out of the rules-based approach to mathematical thought - call it quits at this point. Competence in math requires the ability to prove. 24:23 This, by extension, is also the "expert beginner" approach to higher level math! You take your intro to set theory/logic/proofs, and understand that TECHNICALLY that's the basis for all future study. This is akin to seeing all programming as being nothing but variable declarations, moves, additions, and jumps, once you've taken your coursework in theory and assembly. Both are an easy way to brush off the true challenges that follow, because one is minimally aware of how it will work. tl;dr - yes, Prime is an expert beginner and should be ashamed :D
loved your whole schpiel at the end. particularly the sidetrack about soccer. 'soccer' is one particular form of 'football'. Other forms include rugby and American football. In Europe, soccer became the predominant form of football, so it is called simply 'football', whereas in North America, American football became the predominant form and is called 'football'. But they're all football. It's silly to claim one is _objectively_ correct, and even sillier to object to an American using American verbiage.
24:00 this is a good explanation of why a lot of programming can be offloaded to AI. Its for/while loops of (usually) simple functions on the right variables. Thats not to say we dont need extremely good programmers for problems that are tricky--thats just not the majority of problems (in my expert beginner opinion)
Watching you become more and more staunchly anti-Copilot for the right reasons is very satisfying. I've been trying to caution junior devs on the effects it has on learning since it came out with very little luck. I got a lot of "sure, old man" reactions. I'm 30 😅
Layering the concept of explore/exploit on top of all of this important. Are we talking about banging out more of the same? Or created something new like a library or new type of pattern? Moving from exploit to explore is where many devs will fall off in capability
Another easy way to make sure that you not copy and paste the tutorial, is to use a tutorial in a different language or with other libraries (I learned Vulkan for example by doing all OpenGL tutorials in Vulkan)
I often see manager not grasping implications and complexities of problems. That is really frustrating because you have to argue your way into making them see those things and many times they will just remember your opposing them and making them agree to something they feel sketchy. It’s a lose-lose situation for young developers which makes knowing more uncomfortable. This is especially true when talking to architects and engineering managers that have stopped coding for quite some time.
This is also something I see a lot. People compare their abilities to mine all the time, and assume they aren’t good, which is totally not the case; I’ve just had more experience. Usually, if I can get them to believe they can do it, they solve the problem just fine; they just need more time, but they don’t even attempt it because they think it’s too complicated.
When I look at a problem, I see the obstacles, but I always start with the mindset that it is solvable. The question isn’t “can I solve this,” it’s “is the solution worth the repercussions?”
This. The most important skill in a programmer's arsenal isn't their library of code patterns, or any of that - it's the hubris to assume they can do what they're going to. Not immediately, because that'll be proven wrong when they inevitably have to go look up documentation or think on it while making coffee or whatever, but that given a week or a month, they can.
Thanks ♥️
I often deal with people who don’t solve a problem simply because they don’t care about solving it well, they are absolutely fine with brushing stuff under the rug.
For me it's not so much that I don't believe it's _possible,_ I just believe someone else could do it better, hence I _should not be trusted_ with it. I can cope with failure when it doesn't matter, but it's not my right to decide what matters to anyone else.
No I don't work or study or have any hobbies, how did you know?
they should rate their thoughts on a 1 to 100 scale for its importance to getting what they want done. like 'i am not a good developer' would be rated 1 out of a hundred if the goal is to get something specific done. its not eliminate these thoughts because we dont decide what pops into our head by thinking dont think that. its to let our subconscious know that what the goal really is.
"Expert beginner" is similar to the 100 hr pilot in aviation. It's the point where confidence begins to outstrip experience and ability. You don't notice the bad habits that have set in, and don't realize the extent to which luck has gotten you through; and haven't experienced the system(s) failing. Interesting to note that "co-pilot" is the name given to our IDE AI assistants...let's not be the overconfident 100 hr pilot.
A no-code software architect enters the chat
dear sweetness
They have a lot more Business Studies qualifications than you do, watch your mouth!
@@ReedoTV Business Studies / BS (same thing)
That's where I feel like I ended up in and goddamn it feels absolutely draining. I honestly did because I like the cocepts and structure (I like understanding, analyzing and designing systems) but the amount of absolute cluelessness and lack of intuition I see are mindboggling.
I my positions mostly exists as a buffer to shield developers for the blithering incometence of clueless business analysts that are unable to put specs in writing and even more clueless clients.
@@Koroistro You've ascended to ScrumLord? Good work!
One of the most terrifying things that happened to me during my career was the rockstar stagnation phase. I was so good at my niche on my supportive team that I completely stopped learning and just cranked out things that were essentially the same for 3 years. I'm working to make up for that wasted time and videos like these keep me on that path.
Not employed - graduating from CS soon - but damn I feel this bro.
Almost everyone in my school was focused on web CRUD apps and it became all I could focus on too.
I was basically making the same thing with extra steps. I got sick of it.
Even during a mandatory internship, it was mostly backend CRUD work. My turning point was when I realized that the company didn't use a web framework, and I started to wonder how that worked. So, I managed to put together a server from (almost) scratch using Kotlin.
It felt good. It felt fun. It felt like I realized what I had been missing.
Now I'm focusing more on learning stuff that always confused me or I took for granted, so I can try new stuff.
It's really taxing, but I know it'll be worth it.
Same bro. Took me 5yrs on my end :(
I’ve run into this three times in 25 years, each sucking a few years of my expertise and career advancement. I have had employers that willingly sacrifice 99% of my ability in order to maintain some mundane garbage, just because I tidy things up and keep things so ridiculously reliable. Granted, I pretty much rock at long-term, big picture, stability and disaster planning. I recently worked my way away from the old stuff, but there was ZERO time to learn or even practice NEW skills on my old team, outside of my free time. I get to work on fast, interesting, questionable code bases now but have quite a bit of time to make up to shift back to greenfield work.
Follow your curiosity. So many people seem afraid of this. If you don't know how something works, find out. I've been doing this for 20 years and have hundreds of side "projects" whose whole aim was to simply be more knowledgeable in some subject, library, or framework.
Preach, brother. Preach!
💯
I was a bit scared to read kernel code until I saw a couple of videos by LiveOverflow where he just showed the implementation of a couple of syscalls or something like that.
And it's just... regular code, fairly accesible if you know C. And of course it is, how else would the kernel have so many contributors?
Also, Arduino libraries. They often are so simple and so small that I just implement my own version if the library doesn't do exactly what I need.
do you have a github repo? i wanna see some of your side projects
@@aduhaneh1057 nah, they're all in my dropbox. For various reasons, I prefer to keep my online presence as incognito as possible. I had some bad experiences in the '90s.
"You're going to get way worse before you get better" - I went through this when I was learning blind typing. It feels bad, but it is necessary to evolve.
Been feeling this with VIM (for visual studio). I feel fine with the basic motions and now I can even use some of the cool stuff like macros, but man it was rough at first not reaching for those arrow keys and mouse. Still learning but man it’s so much cooler
How do you "learn" blind typing? Isnt it just comes naturally? You dont like look at keyboard when you type all of your life, right?
@@dmitriyrasskazov8858IKR!? I remember looking at my hands while typing when I was 8 years old, but had a class with a typing speed test in 4th or 5th grade where the keyboard was inside the desk. Years later I found out they stopped teaching typing in elementary school, and what used to be called "hunting and pecking" started to pass as typing. I've even been told it's "creepy" to type without looking at your hands.
@@dmitriyrasskazov8858 I know lots of folks who do. Not programmers, mind you, but still pretty technically minded.
@@dmitriyrasskazov8858 How do you know where the keys are when you type?
I read this article years ago after attending a session at a local developers conference. It is by far the most influential thing I have ever read, and really explained not just the problems I was encountering but even some of the problems I was creating.
"Maintenance of a large program can be very very detrimental to skill growth." I agree that it can be, however I cut my teeth on maintaining large legacy systems. Not only did I learn more about the language and different techniques, but I also learned how to persevere in the face of frustration. I also learned what works and what doesn't. If you only do maintenance, it will hamper your skillset, but legacy maintenance can be a specialization that is highly sought after. I was bad at my first greenfield implementation, but I still brought something to the table. For example, I was on a project building a brand new product from scratch. I had trouble with getting started, but I was able to point out our tech debt before it happened that everyone else missed because I had that prior experience. Now I am very good at both.
Doing both is such an experience. And it makes you better at both.
I truly believe that if you are a maintainer, then you are in a really bright position, because you can have a side project with the latest stack, or anything really. While you’re maintaining, you sometimes have thoughts of “man this is shit, who made this”, and then you do it your way.
The greatness of it is, you either experience your better idea on how to do something and you reinforce understanding and what not, or you fall flat on your face and realize they wrote the shit code, because it’s how they had to. It’s a win-win.
This is a real thing, it's the smash player showing up to the local thinking he's the best, because he beats all his friends and 4 stocked by the worst regular
CAUGHT
My brother used to be a ranked smash player. He decided to skip a tournament I told him about, and his friend went. His friend tells him later, "I knew as soon as I walked in I was getting first place. It was the only person using a pseudonym." Lol
At least he showed up to the local and learned something :)
Yuuuuup
Coding is probably gonna die anyways just accept it I'll probably do another career change. It's possible there will be an AI that can learn agents
There's a saying, "if you're the smartest person in the room, you should move to a different room". I think that this post really nails it that one of the problems of being the smartest person in the room is that you mistakenly think that you're the expert. I've made that mistake myself, and my biggest progressions as a developer was when new team members joined that taught me a completely new perspective. One guy in particular who stands out in that regard. I often meet the "expert beginners" when I join a project that practice "TDD", where they are so focused on writing "unit" tests that the test suite resists any significant refactoring of the code base. These people are often treated as experts in the organisation, and their views have become the "baseline truth". I've made the same mistakes as them in the past, but I learned from them. When joining a team practicing TDD, convincing these "experts", and the organisation, that they are on the wrong path is virtually impossible.
if everyone followed that advice there would be no one left in the room
I’m in the opposite environment. Mine has absolutely no TDD at all.
I completely agree that the more automated tests you make, the harder it gets to make changes.
But in my environment, practicing a little bit of it has helped me so much in being able to automate tests, and it helps me code and catch things I wouldn’t have otherwise.
Thankfully the beauty is I can choose when I feel like a test is necessary. There isn’t some manager breathing down my neck on a review asking me where the unit test is. The test is purely for my benefit alone and it’s great.
@@joelwillis2043 Sure there would, eventually you'd just stop being able to *determine* the smartest person in the room.
@@joelwillis2043 There's a solution. If each person occupies 2-3 rooms, then you can be the smartest one in one room while not being smart in another room.
"we inherited the Brit's problems"
See!? More trouble with inheritance!
LMFAO
came here to say this, lmao
An incredibly common occurence unfortunately- many people I know who are into CS aren't in it because they love it, they're in it for the money,- they're essentially soon-to-be managers who only look upon CS as "work to be done" to earn money and have a good CV.
Cs is "work to be done". Those peers won't get far because they lack the motivation to actually work on things. The life style is not worth the money at all
@@fauge7 I'm afraid it might be to the contrary- the more I see the world, the more I feel like skills are secondary to the ability to network, bootlick and manipulate your way through the layers of corporate hell. I've seen people lie, cheat and manipulate their way to glory , after all, it's only wrong if you get caught, right?
On the other hand, that means if you're learning programming because you genuinely like it, then you're already off to a better start than a ton of people who are already employed in software (because they don't actually enjoy the craft)
Passion is important, moreso than talent imo
There’s nothing wrong with that. I dislike how everyone says that you should be passionate about CS. They never tell construction workers and plumbers that they should be passionate about their work. We all gotta pay bills, feed our families, and make ends meet. It’s all about discipline in my opinion. Passions fade.
This was my biggest disappointment at uni so few people with actual passion for code
That bowling manager advice is 100% true. It happened to me in music: before learning proper form and theory, my composition and improv peaked. Then I got super shitty for a while when learning proper fundamentals. Then I came out years later much better than I was before. It's like cacooning to become something better. I always assume the same process is needed for any skill, atleast to reach mastery.
Just like Skyrim
i felt the same for design
Trying to transfer from Mechanical Engineering into Software Engineering and seeing my peers borderline rely on AI for their apps always rubbed me the wrong way. Don't get me wrong, I like using chat, especially for SQL queries, but the way my friend stated they were a "Frontend Engineer", from being UI Design while writing everything with CoPilot, and React, while knowing nothing about Javascript and Optimization blew my mind
someone at my work uses copilot/chatgpt for every bit of code. zero thought goes into it and I can tell. its very infuriating
I'd say theres a balance - the older generation of software engineers grew up hacking and building things for themselves because there was no internet to rely upon. Their problem was a lack of information. This generation's problem is the opposite - with all the training wheels you can't be too sure that you truly understand what you are doing at a lower level. If you truly understand whats going on (having done things manually, encountered and solved problems) while using such tools, I think nothing is lost. Its about being honest what you really know
I am a PolSci major. Wait till you see my Assembly code and Management hires me for my soft manipulation and fake competence skillz
There has to be a balance. Unfortunately those who dont use AI to better themselves will not survive in future
Better use it than let it take over your job
As someone in uni rn
If it wasnt for chatgpt the passrate would half
I have a coworker who clearly uses GPT and Copilot and it is incredibly frustrating to work with them.
They are not incompetent but are very close to. Their soft skills are worthless and they essentially "yes-man" me about everything I tell them.
My biggest complaints is the high volume of code they churn out (or copilot churns out, really). It's very difficult to review PRs that are over 1K loc and the author does not answer questions as if they don't even know what they wrote (because they don't). Copilot also writes code that is not in our in-house style (we use eslint as much as possible to prevent this) but its really frustrating to see ugly blocky crap code ALL over. This reminds me that using copilot and writing nice code IS a skill, you have to prompt copilot to use the right language construct for the right job and not just wing it.
Vote reject
What kind of insane place do you work that allows PRs that large?
If your other co-workers would allow it, add a git pre commit hook to fail on unfixable eslint errors.
You will cut down on this guy's output immediately😁
I think AI are a amazing tools, it just depends how and who use it... the problems you face is not GPT or copilot, it's your lazy coworkers, This kind of PRs are a real concern for the team, the company and the codebase...
"Their soft skills are worthless and they essentially "yes-man" me about everything I tell them" have you ever thought that the reason they're like that is because keeping this job and gain experience is their life thread, and they do everything possible to stay alive, even if this means not pushing back or questioning how things are done?
I work with Expert Beginner "Dunning-Krugers" with 15+ years of experience and I hate them.
Yeah, there's a lot of olds in the industry that just suck
This is an ironic statement. The generally accepted definition of the Dunning-Kruger effect is incorrect, and the people who use that term are essentially examples of the misunderstood phenomenon they are describing. The only question is whether or not your co-workers believe that their incorrect perception of a faulty phenomenon makes them better than you.
@@josephfcarrillo lol no, just because some people use "dunning krueger" incorrectly does not mean that you can claim that anyone who says the term must have used it incorrectly. You do not have sufficient data here to determine if the person is using it correctly or not.
low iq: these old guys suck and are dunning krueger
midwit: Actually, the real Dunning-Kruger Effect refers to a different phenomenon. This is ironic because-
high iq: these old guys suck and are dunning krueger
@@NihongoWakannai He prefaced his statement with "This is an ironic statement". @josephfcarrillo made the statement ironically so he was probably just commenting on too many people pointing out that general usage of Dunning-Kruger is Dunning-Kruger in it's general meaning since the real meaning of Dunning-Kruger is not what it's generally thought to be.
37 year old here. 100% yes mainstream media and teachers were all saying Google was going to cause people to not have to learn anything. It still exists to this day! Except now it's a saying of "Back then you needed to memorize facts with rout memorization. Now true skill is knowing how to find the information on the internet". It's quite literally the exact same thing but with better P.R.
Reinventing the wheel and showing it off to everyone like "this is what I'm capable of" is godlike
I've had jobs where I felt pretty talented all around, though I focused mostly on frontend work. The thing that prevents you from succumbing to that "expert beginner" thinking is surrounding yourself with and interacting with people that are better than yourself.
I eventually found myself being the most knowledgeable frontend dev working on a react application. That lasted years. I could still feel I wasn't progressing in terms of my abilities because I was doing the same thing day in and day out.
Then I joined a large company on a huge project, my focus now shifted much harder toward backend, where I get to touch most of the stack. My other teammates have been there years. For the first time in years, I felt like I was all the way back in the first year of learning programming. There was so much I didn't know, but I needed to stand on my own two feet amongst these other backend devs. It is eye-opening... and incredibly stressful. lol
it just drives me crazy how every time Prime selects text - he doesn't include the first and last character of the selection. Every single time. I am pretty sure it's done on purpose to annoy ppl, and he specifically trained this skill to trigger ppl.
He says he likes the symmetry of it. I personally don't understand how he doesn't see the symmetry of selecting everything, but I usually listen more than watch, so I don't mind. Moreover, it's not the important bit of his videos.
cannot unsee
@@nikarmotte My brain must love asymmetry then since I always be mis-selecting
@@quantumblurrr you just like chaos, and that's fine too. ^^
Sometimes if you include the first letter it selects a bunch of blank space and in poorly made websites, entire elements that aren't necessary, so choosing it this way consistently avoids that problem such that the full selected text is inside the paragraph
The best part of this video was hearing you pronouncing my name (João), and making an effort to pronounce it correctly. You got pretty close!
"Its like life, you pick each thing up piece by piece as you go through it" -- This really hit me hard. I've always been worrying that I'm not improving enough or that I'm constantly falling behind in todays world with programming. I now realize, I dont have to go as fast as possible to catch up, if anything it'll hurt me more. Thank you prime.
I just wanted to say I love how respectful you are to people disagreeing or trying to correct you. Thank you!
LOOL the multiple inheritance comment hit so hard. Years ago I hit a point in a project where I thought multiple inheritance was the perfect solution when things inevitably went wrong. I discovered the virtual keyword and wondered why it was not used more often..... well let's just say I found out why
breaking soLid principle? I would dive in, describe situation for me and other juniors 😊🎉
😂classic. We've all been there. I once made a really fancy dynamic table that could display and CRUD any object it was given using reflection. . .yeah it was a mess.
tell us more. Me, an undergraduate student, don't even know why inheritance is such a bad idea. But I can see how the "virtual" can cause problems hahah
@segueoyuri @SeCluDred Alright sit around it's story time.
A while ago I was trying to write a simulation project It got into me to describe everything as a class with a huge hierarchy.
Start with simobject type alright so far so good.
Add a physicalObject make it inherit simobject: still fine.
A few weeks later i have this huge hierarchy some 40 classes all derived from the original generic type or one of it's descendant.
In there is compositeObject that is a simobject that contains other simobjects.
Now I need a physicalCompositeObject on the surface easy enough.
Make it inherit physicalObject and compositeObject.
Realize that I have a problem.
Both physicalObject and compositeObject have the same parents somewhere up the hierarchy.
So one of them hide the members of the other.
Find about the virtual inheritance in C++ and think "I can fix this".
The fact that almost no one uses it should have been a warning.
but I keep going.
I add virtual inheritance to children of simobject: virtual public simobject.
now you can have a physicalObject that is also a compositeObject.
But you need to manually call the constructor of the virtual parent.
Even worse since it seem the issue is fixed you become addicted to using virtual inheritance.
Add virtual public in from of so many parents when declaring classes the whole hierarchy is a mess.
A big tangled mess.
Every use of virtual inheritance just kicked the can down the road.
Never fixed the issue as some other class down the hierarchy would need to inherit from two classes in the hierarchy.
At some point the code reuse gain from inheritance is compensated by the amount of parent you have to manually call the constructor of.
So It took me a few years to get the motivation to convert the whole thing to composition.
The analogy i use is playing an instrument vs programming in midi. On a practical level, you can 'play' any instrument from extinct to fantastical and create entire arrangements by yourself with midi. It's always perfect and consistent. However, you are missing a vital tool: the feedback loop of ad-hoc creation; of improvisation and inspiration. Those things matter when you're not quite sure where you want to go but have a general idea.
To be clear, midi is just a communication protocol between sources and receivers. If the source you're using is a sequencer or piano roll, then yes there is a bit of a disconnect between the two that can make learning music difficult. However, if your source is some type of real time midi controller that responds to physical input, the feedback is much more immediate and is pretty much the same as using any other instrument. In fact, many midi controllers that that have come out in the past decade or so provide even more direct, real time control of the music you're playing than a real life piano using an extension of midi called MPE, or 'Mutli Polyphonic Expression'. Notable examples include the Haken Continuum, the Osmose Expressive E, and the Striso board to name a few. These are all midi controllers that give direct, real time control over the sound synthesizers make to an extent that would make most other instruments blush in embarrassment.
@@rahzaelfoe3288 Programming in midi, not playing a midi instrument.
You knew this before posting.
Working with an architect that's like this. He can't make anything working properly so we constantly have to fix the shit he leaves behind (and yes we do make clear he is causing the problems). It ranges from basic typo's to not knowing concurrency is a thing let alone knowing what to do with coupling and cohesion.
It's mind boggling how such persons don't get fired instantly but instead get promotions.
But if he is spitting out code real fast, management might get impressed.
They probably understand business very well but are average at coding. They know how to build the right thing more than they know how to build it the right way.
@@majorhumbert676took him years to setup all the clean architecture microservices. It's cargo cult programming all the way.
Could probably remake the whole system in less than a year without all the overengineering and just building what's actually needed. No way you could sell that to the business though.
It's very similar to learning how to solve a Rubik's Cube. There are patterns one can learn and apply a specific algorithm to solve it faster. But there are also algorithms which solve the cube each and every time and one only has to learn a handful of patterns. At the cost of more turns per solve. So sure one can learn how to turn fast and be better than most who know how to solve it. But you won't be able to be blazingly fast unless you've trained yourself on more patterns and their specific algorithms.
ive been programming for 2 years now, I have a rule I don't allow myself to use chat gpt for things I don't know for more than giving me a starting point to start learning, and I don't use any kind of editor ai like copilot to avoid brain rot
chatgpt is actually great for that, but as soon as you have a problem that requires actual knowledge and thinking, it just starts to go in circles.
Chatgpt is great to use as a search engine when you encounter stuff you don't know. Of course it's still just a starting point but helped me save alot of time when encountering some new concepts that had too much magic to be clear from code.
@@Rick104547 Yeah but I hurt my progress quite a bit while using chatgpt as a search engine for more than one prompt, since you never know if anything that it says isn't a hallucination. Soo when we add validation time to the equation it balances out the benefit. Still a great learning tool can't deny that
@@jacksoncremean1664 I used to have a habit to try and brute force a problem with chatgpt didn't go well since I noticed that sometimes for the time I wasted trying to "save" time I actually would've been able to learn it and do it myself
why don't ask chat gpt how something works. It's great for explaining things on the high level.
25:53 that is such a good explanation… nothing is hard when you have the foundations… it’s just time consuming.
If you never take off the training wheels - are you a good cyclist or are you good at writing a bicycle with 4 wheels? I am still in the learning process but I avoid stuff like Copilot completely. What use is that code for me if I would not be able to get there on my own? How am I supposed to fix "my code", if I could not create it on my own?
I think it has a lot to do with how we learn. If you go through a programming course / book / tutorial and just blindly type down the code, nod and think you learned something, you are foolish. I don't write a single line if I don't know what it means. When the learning material states "don't worry, you don't need to understand that part yet" I almost feel personally attacked and challenged. And it makes me look up what it means even more. Documentation reading is vital for that of course. And if its some OpenSource library with a bad doc? Well, trial and error and find out what it does, also a great moment to learn Debugging.
Literally from the first paragraph of Wikipedia:
"Over the past few decades, neuroscience has provided insight into learned helplessness and shown that the original theory had it backward: the brain's default state is to assume that control is not present, and the presence of "helplessness" is what is learned first. However, it is unlearned when a subject is faced with prolonged aversive stimulation"
Prime does use the term a bit figuratively to mean reaching for help without trying to solve the problem. That's definitely a real thing
@@Oler-yx7xj I know and understand that, I just want people to be a bit more educated in modern science
@norude Yeah, that's the right thing
I can definitely relate to that statement. So many times i try to do a task(be it a math assignment back when i was in uni, or a coding problem) and it just seems daunting and i don't even know where to begin. Then i struggle with it for a bit, and then it just clicks, and i was wondering why i thought it was so difficult to begin with.
@@norude None of this is science.
"I'm the humblest, number 1 at the top of the humble list"
That's a bar.
sounds like lonely island
This problem started before chatgpt become popular, the main thing I saw was gamers thinking they would be good at coding but didn't actually have the passion for it and didn't want to learn.
I know many colleagues of my degree thag just want to do gamedev and I'm like 🙄🙄🙄
They struggled hard the last years.
@@notsojharedtroll23 what's wrong with people wanting to do gamedev? How is that different from someone that just wants to do webdev or just wants to do cybersec
@@NihongoWakannaiI assume that likely the problem isn't gamedev or wanting to do gamedev, it's more the fact of people that think gamedev is like “playing a game” and when a hardship or intuitive concept presents itself they dislike it or don't wanna do it?
Imo gamedev is very hard when you have to account not just code but also teamworking, design and limitations, to me that doesn't sound like a place where id like to work, maybe it also it has something to do with the people of gamedev being delusional? 🤷
(Saying this from the perspective of someone that has **talked** with people that have had classmates like this in uni, who thought CS was going to be like playing a game, as I said earlier).
At 21:00, I like that phrase about "It's not the destination, it's the journey." I think it applies far more heavily to learning skills, vs having fun.
I spent some months tooling around with Blender, spending hours working on something like a snowy mountain, or following a "10 minute" tutorial to make a volcano tropical island. I spent 3 hours making mine because I wanted to add more things.
Very interesting. Idk how so many people jump into CS without having any passion for it.
If I didnt genuinely enjoy hacking together my dogshit lil projects I would absolutely have given up on CS many years ago, its a tuff ting to find motivation to keep competing when youre not a smart person naturally, or if you have zero talent for it. I know im never gonna be anywhere near the top level where primeagen and friends all hang out but its just too addicting.
And if I can pay the bills doing something I love then its a blessing even if comparatively im a complete smoothbrain trashpile. Im cool with it cause in my heart i know im at least *trying* to improve, and in the meantime i can poop out code that people ask me for
Oddly enough I did not get into Comp and Hacking until I was forced through it. Some people end up liking something the more time they spend with it
@@waterbloom1213that's interesting. I was always interested in it but I was a degenerate when I was younger and having ADHD didn't help. I dropped out of school for it, but interest in game development pulled me back in. In college I would do other people's homework for money lmao. I genuinely enjoyed it.
A person comparing the code I write for work with the code I write at home and assume that it was written by two completely different people. But my dogshit projects are my playground, the lack of constraints gives me freedom to move fast and try new things. At home I feel no guilt about writing an entire application that is "operated" by editing the code between runs, because I know I know better.
At work my focus was network acceleration tech R&D. At home I ping-pong all over the place, but often do a lot of digital signal processing and image manipulation. So many times there were situations where my hobby stuff led to new ways of thinking about work stuff.
nikola jokic says whats good
Prime isn't the top level, webdev is pretty far below the crazy geniuses who do actual computer science research.
Not defending AI but it's the same argument of learned helplessness people brought up against Stack Overflow, this problem is not new
Some will stand, some will fall. Act accordingly with the boys of OpenAI
The problem is that AI can be even more useful so the issues are going to become even more prominent.
AI can definitely be useful in the learning process just like stack overflow, but you also have to be willing to actually learn what the code you're copying does.
33:05 I can code (Python dev) fine without an LSP or even an IDE except for debugging, but reflecting on this I think it's more because I don't use most of the fancy features (find definition, syntax highlighting etc.) except 'change all occurrences', which is easy to do on a text editor, and therefore my workflow is slower than it needs to be! Thanks for bringing it up and offering a proper discussion.
This video adresses many of the thoughts I've been having lately. It's grounding really. This is what I needed to hear. I am sure this will make many of us better software engineers.
A better analogy for the effect of AI: it's like memorizing all the openings by name, the formalized tactics and endgames of chess, except you haven't played a single game, or made any sense of it. All you have is a messy collection of tools that you don't know how to use and what purpose they serve.
I've always been into programming. I remember I wrote a whole funky-ass 3d graphics engine wrapped into a dynamic library. It would raster the dirtiest of triangle on a now 20 years old CPU. I learnt so much that time.
We use "multiple inheritance" in game design all the time.
It's far more based around interface implementation than what textbook definition "single inheritance" would leave you with.
Maybe he was thinking multi level inheritance? The terms are annoyingly similar. Most people just say "composition" instead of multiple inheritance
@NihongoWakanbit but composition is different from multiple inheritance
One thing I wish schools would teach you is how to identify what works for your personal learning. Most students don't really know how they learn best and just blindly follow the teacher and their friends in how to learn and more importantly study. I personally never studied once during all of school and college, in fact I managed to teach myself how to code without having to sit down and study a textbook once. The secret is that I realized that I had a good memory as a kid and relied on that to carry me through tests and hw. In coding I just learned the language as I would for a spoken language and used reasoning to walk through my code as I write it.
Being smart isn't knowing more than someone else, or having a higher IQ, it's knowing yourself enough to the be able to leverage it to your advantage. And trust me knowing how to maximize your learning and pick things up as fast as possible is way more important than it seems because school counter-productively teaches you that learning stops when you leave school, so it becomes much harder to learn when you're outside of the environment you're conditioned to learn in.
Bruce Webster mentioned! He was the professor for my software engineering course at BYU! Great developer and teacher!
I liked what you said in a previous video that people are not using AI for the simple mundane problems, its for bigger problems. Myself, I dont use CoPilot, but jippity. The way I use it is to ask about a complex problem, ask for no solution (which it does not understand...) but give me resources to finding out myself (which is does sometimes).
I rather understand why stuff happens rather than "this is how to do it."
Building a thing you can use by solving one problem at a time on your own is very underrated. Best tutorial there is.
I switched away from VSCode before copilot was even added. For me, reading code is way harder than just writing it, so given the error rate of tools like copilot, you still have to read & understand its output, and my problem solving speed in most situations that copilot would be any good for is near instantaneous, so there’s really no point. I can usually just type the solution faster than I can formulate a prompt, wait for the response, analyze & understand it, and tweak it so it works properly
This is where being a senior software engineer at a well recognized company can usually help. Sometimes even these companies make mistakes. But a really good programmer can recognize even at the beginning of learning a language what stage of the beginner->expert spectrum they are on, simply because they’ve been through this spectrum several times on other programming languages & runtimes/frameworks
The easy way is amazing in university because it allows you to pass the exams with relatively high grades by using a mix of cramming and infering the pattern of what the Professors want you to solve. I feel like this is where the problem starts.
If you really want to learn something you have to do it through the hard way I feel like. No solutions, no copy-pasted answer, and inferring how to solve the problem on your own. This is how you properly build a skill and your problem solving capabilities.
26:11 great take! I struggled through college/university math courses because I’d never learned the order of operations. I look back on how much of a struggle it was and think about how simple it all would have been if I’d had that one missing piece of knowledge.
Just my take on "How to stop copy pasting code"
Ask yourself, this question, why are you copy pasting code?
Is It
A.) You don't know what's happening.
B.) You know what's happening, but don't believe in yourself.
If you answer A. That means you lack fundamentals. And the thing you are doing is more advanced than you think it is.
If you answer B. That means you lack practice. Or you don't know how to judge your worth.
For me, (idk if it will work for you). Both A and B can be solved.
Here are the steps.
1.) Don't take the next step, until you learn the basic components of what you are doing.
2.) Learn the fundamentals of the things you want. Learn its properties.
(At this point you can use books or the web to know, important point here is don't look at the code)
3.) Using your current understanding. Try to implement any properties (and or flow), etc. Don't mind it if your code is bad.
Your goal here is to implement.
4.) Once you can implement something. See if you can improve on it. Go back to step 3 and implement more.
(Until you can implement all the properties)
5.) Have fun (don''t be afraid to experiment),
Do some UA-cam Video or Leetcode or challenge yourself, etc to see if you improve.
6.) Repeat Step 1 (soon you'll be doing a lot of things, without copy pasting code).
Note: I learn a lot of DS and Algo and more just by following those. Like last time I'm trying to create DFS and BFS.
I don't see any code at any point I'm doing it. I'm just looking how its properties works, its flows, and its component.
Technically my BFS is still bad since I'm still missing something. But it is ok I can figure it out.
There's also C) I don't have the exact syntax/API memorized for this thing I do twice a year, but it's faster to ask Codeium instead of googling
@@Daniel_WR_Hart That's technically A. But let's say you don't know the syntax but somehow in your brain, I think I know this, but idk the correct word or flow. That's B.
I think the only time you need exact syntax is for very exact program.
@@asagiai4965 When I made my comment I had CSS animations in mind, because it's easy to learn how it works, but I keep forgetting that it's @keyframes and not something like @animation or @frames. I guess that would be B though
@Daniel_WR_Hart I'm used to be guilty with that. I'm used to be B. The way I learned it is. Animation needs frames. Frames have timeline.
@@Daniel_WR_Hart In another note, PL or tech that have confusing terminologies or wrong use of terminology are bane of a programmer's existence.
I used to code PHP without anything fancy, just like rawdog notepad, back when I started my career on programming. Even StackOverflow was in it's infancy back then. I've accepted LSP now, but something like Copilot, I just cant fantom something like that. But at same time I think I'm something like expert beginner in this field...
8:22 this was literally my experience. I was naturally good but when I got the promotion and held more responsibilities, I realized that I had to relearn everything and actually care about how to do things right before I could go any further in my career.
Your analogy of AI and the expert beginner correlates well with the fight between Morpheus and Neo in the Matrix.
Microservices was by far the biggest offender with the crazy tech. B2B companines having more microservices than billable clients. Then sales (for the lack of billable clients) promises the heavens and all the features. But because of everything being microservices, implementing them will either take much longer, or will be a hack job and you are yet again building a fragmented monolith, with protobuf in the middle.
I can’t imagine using LLMs for everything. They are really good for cases where there are a bunch of existing examples of almost exactly what you are trying to do. Accuracy drops slightly off if you combine a couple of existing examples in a novel way but you still get a good starting point (and maybe even working code after giving it feedback over the course of a bunch of iterations). Anything past that and the most you get is a list of functions that you might find useful.
Been watching your channel for a week and have zero coding experience… which means I’m not only the most humble person in this comment section, I’m also an expert on coding.
Agreed with that video 100% Be able to do stuff on your own use tools to enhance your ability, not to compensate for lack of them.
Thats exactly how I felt at end of my internship. I was tasked with making a pocket process for a web based system(for transfering info from peripheral devices). I wrote 2000~ lines of code and had to read some documentations and had to implement solutions in different fields of software(like remote file access, cryptography, XML documents) andndid really a good job in modularizing and abstracting everything. But that was all I did, create or bring together some APIs only 2000 lines of code complexity. And some of the employees really liked the style of my code, so I added remainder of my time implementing pettt features all wonderfully refactored and styled(I could've watch to learn from others after finishing the project). It was only the last day I decided to watch employees that I realized their system was really complex and big(especially the data model) and that İ wasted my time playing in my puddle rather than to learn to swim in the sea.
Neo: "I know kung fu"
Morpheus: "Show me"
they had (ostensibly) the same exact set of martial arts programs downloaded, and yet Morpheus was obviously more proficient. Due to his experience.
maybe this is an alternate metaphor for your blue belt thing, 33:27
Kind of the opposite metaphor since morpheus beat Neo not because the latter had bad technique, but rather because he had internalized beliefs about his own limitations that were no longer valid outside of his pod. So his problem was lack of confidence, while the broad problem at play here is overconfidence.
If you reinvent the wheel, you have a damn understand if what the wheel is and can do.
I feel like the idea of taking a leap of faith and just storming the barn first than fixing the aftermath rather than trying to fix the problem before we encounter it, is an approach that I want to try and take going forwards when programming. I think I'd learn more trying to fix the broken equipment that the charging bull was responsible than trying to use LLMs to lead me to the right answer. or at the very least use an LLM when you are truly stuck (like with 99% of null pointer exceptions).
I read Pragmatic Thinking & Learning some years ago, when we learned more from books. Many of the points are covered there. There is value in those ancient manuscripts. 😁
That bowling story is a lot like learning guitar. Feels good and fast to just fudge out the practice with thumb wraparound and fingers at angles to the frets when starting out. But the skill ceiling is WAY low when we learn that way.
Takes longer to teach a hand to fret correctly, but it massively raises the skill ceiling.
10% of the coding I do is boilerplate, the other 90% is integration crap that isn't in going to get copilot responses that work.
To be fair, I've seen a lot of engineers abuse professor and TA office hours rather than try to work through it themselves as well
This was me with academics. Great naturally, but didn't know how to learn structurally when the material got complex. And it always gets more complex.
I play games for two main reasons to develop my skills in the game and understand it's systems and to enjoy the story, completing it is an afterthought and something I avoid until I get as much out of the game as I can.
I don't think the learned helplessness is any worse now than it was 20 years ago. I'm shifting careers from chemistry to cs and it doesn't currently seem more than when I started school 12 years ago. Using AI in school is considered cheating. There were always people who cheated there way through school and they suffer more when they hit the market. The people who rely on cheating to get through will still drop out halfway through when copilot cant do there entire assignment for them.
We got a foosball table at work about six years ago. I had a crappy home model as a kid and this allowed me to beat most of my colleagues easily. But I wanted to get “even better”, so I found a local group of foosers that play weekly tournaments. I showed up thinking I’d be able to hold my own-I mean, I wasn’t a _complete_ n00b, after all. Holy 💩! Turns out I was an expert beginner at table soccer! Been playing in national tournaments for the last 5 years now, and finally improved my ranking from Beginner to Rookie. This is an almost perfect analogy for software development: it’s freakin’ hard to become a true Expert.
I graduated as an Industrial Engineer and started working in logistics. I have always wanted to make a video game, so I explored AR and took online courses. After a year, I started working on a React project. A year later, I moved to Android development, where I have been for the last three years. I'm really happy that I changed my career path, but it’s been hard to understand the fundamentals of computer science since the way it is taught in universities has a reason to be.
16:03 solve learned helplessness - just keep going till the goal is complete. Simple.
That game analogy and enjoyment of the process paradigm was just epic
When I hear devs call a feature impossible it drives me insane. Big agree that every problem that pops up comes down to how much time we need to put into it
it depends is a thought-terminating clich. I hate when people say "it is what it is" or "It depends" just feels like a cop-out on thinking about something a little more..... This article was great.
By the way. Copilot pause is some thing you can overcome by enabling / disabling Copilot few times. Then you train your brain not to wait for it, but have "oh, it did the thing, accept" when you pause natural instead.
I had "copilot pause" before copilot existed, simply because I always knew there was someone who can help me with my problem therefore why bother putting in the effort. It's destructive efficiency at its finest.
Didn't realize copilot was being used that widely, or even believed to be used that widely. Using AI as part of my programming is still something I go out of my way for if I've exhausted other avenues. Which, probably is slowing me down, but I just haven't rolled it in to being one of my default tools yet.
Making things more difficult deliberately in order to learn faster is something that people already have to do and are incentivised to do, AI makes it easier to get by without learning properly but things will adjust again once market forces incentivise people who are willing to learn properly.
Although the scale of the issue is different the actual problem is the same one you have when learning anything. Maths I think is a good example because you can spend hours staring at a problem without getting it (and knowing the whole time that the solution is sitting there in the back of the book and you could look at it very easily). So you set a personal strategy like 'I can't look at the solution until I've tried for 2-4hrs and slept on it somewhere in the middle', knowing it optimises your learning in the medium-long term. Or the temptation to play a whole piece of music through rather than focus on the one difficult section you know you are struggling with when learning an instrument, or not playing with a metronome because you find it difficult, or whatever.
AI is just means you have to apply the same thing to more situations, and it increases the temptation, but when you do need the extra assistance it is a very useful thing to quickly get knowledge that would take quite a while to put together from lots of different sources manually if you had to do the research. (Especially when compared to things like stack overflow, which might give you a snippet that fixes your problem, but an LLM will give you the snippet and you can then ask WHY that snippet works and find out about underlying components or concepts that were in a blind spot for you that you can then dive into). It might also just give you the wrong snippet or make up a reason of course, but nothing's perfect.
26:25 as a mathematician I agree that the Laplace transform is one of the funnest parts of your typical course on differential equations, that and operator theory methods (think linear algebra with extra steps) along with numerical methods are what constitutes a modern understanding of the subject matter rather than just going "here's a made up equation! here's the weird algebraic trick you use to solve it!"
I always say, Technology is not the limitation. It’s your imagination and the skill of the developer.
one time you might want it to work: the page object model in web ui automation. Representing each page as a page class/object. you can extend each page to an authenticatedPage class which contains the shared functionality of all of auth'ed pages such as topnav, etc.
Wow, the graphics of this video about this game impress, it caught my attention, I will play it since the instructions on how to start it are easy. Thanks for the video.
37:15 I agree that what the article is describing is "settling" and I'll add that all the negative behaviour mentioned is the advanced beginner "defending his right to settle"
I recognize a little of myself of this "settling behavior" in the last months. My motivation of training in cloud technologies has been very low, mainly because I am already very good in doing data science locally, but I need to learn cloud to do the same in a cloud environment and is painful for my ego, because I don't know how much I need to learn of cloud technologies to being able to do the "same thing" I'm good right now, even if data science in the cloud is quite different to data science locally.
Mi little pond is very cozy.
I only took one semester of C in college and didn't really get serious about programming until I was 40. The part about not understanding classes hits me because I felt the same. It didn't help that I learned mostly from books and they all described advantages of classes in vague terms. If someone would have just told me a class is a more advanced version of a function it would have helped me understand faster. Not just understand what they are, but why you'd want to use them.
As a bjj blue belt, strongly agree with the copilot take
Higher belts can literally use white belt techtique 100% of the time, but timings and weight distribution you get only after 10k times of getting choked out
Invisible jiu jitsu is real
Soild perspectives all over this video! Great job!
But you didn't invent quad-trees, iterators, compression or calculus, you're just going through the motions of implementing them. INVENTING a quad tree, coming up with the idea of an iterator, or calculus takes a mind that only occurs a few times a generation. So I disagree that all "software is easy"; it's only easy in hindsight.
I think this a stupid argument, no one ever invents an entire thing. Technology as a concept always stands on the progress of those who came before us, otherwise progress wouldn't be possible, and even if it were it would be ephemeral. Software isn't necessarily "inventing" entire broad concepts and ways to solve problems like quad-trees, that's research. Applying knowledge that has already been invented to solve other problems is the key to innovation.
Everything looks complex if you look at the end result, but every man-made thing is a collection of small simple steps. A computer chip is an insane object if you only know that it holds trillions nano scale components
25:29 that's because ODEs ARE easy - there's a reason they're a 200-level course, while undergraduate math programs don't even require you to take PDEs to graduate with the major. ODEs are an elementary, foundational part of math.
On the flip side, this is precisely why ODEs was my favorite course - it is the final form before math gets hard. You see all of your algebra AND calculus come together for the first time, and it's SO BEAUTIFUL! Everything beyond ODEs is a completely different skillset, so the "expert beginner" - likely out of fear of shifting out of the rules-based approach to mathematical thought - call it quits at this point. Competence in math requires the ability to prove.
24:23 This, by extension, is also the "expert beginner" approach to higher level math! You take your intro to set theory/logic/proofs, and understand that TECHNICALLY that's the basis for all future study. This is akin to seeing all programming as being nothing but variable declarations, moves, additions, and jumps, once you've taken your coursework in theory and assembly. Both are an easy way to brush off the true challenges that follow, because one is minimally aware of how it will work.
tl;dr - yes, Prime is an expert beginner and should be ashamed :D
loved your whole schpiel at the end. particularly the sidetrack about soccer. 'soccer' is one particular form of 'football'. Other forms include rugby and American football. In Europe, soccer became the predominant form of football, so it is called simply 'football', whereas in North America, American football became the predominant form and is called 'football'. But they're all football. It's silly to claim one is _objectively_ correct, and even sillier to object to an American using American verbiage.
24:00 this is a good explanation of why a lot of programming can be offloaded to AI. Its for/while loops of (usually) simple functions on the right variables. Thats not to say we dont need extremely good programmers for problems that are tricky--thats just not the majority of problems (in my expert beginner opinion)
The article is so dam true.
Watching you become more and more staunchly anti-Copilot for the right reasons is very satisfying. I've been trying to caution junior devs on the effects it has on learning since it came out with very little luck. I got a lot of "sure, old man" reactions. I'm 30 😅
Layering the concept of explore/exploit on top of all of this important. Are we talking about banging out more of the same? Or created something new like a library or new type of pattern? Moving from exploit to explore is where many devs will fall off in capability
Matthew principle of skill acquisition and mastery: You can only get good at a skillset if you are already good at said skillset.
The "reactive streams" at 3:45 were probably RSocket.
33:30, Took two minutes to explain what Morpheus said in two words: "Show Me." Still a great analogy.
Another easy way to make sure that you not copy and paste the tutorial, is to use a tutorial in a different language or with other libraries (I learned Vulkan for example by doing all OpenGL tutorials in Vulkan)
Thumb up 👍 for reimplementing huffman! That RFC is seriously not child play! But I made my implentation work in the end.
1:24 Great Bill Burr impression, you should do it more often.
I often see manager not grasping implications and complexities of problems. That is really frustrating because you have to argue your way into making them see those things and many times they will just remember your opposing them and making them agree to something they feel sketchy. It’s a lose-lose situation for young developers which makes knowing more uncomfortable. This is especially true when talking to architects and engineering managers that have stopped coding for quite some time.