Hot take: Linux kernel was also created for funzies, and people should be doing funzies far more often. You don't get to choose what's gonna become big.
Been programming for 28 years. Lots of different things and jobs. Many changes, many things the same. Glad to see new people thinking about simplifying program stacks. Am enjoying learning RUST for bear metal and for fun, use on old architectures like 68000.
I’ve been programming for 22 years I have done tons of social gaming, administrative systems, smart building capabilities, all of the parts of a system and roles, I still feel I got too much to learn and that I have millions of lines yet to write 🎉
Having worked in a startup where I was the only senior and the other 3 devs were junior-mid level. I passionately agree with limiting the size of functions. I arrived at the company at the decision of the 3rd app re-write. Upon observation 1) deeply nested class inheritance 2) insanely complex control flow statements...like 4 nested if conditons on average per function 3) Very large functions that made unjustified super() calls to the parent classes like 5 levels up. The hell was inexplicable. You give a 2 year old a box of markers with no rules and you can bet they'll pop the top off every single one and draw EVERYWHERE, sofa and all. So you give them one marker and limit the drawing to one paper. We limited the functions to a max of 20 lines. And trust me...the code was much more maintainable and predicatable. Working with a group of seniors who should 'know better' I would not suggest the advice of limiting the max size of a function, so I can see how people don't get it...but it's all about context...just find the advice that matches your context.
Personally I prefer large functions with all variables documented at the top...In a workspace with others I sometimes have to abandon my own personal beliefs...but that's what I love about science.
Such proscription becomes *reductio ad absurdum*. As every application is mathematically reducible to a function, no application may be longer than twenty lines of code.
I know your pain, bro. I'm fine with smaller logic methods, but you have to have some meaning to this and not break the logic at a certain line number because of some stupid rule.
Loved this one! Especially the points about decision fatigue, and also that bad feeling you get where your intuition from tacit knowledge is telling you this code is a mistake, but you have to go think about it for a while to figure out why.
Learn by failure vs. learn by doing things right. YES YES YES!!! Some academics are pushing for "fail forward" for kids (or anyone, but mostly kids). Our academic institutions put so much pressure on kids/learners to "get it right the first time." But really, the important thing isn't get it right the first time, but get it *eventually*. I'm 100% with you on the, learn by failure. That's such a better teacher than, take a test and see you failed and now your grade is irreparably harmed.
I don’t have any hard rules on lines of code in a function, but most functions I write tend to be small. If someone forced me to me a hard number on it, it would probably be close to that. But it probably has to do with the fact that I tend to write tests first. When you decided “I want a function that does X” the you write tests to test the function, there isn’t any room for that function to do anything else.
Uncle Bob in his clean code book, said that when he writes code, all his functions have 4 lines or less in their body. He showed a Java example, each tunction is just calling other functions, barely doing any wotk.
Around 10 lines is the sweet spot. Any more and a function is not doing one thing but multiple. That means, it should not be one function, but multiple smaller functions. Why? Much, much easier to test and see where the problem is, should a bug appear. Much, much easier to reuse functions and to swap functions around. Try it. Its amazing.
Enforcing arbitrary code line lengths for functions feels pointless. If you're counting how many lines are in a function you're probably thinking about the wrong things. Instead of wondering how you can shave a few lines off a function to reach an arbitrary goal, instead think about the bigger picture. am I using the right data structures? Does the thing do the thing? Could it do the thing quicker?
Such a limit on coding practice assumes the compiler or, in the case of imperative scripts the bytecode cache, can understand through execution analysis the best way to regenerate the code "blocks" into an optimal runtime. That is the code is automatically reorganised from the "clean" to the "efficient." What is really taking place is the developer is eschewing responsibility for execution efficiency to create "clean code"; a practice which leads to two inevitable results: 1: An optimal runtime is never achieved, resulting in both slow execution and resource hogging. (Carmack's mobile device paradigm) 2: The code becomes a blur of tiny, testable, functions which by design have no context and so become increasingly more difficult to maintain or decide on their continued inclusion once in a context. In other words, the stated goal of creating a maintainable codebase is defeated by the very methods used to create a maintainable codebase. Kafka would be proud.
I think the most important take in the article is that there is more value "in specific experience reports or in watching people actually working, as opposed to writing about general principles." This also answers Prime's point/question at the end: "sometimes you have to decide whether you want to write with nuance vs you write just with general principles" - always take the side of nuance. The idea of general principles may be alluring, but it's ultimately a trap, because the principles most likely won't be general (I think the article makes a strong case for this last point).
taught myself a bit of coding over the past 3-4 years but still debating with myself if it's worth trying to get a junior dev job at 40. This is helping me make a more informed decision, I think. I feel I am attempting the impossible and I would be better served pursuing more realistic goals. Thanks for the content and wish you were on Spotify
the problem with being nuanced is that usually you don't have anything to say beyond "it depends" and you cannot make any decision. sometimes you just HAVE TO do something and you cannot go and measure stuff to be "scientific". it's like with playing any complex game like chess - there are some good practices and "rules" of how to play well. very good players will brake those practices when they REALLY know better at the given position but the rest of the time they will stick to the classic rules.
I really like the article's suggestion that it's more valuable to share specific experiences than to discuss general principles. I think this would avoid, for example, someone who hasn't reached the "break the good practices" stage criticizing something for not being best practice even though their idea of best practice would be worse in that situation. And if someone is so junior that they can't make a decision about how to approach something without referencing some best practice, then they would just end up butchering their attempt at following the best practice anyway.
@@CamembertDave I believe the problem of our industry may be similar to what happens in medicine or psychology - these subjects are so complex that a proper scientific method is often not enough to know something for sure, you stumble upon many contradictions, lack of replicability, etc... you can produce 10 papers about something and then there will be someone saying "well, I tried and it did not work". maybe this is actually an idea? maybe instead of trying to find a "cure for everything" we should concentrate on special cases? it will be more difficult than "your funtions should always have 6 lines" but it will be more useful
Yes, as long as it is understood by all parties the "rule" is only applicable in context. However, once that is known and the context understood the rule itself is no longer required. To say "it depends" must always be followed by the question "on what?" The number of dependent (and dependant-) contexts is rarely more than two, so to be upset by the requirements of nuance and context is to create an artificial environment to justify, not prove the validity of, the proscribed application of the rule.
Exactly. I absolutely HATE people who say "You shouldn't _always_ follow principles." or "You should do this _this_ way", but never elaborate on the specific cases of it. Nuance is all well and good, but I KNOW THAT. I just want to know how specific people do specific things, and I can draw my own conclusions from it. I too have a brain. This article had a lot of words, but said nothing. Nothing that was actually useful. Ironically, this article started out by saying most practices are somehow wrong and most advices are useless. Then what do YOU propose? What have YOU contributed? **Crickets** .
Regarding decision fatigue, most AB-tests I've seen in ecommerce indicate that fewer choices is better for shipping alternatives. However, this also depends on what is sold. As such, AB-testing is always necessary to get the best result.
For me, decision fatigue is a sign of burnout. Or at least a stressful period which I'll call "micro-burnout" cause I don't have a better word and also because micro- is the not new prefix.
Yep to hear advice you have to know the context in which to apply it. Had a mentor who was on the level of John Carmack but because I was a novice I had no idea what he was talking about. At the time he just sounded rude and inconsiderate. 5 years later what he was saying makes since but he was still a jerk because he lacked patience to explain his reasoning.
Man, I have the same experience getting dressed. I buy very similar packs of T-Shirts and Jeans. I have nice shirts for when it matters, but most days it's pop-the-stack on the way to the bathroom.
6:17 lol are we the same person? I call my dressing regiment "the conveyor belt". It's a fully automated system, where all of my daily/work clothes are being worn on a modified FIFO schedule. No decisions, no exceptions. I simply wear the next thing that's on the hanger at the front of the queue. If at the end of the day the shirt is still good, it goes back to it's 1st spot to be worn again the next day. That cycle repeats until it needs to go in the laundry. All freshly washed clothes go towards the back of the hanger queue. Repeat. As a result, my clothes look great cos I never over-wear anything (as clothes that are being washed too often quickly turn to shit). All I had to do is make sure that all of my pants and shorts match my shirts, tshits and sweaters. Easy peasy. Never have to make any dressing decisions again. And I also consistently look good, every single day. Sure, I may not look like some style icon (nor do I ever want to, F kill me if I ever do), but I do look clean & well put together. That's all that I want my clothes to do - make me look good, but mostly get out of the way and don't waste my time.
in my unqualified opinion, i believe decision fatigue is something that kicks in when you dont want to make decisions, there are times you want to make decisions it just isnt all the time.
peeking through the looking glass into the mirror world, seeing the familiar shapes on cave walls... knowing that truly we know nothing and most of what we think we know isn't worth the gunpowder to blow it up. I run into this all of the time, most advice on programming and on life generally sets you back. Using your brains and utilizing your first principled experience is the only way to understand the world around you, anything short of that will just serve to hurt you. I'm not sure how much of it is intentional, as if once you have enough money to last a few lifetimes that the only sport left is to invert reality and give really bad advice to watch the masses squirm, or how much it is just stupid people parroting stupid things that bring them comfort and these are taken to be 'truths' of our age. The cause doesn't matter, as it could be a combination of things, what does matter is the vast amounts that fall victim to this in almost all ways, all the time... and it's always been this way and it will always be this way.
Slack is just a skill issue, but Teams is downright malicious. Like when you copy a message you get the name of the user despite not even having selected it. Or the auto away that you can't turn off.
Really good article. Once you're decades in it's all about focussing on the specific domain problem, users, customers, inertia, coworkers, finances, legal details, and so on. The tech is whatever you use to solve those problems however you need to do so. But I knew they were going to have done a lot of R&D when they pointed out TDD as something people get too invested in xD So slack... I was able to use a very old recovery code when updating MFA (about the 4th time since) was bugging out... those recovery codes should obviously have been invalid for years at that point.
I think that’s why I’m enjoying zero to production so much because it doesn’t target people just learning programming. Also, as a college student with zero industry experience it gives me a perspective of how someone in the industry would go about doing things.
They wrote an editor in 100 hours? Not bad. I'm working on my own editor right now and I'm definitely above that number, though I also use almost no libraries and added some features that were a nightmare to implement. Very fun kind of project though.
@@jaideepshekhar4621 For one I made the keybinding system just as flexible as Vim's but with a better solution for certain edge cases that made the code a lot more complicated (there's a reason other editors don't do it). It can also handle more complicated UTF-8 symbols without glitching and doesn't slow down with super long lines (long lines can make even Vim near unusable). Also it is very fast, though that luckily just happened by itself for the most part. It's not necessarily about features that don't appear in other editors but just about having a lightweight, fast setup that works exactly how I want and that I have full control over. And of course fun.
@@jaideepshekhar4621 It is rare to come across files like that (e.g. JSON dump of a database) but when I do it's really annoying that suddenly almost all tools choke on it. It's understandable as it's an uncommon special case, but it's not that difficult to optimize by itself. Extreme file sizes etc are the kind of edge case that has a very niche target audience and can be a pain to handle correctly, so most editors just don't do it.
@@SaHaRaSquad Yes, I do have csv files with super long lines in machine learning, and my editor just doesn't process it lol. What did you code it in? How fast is it compared to vim, emacs and the like?
This is current problem of AI too. You can't transfer to it all the context (context size is limited unless you would teach it by yourself), so even it would be powerfull you still need teach it how you want it perform your work or write all requirements and hope it teched from good sources to apply them in a good way.
My GF put "breadcrumbs" on the (shared) shopping list, and when I was in the aisle* staring at the 20+ options, my mind imploded and I walked away. *I hate how this word is spelled 🤦🏻
Tbh, everything I heard about peogramming before Prime was harmful to my ability to write code. Most sources of programming content have experience with one thing and end up suggesting solutions that are specific to it as general programming solutions. Prime has his blindspots, but the stuff about vim and workflow is so generally applicable that I can't think of a field that doesn't benefit from it.
Quick suggestion: It’d be way easier to consume this if this were also flagged as a podcast (which it looks like you have for a few other vids). Apparently, using YT Music (not… my favorite app) you can skip back/forward a few seconds to replay bits that you missed. That’d be awesome for long form vids like this! Your vids fit well into it as well since it’s mostly talking and every once in a while I’ll miss something.😅
Wrt to the grocery store decision fatigue. Do we not, as consumers, remove decision making by selecting the same brand eveey week? Jam ssems like an exception as we typically buy this less often.
Slack is one of the companies that refuses to hire candidates that can actually fix the product. They're more interested in impressing shareholders by hiring someone who looks way better on paper because they grew up in a privileged wealthy home with a supportive family, but can't actually do their job well.
Science isn't about proving yourself right its about coming up with every way you could possibly be wrong an trying them. When you can't possibly think of any more way you could be wrong, you have done tentative science, and then you ask other people to try to prove you wrong. When nobody can prove you wrong then you have a tentative theory that is no longer just an hypothesis. At no point are you proving yourself right. You can have a correct proof in mathematics, but maths isn't really related to science. ;) Computer Science is a mish mash of Math (correctness) Science (its not wrong) and engineering (it keeps working) and sociology (this is useful to people and they like it enough to use it) A simple A/B test is none of those things.
Been programming my whole life, for money the last 10...I think we can just cut through all the minutia and summarize our experiences the same way. Every boss and workplace eventually sucks (even if its you and your home), every language sucks, every paradigm sucks, and the entire field is more about art than science (there are objective goods, but most code is style and taste). That last bit is a little scary when you remember the modern world is built on software.
Jira is not great, but I like having some system of knowing what to work on next, so it's not completely useless. Slack however, I just don't understand. I genuinely didn't think it was a professional product that a company would actually use. Only place I saw it was on some nonprofit thing. Jira to me is on the same level as an in-house developed ticket system I worked with for a bit and a little worse than Azure DevOps, which isn't perfect either but it's alright. Haven't seen ticket system / planning tool that I actually really like yet
I think there is confusion between "should" and "must". If i say "you should go to the gym", it doesn't mean i'm ordering you to go. If your teacher tells you youre failing the class because you're not doing the homework, and says "you should do your homework", again, its not a mandate. Its advisory. The only people that seem to have problem with programming advice are people that are looking for rules to follow without having to put any thought into it for themselves. Thats not a problem with the advise, its a problem with them.
That described echo chamber is what kept OOP popular for so long. Also, oracle/Sun consciously used that echo chamber to push Java and JavaScript down our throats. If I use my conspiracy ability, I’d say they pushed the VM tech for CIA and NSA reasons.
Or it could be the fact that its core ideas are sound. Keeping data and the functions that operate on that data together. and Gating access to the data so that its can only be manipulated in a controlled manner.
A known unknown isn't something you know but don't know why you know it. It's something that you are aware you don't know. If you forget the combo to a safe you know that there is a combo and you know that you don't know what it is. If you show up to pick up a package on someone's instructions and discover that it is in a safe you have been hit by an unknown unknown. You didn't know that there was a safe therefore you were unaware that you didn't know the combo you needed to open the safe. Once you actually see the safe it becomes a known unknown.
Saying that John Carmack is really good is a massive understatement. He's one of the smartest guys in the programming world. Uncle Bob can suck it with his stupid TDD.
19:58 he is wrong. Chats ARE intrinsically hard. He's like a modern dev who has all the hard stuff of distributed systems abstracted away fro him. Guess what. Discord is using Elixir.
Author : I'm hesitant to write these kinds of posts, because they veer awfully close to flamebait and I really prefer to write things that are strongly factual rather than opinion-based. My stoned ass: But what you consider as facts are just your opnions man
3:39 I don't know shit about NeoVim, but VS Code the greatest? Who the f. Granted, so far I've only been using it for Uni (because we have to), but the amount of times I've gotten some bullshit error that wasn't even an actual error is already unfathomable. Especially that one time where I, for the life of me, couldn't find an error and thus didn't complete my assignment in time, just to find out that god damn VS Code marked a COMMENT as an error and didn't bother telling me about it. It was a comment, there shouldn't have been a god damn error in the first place. This has happened multiple times, with different installs, completely fresh windows, and even on different computers. Fuck VS Code. xD
I hear what he's saying, but newer developers need guidelines to get started. He's basically saying "Just have 10 years experience"...not very practical advice and reeks of elitism.
I disagree..... he is saying just start coding and build something whilst you are learning. you will fail many times but will actual learn much more than any formal school or boot camp can ever teach you.
@@hardcorecode imagine going to a driving school and being told "just start driving" haha. Extreme analogy, I know, but guidelines are helpful for creating a good foundation. Students can then learn through their own experience that some driving rules don't apply 100 percent of the time and there are exceptions to every rule.
The way I like to think about, principles are good if they teach you to consider tradeoffs. For example, instead of "Don't repeat yourself", which is a badly generalized mantra, you should learn "Consider redundancy vs complexity"
I used to think good developers could be made, moulded by experience into wise future mentors. Fifty years on, I now know they are born. The mediocre will always be mediocre.
@@hardcorecode "just start coding and build something"... Start coding what? Build what? If you start something from the weeeery beginning in most cases you just do not know your own possibilities. It's fckng abyss of complexity. And then people like you start giving advises to "just build something". You NEED to know basics to start working. Fundamental knowledge is crucial for you future prospects. So building something without such knowledge can bring you to a very bad place IMO. I myself spent 1,5 years to learns basics of HTML, CSS, JS/TS and couple of frameworks just to START building something.
6:40 Underwear gets dirty in 1 day. Shirts are getting dirty in 1-2 days depending on the outside temperature and activity. Pants... Pants never get dirty. Unless you shit yourself.
There’s a sweet spot about 2-4 years into your programming career when you know everything. I miss those days.
Hot take: Linux kernel was also created for funzies, and people should be doing funzies far more often. You don't get to choose what's gonna become big.
Yes!
thats why Thorvald wanted to call of the OS "Freax" as in Freaks, because only freaks would use a hobby kernel in a serious OS
I think there was a gap in the market. There isn't one for code editors
Lovely take. Even if it's never seen by anyone ever, you did something cool and probably learned a thing or two along the way
I used to do funzies until software development became my job. After 8 hours of programming I don't really want to go home and do more programming.
Just wait till you’ve been coding for 25 years… “wtf is this? A quantum tuple?”
Been programming for 28 years. Lots of different things and jobs. Many changes, many things the same. Glad to see new people thinking about simplifying program stacks. Am enjoying learning RUST for bear metal and for fun, use on old architectures like 68000.
You should write an article on your experiences in context as well :)
I have been doing it for 4 😅 and everything feels new to me
Especially the Design pattern thing I am not at all a fan of OOPS
I’ve been programming for 22 years I have done tons of social gaming, administrative systems, smart building capabilities, all of the parts of a system and roles, I still feel I got too much to learn and that I have millions of lines yet to write 🎉
🐻 metal
A: "It's pronounced sequel!"
B: "No way, it's S-Q-L!"
The Primeagen: "Squeal"
its pronounced squill
A/B/Primeagen testing
squirrel
Having worked in a startup where I was the only senior and the other 3 devs were junior-mid level. I passionately agree with limiting the size of functions. I arrived at the company at the decision of the 3rd app re-write. Upon observation 1) deeply nested class inheritance 2) insanely complex control flow statements...like 4 nested if conditons on average per function 3) Very large functions that made unjustified super() calls to the parent classes like 5 levels up.
The hell was inexplicable. You give a 2 year old a box of markers with no rules and you can bet they'll pop the top off every single one and draw EVERYWHERE, sofa and all. So you give them one marker and limit the drawing to one paper.
We limited the functions to a max of 20 lines. And trust me...the code was much more maintainable and predicatable.
Working with a group of seniors who should 'know better' I would not suggest the advice of limiting the max size of a function, so I can see how people don't get it...but it's all about context...just find the advice that matches your context.
Personally I prefer large functions with all variables documented at the top...In a workspace with others I sometimes have to abandon my own personal beliefs...but that's what I love about science.
Such proscription becomes *reductio ad absurdum*. As every application is mathematically reducible to a function, no application may be longer than twenty lines of code.
@@dpmadness6179 bigger functions == smaller problems
I know your pain, bro.
I'm fine with smaller logic methods, but you have to have some meaning to this and not break the logic at a certain line number because of some stupid rule.
@ctxz9580this is why methods on objects are really nice :D
Loved this one! Especially the points about decision fatigue, and also that bad feeling you get where your intuition from tacit knowledge is telling you this code is a mistake, but you have to go think about it for a while to figure out why.
Learn by failure vs. learn by doing things right. YES YES YES!!!
Some academics are pushing for "fail forward" for kids (or anyone, but mostly kids). Our academic institutions put so much pressure on kids/learners to "get it right the first time." But really, the important thing isn't get it right the first time, but get it *eventually*. I'm 100% with you on the, learn by failure. That's such a better teacher than, take a test and see you failed and now your grade is irreparably harmed.
The half dozen lines of code thing is just insane to me. Can't even comprehend such limits.
I don’t have any hard rules on lines of code in a function, but most functions I write tend to be small.
If someone forced me to me a hard number on it, it would probably be close to that.
But it probably has to do with the fact that I tend to write tests first.
When you decided “I want a function that does X” the you write tests to test the function, there isn’t any room for that function to do anything else.
Uncle Bob in his clean code book, said that when he writes code, all his functions have 4 lines or less in their body.
He showed a Java example, each tunction is just calling other functions, barely doing any wotk.
Around 10 lines is the sweet spot. Any more and a function is not doing one thing but multiple. That means, it should not be one function, but multiple smaller functions. Why? Much, much easier to test and see where the problem is, should a bug appear. Much, much easier to reuse functions and to swap functions around. Try it. Its amazing.
Enforcing arbitrary code line lengths for functions feels pointless. If you're counting how many lines are in a function you're probably thinking about the wrong things.
Instead of wondering how you can shave a few lines off a function to reach an arbitrary goal, instead think about the bigger picture. am I using the right data structures? Does the thing do the thing? Could it do the thing quicker?
Such a limit on coding practice assumes the compiler or, in the case of imperative scripts the bytecode cache, can understand through execution analysis the best way to regenerate the code "blocks" into an optimal runtime. That is the code is automatically reorganised from the "clean" to the "efficient." What is really taking place is the developer is eschewing responsibility for execution efficiency to create "clean code"; a practice which leads to two inevitable results:
1: An optimal runtime is never achieved, resulting in both slow execution and resource hogging. (Carmack's mobile device paradigm)
2: The code becomes a blur of tiny, testable, functions which by design have no context and so become increasingly more difficult to maintain or decide on their continued inclusion once in a context. In other words, the stated goal of creating a maintainable codebase is defeated by the very methods used to create a maintainable codebase. Kafka would be proud.
The whole series is fantastic... you should definitely go through them all (some are shorter than others).
I think the most important take in the article is that there is more value "in specific experience reports or in watching people actually working, as opposed to writing about general principles."
This also answers Prime's point/question at the end: "sometimes you have to decide whether you want to write with nuance vs you write just with general principles" - always take the side of nuance. The idea of general principles may be alluring, but it's ultimately a trap, because the principles most likely won't be general (I think the article makes a strong case for this last point).
taught myself a bit of coding over the past 3-4 years but still debating with myself if it's worth trying to get a junior dev job at 40. This is helping me make a more informed decision, I think. I feel I am attempting the impossible and I would be better served pursuing more realistic goals. Thanks for the content and wish you were on Spotify
the problem with being nuanced is that usually you don't have anything to say beyond "it depends" and you cannot make any decision. sometimes you just HAVE TO do something and you cannot go and measure stuff to be "scientific". it's like with playing any complex game like chess - there are some good practices and "rules" of how to play well. very good players will brake those practices when they REALLY know better at the given position but the rest of the time they will stick to the classic rules.
My first boss after college used to say, “You have to understand the rule before you can break it.”
I really like the article's suggestion that it's more valuable to share specific experiences than to discuss general principles. I think this would avoid, for example, someone who hasn't reached the "break the good practices" stage criticizing something for not being best practice even though their idea of best practice would be worse in that situation.
And if someone is so junior that they can't make a decision about how to approach something without referencing some best practice, then they would just end up butchering their attempt at following the best practice anyway.
@@CamembertDave I believe the problem of our industry may be similar to what happens in medicine or psychology - these subjects are so complex that a proper scientific method is often not enough to know something for sure, you stumble upon many contradictions, lack of replicability, etc... you can produce 10 papers about something and then there will be someone saying "well, I tried and it did not work".
maybe this is actually an idea? maybe instead of trying to find a "cure for everything" we should concentrate on special cases? it will be more difficult than "your funtions should always have 6 lines" but it will be more useful
Yes, as long as it is understood by all parties the "rule" is only applicable in context. However, once that is known and the context understood the rule itself is no longer required.
To say "it depends" must always be followed by the question "on what?" The number of dependent (and dependant-) contexts is rarely more than two, so to be upset by the requirements of nuance and context is to create an artificial environment to justify, not prove the validity of, the proscribed application of the rule.
Exactly. I absolutely HATE people who say "You shouldn't _always_ follow principles." or "You should do this _this_ way", but never elaborate on the specific cases of it. Nuance is all well and good, but I KNOW THAT. I just want to know how specific people do specific things, and I can draw my own conclusions from it. I too have a brain. This article had a lot of words, but said nothing. Nothing that was actually useful.
Ironically, this article started out by saying most practices are somehow wrong and most advices are useless. Then what do YOU propose? What have YOU contributed? **Crickets** .
two day old pants? you gotta pump those numbers up. those are rookie numbers.
Regarding decision fatigue, most AB-tests I've seen in ecommerce indicate that fewer choices is better for shipping alternatives. However, this also depends on what is sold. As such, AB-testing is always necessary to get the best result.
For me, decision fatigue is a sign of burnout. Or at least a stressful period which I'll call "micro-burnout" cause I don't have a better word and also because micro- is the not new prefix.
Yep to hear advice you have to know the context in which to apply it. Had a mentor who was on the level of John Carmack but because I was a novice I had no idea what he was talking about. At the time he just sounded rude and inconsiderate. 5 years later what he was saying makes since but he was still a jerk because he lacked patience to explain his reasoning.
Man, I have the same experience getting dressed. I buy very similar packs of T-Shirts and Jeans. I have nice shirts for when it matters, but most days it's pop-the-stack on the way to the bathroom.
6:17 lol are we the same person? I call my dressing regiment "the conveyor belt". It's a fully automated system, where all of my daily/work clothes are being worn on a modified FIFO schedule. No decisions, no exceptions. I simply wear the next thing that's on the hanger at the front of the queue. If at the end of the day the shirt is still good, it goes back to it's 1st spot to be worn again the next day. That cycle repeats until it needs to go in the laundry. All freshly washed clothes go towards the back of the hanger queue. Repeat.
As a result, my clothes look great cos I never over-wear anything (as clothes that are being washed too often quickly turn to shit). All I had to do is make sure that all of my pants and shorts match my shirts, tshits and sweaters. Easy peasy. Never have to make any dressing decisions again.
And I also consistently look good, every single day. Sure, I may not look like some style icon (nor do I ever want to, F kill me if I ever do), but I do look clean & well put together. That's all that I want my clothes to do - make me look good, but mostly get out of the way and don't waste my time.
in my unqualified opinion, i believe decision fatigue is something that kicks in when you dont want to make decisions, there are times you want to make decisions it just isnt all the time.
peeking through the looking glass into the mirror world, seeing the familiar shapes on cave walls... knowing that truly we know nothing and most of what we think we know isn't worth the gunpowder to blow it up.
I run into this all of the time, most advice on programming and on life generally sets you back. Using your brains and utilizing your first principled experience is the only way to understand the world around you, anything short of that will just serve to hurt you.
I'm not sure how much of it is intentional, as if once you have enough money to last a few lifetimes that the only sport left is to invert reality and give really bad advice to watch the masses squirm, or how much it is just stupid people parroting stupid things that bring them comfort and these are taken to be 'truths' of our age. The cause doesn't matter, as it could be a combination of things, what does matter is the vast amounts that fall victim to this in almost all ways, all the time... and it's always been this way and it will always be this way.
If you think slack is bad, try teams.
Slack is just a skill issue, but Teams is downright malicious. Like when you copy a message you get the name of the user despite not even having selected it. Or the auto away that you can't turn off.
Slack is bad because I will spend more time dealing with random Slack alerts than productive work.
Teams is superior because I already uninstalled it.
"I can write that code in a tweet. JUST PUT IT IN.", might be the funniest thing I've heard this week. Thank you for that. xD
Really good article. Once you're decades in it's all about focussing on the specific domain problem, users, customers, inertia, coworkers, finances, legal details, and so on. The tech is whatever you use to solve those problems however you need to do so. But I knew they were going to have done a lot of R&D when they pointed out TDD as something people get too invested in xD
So slack... I was able to use a very old recovery code when updating MFA (about the 4th time since) was bugging out... those recovery codes should obviously have been invalid for years at that point.
I think that’s why I’m enjoying zero to production so much because it doesn’t target people just learning programming. Also, as a college student with zero industry experience it gives me a perspective of how someone in the industry would go about doing things.
What do you mean? What's zero to production?
@@LycéeDExcellence-r2mit's a rust book
@@LycéeDExcellence-r2m zero to production in rust is a book that is often recommended in this channel / twitch to learn Rust
@@LycéeDExcellence-r2mit is a book that teaches backend dev in Rust by walking you through a project (creating a newsletter).
They wrote an editor in 100 hours? Not bad.
I'm working on my own editor right now and I'm definitely above that number, though I also use almost no libraries and added some features that were a nightmare to implement. Very fun kind of project though.
What special features were you missing in other text editors?
@@jaideepshekhar4621 For one I made the keybinding system just as flexible as Vim's but with a better solution for certain edge cases that made the code a lot more complicated (there's a reason other editors don't do it).
It can also handle more complicated UTF-8 symbols without glitching and doesn't slow down with super long lines (long lines can make even Vim near unusable).
Also it is very fast, though that luckily just happened by itself for the most part.
It's not necessarily about features that don't appear in other editors but just about having a lightweight, fast setup that works exactly how I want and that I have full control over. And of course fun.
@@SaHaRaSquad That's great! But why do you have super long lines?
@@jaideepshekhar4621 It is rare to come across files like that (e.g. JSON dump of a database) but when I do it's really annoying that suddenly almost all tools choke on it. It's understandable as it's an uncommon special case, but it's not that difficult to optimize by itself.
Extreme file sizes etc are the kind of edge case that has a very niche target audience and can be a pain to handle correctly, so most editors just don't do it.
@@SaHaRaSquad Yes, I do have csv files with super long lines in machine learning, and my editor just doesn't process it lol.
What did you code it in? How fast is it compared to vim, emacs and the like?
When I started working solo, it was definitely more professional than it is now at the company I'm at lol
This is current problem of AI too. You can't transfer to it all the context (context size is limited unless you would teach it by yourself), so even it would be powerfull you still need teach it how you want it perform your work or write all requirements and hope it teched from good sources to apply them in a good way.
My GF put "breadcrumbs" on the (shared) shopping list, and when I was in the aisle* staring at the 20+ options, my mind imploded and I walked away.
*I hate how this word is spelled 🤦🏻
Tbh, everything I heard about peogramming before Prime was harmful to my ability to write code. Most sources of programming content have experience with one thing and end up suggesting solutions that are specific to it as general programming solutions.
Prime has his blindspots, but the stuff about vim and workflow is so generally applicable that I can't think of a field that doesn't benefit from it.
"and remember ... I've used Jira" should be on a medal we give to people.
Decision fatigue =/= no decision.
Quick suggestion: It’d be way easier to consume this if this were also flagged as a podcast (which it looks like you have for a few other vids). Apparently, using YT Music (not… my favorite app) you can skip back/forward a few seconds to replay bits that you missed. That’d be awesome for long form vids like this! Your vids fit well into it as well since it’s mostly talking and every once in a while I’ll miss something.😅
In the standard TH-cam app you can double tap on the left/right side of the video to go back/forward ten seconds.
Wrt to the grocery store decision fatigue. Do we not, as consumers, remove decision making by selecting the same brand eveey week? Jam ssems like an exception as we typically buy this less often.
Slack is one of the companies that refuses to hire candidates that can actually fix the product. They're more interested in impressing shareholders by hiring someone who looks way better on paper because they grew up in a privileged wealthy home with a supportive family, but can't actually do their job well.
I write one function my whole life with full context.
"John Carmack is really, really good" fits very well with today's annversary :D
this is true, and when write code for too long i end up getting tired and lazy with the context, gotta fix that lmao
"The frontier is the place to go mining for new ideas, but it's 1% gold and 99% mud."
Science isn't about proving yourself right its about coming up with every way you could possibly be wrong an trying them. When you can't possibly think of any more way you could be wrong, you have done tentative science, and then you ask other people to try to prove you wrong. When nobody can prove you wrong then you have a tentative theory that is no longer just an hypothesis. At no point are you proving yourself right. You can have a correct proof in mathematics, but maths isn't really related to science. ;)
Computer Science is a mish mash of Math (correctness) Science (its not wrong) and engineering (it keeps working) and sociology (this is useful to people and they like it enough to use it)
A simple A/B test is none of those things.
Lol, i also have a bug in slack that drives me crazy. Sometimes my mouse cursor just becomes invisible.
Been programming my whole life, for money the last 10...I think we can just cut through all the minutia and summarize our experiences the same way. Every boss and workplace eventually sucks (even if its you and your home), every language sucks, every paradigm sucks, and the entire field is more about art than science (there are objective goods, but most code is style and taste).
That last bit is a little scary when you remember the modern world is built on software.
Never once had an issue with Slack lol oh well.
This video is gold
Does anyone know if Vim development has completely stalled since the death of Moolenaar?
I do the exact same thing with my clothes 100%
Jira is not great, but I like having some system of knowing what to work on next, so it's not completely useless. Slack however, I just don't understand. I genuinely didn't think it was a professional product that a company would actually use. Only place I saw it was on some nonprofit thing. Jira to me is on the same level as an in-house developed ticket system I worked with for a bit and a little worse than Azure DevOps, which isn't perfect either but it's alright. Haven't seen ticket system / planning tool that I actually really like yet
I think there is confusion between "should" and "must".
If i say "you should go to the gym", it doesn't mean i'm ordering you to go.
If your teacher tells you youre failing the class because you're not doing the homework, and says "you should do your homework", again, its not a mandate.
Its advisory.
The only people that seem to have problem with programming advice are people that are looking for rules to follow without having to put any thought into it for themselves.
Thats not a problem with the advise, its a problem with them.
That described echo chamber is what kept OOP popular for so long. Also, oracle/Sun consciously used that echo chamber to push Java and JavaScript down our throats. If I use my conspiracy ability, I’d say they pushed the VM tech for CIA and NSA reasons.
Or it could be the fact that its core ideas are sound.
Keeping data and the functions that operate on that data together.
and Gating access to the data so that its can only be manipulated in a controlled manner.
@@khatdubellVon Neumann came back from the dead
A known unknown isn't something you know but don't know why you know it. It's something that you are aware you don't know. If you forget the combo to a safe you know that there is a combo and you know that you don't know what it is. If you show up to pick up a package on someone's instructions and discover that it is in a safe you have been hit by an unknown unknown. You didn't know that there was a safe therefore you were unaware that you didn't know the combo you needed to open the safe. Once you actually see the safe it becomes a known unknown.
💯22:58 so true
Known unknowns is when you are aware there are things you do not know.
Yup, in the real world there are not too many "factual" truths but only strong believes which are just more convincing opinions to ourselves
Saying that John Carmack is really good is a massive understatement. He's one of the smartest guys in the programming world. Uncle Bob can suck it with his stupid TDD.
I didn't draw any conclusions from the article. It's just some yada yada "nothing is true, everything is permitted" (BTW, I have 11 YOE).
19:58 he is wrong. Chats ARE intrinsically hard. He's like a modern dev who has all the hard stuff of distributed systems abstracted away fro him. Guess what. Discord is using Elixir.
CodeAesthetic is very much in the "should" camp to me too. I also heard a rumor that they work at Slack, which wouldn't be surprising if true.
I’ve been using Reflection in C# as well to understand which assemblies are messing up for me . Hasn’t been good 😂
0:32 bruh, its SQL
I use jira and slack, welcome to my world. We had IRC, and somehow the powers that be.. somehow thinks SLACK IS BETTER ? @#($(@(#$
Start youtube channel reading articles
>--Meme image--<
Can't read
This... Hurts
"Meme Image Not Required" should be a meme.
I use jira and slack
Excellent. Whilst we are on the subject, I have a bridge for sale in Brooklyn.
never seen the word "veer" before?
was an unusual usage of the word
@@rileyfletchit’s a very normal usage of the word
@@rileyfletch How do you figure that?
Prime, in general, is poor at reading.
As, frankly, are a lot of his followers.
Is there any problem with that?
I would use slack over Microsoft teams! Teams text editing is so much worse!
I’m sorry but Sublime Text is the greatest editor of all time 😅
Author : I'm hesitant to write these kinds of posts, because they veer awfully close to flamebait and I really prefer to write things that are strongly factual rather than opinion-based.
My stoned ass: But what you consider as facts are just your opnions man
Just 12 years? :))
I'm up to thirty-eight years. I just figured out that it is important not to try to spend time figuring it out.
3:39 I don't know shit about NeoVim, but VS Code the greatest? Who the f. Granted, so far I've only been using it for Uni (because we have to), but the amount of times I've gotten some bullshit error that wasn't even an actual error is already unfathomable. Especially that one time where I, for the life of me, couldn't find an error and thus didn't complete my assignment in time, just to find out that god damn VS Code marked a COMMENT as an error and didn't bother telling me about it. It was a comment, there shouldn't have been a god damn error in the first place. This has happened multiple times, with different installs, completely fresh windows, and even on different computers. Fuck VS Code. xD
"squeal" ???
Yeah but not all opinions are right haha. “Vscode is the best” welp I’m out 😂
nice use of the grammerly app
100 hours of work to write your own vim. Is that a burn or what?
Add in the word "only" and the statement becomes one of praise not derision. In one comment you have proven the need for context and nuance.
Got here early 😁
bingo bango bongo, bish bash bosh
hBOMBerguy
Good article I liked it
STOP BAITING ME PRIME
I hear what he's saying, but newer developers need guidelines to get started. He's basically saying "Just have 10 years experience"...not very practical advice and reeks of elitism.
I disagree..... he is saying just start coding and build something whilst you are learning. you will fail many times but will actual learn much more than any formal school or boot camp can ever teach you.
@@hardcorecode imagine going to a driving school and being told "just start driving" haha. Extreme analogy, I know, but guidelines are helpful for creating a good foundation. Students can then learn through their own experience that some driving rules don't apply 100 percent of the time and there are exceptions to every rule.
The way I like to think about, principles are good if they teach you to consider tradeoffs. For example, instead of "Don't repeat yourself", which is a badly generalized mantra, you should learn "Consider redundancy vs complexity"
I used to think good developers could be made, moulded by experience into wise future mentors.
Fifty years on, I now know they are born. The mediocre will always be mediocre.
@@hardcorecode "just start coding and build something"... Start coding what? Build what?
If you start something from the weeeery beginning in most cases you just do not know your own possibilities. It's fckng abyss of complexity.
And then people like you start giving advises to "just build something".
You NEED to know basics to start working. Fundamental knowledge is crucial for you future prospects. So building something without such knowledge can bring you to a very bad place IMO.
I myself spent 1,5 years to learns basics of HTML, CSS, JS/TS and couple of frameworks just to START building something.
first
second
6:40 Underwear gets dirty in 1 day. Shirts are getting dirty in 1-2 days depending on the outside temperature and activity. Pants... Pants never get dirty. Unless you shit yourself.
Happy birthday Grace Hopper!!! Everyone go learn some COBOL today
🦾🥳
Coincidentally, I just put in production a COBOL CGI script for fun.