Why I focus on patterns instead of technologies
ฝัง
- เผยแพร่เมื่อ 18 ก.พ. 2024
- 🚀 neetcode.io/ - A better way to prepare for Coding Interviews
🧑💼 LinkedIn: / navdeep-singh-3aaa14161
🐦 Twitter: / neetcode1
⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
#neetcode #leetcode #python
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
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.
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.
This is pure gold. when you do look at things as concepts or patterns, a lot of things become very clear. Thank you
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
I guess this channel becomes more like the primetime with less jokes but more infos - love it
I love your passion and energy, and the willingness to convey this on TH-cam. Well said.
Please dive deeper into this video!
A hour long video in this subject would be amazing!!
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.
Microsoft has a list of design patterns. Many many resources exist already. Just takes practice
Incredible video man! I don't usually comment on videos but you deserved it, keep it up 👍
I love how short and precise your videos are. Straight to the point, and full of wisdom.
Man, this was so needed. Thanks for breaking this down so simply.
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.
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.
A really helpful advice for someone who is "stacking" leetcode problems. Thanks!
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.
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 ] ❤
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.
Wow very deep take! Thank you Neet!❤
Never thought about it like this but it makes perfect sense.
Thank you.
Best video i have ever seen about patterns in software.
This is golden knowledge. Thank you for sharing!
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.
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 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.
Well done!. one of the most amazing and informative videos i watched.
Awesome vid! Just learning OO design patterns and I'm hungry for more of what you just 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
Thank you , keep em coming ❤
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 was a much-needed video thank you. The computational thinking model has reference to pattern recognition as one of its 4 elements 👍
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.
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!
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.
We really need something like 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 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.
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
Awesome..spot on 💯
Thanks man, very informative 🎉
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?
well said...everything in this world is followed by patterns and inspiration
Great Explanation 🎉
Awesome video, thanks for sharing this
Thanks a lot of this video.
Please make more content like this
Great content bro!
Yes, this is usually the first thing a programming lecturer informs you about - that as you learn different languages you will eventually reach the conclusion that patterns do exist and thereby upon this realization you will find that learning other languages do get easier and faster. It is also noteworthy to mention that there are many books regarding design patterns whereby the concepts of the general patterns you mentioned actually borrow from system design patterns (e.g. Observer pattern in OOP, pub-sub 'publisher-subscriber' pattern in distributed systems). It is for this reason that different programming languages fundamentally share these 'common' patterns simply because these patterns are in fact well documented (and in great detail). Happy learning everyone!
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.
Sanity. Great video. Also, strong static typing is life. :D
An hour-long video on this subject would be great and a life saver for beginners in CS
You are a master in coding
Very informative. Wow.
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.
Excellent video 😊
Please make more videos like this one 🙏
great summary bro bro where can we find a course teaching these stuff in details please? we want to level up.
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?
which books need to learn to get overview patterns ? please suggest sources
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.
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
You have done some recreational stuff... ! Opened that third eye. I trust you.
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 just described experience
could you recommend a book or a playlist as a startup of learning design patterns or a beginner courses
Can you give more examples of pattern? I really like the way you explain webhooks.
Great!
This is soooo truee 💯💯
Thanks!
7:15 I agree with you bro
This is exacly what I wanted, I been doing projects with angular node and mongo, but I wanted to learn more because when I tried to learn React I felt like I was missing something , felt like the need to ask why are they doing it certain way and not the other way well I guess it has to do with patters, is there a book that teaches you this stuff? Someone knows?😄
Naviiiiiii!!!!!! You are the best!
Appreciate it! :)
@@NeetCodeIO o my god you replied. I am just binge watching all your videos. Bought the neetcode pro today as well. This is like one stop shop for all you need and you don’t have to look anywhere else. Currently streaming tcp/udp system design course in my bed time. Haha! I really appreciate the good work you are doing. Thank you!
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.
this is a banger of a CS vid
Typescript propaganda confirmed.
he is literally me as a older version
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.
good job
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.
Too good Mr neet
nate can you mention please resources to learn those ? thanks ^^
i'm a fresher data analyst and just know SQL and Python. I solve coding problems by imagination and don't know if this method is seen as "pattern" that he said. I really want to understand what's exactly "pattern" but cannot get what he said since i have no idea of other programming languages.
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?
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
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.
You earned new sub 👷
Bro more on the patterns you mentioned please.
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 😊
great vid
Plato's theory of ideas and allegory of the cave goes well with this video
few truer words ever been said
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
should I train on leetcode or hackerrank?
The best
"A linter such as typescript" THANK YOU
webhook pattern
gRPC(protobut) vs JSON | static vs dynamic
You can define schema in MongoDB as well
and how do I have to learn patterns?