@@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
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 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 :)
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.
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.
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.
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.
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 ] ❤
@@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.
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.
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
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.
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!
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.
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
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.
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.
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.
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.
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.
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!
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?
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.
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.
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. ...
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.
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.
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
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’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.
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.
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 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
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
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
Indirection is what programming is Granulation is what good programming is Then there is computabity and efficiency which is the rest of computer science
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
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"
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
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.
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
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.
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 :)
Please dive deeper into this video!
A hour long video in this subject would be amazing!!
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
I guess this channel becomes more like the primetime with less jokes but more infos - love it
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.
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 love how short and precise your videos are. Straight to the point, and full of wisdom.
I love your passion and energy, and the willingness to convey this on UA-cam. Well said.
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.
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 ] ❤
Man, this was so needed. Thanks for breaking this down so simply.
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.
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.
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.
make more videos like this! videos like this show what separates higher-level engineers from others.
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
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.
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!
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.
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
A really helpful advice for someone who is "stacking" leetcode problems. Thanks!
well said...everything in this world is followed by patterns and inspiration
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.
Best video i have ever seen about patterns in software.
This was a much-needed video thank you. The computational thinking model has reference to pattern recognition as one of its 4 elements 👍
Would love an entire series from you just on patterns.
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.
Incredible video man! I don't usually comment on videos but you deserved it, keep it up 👍
would love an in-depth video about this
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?
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.
Awesome vid! Just learning OO design patterns and I'm hungry for more of what you just said
Really this was help full never thought of learning this way.
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.
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!
Typescript propaganda confirmed.
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?
An hour-long video on this subject would be great and a life saver for beginners in CS
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.
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.
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.
...
You are a master in coding
Well done!. one of the most amazing and informative videos i watched.
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.
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.
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
Never thought about it like this but it makes perfect sense.
Thank you.
You just described experience
webhook pattern
gRPC(protobut) vs JSON | static vs dynamic
This is golden knowledge. Thank you for sharing!
You have done some recreational stuff... ! Opened that third eye. I trust you.
We really need something like this.
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 😊
Please make more videos like this one 🙏
Plato's theory of ideas and allegory of the cave goes well with this video
Too good Mr neet
"A linter such as typescript" THANK YOU
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.
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.
You can define schema in MongoDB as well
Awesome video, thanks for sharing this
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.
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 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
Sanity. Great video. Also, strong static typing is life. :D
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
Thanks a lot of this video.
Please make more content like this
Thank you , keep em coming ❤
Great content bro!
Thanks man, very informative 🎉
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
Bro more on the patterns you mentioned please.
It work for biggener's, if you are working on advance language,you scratch your head especially if the code refracted.
Awesome..spot on 💯
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.
Can you give more examples of pattern? I really like the way you explain webhooks.
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
few truer words ever been said
this is a banger of a CS vid
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)
Thanks!
Would love to hear _about_ the patterns as well. What interesting patterns have you seen in your experience that are not often taught?
Great Explanation 🎉
This is soooo truee 💯💯
Excellent video 😊
This is a great video
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.
It's pull/push
Very informative. Wow.
a concept my adhd brain can take in without losing it after 2 minutes , ty sir
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"