@@edwardmitchell6581 cannot be the first step, its somewhere in the middle, how do you even find patterns if all you have worked with is python or html
Basically all the variation of SQL commands in different SQL platforms, they may be worded differently but the principle behind each concept is still the same
Yeah it's cringe when people say they know 5 programming languages as if that's like learning a real language. Programming languages are just tools we use. Engineering is more about general problem solving. Writing code is the easy part. It's also why I say AI isn't a threat; it's just going to improve/speed up the writing code part.
I agree 101%. I for the past two years have been trying to learn multiple languages C, C++, C#, JAVA, Javascript, HTML,CSS,Javascript, React, Angular, Vue, React Native, Flutter etc.... But what i found out is that i have just wasted my time trying to memorize the syntax. Syntax doesn't matter that much (of course it does but ....). Jumping from this lang to that lang did nothing but waste my time. I don't even the basic fundamentals building blocks of programming in general and I went to sticking syntax in my mind. You are a genius bro...!
I think he has a course on his website. Now I'm more tempted in actually buying lifetime access, since I want to get stronger in this and DSA. If anyones does have any videos out there drop the links, much appreciated.
@@natescode "seeing patterns" as he explains it is one thing. OOP design patterns are whole another valley. Just saying. Don't confuse the two things. OOP design patterns are just "some patterns" and definitely NOT the most important ones.
This is why I push back on the "What's your stack?" question. It's fine if you're asking where your primary dev experience is, but it loses meaning as you gain experience.
This was a moment of epiphany for me as well, and I can't point to exactly when I started thinking this way. However, in much the same way, there was a time when everything "clicked" yet again, and I began thinking about technologies which were better suited to the patterns I wanted to implement. This helped not only in tech selection, but in allowing me to more deeply understand the tech stack I was often stuck with for a given project, and work around those limitations. It's a continuous cycle of learning :)
What your calling patterns which is so generic, you could call it similar concepts, Iike Features, Capabilities, etc. 👏 Similar concepts exist in many Technologies. Organize them into Tables, Trees, Mind Maps, etc. 💡 Data is beautiful. I like to gather and organize information as I learn 👍 Graph Knowledge Bases seem like the best way to make sense of it all, it gets so complicated. Nodes represents Named Entities (Languages, Databases, Paradigms, Features, etc) Edges (lines between the Notes) represent relationships. Ex: [Python]------>> has paradigm >>-----[OOP-Object oriented programming, Functional Programming, etc ] ❤
Finally someone can make what I observe into coherent words. I got this particular eyes open when I was forced to learn backend due to business circumstances and switch language and platform from Kotlin to Go. It opens my eyes because recognizing pattern is my only handholding when doing the switch. But now? Yeha I'm flying. I even have personal codebase that compiles into 1 portable binary but have 4 different language in it and use incredibly esoteric stack. But it still boils down to just MVC.
Yep, with backend frameworks, they're all pretty similar: The app listens for requests, dispatches them to the appropriate request handler, runs some tasks for that request, then sends back a response. You might have additional services that need to be handled before or after the request is dispatched, so depending on your language and programming paradigm, this is handled either with middleware functions or dependency injection in OOP. That, and knowing the HTTP spec is pretty much all you need to know at a high level. Maybe you might need to learn concurrency using coroutines, threading, spawning processes for high performance tasks but there's not a lot to know at that level.
love these types of videos! im a noob and have tried to make it a point to always prioritize patterns and fundamentals, the things I can take anywhere. Sometimes I'm a bit confused because I get lazy and wish there was some master list lol.
00:02 Focusing on patterns over technical details leads to new level of consciousness 01:02 Understanding type differences in programming languages 02:00 Seeing things in terms of patterns rather than technical details opens your third eye. 03:02 Focus on web hook pattern for intelligent communication 03:59 Patterns have similarities, like The Observer pattern and publisher subscriber pattern. 05:01 Focusing on patterns over technologies makes learning easier. 05:57 Static typing transcends just programming languages 06:57 Focusing on patterns helps in solving repeated problems efficiently. Crafted by Merlin AI.
2:15 Even when you take away patterns from a language (programming or otherwise), you have a feeling that eventually can be expressed in a combination of other features used in a specific order. That's 1984 (and learning about software engineering) in a nutshell.
Same goes for any programming language, when you undesrstand the problem pattern and you already know how to solve it, the rest is translating your thoughts to the progtamming language
Fantastic video. A key milestone of developmemt in any discipline is gaining enough fundamental knowledge that you can zoom out and consider the entirety of the problem, rather than being stuck at ground level in the implementation details.
It introduces new concepts that's why Someone who know haskell finds rust easier or vice versa, coz there's some similarities and functional patterns in these languages
@@ajml_hnter I’ve been working almost solely with Rust for about 2 years now and most hurdles didn’t come from functional patterns but from the ownership model. You can’t really not understand it in depth to work with the language. Maybe that’s just my experience and what I’ve work with before.
@@cryptonative Yeah it's a pretty different model than other languages, most languages are garbage collected and rust brings a new way to think about things, there's a lot of other things that really different in rust. I think future programming languages will adopt the good concepts in rust and it will turn in to more of a pattern
Love this! I might also add that the ability to use different patters against each other, is what differentiates the good from the best. The ability to hold multiple patterns and architectural models in your mind, in addition to consider the future roadmap and then give a educated response is really difficult.
@@h0ph1p13Yes, I have 2 year experience in Python /Javascript. Now I am Learning Golang... I found it's pretty easy to switch once you know the patterns.
One similar pattern that has helped me level up is declarative vs imperative programming. Declarative programming paradigms like SQL, CSS, HTML makes writing and reading code so much easier OR the reason why React has superior DX compared to other frameworks. Similarly, IOC or Inversion of Control principle. It took my so much time to realize why it is so fundamental and important. It has helped me design better APIs when I'm authoring a library.
I think this explains what I've been experiencing recently. I'll learn something new and be like "wait but isn't that just like x, but a little different" and its because of this exact scenario where patterns are repeating in different, but similar ways. Thanks for this video!
this is what I've been telling people for years. the more time you put into familiarizing yourself with software development, the more you identify first principles, the more you start to think in those primitives and variations thereof rather than higher level contexts like specific language details. at some point, you stop seeing code, and you start thinking in abstract units of computation, the patterns you speak of. it's like with language you start with coarse words and then learn to break them down to letters, and then you start to learn to process them as lexemes, morphemes, phonemes, and other grammatical units (even if only subconsciously). but that's the point of gaining understanding of a thing. you don't have to muck about in the inefficient and artificial high level idioms and "human friendly representations" and instead offload those to the subconscious so you can focus on the things you're actually trying to work on. programs are just machines after all. oh and proofs, a la the good ol' Curry-Howard Isomorphism. but the point of these structures is that they are continuously divisible down to their primitives, and at the end of the day all they are is just a whole bunch of those primitives stacked on each other in specific configurations (or shapes if you will) which interlink into even more specialized configurations until all interlinking is exhausted and what you have left is your beautiful piece of algorithmic machination yeah patterns are pretty lit. groups of primitives. the only thing I'd add is that it's really important that you have an exhaustive comprehension of those primitives, or at least as thorough as you can possibly manage. Just never let yourself believe that you've finally figured out everything there is to know about anything, and you'll never stop running out of things to know 😊
I see 2 patterns: 0 and 1 the thing that generally annoys me about people obsessing over strong vs dynamic types, is that at the end of the day, all that's being stored is 0s and 1s. The physical hard drive doesn't care about data types. While you can use prefixes to represent a data type in the hard drive, and it is helpful when programing to know what kind of data you are dealing with, it's still just being stored as 0s and 1s. It's also being sent over the internet as 0s and 1s. at the end of the day, the client using the website doesn't care whether I used javascript, python, or c++, as long as the content loads fast enough from their perspective and looks good. This is also why I'm starting to spend more time with learning front-end development, because that's what the user will actually see and care about. That and AI will probably have the advantage on taking back-end jobs, compared to front-end jobs where creative design has an advantage.
0:19 what's difference in static-dynamic vs strong-weak typing? * static: hard coded types, right? * strong: unchangeable types, right? * does dynamic typed means inferred typing? * does weak typing means variable can change the type of stored value?
No, "inferred" is not "dynamic". Static means everything is decided *at compile-time,* with some types being explicit, and others being inferred. Dynamic means that types can only be decided at run-time. Weak means that a type mismatch (whether at compile-time or at run-time) *is not an error.* Instead, the language will try to auto-cast the variable to the type it needs to be.
This is so true brother. Understanding these concepts has made me almost “language agnostic” in my career. Yes I have preferences. But if u locked me in a room, and said I could not leave until I finish an app in a programming language I’ve never written in, I would eventually make it out.
Loved this video as a cs undergrad 😊! Thanks @NeetCode. Can you possible list the themes you're mentioning in this video as I'd like to dig deeper and learn these patterns myself in my personal time please?
Indirection is what programming is Granulation is what good programming is Then there is computabity and efficiency which is the rest of computer science
2:45 personally, i too can look at C code and immediately see what they are trying to achieve. I feel like it kind of enabled me to program a whole lot faster, since i can just write C code like im speaking my ideas, instead of trying to figure out why i doesnt compile or whatever.
It's no coincidence. Strong, static typing means things have to be well defined when the program compiles - it is quite literally a barrier to many silly mistakes that human brains are prone to make. I write most of my code in C# or SQL for work, but occasionally I have to use Python. And much as I love its simplicity for a quick script, building anything large or complex in it is poison to me. So many silly bugs that you have no chance of spotting without a lot of tedious testing. Strongly Typed for life. :D
In the MBTI this is intuitive vs sensing. Intuitive personalities zero in on patterns. Sensing personalities absorb and analyze details. The clash between the two can be frustrating. When I see the pattern, I don't want to go over every last detail. That's how I learned over 30 programming languages. I stopped worrying about the details and now I can make usable software in so many different technologies. Sure, a code review may have 1000 nitpicks (if it's something I'm less experienced with), but the end user is never going to care about those.
This was a banger! ngl, I was worried it's gonna be another "1" + 2 video, but it really was great! You should do more design patterns, software architecture, system design videos, this video was gold and you explained things really well.
patterns are difficult to forget because each of them have a dedicated neural network in your brain, ready to be active while syntax gets stored in short term memory
Your video is not long enough. Talk more about these patterns please. This literally opened my mind on what programming language should I use for a specific project and WHY I should use it. Also this video can be a "great divider" - to divide people into two categories: A Junior Software Developer/Networker/Engineer and a Senior Software Developer/Networker/Engineer.
The code we write is executed on some piece of hardware and the means by which that execution occurs is extremely important to understand. This is the only way that we can build systems that are performant, have conservative memory usage and are power conscious. Code that is too focused on patterns tends to be very slow and use a lot of memory and power. It is part of the reason that our software industry is in such a poor State and why programs of the past ran so much faster than they do today.
Great premise and video!!! Although one thing needs to be corrected - you can set up schema on each collection in MongoDB (using jsonschema format) and it will automatically perform types validation. It will be much faster than validation on application side but there a possible downside - possible unnecessary roundtrips to db.
I dare you to make a video on one of the consensus algorithms 😅 For example, Paxos or Raft :) Then consistent hashing. Distributed transactions, 2-way, 3-way commits, saga pattern. Jitterred retry to avoid thundering herd problems. Rate limiting using token buckets. Short circuiting. ...
Great video brother! Concise, informatuve & clear guidelines to becoming a software engineer. I look for ward someday to a fantastic conversation with you. Have a good one, cheers!
JavaScript, it is not a bug, it is a feature you have to know, then you can work with it. Knowing quirks of the language is the most important to prevent unexpected results
I had the same thing with patterns, when I heard first time about event-driven micro-service architecture. for me as a front-end guy it was like "oh, back-enders invented redux, cool"
This is the best advise someone could give you relating web dev and also the most difficult one to achieve. Just let experience work for you: be patient and have this main idea always in mind and keep going. You won't get a third eye though :p
I’d say it’s still good to know the oddities of each language you use and also learn how to write the code according to the conventions. Don’t write Go as if it was Typescript and vice versa.
when you are tired of learning every new framework/language that come out... focus on pattern!! (jk, my college taught me to focus on patterns before I step into the job market, so I know this a long time already)
I have this same exact philosophy about engineering and technology but I'm getting depressed that jobs now a days are looking for specialists in one thing more than generalists. It's like big companies and even startups don't want generalists like in the past, for the different opinions they might generate inside the organization and the disruption that might create. Like conpanies that use mostly python don't like proffesionals that comes from a C or Java background, for some reason, even though you might be familiarized with the python ideas from experience with linux scripting and scientific analisys. Conceptual knowledge is not that much apreciated any more. You just need to deliver fast and be perfectly aligned with the company's ideals.
Yeah, unfortunately that's the big missing piece when people talk about being a generalist/knowing things conceptually,I agree with the sentiment, but then I go to look at job requirements and most I see is very specific knowledge, it then makes sense to be a specialist in a language
need more videos like this, I mean you could have kept going, but honestly my fundamental understanding of this stuff..... supper shaky!!!!, This helped a lot, Thanks bro
This was a great video. Thank you so much for that. I'm a junior developer and struggling to just keep learning new languages, but after watching this, I think I should focus on learning about patterns instead of new languages. Where can I find material about this? Can you help me?
Anyone else in the same boat after opening the third eye, and then have a bunch of junior developers create a mess of everything. And then forces you back to getting into the coding details? Feelsbadman.
Pattern recognition is almost the last step to being an expert. And this applies to any discipline
For me, it's always been the first an only step. Discipline is the last step.
@@edwardmitchell6581 cannot be the first step, its somewhere in the middle, how do you even find patterns if all you have worked with is python or html
7 years of SE explained in 7 minutes, thank you brother
What SE means?
@@caiomucio9237 software engineering i think?
@@nwseooo thanks bro
Ok.
He needs a 10-page book of cheat sheets. I'd pay $49 for it.
"Patterns are pretty difficult to forget" great quote
It hit me so hard... It's unbelievable that he's right about this.
as is a special woman....
Basically all the variation of SQL commands in different SQL platforms, they may be worded differently but the principle behind each concept is still the same
@@scapegoat079 Yeah
C : Static, Weak, Non-GC, Manual-mem
Rust : Static, Strong, Non-GC, Mem-safe
Java : Static, Strong, GC
Python : Dynamic, Strong, GC
JS : Dynamic, Weak, GC
What's GC mean?
@@5958637 garbage collector
Good question. I also want to know @@5958637
@@5958637
Garbage Collector.
@@5958637 Garbage collection. Garbage collection basically manages the memory automatically.
Yeah it's cringe when people say they know 5 programming languages as if that's like learning a real language. Programming languages are just tools we use. Engineering is more about general problem solving. Writing code is the easy part. It's also why I say AI isn't a threat; it's just going to improve/speed up the writing code part.
Hi there I'm from the future and I'm telling you, indeed AI appeared to be threat.
I agree 101%. I for the past two years have been trying to learn multiple languages C, C++, C#, JAVA, Javascript, HTML,CSS,Javascript, React, Angular, Vue, React Native, Flutter etc.... But what i found out is that i have just wasted my time trying to memorize the syntax. Syntax doesn't matter that much (of course it does but ....). Jumping from this lang to that lang did nothing but waste my time. I don't even the basic fundamentals building blocks of programming in general and I went to sticking syntax in my mind. You are a genius bro...!
why would you even try to learn C, C++, C#, JAVA, and React at the same time
@@takeuchi5760 os, abstraction layer API, server and to-do list to keep track of everything. Easy xd
This is pure gold. when you do look at things as concepts or patterns, a lot of things become very clear. Thank you
Wow.. need a detailed video on identifying each of these patterns.. thank you
I think he has a course on his website. Now I'm more tempted in actually buying lifetime access, since I want to get stronger in this and DSA. If anyones does have any videos out there drop the links, much appreciated.
Just Google design patterns.
experience, same as leetcode
there are also books about design patterns
@@natescode "seeing patterns" as he explains it is one thing. OOP design patterns are whole another valley. Just saying. Don't confuse the two things. OOP design patterns are just "some patterns" and definitely NOT the most important ones.
I guess this channel becomes more like the primetime with less jokes but more infos - love it
This is why I push back on the "What's your stack?" question. It's fine if you're asking where your primary dev experience is, but it loses meaning as you gain experience.
This was a moment of epiphany for me as well, and I can't point to exactly when I started thinking this way. However, in much the same way, there was a time when everything "clicked" yet again, and I began thinking about technologies which were better suited to the patterns I wanted to implement. This helped not only in tech selection, but in allowing me to more deeply understand the tech stack I was often stuck with for a given project, and work around those limitations.
It's a continuous cycle of learning :)
What your calling patterns which is so generic, you could call it similar concepts, Iike Features, Capabilities, etc. 👏
Similar concepts exist in many Technologies. Organize them into Tables, Trees, Mind Maps, etc. 💡
Data is beautiful. I like to gather and organize information as I learn 👍
Graph Knowledge Bases seem like the best way to make sense of it all, it gets so complicated.
Nodes represents Named Entities (Languages, Databases, Paradigms, Features, etc)
Edges (lines between the Notes) represent relationships.
Ex: [Python]------>> has paradigm >>-----[OOP-Object oriented programming, Functional Programming, etc ] ❤
Please dive deeper into this video!
A hour long video in this subject would be amazing!!
Finally someone can make what I observe into coherent words.
I got this particular eyes open when I was forced to learn backend due to business circumstances and switch language and platform from Kotlin to Go.
It opens my eyes because recognizing pattern is my only handholding when doing the switch.
But now? Yeha I'm flying. I even have personal codebase that compiles into 1 portable binary but have 4 different language in it and use incredibly esoteric stack.
But it still boils down to just MVC.
Yep, with backend frameworks, they're all pretty similar: The app listens for requests, dispatches them to the appropriate request handler, runs some tasks for that request, then sends back a response. You might have additional services that need to be handled before or after the request is dispatched, so depending on your language and programming paradigm, this is handled either with middleware functions or dependency injection in OOP. That, and knowing the HTTP spec is pretty much all you need to know at a high level. Maybe you might need to learn concurrency using coroutines, threading, spawning processes for high performance tasks but there's not a lot to know at that level.
I love how short and precise your videos are. Straight to the point, and full of wisdom.
love these types of videos! im a noob and have tried to make it a point to always prioritize patterns and fundamentals, the things I can take anywhere. Sometimes I'm a bit confused because I get lazy and wish there was some master list lol.
Microsoft has a list of design patterns. Many many resources exist already. Just takes practice
00:02 Focusing on patterns over technical details leads to new level of consciousness
01:02 Understanding type differences in programming languages
02:00 Seeing things in terms of patterns rather than technical details opens your third eye.
03:02 Focus on web hook pattern for intelligent communication
03:59 Patterns have similarities, like The Observer pattern and publisher subscriber pattern.
05:01 Focusing on patterns over technologies makes learning easier.
05:57 Static typing transcends just programming languages
06:57 Focusing on patterns helps in solving repeated problems efficiently.
Crafted by Merlin AI.
2:15 Even when you take away patterns from a language (programming or otherwise), you have a feeling that eventually can be expressed in a combination of other features used in a specific order.
That's 1984 (and learning about software engineering) in a nutshell.
I love your passion and energy, and the willingness to convey this on RUclips. Well said.
Same goes for any programming language, when you undesrstand the problem pattern and you already know how to solve it, the rest is translating your thoughts to the progtamming language
THIS! This is why I don't care if I don't know X technology. I can pick it up very quickly once I understand the fundamental concepts that tool uses.
Fantastic video. A key milestone of developmemt in any discipline is gaining enough fundamental knowledge that you can zoom out and consider the entirety of the problem, rather than being stuck at ground level in the implementation details.
Man, this was so needed. Thanks for breaking this down so simply.
Now try Rust
or haskell
It introduces new concepts that's why
Someone who know haskell finds rust easier or vice versa, coz there's some similarities and functional patterns in these languages
@@ajml_hnter I’ve been working almost solely with Rust for about 2 years now and most hurdles didn’t come from functional patterns but from the ownership model. You can’t really not understand it in depth to work with the language. Maybe that’s just my experience and what I’ve work with before.
@@cryptonative Yeah it's a pretty different model than other languages, most languages are garbage collected and rust brings a new way to think about things, there's a lot of other things that really different in rust. I think future programming languages will adopt the good concepts in rust and it will turn in to more of a pattern
Now try c
Typescript propaganda confirmed.
Love this! I might also add that the ability to use different patters against each other, is what differentiates the good from the best. The ability to hold multiple patterns and architectural models in your mind, in addition to consider the future roadmap and then give a educated response is really difficult.
Please make separate videos for each patters, it will help a lot.
Just learn two programming languages. You will start seeing the pattern.
@@h0ph1p13Yes, I have 2 year experience in Python /Javascript. Now I am Learning Golang... I found it's pretty easy to switch once you know the patterns.
One similar pattern that has helped me level up is declarative vs imperative programming. Declarative programming paradigms like SQL, CSS, HTML makes writing and reading code so much easier OR the reason why React has superior DX compared to other frameworks.
Similarly, IOC or Inversion of Control principle. It took my so much time to realize why it is so fundamental and important. It has helped me design better APIs when I'm authoring a library.
I think this explains what I've been experiencing recently. I'll learn something new and be like "wait but isn't that just like x, but a little different" and its because of this exact scenario where patterns are repeating in different, but similar ways. Thanks for this video!
this is what I've been telling people for years. the more time you put into familiarizing yourself with software development, the more you identify first principles, the more you start to think in those primitives and variations thereof rather than higher level contexts like specific language details. at some point, you stop seeing code, and you start thinking in abstract units of computation, the patterns you speak of.
it's like with language you start with coarse words and then learn to break them down to letters, and then you start to learn to process them as lexemes, morphemes, phonemes, and other grammatical units (even if only subconsciously). but that's the point of gaining understanding of a thing. you don't have to muck about in the inefficient and artificial high level idioms and "human friendly representations" and instead offload those to the subconscious so you can focus on the things you're actually trying to work on.
programs are just machines after all. oh and proofs, a la the good ol' Curry-Howard Isomorphism. but the point of these structures is that they are continuously divisible down to their primitives, and at the end of the day all they are is just a whole bunch of those primitives stacked on each other in specific configurations (or shapes if you will) which interlink into even more specialized configurations until all interlinking is exhausted and what you have left is your beautiful piece of algorithmic machination
yeah patterns are pretty lit. groups of primitives.
the only thing I'd add is that it's really important that you have an exhaustive comprehension of those primitives, or at least as thorough as you can possibly manage. Just never let yourself believe that you've finally figured out everything there is to know about anything, and you'll never stop running out of things to know 😊
I see 2 patterns: 0 and 1
the thing that generally annoys me about people obsessing over strong vs dynamic types, is that at the end of the day, all that's being stored is 0s and 1s. The physical hard drive doesn't care about data types. While you can use prefixes to represent a data type in the hard drive, and it is helpful when programing to know what kind of data you are dealing with, it's still just being stored as 0s and 1s. It's also being sent over the internet as 0s and 1s.
at the end of the day, the client using the website doesn't care whether I used javascript, python, or c++, as long as the content loads fast enough from their perspective and looks good. This is also why I'm starting to spend more time with learning front-end development, because that's what the user will actually see and care about. That and AI will probably have the advantage on taking back-end jobs, compared to front-end jobs where creative design has an advantage.
Is this bad satire?
0:19 what's difference in static-dynamic vs strong-weak typing?
* static: hard coded types, right?
* strong: unchangeable types, right?
* does dynamic typed means inferred typing?
* does weak typing means variable can change the type of stored value?
No, "inferred" is not "dynamic". Static means everything is decided *at compile-time,* with some types being explicit, and others being inferred. Dynamic means that types can only be decided at run-time.
Weak means that a type mismatch (whether at compile-time or at run-time) *is not an error.* Instead, the language will try to auto-cast the variable to the type it needs to be.
"A linter such as typescript" THANK YOU
You just described experience
A really helpful advice for someone who is "stacking" leetcode problems. Thanks!
This is so true brother. Understanding these concepts has made me almost “language agnostic” in my career. Yes I have preferences. But if u locked me in a room, and said I could not leave until I finish an app in a programming language I’ve never written in, I would eventually make it out.
Loved this video as a cs undergrad 😊! Thanks @NeetCode. Can you possible list the themes you're mentioning in this video as I'd like to dig deeper and learn these patterns myself in my personal time please?
Every problem in computer science is always solved by these two things:
1. Indirection
2. Granulation
Indirection is what programming is
Granulation is what good programming is
Then there is computabity and efficiency which is the rest of computer science
2:45 personally, i too can look at C code and immediately see what they are trying to achieve. I feel like it kind of enabled me to program a whole lot faster, since i can just write C code like im speaking my ideas, instead of trying to figure out why i doesnt compile or whatever.
IDK why, but I feel like static types are way effective at preventing me from silly mistakes than dynamic ones!
It's no coincidence. Strong, static typing means things have to be well defined when the program compiles - it is quite literally a barrier to many silly mistakes that human brains are prone to make. I write most of my code in C# or SQL for work, but occasionally I have to use Python. And much as I love its simplicity for a quick script, building anything large or complex in it is poison to me. So many silly bugs that you have no chance of spotting without a lot of tedious testing.
Strongly Typed for life. :D
Best video i have ever seen about patterns in software.
In the MBTI this is intuitive vs sensing. Intuitive personalities zero in on patterns. Sensing personalities absorb and analyze details. The clash between the two can be frustrating. When I see the pattern, I don't want to go over every last detail. That's how I learned over 30 programming languages. I stopped worrying about the details and now I can make usable software in so many different technologies. Sure, a code review may have 1000 nitpicks (if it's something I'm less experienced with), but the end user is never going to care about those.
An hour-long video on this subject would be great and a life saver for beginners in CS
This was a banger! ngl, I was worried it's gonna be another "1" + 2 video, but it really was great! You should do more design patterns, software architecture, system design videos, this video was gold and you explained things really well.
Too good Mr neet
Incredible video man! I don't usually comment on videos but you deserved it, keep it up 👍
Would love an entire series from you just on patterns.
patterns are difficult to forget because each of them have a dedicated neural network in your brain, ready to be active while syntax gets stored in short term memory
make more videos like this! videos like this show what separates higher-level engineers from others.
well said...everything in this world is followed by patterns and inspiration
Your video is not long enough. Talk more about these patterns please. This literally opened my mind on what programming language should I use for a specific project and WHY I should use it.
Also this video can be a "great divider" - to divide people into two categories: A Junior Software Developer/Networker/Engineer and a Senior Software Developer/Networker/Engineer.
There are tons of blogs and resources on design patterns.
7:15 I agree with you bro
The code we write is executed on some piece of hardware and the means by which that execution occurs is extremely important to understand. This is the only way that we can build systems that are performant, have conservative memory usage and are power conscious. Code that is too focused on patterns tends to be very slow and use a lot of memory and power. It is part of the reason that our software industry is in such a poor State and why programs of the past ran so much faster than they do today.
Great premise and video!!! Although one thing needs to be corrected - you can set up schema on each collection in MongoDB (using jsonschema format) and it will automatically perform types validation. It will be much faster than validation on application side but there a possible downside - possible unnecessary roundtrips to db.
I dare you to make a video on one of the consensus algorithms 😅
For example, Paxos or Raft :)
Then consistent hashing. Distributed transactions, 2-way, 3-way commits, saga pattern.
Jitterred retry to avoid thundering herd problems.
Rate limiting using token buckets.
Short circuiting.
...
Great video brother! Concise, informatuve & clear guidelines to becoming a software engineer. I look for ward someday to a fantastic conversation with you. Have a good one, cheers!
You are a master in coding
JavaScript, it is not a bug, it is a feature you have to know, then you can work with it.
Knowing quirks of the language is the most important to prevent unexpected results
Plato's theory of ideas and allegory of the cave goes well with this video
Well done!. one of the most amazing and informative videos i watched.
What Neetcode Pro includes besides free content? I mind buying it but have no clue what’s inside it
Awesome courses! I had one year subscription, which recently ended, and It was definitely worth it.
All of the courses and pro coding problems. Will be adding at least 4 more courses this year and more coding problems this year.
You have done some recreational stuff... ! Opened that third eye. I trust you.
We really need something like this.
would love an in-depth video about this
Awesome vid! Just learning OO design patterns and I'm hungry for more of what you just said
Sanity. Great video. Also, strong static typing is life. :D
Really this was help full never thought of learning this way.
This was a much-needed video thank you. The computational thinking model has reference to pattern recognition as one of its 4 elements 👍
Never thought about it like this but it makes perfect sense.
Thank you.
You: "I could be here all day"
Me: I could listen all day long of this wisdom
Can’t memorize anything either but the big picture concepts help you find the way and you can google the crap out of syntax and tools.
I had the same thing with patterns, when I heard first time about event-driven micro-service architecture. for me as a front-end guy it was like "oh, back-enders invented redux, cool"
This is golden knowledge. Thank you for sharing!
This is the best advise someone could give you relating web dev and also the most difficult one to achieve. Just let experience work for you: be patient and have this main idea always in mind and keep going. You won't get a third eye though :p
It work for biggener's, if you are working on advance language,you scratch your head especially if the code refracted.
no matter how smart you are, this skill comes only with experience.
I’d say it’s still good to know the oddities of each language you use and also learn how to write the code according to the conventions. Don’t write Go as if it was Typescript and vice versa.
Great content bro!
when you are tired of learning every new framework/language that come out... focus on pattern!! (jk, my college taught me to focus on patterns before I step into the job market, so I know this a long time already)
great summary bro bro where can we find a course teaching these stuff in details please? we want to level up.
a concept my adhd brain can take in without losing it after 2 minutes , ty sir
I have this same exact philosophy about engineering and technology but I'm getting depressed that jobs now a days are looking for specialists in one thing more than generalists. It's like big companies and even startups don't want generalists like in the past, for the different opinions they might generate inside the organization and the disruption that might create. Like conpanies that use mostly python don't like proffesionals that comes from a C or Java background, for some reason, even though you might be familiarized with the python ideas from experience with linux scripting and scientific analisys. Conceptual knowledge is not that much apreciated any more. You just need to deliver fast and be perfectly aligned with the company's ideals.
Yeah, unfortunately that's the big missing piece when people talk about being a generalist/knowing things conceptually,I agree with the sentiment, but then I go to look at job requirements and most I see is very specific knowledge, it then makes sense to be a specialist in a language
Couldn't agree more.
Can you give more examples of pattern? I really like the way you explain webhooks.
As someone that has written code as a hobby for several years and learned (and forgotten) a few languages along the way I couldn't agree more.
Thank you , keep em coming ❤
If you know how to write "if", "loop" and function you already know a language :)
Awesome video, thanks for sharing this
need more videos like this, I mean you could have kept going, but honestly my fundamental understanding of this stuff..... supper shaky!!!!, This helped a lot, Thanks bro
This was a great video. Thank you so much for that. I'm a junior developer and struggling to just keep learning new languages, but after watching this, I think I should focus on learning about patterns instead of new languages. Where can I find material about this? Can you help me?
few truer words ever been said
Thanks man, very informative 🎉
Please make more videos like this one 🙏
Anyone else in the same boat after opening the third eye, and then have a bunch of junior developers create a mess of everything. And then forces you back to getting into the coding details? Feelsbadman.
webhook pattern
gRPC(protobut) vs JSON | static vs dynamic
Awesome..spot on 💯
no and yes.
a lot of the time the patterns you can use are determined by the tech you’re working with
Yes put the rarely invent the pattern in the framework. I already knew MVC so learning Angular was easy.
Example?
@@egor.okhterov Unity GameObject & Component (Object oriented, composition) vs Unity DOTs (Data oriented design & composition)
When u learn the fundamentals, pro.Lang is just a piece of cake.
Would love to hear _about_ the patterns as well. What interesting patterns have you seen in your experience that are not often taught?
he is literally me as a older version
This channel is the Kush After Hours of programming and software engineering