I guess another reason why this is so effective is it forces you to understand the overall goal instead of getting lost in the small intricate steps. I often find myself thinking to much on complex scenario and forgetting what my initial goal was haha.
That’s so true. I had a lot of trouble learning math in school because I never understood what the goal was when given a problem. But I always excelled at word problems because the goal is explicitly stated.
If you're not as STEM-inclined, another great way to understand this is music. It's far easier to learn an instrument through setting out to learn a song rather than learning the chords and building songs out of them.
Yeah, I feel that our mind are more suited for comprehending the breaking of a whole into its cosisting parts, its internal interactions, and learning that way, i.e. going from a bigger picture into details. Rather than the other way around, starting from the very basic abstract details and going up. In that sense the classical education got it wrong. Well, at least in paiting education they got it right, they teach to start with bigger simple shapes first and only add detail later.
Claus Levin is a guitar teacher on yt and he teaches exactly this. Rather he just asks to practice 1 chord shape and just focus on that one. Slowly but surely you'll get the hang of it. Now with that one chord shape down I can play many many songs.... Then add another shape... His methodology is just pure genius.
Also you dont need to understand anything about music theory or even how to read music to learn how to play an instrument, but learning how to play songs and learn those chords will give you an instinctual understanding of music theory knowledge.
add these things to this : 1. focus on basic concepts and dont rush. 2. find objective of learning 3. then find intermediate concepts used generally ( maybe you miss some which are not used regular but if required you can just google it ) 4. revision revision , so what ever you learn just revise within 30-40 hours again then lite revision again after a week , this will create new nuro paths , later when you recall even if you forget if you get hint you recall all and then do practice to hard concepts , hope it helps and do have goood sleep and while y learn avoid social media and extra stuff and stupid relationships ( you can talk with your person or give specific time or make them busy too , my my objective is not relationship advice but to protect your brain spaces more and yes we are social being you should hand out but under limit , priorities matters.
You are actually very knowledgeable relative to everyone else. I agree with what you’re doing basically having a poly spectrum of knowledge instead of a single concentrated mindset or thought. Thank you for the Nuro thinking tip. I will definitely start looking into that. I recommend looking into metaphysics and epistemology with your developed conscious in philosophy for the widest range of knowledge.
That's like the levels of a abstractions of a field. A technician does no need to know physics to know how an engine works, but knowing the physics is always useful.
@Prodigious147 anybody can learn how to fix an car part by shadowing a mechanic, not everyone can design and create new car parts and optimise them for better performance. Understanding physics, math, chemistry etc at higher levels helps in creating novel solutions.
Topdown learning is the best way. I started learning things quicker when I stopped worrying about every detail. I eventually came to understand the details without even trying.
@@Lolnigaaaaaaaaa my assumption is that he’s talking about conceptual/interaction based learning. I guess a way that it could work is that by learning “top-down” you’re building a larger framework of understanding for the intricacies to fall into place within. Kind of like building a map of a region. You don’t necessarily need to know the side roads and alleys of one part of a town when you don’t even know where all of the towns are. Map the cities, then towns, connections between them, etc, and then the intricate details will naturally fit within that framework. Idk if that makes any sense but that’s how my first attempt at explanation is.
I've found learning about compilers to be way easier using this method, just focus on each step and blackbox the rest, eventually you'll learn the entire thing
Legend has it people who are not using this method are currently working on assembly code that adds two numbers. Next step is adding binaries then creating hardware circuits. Then of course how electricity works and atoms and thw universe. But that is just the beginning
At one point they were soldering transistors to make an arithmetic logic unit but realized they didn’t know how transistors worked so they’re currently mining silicon.
I was.. actually legitimately trying to figure out how to build my own compilers into machine code and write my own firmware, lol. I probably will still do that, anyway, because I think it's cooler than today's programming-made-easy languages.
Ive started doing this in the last 2 years. I just called it a new version of learning with the 5Ws. We as engineers and tinkerers tend to go STRAIGHT for the "how" too soon. Mastering the Why, then the What, of the total system will make the HOW 321783907218389 times easier to understand.
@@asaadhusein If you focus too much on How something works when you're learning that for the first time, you'll lose too much time to fully comprehend What that thing does and Why you're using that. First you have to know what the goal of that concept is, after that you have to know why you're using that instead of another concept. This way you're already able to apply that concept in many situations. And just after sometime you study How that concept works. (Learning the goal (What) and Why you're using that make it easier to learn the How
This is basically just the top down approach rephrased into different language. in a top down approach u split up a problem into an application layer and a foundation layer and then you play around with the application layer first and dive into the foundation later (or not at all). I have been learning like this since I am a kid and even theuniversity I go to teaches like this. I agree that for most people this is much more effective and efficient. The old school approach especially from elitist universities that teach u the very basic foundations of everything first and then work their way up, is extremely outdated and in most cases a complete waste of time.
Even if you want to go deep into something it's better to start from the top. You can study for hours how the foundations work and can't make sense of it but once you start seeing the application it starts click and you understand everything. Just start to do something and then try to see how it works.
This same approach works like a charm for many non-programming topics, as well, in particular in mathematics. If you do not know *where* you wanna go, you will never be able to get there.
Totally true, there are so many theoretical concepts that won’t be useful for any of your application till the end of life at which we waste our time by learning them. Top down approach FTW!
I passed a whole uni course using this technique and I actually learned it better than other courses, but don't know why I never kept doing it, this video reminds me I should try it more :) Cool video, Thanks.
It's like studying the summary first and important formulas that you will be using to solve problems or answer questions in the exam. by doing this you will get ready way more faster and you can acctually take your time learning details and more complexity in the topic afterwards. I did that a lot when I didn't have time to study the whole thing. and it's good to know that this is a good tactic and to see other top tier learners use it as well. This video taught me that it's really a better way to approach concepts and it saves up much time and relieves stress too.
tbh i dont know why this video appeared on my feed but i watched the whole thing because learning hard concepts has always been a struggle for me. I'm a firm believer that I can't move to step 2 if I dont start and finish step 1... sometimes i'll read a whole chapter in a book on something I already know just because of the integrity of starting the text book/this particular author's lesson plan from page 1. But I've never actually finished any thing I started studying. I always fall asleep and feel too overwhelmed to pick it up again the next week. This concept really helped and i hope to apply it effectively in the future. Also, I laughed because we're from the same area (10:57)
Same for me. This non-blackbox way of learning works ok in undergraduate school, but it completely destroyed me in graduate school where I have to read tons of papers and test out different things.
Yeah, this is pretty much me. I've been teaching myself mathematics but literally started from the ground, elementary school stuff. I'm way too perfectionistic in that regard, so I wanted to each and every step of math like I experienced it in school again. I can't say that it didn't help, but it certainly costs a lot more time.
@Kaje honestly i know exactly what you mean, however, i don’t necessarily think this approach gives keen understanding quicker. I think it just gives you the ability to use the topic with a very elementary understanding, w/o going thru all the rigor. youre still going to need to put the time and effort regardless, in order to develop a true in-depth understanding of w/e topic you’re studying. im still gonna try this out tho.
0:07 Cube 0:28 Use it to solve problems 0:53 Use it all the time 1:00 What is a Black Box? 1:53 Sort Algorithm [ordering in a way] 4:28 Unknown -> Learned 5:34 Blackbox is used as a 1st step to learning an unknown. 6:23 Contest 7:07 +Quick 8:02 Learn where to go. + Focused learning 9:00 Flexing knowledge 9:56 Coder Library 📚 11:07 The Functions
Black boxing is useful in another way as well. It can make you aware of your tools. I can't stress enough how useful it is to know something exists, even if you don't know all its details.
It’s basically like drawing a rough sketch first before painting in detail: it keeps you focused on the entire picture and stops you from gettting bogged down in minute details
I'm way too ADHD / OCD-ish to learn this way. I always deep dive on a topic and learn everything I can about it before moving on to the next topic. While this isn't the most effective way to solve any one problem the fastest, it has helped me surpass many of my colleagues who use the black box method for every single problem over the 15+ years I've been programming. There's definitely trade-offs between breadth-first and depth-first learning, and it's important to know when to choose which method for each problem you encounter. I encourage everyone not to forget to go deeper occasionally when you find something you're genuinely interested in, especially if you might use it again later (which people are awful at predicting, because most things are applicable later if you truly understand them).
This is helpful for professional life too, since it can be easy to fall down the rabbit hole and spend ages trying to fully understand something, which can be valuable but also can cause friction with management types who want to see visible progress. Blackboxing can help defer research that would take a long time right now but might become obvious later.
@@doxo9597 Well the most common blackboxes in math are theorems you don't know the proof for. Example: Every base of a finite-dimensional vectorspace has the same size. Feels right, but on the spot I'd have difficulty coming up with the proof. Another one: I often use the geometric series, but forgot its proof.
UA-cam is weird, it's only been 2 weeks since I started learning Python, as a complete outsider to the coding world and zero prior experience. Even so, I still understood segments of the video. Liked and subscribed, will come back to it again to test myself on the concepts used. Thank you.
this concept is really helpful for my current work. i have noticed that learning complicated + related topics gets a lot easier when i don't try to "drill down deep" into the topic, rather taking a look at multiple related things and then "starting to tie it together". also the comment about u "beeing proud of your black cube drawing so ure gonna keep it around" was really cute and charming haha
I think this applies to any form of learning. Thank you for the video, it really made me reflect on how I learn. I definitely need to use more black boxing before getting obsessed with the details.
We live in the era of information overload thus it's essential to filter and simplify information we consume and search to be able to function (and keep our sanity) in this world. I've created this technique kinda subconsciously and been using it almost intuitively and for all topics even outside of the field of programming. Especially in programming it's necessary to look at things at "high-level scope" and use abstraction. The goal is to have the largest concept map in your mind, know the tools, their usecases and how to apply them (etc.). The one of the main benefits is this gives you more motivation and get rid of frustration because you see more results as you know more things and can use them to create better projects and solve harder problems, instead of digging deep into a rabbit hole learning one concept fully.
This is my main learning approach: i gather as much general info as i can (especially the name of a concept) and when I need details that's what google is for
This basically top-down learning. It's very useful to understand things on an abstract level before getting specific and meticulous. You learn the specifics with experience, study, and relation.
I actually used this method when learning JavaScript, and didn't even know that it was a method for learning concepts! Really helpful to learn the fundamentals and blackbox some of the more advanced stuff, so you actually learn the language itself, and then you deepen your knowledge of the workings of some of the pre-existing functions.
Thanks Colin. This is one of the big reasons I perform poorly in the contests because I don't know a lot of algorithms and data structures. If I use this and solve some more of 'em in contests, it can boost my confidence enough to not get bogged down to learn these difficult concepts eventually. Imma try this method out ✌️
I faced this when trying to learn html and css, the more I dived into details, the more lost I felt. Eventually I got fed up and copy pasted some template code, tweaked it and now I feel like I gained more idea about web page design than I did with those detailed tutorials.
That's been actually my method for any project in general (not just learning). I'm currently working on an App project, for example, and since it is my first app, there's a lot of unknowns. So I just define each major step on the process of making the app (like, each feature), and specify each one little by little, and it's like an iterative function. Each step has substeps that can also be splitted by itself (for example, in step Auth Feature there's the substep Do Login usecase, and in Do Login usecase there's the substeps Backend and Frontend). And instead of learning all I don't know how to do beforehand, when I start each step I do a research, so when it's time to implement Auth Feature I search about how to deal with authentication in the languages I'm using, when it's time to implement a Schedule feature, same thing, I search for schedule components that people are already using in my programming language, etc. In fact, I even have a whole life project planned this way lol
thanks for the view point. i mostly learn new things by like doing them twice (for example once i see it and do then i blindly do it with any % of errors then i fix the errors and mostly thats enough just fixing the errors makes you memorize the code and its key concepts). but now i feel like i can be even more efficent i am going to try this method for the game i wanted to make.
I've been using this concept for years without even realizing it. Works all the time! All you need to know about any field or software or whatever, really, is the basics. And then like Colin said, the details will come later. Saves a lot of time on learning irrelevant jargons too! Thank you for this awesome video, Collin.
I know this is an old video but I wanted to share something similar, I took a black jack class, and on a 20% pay out there’s a method that requires no math at all, just knowing what’s bets are on the table, you are able to quickly pay it out with insane accuracy with out knowing what you just paid, you just know it’s right. Going back, I understand it, but when I learned it, I had no idea
Thank you! I have visualized (through Gateway Experience meditation) that a "box" in any dimension only requires two walls per dimension. In 1D, just two points define it; nothing can manipulate or view anything inside/between those two points. In 2D, those points are stretched into lines, and then two more lines are added to make a square. In 3D, like your cube, the square is stretched upwards, and then a top and bottom are added; two more for a total of six sides. Thus, I can capture/protect/hide items in any dimension I may find myself, using only two walls per dimension. I enjoy reducing a problem to what can be achieved with the least effort/resources, somewhat like taking machinery apart and seeing if it can still function with missing parts. Like in college, a friend replaced his mufflers with "glass packs" for performance which basically just go straight through; so, I learned the muffler is not required for making the car move/function, it's just added legal stuff.
Oh man. Explains why i learn so quickly when i just immediately hop into complex stuff, especially in math and programming. I stopped using this method because of guilt and thinking that im not "learning effectively" by starting from top to bottom. Learning from the bottom from simple things has been so wasteful of my time because i focused too much on little things as to understand EVERYTHING, which hindered at my academic progress. Thank you
An interesting take on black box abstraction. Which is part of systems engineering. Where a system is decomposed into functions, and those functions are independently developed, and then implemented and integrated within the system as black boxes. This lowers the complexity of system as most of the implementation complexity is hidden. Ultimately this is how human beings build extremely complex things. Of course, Colin is taking a different angle on this.
Yes, but keep in mind that IRL complex engineering problems there are multiple teams working on all levels of the problem simultaneously. The scale of the black boxes are different depending on which type of task you are working on. In your example, the individual function implementers will have their own black boxes (not necessary smaller or simpler), and their work will then become the black box of the systems engineers.
This is basically the same thing as priming, but with the added twist of applying and using the unknown "black-box" as soon as you have a brief understanding of its: characteristics, location in relation to other components and surroundings, as well as what it does. To understand what makes this thing in the "Black-Box" tic isn't actually required to start using it. But if you know what black boxes you have and how they relate, you will notice that the more complex knowledge will suddenly magically light up in the right boxes. And especially if you are actively using the boxes in various new situations.
This puts words to how I think about things, I don't need details I just need the gist and how to use it. I will be OK, if I have real interest I will figure out the particulars later or never.
When I was learning the 7 OSI layers in university, they somehow thought it was a good idea to learn from bottom up and top down at the same time, separated by 4 3-credit mandatory courses, with 4 different professors using 4 different textbooks. 1st course: physical layer to data link layer with math 2nd course: physical layer to transport layer without math 3rd course: transport layer layer to data link layer with algo 4th course: application layer to transport layer but this course's professor is frankly hard to understand It is entirely possible to learn both bottom up or from top down approach, but it should be executed very well. Conflicts can happen because of miscommunication between teachers.
Unfortunately a lot of university networking courses teach it this way which is incredibly weird and ineffective. If you want a great book on computer networking that teaches it the RIGHT way, I recommend "Computer Networking: A Top-Down Approach". As you can probably guess from the title it starts at the application layer and works its way down to the physical layer.
Agreed. Black boxing (and copying code blindly) are usually the easiest ways of getting stuff done while you're learning what you need to move forward. That's why you see blind copying a lot in junior devs.
Same reason why you skim and scan for comprehension tests. Skimming gives you a quick idea of what the passage is about so when you scan, you pay attention to what is most important, because let's say if Jim was revealed to be the killer by the end of the story, now you're gonna focus on the clues that point toward that as you scan the text again.
I've participated in a CP competition before, but that did not allow any sort of outside info (no internet connection, you could not even use a book you brought), so this would not help much - but outside that competition, it's an useful technique everywhere, not just in CP...
All my life I’ve been unconsciously using this technique without knowing it’s name 😅 I’m a self taught person and my friends say I learn stuff fast, but the reality is I’m the embodiment of a Jack of all trades master of none lol (well actually I do get deep in some concepts the I really need). But yea I usually create a big abstract picture of how things work before even learning the details, then it’s easier to learn the details. Thanks god for my internal black box!
my friend was using this method all over the semester and she failed her intro course (something 101) for the second time. This method is effective when you do a ton of it on one topic, where u reaches a level of state, like storing a massive amount of raw logics about the topic. To a point you 'have an answer to every (or most of the) questions that might be asked'. personally I recommend only using it for temporary concepts, some side knowledge (stepping stones), otherwise, learning by the comprehension way actually make your study easier as you learned more / understood more. btw this method is so bad for big topics / things that really worth research / things that has a lot of value, that I'd almost never use it. There is no short cut for knowledge
Thank you! Sooo basically it's understanding a concept/idea/mechanism you don't understand well enough I watched about half the video since I got lost in the sauce. I'm no computer programmer but as an artist, this broadened my perspective on things.
We are all standing on the shoulders of giants. Accept that, and contribute something of value instead of grasping for a feeling of control by trying to understand everything.
Very good technique, very hard for my mind to allow me to think this way. I tend to grasp concepts atomically - I either get it all or I’m thoroughly confused
So basically not overthinking and just doing it which makes sense, I've been doing the opposite for a while now because for some reason I can't accept my solution without proving everything about it. The Black Box makes sense but it didn't really came to me until now since I took a break from programming, I personally think this can be applied to anything. You don't have to understand anything about calculus to do basic integration/differentiation, You don't have to understand figure of speech to speak a language fluently, You don't have to understand group theory to be able to speedcube under 10s..etc. All in all, you don't have to be necessarily smart to learn hard skills. Lastly, I actually think this is how most top competitive programmers learn, I'm guessing prodigies naturally learn in a Black Box way because it was just natural for them to learn what an alg/ds does instead of how it does it. When you gain enough experience in competitive programming and good knowledge and understanding of theory, that is the point where one can probably do high level analysis of code or algorithms for that matter. Black Box aims to make this learning progression work more efficiently because we don't have to spend time thinking too much, we only spend it on anything necessary which makes learning the basic stuff faster.
amazing useful. currently I fall into a situation which struggle to understand the more details of complex DS, and I know that's not very important instead of understand how to use them.
Black box method is effective at learning something very fast without actually understanding how the inner parts work. However, overusing this method makes you an expert of nothing and the knowledge can be quite difficult to apply due to sheer amount of abstraction involved, also abusing it makes it difficult to solidify that knowledge into long term memory. Public educational systems are big promoters of black box methods A good balance needs to be made between finer understanding of concepts and black box method. For example, finer understanding of concepts makes the black box method trivial to apply and use. Additional benefit would be the increase in problem solving skills and better ability to improvise. The knowledge is easier to retain over a long period of time. The disadvantage of abusing finer learning makes you a perpetual student which isn't viable.
This is something good to do when you think you are finished "learning" (you never actually finish learning). For example I want to know what happens and how that "black box" works from the inside cause that might give me an idea of how to solve a similar problem.
@@asaadhusein If the video coulden't explain it to you then a comment surely won't. Blackbox generally is when you don't care about some specific "function" or "algorithm" or w/e that might be it might be an object I don't know, you put that aside for now and you tunel vision on your problem . The only thing you know about this blackbox is it's input and output and you shouldn't focus for the time how it does what it does. You might learn later much easier and even quicker than if you focused on it the time you use that "Black box" for a problem. That black box might be a function that takes as input a list of numbers and then it gives them back to you averages and sorted (that's something too easy to be even considered a black box but for the sake of discussion) the point is you should focus on your problem and leave the black box do it's job averaging and sorting those number you do what you are supposed to do and as I said in my comment after you solve the problem look inside the black box and learn how it works it might help you later on. I hope I explained correctly and didn't comfuse you in any way.
One possible example might be the teaching if electric circuits at the level of "lump" theory. While there's also simplification going on (ignoring parasitic capacitance, treating wires as perfect conductors), the model focus in what goes in and out of components, and the expected transformation.
Following is some critical analysis on the video as a whole. If not ready for extensive reading, please do not proceed. I'd like to start by talking about the difference between being informed about something and actually understanding it. To be informed is a consequence of simple technique or message capture. This is what you do when you read the news, or when you come to know of some factual topic. Actually understanding something requires a much bigger effort, for being informed is a pre-requisite to understanding the information. It requires a more active kind of reading done by whoever receives the information, be it from a video, book, audiobook, common speech, etc. Memorising is not learning, by any means. By repeatedly bringing your attention to multiple concepts, coming to know a mere shadow of their inner workings (what in the video is described as "blackboxing") generates comfort in holding to yourself a package of brief, partially informed, rarely somewhat understood concepts. What is presumed here is that "blackboxing can't hurt". I heavily disagree. There is a reason as to why people come to focus on a specific concept and only start focusing on a new one once they feel they've mastered the previous topic to some useful degree. To believe you're becoming a better programmer by using other people or other researchers' code in ways you barely actually understand, then bragging you won some leader board position by copy-pasting code other people wrote or actively thought about is to brag about becoming a teacher by cheating on your tests at college. As programmers in general, to understand the structure and meaning of the code we write (and partially, to make it readable to others as well) is a great part of our job, which frequently has a higher significance than actually writing the code itself. There is a reason why NASA would only allow people who understand each and every functioning part of a space shuttle to actually build one under their name. The concept of "blackboxing" may be applicable to competitive programming if you want to limit yourself. I'm not a competitive programmer, and even thought that is true, it is also true that the best among competitive programmers are the ones who actually understand what they're writing, in an active fashion. As a conclusion, I dare even say that "blackboxing" is a quick solution to produce incompetent programmers who think they can actually program somewhat well, feeding their eagerness to say "I can use X concept", while actually retarding their learning process by trapping them in an illusory state where they believe they are much more than reality brings. Again, these statements hold true for general programming, for competitive programming is much different, still, my points towards it are true. Feel free to critique me, to share the video's author's point of view, or to correct any erroneous idea or thought I may have presented. Even if audacious to make such comment, I recognize I'm not the one to judge what holds true and what does not. If you agree with me, and additionally, if you have something to add to my comments, feel free to do so, and if you disagree, the same freedom, if not more, is yours to abuse; although I do not expect a great number of people to read through this whole text, as it requires patience, a virtue I do not hope to find in those who came to this video with the objective of accelerating their learning path.
@Volatus its not like you dont need to understand how/why those concepts work at all, and you can just black box them. Like say you do know that an algorithm exists and it can be used to solve a problem that you are going to solve in a contest/coding competition, but you cant implement that algo on your own. You can either skip that problem or just black box it. This is one of the most common use cases of it. And if you watched the video, colin did say that you are eventually going to have to learn these concepts to be able to make changes to them and be able to use them efficiently. The point is that when you encounter a problem in a contest that can be solved using an algo/some concepts that you know that exists, you shouldnt be like "ah I should use XYZ for this, let me learn how to implement this right now and understand it in details" and instead just black box it for the time being and learn it later when you are able to understand it properly. And i would also ask you to not judge people without knowing anything about them(accusing them of not having patience or not having virtue)
@@boundless-sher Thanks for the feedback, but I'd like to answer. Firstly, I did watch the whole video, and also understood that blackboxing is stated as a temporary solution. You basically stated in the text the content of the video, which I had as whole in mind when writing that comment. Repeating myself, the problem lies in generating comfort in holding to yourself a package of brief, partially informed, rarely somewhat understood concepts, not in using the blackbox method as a whole. And lastly, I've never accused anyone. Saying that makes me think you did not read my comment correctly. I said that patience is "a virtue I do not hope to find in those who came to this video with the objective of accelerating their learning path." It's an obvious thing to think that whoever tries to rush their way with methods does so because of impatience, and even though, I'm not saying whoever watches this video or clicks on it won't be patient. The fact your answer was polite and you put in the time to try and explain to me your point proves that. And also, I stated patience *as* a virtue, not as a separate element (so I said some people "do not have the virtue of patience" rather than saying they "do not have patience nor any virtue"). So, as you asked me not to judge people, I'd like to ask you to be more cautious on your reading; otherwise, thanks for the comment and the kindness of trying to politely explain your point.
I didnt know that this kind of approach is block box. I self learned web development through online resources and the way I approach the learning materials is to study an example (Html, css , javascript). Some yt insist to focus on studying one language but for me I love exploring those 3 languages at the same time because it helps me to connect the dots
I’m not a programmer but instead a molecular biologist and your channel is an absolute gem. I guess given the computational requirements for my field I am a programmer in denial. Very thankful for your insights you’ve published. Thanks again!!!
I have been using the blackbox method in some places but thought it was my homegrown method. didn't know that it had a name. Anyways good video. Now i can improve my homegrown blackbox using the inputs from your video.
Man I wish someone would have told me this when I first started learning to program. Once I started doing this I learned way faster. It doesn’t make sense to go deep into the weeds of one concept when there’s so many concepts to learn, not in the beginning at keast
a cool thing about black box, or hidden box, is you dont need to comment the black boxes cause they are comments in themselves, and u can pretty much write the i/o half in a day.
Black box is a process that converts input into output without needing to know the contents of the black box. for example, there are concepts a, b and c. if you learn a, continue learning b and learn c sequentially, it will take quite a long time with the black box method, the learning process can be accelerated because we don't need to know how things work in concepts a, b and c just need to test the concept of what requires what input and produces what output. By knowing the black box of concept a, concept a can be used practically. the key is, concept a can already be used. then you can continue by studying black box concepts b and c. why is this useful? if you already know the black box, learning these concepts will be faster because: - works quickly the information needed to use something is less than the information needed to understand something - lets you know where to look if one day you decide to learn it, you can strengthen the concept by studying it. So, for example, if you encounter a problem with a concept that you don't really understand. Maybe you know the black box concept but don't really understand it. at least you know what you are looking for. You know this concept is related to the problem, you're just not very good at it yet. - lets you identify related problems. You already know where to practice the concept when you decide to learn it. - keeps learning focused because you already know what the concept does, you already know the goal. What you just have to do to transition from black box to normal learning is how that thing works. you already know what the concept does, what the concept needs. You just have to understand the internal mechanism of the concept. - makes learning less scary if you already know what the purpose of the concept is and are familiar with it. it makes it less scary to learn it for real. because you already know what the end result will be. you just need to learn how the input can be turned into output.
My brain rejects blackboxing to some degree. If I don't know the inner mechanisms enough to manipulate and edit it, then I simply dont acknowledge that I understand it In the end you have to blackbox *something* for one cannot understand the true fundamentals, only accept them. But that's what I'd call "levels" of blackboxing, hence how deep you go before you have to blackbox But these levels of different things often converge. Many things often result in the same questions in the end, fundamental questions. So the best you can do is understand these branches and lead them to the "trunk" or "stem": the sequence of levels that deterministically lead to a fundamental question
You put a concept into the black box method, and out of that you get the concept's process simplified to the inputs required and the outputs it returns back
That's what the difference between a algorithm enthusiast and one who is not. You see they both are opposites sides of same coin its just they both can't see each other and when they do they get excited.
Impressive stuff! I stopped watching 10 seconds in but the black box looks great! Drawing boxes is a hard concept as you said in the title but I hope everyone learnt something new here today :)
I have no programming experience but this sounds like memorizing math formulas and learning where to use them instead of actually understanding why those formulas makes sense. It's not something I do much, nor is it something that I like to do but as things get more complex, it could be a better idea to just blackbox things and leave them unboxed until you get to a point you can understand them easier and faster, or until you actually feel the need to understand them. This seems like a pretty good method that doesn't only apply to programming but also applies to learning logic-based things in general.
I have a feeling the concept of the black box is the future for humanity. Knows how to use something in terms of inputs and outputs but if they were cast 100 years into the past they wouldn't be able to build the black boxes to begin with.
i started to do this and it helps not to stress that much over details! so it’s basically a top down approach, where you only need to study down the tree when it’s necessary? the only problem is studying the details...
I guess another reason why this is so effective is it forces you to understand the overall goal instead of getting lost in the small intricate steps. I often find myself thinking to much on complex scenario and forgetting what my initial goal was haha.
oh same haha
Absolutely true..thanks for pointing
That’s so true. I had a lot of trouble learning math in school because I never understood what the goal was when given a problem. But I always excelled at word problems because the goal is explicitly stated.
Sameee for me it's especially trying to optimize code
same
My man explained abstraction in detail.
lol ya true
It's as if he reinvented the wheel and slapped a new name on it.
Thanks for reminding me man. I knew I encountered this idea somewhere.
Laugh Out Loud!!!
@@AlumniQuad it’s often helpful in understanding the wheel to build it from scratch yourself.
This will jumpstart my career with stack overflow.
Read some books, zoomers, will ya?
@@KulaGGin this is ridiculous
@@KulaGGin they brain dont have the ability of thinking !
@@brunogomes5262 Ironic
@@KulaGGin uh you know some people learn better with visuals yeah
If you're not as STEM-inclined, another great way to understand this is music. It's far easier to learn an instrument through setting out to learn a song rather than learning the chords and building songs out of them.
Yeah, I feel that our mind are more suited for comprehending the breaking of a whole into its cosisting parts, its internal interactions, and learning that way, i.e. going from a bigger picture into details. Rather than the other way around, starting from the very basic abstract details and going up. In that sense the classical education got it wrong. Well, at least in paiting education they got it right, they teach to start with bigger simple shapes first and only add detail later.
Claus Levin is a guitar teacher on yt and he teaches exactly this. Rather he just asks to practice 1 chord shape and just focus on that one. Slowly but surely you'll get the hang of it. Now with that one chord shape down I can play many many songs....
Then add another shape...
His methodology is just pure genius.
Excellent point.
Also you dont need to understand anything about music theory or even how to read music to learn how to play an instrument, but learning how to play songs and learn those chords will give you an instinctual understanding of music theory knowledge.
@@alexxx4434that's how we learned our native languages
add these things to this :
1. focus on basic concepts and dont rush.
2. find objective of learning
3. then find intermediate concepts used generally ( maybe you miss some which are not used regular but if required you can just google it )
4. revision revision , so what ever you learn just revise within 30-40 hours again then lite revision again after a week , this will create new nuro paths , later when you recall even if you forget if you get hint you recall all and then do practice to hard concepts , hope it helps and do have goood sleep and while y learn avoid social media and extra stuff and stupid relationships ( you can talk with your person or give specific time or make them busy too , my my objective is not relationship advice but to protect your brain spaces more and yes we are social being you should hand out but under limit , priorities matters.
Well said 👍
very helpful thankyou :Satyam
You are actually very knowledgeable relative to everyone else. I agree with what you’re doing basically having a poly spectrum of knowledge instead of a single concentrated mindset or thought. Thank you for the Nuro thinking tip. I will definitely start looking into that. I recommend looking into metaphysics and epistemology with your developed conscious in philosophy for the widest range of knowledge.
bruhh..........💥💥...........can i follow you somewhere for these kind of tips
amazing tips
That's like the levels of a abstractions of a field. A technician does no need to know physics to know how an engine works, but knowing the physics is always useful.
@Prodigious147 anybody can learn how to fix an car part by shadowing a mechanic, not everyone can design and create new car parts and optimise them for better performance. Understanding physics, math, chemistry etc at higher levels helps in creating novel solutions.
Topdown learning is the best way. I started learning things quicker when I stopped worrying about every detail. I eventually came to understand the details without even trying.
@@Lolnigaaaaaaaaa my assumption is that he’s talking about conceptual/interaction based learning. I guess a way that it could work is that by learning “top-down” you’re building a larger framework of understanding for the intricacies to fall into place within.
Kind of like building a map of a region. You don’t necessarily need to know the side roads and alleys of one part of a town when you don’t even know where all of the towns are.
Map the cities, then towns, connections between them, etc, and then the intricate details will naturally fit within that framework.
Idk if that makes any sense but that’s how my first attempt at explanation is.
@@Lolnigaaaaaaaaa See bloom's Taxonomy or solo's taxonomy top to bottom
@@maal124 woah i found it thank you man
@N G thank you sm fr
Exactly, when I undergo training in a company what they talk starts to annoy me, because I know it’s a waste of time to go in detail about the detail.
I've found learning about compilers to be way easier using this method, just focus on each step and blackbox the rest, eventually you'll learn the entire thing
same jotaro .... dont approach me
@@aryankathawale9269killer queen had already touched reply section, you fool!
and how do you blackbox the rest?
@@joediditde Draw the rest of the owl
@@rawallon sorry i dont get that reference
I used Black Box Method to learn Black Box Method.
Congrats. You reached level 2. 500 to go and you have 1 life left.
@@NeoKailthas ah shit, here we go again
Harvard : you want a scholarship?
Then how did you learn Black Box Method?
To learn recursion, you must first learn recursion
Legend has it people who are not using this method are currently working on assembly code that adds two numbers. Next step is adding binaries then creating hardware circuits. Then of course how electricity works and atoms and thw universe. But that is just the beginning
Damn you really hit the nail on that one. Thanks for blackboxing the blackbox method for me 🙏🙏. Im grateful
At one point they were soldering transistors to make an arithmetic logic unit but realized they didn’t know how transistors worked so they’re currently mining silicon.
@@boobbbers And then they realized they don't really understand the optimum methods for silicon mining so now they are off to studying metallurgy.
I was.. actually legitimately trying to figure out how to build my own compilers into machine code and write my own firmware, lol. I probably will still do that, anyway, because I think it's cooler than today's programming-made-easy languages.
Petzolds 'Code' is actually really good for this, best read after you have black-boxed most of the chapter list :D
Ive started doing this in the last 2 years. I just called it a new version of learning with the 5Ws.
We as engineers and tinkerers tend to go STRAIGHT for the "how" too soon. Mastering the Why, then the What, of the total system will make the HOW 321783907218389 times easier to understand.
Do you mind if you explain this concept, I watched the vid and I don't really understand it
@@asaadhusein yeah. Video doesnt make sense.
@@asaadhusein If you focus too much on How something works when you're learning that for the first time, you'll lose too much time to fully comprehend What that thing does and Why you're using that.
First you have to know what the goal of that concept is, after that you have to know why you're using that instead of another concept.
This way you're already able to apply that concept in many situations.
And just after sometime you study How that concept works. (Learning the goal (What) and Why you're using that make it easier to learn the How
This is basically just the top down approach rephrased into different language. in a top down approach u split up a problem into an application layer and a foundation layer and then you play around with the application layer first and dive into the foundation later (or not at all). I have been learning like this since I am a kid and even theuniversity I go to teaches like this. I agree that for most people this is much more effective and efficient. The old school approach especially from elitist universities that teach u the very basic foundations of everything first and then work their way up, is extremely outdated and in most cases a complete waste of time.
Even if you want to go deep into something it's better to start from the top. You can study for hours how the foundations work and can't make sense of it but once you start seeing the application it starts click and you understand everything.
Just start to do something and then try to see how it works.
Yes that direct form of learning is normally better for more practical tasks
This same approach works like a charm for many non-programming topics, as well, in particular in mathematics. If you do not know *where* you wanna go, you will never be able to get there.
Except I'm pretty sure that black-box idea is much older
Totally true, there are so many theoretical concepts that won’t be useful for any of your application till the end of life at which we waste our time by learning them. Top down approach FTW!
It's another word for Abstraction -- the frontend, the interface is simplified for use, and the internal mechanisms are hidden away from the user.
I passed a whole uni course using this technique and I actually learned it better than other courses, but don't know why I never kept doing it, this video reminds me I should try it more :) Cool video, Thanks.
can you explain it in simple words in context of programming problem?
Yh for you mind if u explain it
It's like studying the summary first and important formulas that you will be using to solve problems or answer questions in the exam.
by doing this you will get ready way more faster and you can acctually take your time learning details and more complexity in the topic afterwards.
I did that a lot when I didn't have time to study the whole thing. and it's good to know that this is a good tactic and to see other top tier learners use it as well.
This video taught me that it's really a better way to approach concepts and it saves up much time and relieves stress too.
Loved this type of "Hey, here's a trick and my experience using it" video
tbh i dont know why this video appeared on my feed but i watched the whole thing because learning hard concepts has always been a struggle for me. I'm a firm believer that I can't move to step 2 if I dont start and finish step 1... sometimes i'll read a whole chapter in a book on something I already know just because of the integrity of starting the text book/this particular author's lesson plan from page 1. But I've never actually finished any thing I started studying. I always fall asleep and feel too overwhelmed to pick it up again the next week. This concept really helped and i hope to apply it effectively in the future.
Also, I laughed because we're from the same area (10:57)
OMG this is exactly what happens with me too!
difference between you and people who know is that they pick up the book again thats literaly it
Same for me. This non-blackbox way of learning works ok in undergraduate school, but it completely destroyed me in graduate school where I have to read tons of papers and test out different things.
Yeah, this is pretty much me. I've been teaching myself mathematics but literally started from the ground, elementary school stuff. I'm way too perfectionistic in that regard, so I wanted to each and every step of math like I experienced it in school again. I can't say that it didn't help, but it certainly costs a lot more time.
@Kaje honestly i know exactly what you mean, however, i don’t necessarily think this approach gives keen understanding quicker. I think it just gives you the ability to use the topic with a very elementary understanding, w/o going thru all the rigor. youre still going to need to put the time and effort regardless, in order to develop a true in-depth understanding of w/e topic you’re studying. im still gonna try this out tho.
0:07 Cube
0:28 Use it to solve problems
0:53 Use it all the time
1:00 What is a Black Box?
1:53 Sort Algorithm [ordering in a way]
4:28 Unknown -> Learned
5:34 Blackbox is used as a 1st step to learning an unknown.
6:23 Contest
7:07 +Quick
8:02 Learn where to go.
+ Focused learning
9:00 Flexing knowledge
9:56 Coder Library 📚
11:07 The Functions
Black boxing is useful in another way as well. It can make you aware of your tools. I can't stress enough how useful it is to know something exists, even if you don't know all its details.
It’s basically like drawing a rough sketch first before painting in detail: it keeps you focused on the entire picture and stops you from gettting bogged down in minute details
beautiful explaination
Instructions unclear: Black Boxed Computer Science and Graduated with a Ph. D.
I'm way too ADHD / OCD-ish to learn this way. I always deep dive on a topic and learn everything I can about it before moving on to the next topic. While this isn't the most effective way to solve any one problem the fastest, it has helped me surpass many of my colleagues who use the black box method for every single problem over the 15+ years I've been programming. There's definitely trade-offs between breadth-first and depth-first learning, and it's important to know when to choose which method for each problem you encounter.
I encourage everyone not to forget to go deeper occasionally when you find something you're genuinely interested in, especially if you might use it again later (which people are awful at predicting, because most things are applicable later if you truly understand them).
If you wouldn't mind, could you explain what breadth-first and depth-first learning is for me?
@@angurishudesu why is the breadth first how is the depth first
This is helpful for professional life too, since it can be easy to fall down the rabbit hole and spend ages trying to fully understand something, which can be valuable but also can cause friction with management types who want to see visible progress. Blackboxing can help defer research that would take a long time right now but might become obvious later.
That's exactly what a Bachelor's in Mathematics is.
Loooolll
I dont get it, can you explain? ( i am also doing a bachelors im math)
@@doxo9597 Well the most common blackboxes in math are theorems you don't know the proof for.
Example: Every base of a finite-dimensional vectorspace has the same size. Feels right, but on the spot I'd have difficulty coming up with the proof.
Another one: I often use the geometric series, but forgot its proof.
i agree with you. but i will go as far as to nitpicking applied mathematics as a black box in the world of mathematics.
Omg. That's exactly what I was thinking
UA-cam is weird, it's only been 2 weeks since I started learning Python, as a complete outsider to the coding world and zero prior experience. Even so, I still understood segments of the video. Liked and subscribed, will come back to it again to test myself on the concepts used. Thank you.
Did you finish it? learning python? where it led you?
this concept is really helpful for my current work. i have noticed that learning complicated + related topics gets a lot easier when i don't try to "drill down deep" into the topic, rather taking a look at multiple related things and then "starting to tie it together".
also the comment about u "beeing proud of your black cube drawing so ure gonna keep it around" was really cute and charming haha
Do you mind if you explain this concept, I watched the vid and I don't really understand it
I think this applies to any form of learning. Thank you for the video, it really made me reflect on how I learn. I definitely need to use more black boxing before getting obsessed with the details.
A simple yet an extremely good method. This method can be applied anywhere not just hackathons. Thanks for the video.
We live in the era of information overload thus it's essential to filter and simplify information we consume and search to be able to function (and keep our sanity) in this world.
I've created this technique kinda subconsciously and been using it almost intuitively and for all topics even outside of the field of programming. Especially in programming it's necessary to look at things at "high-level scope" and use abstraction. The goal is to have the largest concept map in your mind, know the tools, their usecases and how to apply them (etc.).
The one of the main benefits is this gives you more motivation and get rid of frustration because you see more results as you know more things and can use them to create better projects and solve harder problems, instead of digging deep into a rabbit hole learning one concept fully.
This is my main learning approach: i gather as much general info as i can (especially the name of a concept) and when I need details that's what google is for
This basically top-down learning. It's very useful to understand things on an abstract level before getting specific and meticulous. You learn the specifics with experience, study, and relation.
I actually used this method when learning JavaScript, and didn't even know that it was a method for learning concepts! Really helpful to learn the fundamentals and blackbox some of the more advanced stuff, so you actually learn the language itself, and then you deepen your knowledge of the workings of some of the pre-existing functions.
im learning python. can u explain in simple terms how should i learn.
@@会供価 How would he know how you should learn python if he's learning javascript?
Thanks Colin. This is one of the big reasons I perform poorly in the contests because I don't know a lot of algorithms and data structures. If I use this and solve some more of 'em in contests, it can boost my confidence enough to not get bogged down to learn these difficult concepts eventually. Imma try this method out ✌️
I faced this when trying to learn html and css, the more I dived into details, the more lost I felt. Eventually I got fed up and copy pasted some template code, tweaked it and now I feel like I gained more idea about web page design than I did with those detailed tutorials.
4:52 softest(weirdest) plugin ever!
black-box everything first, learn concepts as needed. great strategy to not getting overwhelmed by learning everything before it is needed.
That's been actually my method for any project in general (not just learning). I'm currently working on an App project, for example, and since it is my first app, there's a lot of unknowns. So I just define each major step on the process of making the app (like, each feature), and specify each one little by little, and it's like an iterative function. Each step has substeps that can also be splitted by itself (for example, in step Auth Feature there's the substep Do Login usecase, and in Do Login usecase there's the substeps Backend and Frontend). And instead of learning all I don't know how to do beforehand, when I start each step I do a research, so when it's time to implement Auth Feature I search about how to deal with authentication in the languages I'm using, when it's time to implement a Schedule feature, same thing, I search for schedule components that people are already using in my programming language, etc.
In fact, I even have a whole life project planned this way lol
Essentially this is "What is the minimum amount I need to know to make this work" which when I look at everything I need to learn is super helpful.
thanks for the view point. i mostly learn new things by like doing them twice (for example once i see it and do then i blindly do it with any % of errors then i fix the errors and mostly thats enough just fixing the errors makes you memorize the code and its key concepts). but now i feel like i can be even more efficent i am going to try this method for the game i wanted to make.
I've been using this concept for years without even realizing it. Works all the time! All you need to know about any field or software or whatever, really, is the basics. And then like Colin said, the details will come later. Saves a lot of time on learning irrelevant jargons too! Thank you for this awesome video, Collin.
I know this is an old video but I wanted to share something similar,
I took a black jack class, and on a 20% pay out there’s a method that requires no math at all, just knowing what’s bets are on the table, you are able to quickly pay it out with insane accuracy with out knowing what you just paid, you just know it’s right.
Going back, I understand it, but when I learned it, I had no idea
Thank you! I have visualized (through Gateway Experience meditation) that a "box" in any dimension only requires two walls per dimension. In 1D, just two points define it; nothing can manipulate or view anything inside/between those two points. In 2D, those points are stretched into lines, and then two more lines are added to make a square. In 3D, like your cube, the square is stretched upwards, and then a top and bottom are added; two more for a total of six sides.
Thus, I can capture/protect/hide items in any dimension I may find myself, using only two walls per dimension. I enjoy reducing a problem to what can be achieved with the least effort/resources, somewhat like taking machinery apart and seeing if it can still function with missing parts. Like in college, a friend replaced his mufflers with "glass packs" for performance which basically just go straight through; so, I learned the muffler is not required for making the car move/function, it's just added legal stuff.
Oh man. Explains why i learn so quickly when i just immediately hop into complex stuff, especially in math and programming. I stopped using this method because of guilt and thinking that im not "learning effectively" by starting from top to bottom. Learning from the bottom from simple things has been so wasteful of my time because i focused too much on little things as to understand EVERYTHING, which hindered at my academic progress. Thank you
An interesting take on black box abstraction. Which is part of systems engineering. Where a system is decomposed into functions, and those functions are independently developed, and then implemented and integrated within the system as black boxes. This lowers the complexity of system as most of the implementation complexity is hidden. Ultimately this is how human beings build extremely complex things. Of course, Colin is taking a different angle on this.
Yes, but keep in mind that IRL complex engineering problems there are multiple teams working on all levels of the problem simultaneously. The scale of the black boxes are different depending on which type of task you are working on. In your example, the individual function implementers will have their own black boxes (not necessary smaller or simpler), and their work will then become the black box of the systems engineers.
@@dreams7091 I am an engineer IRL.
@@bujin5455 Same. Just wanted to add some points.
That cube drawing though 😍
*that -cube- drawing🤣
This is basically the same thing as priming, but with the added twist of applying and using the unknown "black-box" as soon as you have a brief understanding of its: characteristics,
location in relation to other components and surroundings,
as well as what it does.
To understand what makes this thing in the "Black-Box" tic isn't actually required to start using it. But if you know what black boxes you have and how they relate, you will notice that the more complex knowledge will suddenly magically light up in the right boxes.
And especially if you are actively using the boxes in various new situations.
This puts words to how I think about things, I don't need details I just need the gist and how to use it. I will be OK, if I have real interest I will figure out the particulars later or never.
We used to call ourselves impatients. Those were the good ole days.
Damn I remember when you had 46 subs. You've come a long way Galen :D
orz
When did you see him having 46 subs?
When I was learning the 7 OSI layers in university, they somehow thought it was a good idea to learn from bottom up and top down at the same time, separated by 4 3-credit mandatory courses, with 4 different professors using 4 different textbooks.
1st course: physical layer to data link layer with math
2nd course: physical layer to transport layer without math
3rd course: transport layer layer to data link layer with algo
4th course: application layer to transport layer but this course's professor is frankly hard to understand
It is entirely possible to learn both bottom up or from top down approach, but it should be executed very well. Conflicts can happen because of miscommunication between teachers.
Unfortunately a lot of university networking courses teach it this way which is incredibly weird and ineffective. If you want a great book on computer networking that teaches it the RIGHT way, I recommend "Computer Networking: A Top-Down Approach". As you can probably guess from the title it starts at the application layer and works its way down to the physical layer.
@@Baconator1368 yeah this is my 4th course's textbook. But unfortunately my professor taught with different order of chapters they were intended.
Dude, I just discovered your channel from this video and it is amazing. Keep up the great work!
Agreed. Black boxing (and copying code blindly) are usually the easiest ways of getting stuff done while you're learning what you need to move forward. That's why you see blind copying a lot in junior devs.
What do you mean by blind copying
Same reason why you skim and scan for comprehension tests.
Skimming gives you a quick idea of what the passage is about so when you scan, you pay attention to what is most important, because let's say if Jim was revealed to be the killer by the end of the story, now you're gonna focus on the clues that point toward that as you scan the text again.
I've participated in a CP competition before, but that did not allow any sort of outside info (no internet connection, you could not even use a book you brought), so this would not help much - but outside that competition, it's an useful technique everywhere, not just in CP...
All my life I’ve been unconsciously using this technique without knowing it’s name 😅
I’m a self taught person and my friends say I learn stuff fast, but the reality is I’m the embodiment of a Jack of all trades master of none lol (well actually I do get deep in some concepts the I really need). But yea I usually create a big abstract picture of how things work before even learning the details, then it’s easier to learn the details.
Thanks god for my internal black box!
my friend was using this method all over the semester and she failed her intro course (something 101) for the second time. This method is effective when you do a ton of it on one topic, where u reaches a level of state, like storing a massive amount of raw logics about the topic. To a point you 'have an answer to every (or most of the) questions that might be asked'.
personally I recommend only using it for temporary concepts, some side knowledge (stepping stones), otherwise, learning by the comprehension way actually make your study easier as you learned more / understood more.
btw this method is so bad for big topics / things that really worth research / things that has a lot of value, that I'd almost never use it. There is no short cut for knowledge
Amazing video Colin, thank you so much for it, first time viewer here, now, also a new subscriber
Fun fact: there is a technique used in software testing called Black box testing!
Thank you! Sooo basically it's understanding a concept/idea/mechanism you don't understand well enough
I watched about half the video since I got lost in the sauce. I'm no computer programmer but as an artist, this broadened my perspective on things.
We are all standing on the shoulders of giants. Accept that, and contribute something of value instead of grasping for a feeling of control by trying to understand everything.
This guy speak wisdom. Took me 4 years of professional career to get me the same conclusion.
You talk so clear. I am listening to you on 2.5x and can clearly hear all words !
Very good technique, very hard for my mind to allow me to think this way. I tend to grasp concepts atomically - I either get it all or I’m thoroughly confused
By the end of this vid, I’ve learn to love that black box, his been drawing outside the box
For what it’s worth, that’s an awesome black cube drawing
So basically not overthinking and just doing it which makes sense, I've been doing the opposite for a while now because for some reason I can't accept my solution without proving everything about it. The Black Box makes sense but it didn't really came to me until now since I took a break from programming, I personally think this can be applied to anything. You don't have to understand anything about calculus to do basic integration/differentiation, You don't have to understand figure of speech to speak a language fluently, You don't have to understand group theory to be able to speedcube under 10s..etc. All in all, you don't have to be necessarily smart to learn hard skills. Lastly, I actually think this is how most top competitive programmers learn, I'm guessing prodigies naturally learn in a Black Box way because it was just natural for them to learn what an alg/ds does instead of how it does it. When you gain enough experience in competitive programming and good knowledge and understanding of theory, that is the point where one can probably do high level analysis of code or algorithms for that matter. Black Box aims to make this learning progression work more efficiently because we don't have to spend time thinking too much, we only spend it on anything necessary which makes learning the basic stuff faster.
That's how AI-based tools are also gaining popularity. We necessarily don't need to know how it did the computation but if it's suitable for our need.
amazing useful. currently I fall into a situation which struggle to understand the more details of complex DS, and I know that's not very important instead of understand how to use them.
Blackbox technique is efficient for achieving average goals, if one wants to achieve greater success then first principle thinking is needed.
Black box method is effective at learning something very fast without actually understanding how the inner parts work. However, overusing this method makes you an expert of nothing and the knowledge can be quite difficult to apply due to sheer amount of abstraction involved, also abusing it makes it difficult to solidify that knowledge into long term memory. Public educational systems are big promoters of black box methods A good balance needs to be made between finer understanding of concepts and black box method. For example, finer understanding of concepts makes the black box method trivial to apply and use. Additional benefit would be the increase in problem solving skills and better ability to improvise. The knowledge is easier to retain over a long period of time. The disadvantage of abusing finer learning makes you a perpetual student which isn't viable.
This is how I learnt programming, Operating Systems, App Development, Frontend and basically 80-90% of the stuff I do.
This is something good to do when you think you are finished "learning" (you never actually finish learning).
For example I want to know what happens and how that "black box" works from the inside cause that might give me an idea of how to solve a similar problem.
I don't know if I phrased that correctly but I think you get the point I tried to make .
Do you mind if you explain this concept, I watched the vid and I don't really understand it
@@asaadhusein If the video coulden't explain it to you then a comment surely won't. Blackbox generally is when you don't care about some specific "function" or "algorithm" or w/e that might be it might be an object I don't know, you put that aside for now and you tunel vision on your problem . The only thing you know about this blackbox is it's input and output and you shouldn't focus for the time how it does what it does. You might learn later much easier and even quicker than if you focused on it the time you use that "Black box" for a problem. That black box might be a function that takes as input a list of numbers and then it gives them back to you averages and sorted (that's something too easy to be even considered a black box but for the sake of discussion) the point is you should focus on your problem and leave the black box do it's job averaging and sorting those number you do what you are supposed to do and as I said in my comment after you solve the problem look inside the black box and learn how it works it might help you later on. I hope I explained correctly and didn't comfuse you in any way.
I also believe it's less discouraging cause even though you don't fully understand all the concepts, you can still use them.
One possible example might be the teaching if electric circuits at the level of "lump" theory. While there's also simplification going on (ignoring parasitic capacitance, treating wires as perfect conductors), the model focus in what goes in and out of components, and the expected transformation.
I call it the bfs followed by the dfs approach. First bfs over the topics to understand the essentials, then do a dfs on each topic as necessary.
Congratulations on 10000 subscribers!
10k subscribers coming soon, Colin getting ready for face reveal
That would be cool
It's 11k now within 1week he did more than 1k
You went to Moco Blair high school? No wonder you’re so good!! That’s where all the smart kids go!!
mashallah
Following is some critical analysis on the video as a whole. If not ready for extensive reading, please do not proceed.
I'd like to start by talking about the difference between being informed about something and actually understanding it. To be informed is a consequence of simple technique or message capture. This is what you do when you read the news, or when you come to know of some factual topic. Actually understanding something requires a much bigger effort, for being informed is a pre-requisite to understanding the information. It requires a more active kind of reading done by whoever receives the information, be it from a video, book, audiobook, common speech, etc.
Memorising is not learning, by any means. By repeatedly bringing your attention to multiple concepts, coming to know a mere shadow of their inner workings (what in the video is described as "blackboxing") generates comfort in holding to yourself a package of brief, partially informed, rarely somewhat understood concepts. What is presumed here is that "blackboxing can't hurt". I heavily disagree. There is a reason as to why people come to focus on a specific concept and only start focusing on a new one once they feel they've mastered the previous topic to some useful degree. To believe you're becoming a better programmer by using other people or other researchers' code in ways you barely actually understand, then bragging you won some leader board position by copy-pasting code other people wrote or actively thought about is to brag about becoming a teacher by cheating on your tests at college.
As programmers in general, to understand the structure and meaning of the code we write (and partially, to make it readable to others as well) is a great part of our job, which frequently has a higher significance than actually writing the code itself. There is a reason why NASA would only allow people who understand each and every functioning part of a space shuttle to actually build one under their name. The concept of "blackboxing" may be applicable to competitive programming if you want to limit yourself.
I'm not a competitive programmer, and even thought that is true, it is also true that the best among competitive programmers are the ones who actually understand what they're writing, in an active fashion.
As a conclusion, I dare even say that "blackboxing" is a quick solution to produce incompetent programmers who think they can actually program somewhat well, feeding their eagerness to say "I can use X concept", while actually retarding their learning process by trapping them in an illusory state where they believe they are much more than reality brings.
Again, these statements hold true for general programming, for competitive programming is much different, still, my points towards it are true. Feel free to critique me, to share the video's author's point of view, or to correct any erroneous idea or thought I may have presented. Even if audacious to make such comment, I recognize I'm not the one to judge what holds true and what does not. If you agree with me, and additionally, if you have something to add to my comments, feel free to do so, and if you disagree, the same freedom, if not more, is yours to abuse; although I do not expect a great number of people to read through this whole text, as it requires patience, a virtue I do not hope to find in those who came to this video with the objective of accelerating their learning path.
Drop the self-flattery then I'll read it.
I was reading it in good faith, but somehow the tone put me off. You may be right but I'm not persuaded
@Volatus
its not like you dont need to understand how/why those concepts work at all, and you can just black box them. Like say you do know that an algorithm exists and it can be used to solve a problem that you are going to solve in a contest/coding competition, but you cant implement that algo on your own. You can either skip that problem or just black box it. This is one of the most common use cases of it. And if you watched the video, colin did say that you are eventually going to have to learn these concepts to be able to make changes to them and be able to use them efficiently. The point is that when you encounter a problem in a contest that can be solved using an algo/some concepts that you know that exists, you shouldnt be like "ah I should use XYZ for this, let me learn how to implement this right now and understand it in details" and instead just black box it for the time being and learn it later when you are able to understand it properly.
And i would also ask you to not judge people without knowing anything about them(accusing them of not having patience or not having virtue)
@@boundless-sher Thanks for the feedback, but I'd like to answer.
Firstly, I did watch the whole video, and also understood that blackboxing is stated as a temporary solution. You basically stated in the text the content of the video, which I had as whole in mind when writing that comment.
Repeating myself, the problem lies in generating comfort in holding to yourself a package of brief, partially informed, rarely somewhat understood concepts, not in using the blackbox method as a whole.
And lastly, I've never accused anyone. Saying that makes me think you did not read my comment correctly. I said that patience is "a virtue I do not hope to find in those who came to this video with the objective of accelerating their learning path." It's an obvious thing to think that whoever tries to rush their way with methods does so because of impatience, and even though, I'm not saying whoever watches this video or clicks on it won't be patient. The fact your answer was polite and you put in the time to try and explain to me your point proves that. And also, I stated patience *as* a virtue, not as a separate element (so I said some people "do not have the virtue of patience" rather than saying they "do not have patience nor any virtue"). So, as you asked me not to judge people, I'd like to ask you to be more cautious on your reading; otherwise, thanks for the comment and the kindness of trying to politely explain your point.
I love your videos , always to the point never wasting time like most UA-camrs do for views! Thank you and keep it up, man !!
Love that you’re from Mo county. Wish I could’ve seen this video earlier cause this is definitely useful right now 👏🏿
great video sir!! i really enjoyed it 🤠
philosophie
Ty so much. I knew it’s good approach but didn’t know if it gets this much huge advantage like this. Ty again ❤❤
I didnt know that this kind of approach is block box. I self learned web development through online resources and the way I approach the learning materials is to study an example (Html, css , javascript). Some yt insist to focus on studying one language but for me I love exploring those 3 languages at the same time because it helps me to connect the dots
This video applies directly to material balance ideas that form chemical engineering. Great content
I’m not a programmer but instead a molecular biologist and your channel is an absolute gem.
I guess given the computational requirements for my field I am a programmer in denial. Very thankful for your insights you’ve published.
Thanks again!!!
I have been using the blackbox method in some places but thought it was my homegrown method. didn't know that it had a name. Anyways good video. Now i can improve my homegrown blackbox using the inputs from your video.
This guy is single-handedly saving all careers
Man I wish someone would have told me this when I first started learning to program. Once I started doing this I learned way faster. It doesn’t make sense to go deep into the weeds of one concept when there’s so many concepts to learn, not in the beginning at keast
Didn't know their was a name for this strategy. Been doing it for years
a cool thing about black box, or hidden box, is you dont need to comment the black boxes cause they are comments in themselves, and u can pretty much write the i/o half in a day.
Black box is a process that converts input into output without needing to know the contents of the black box.
for example, there are concepts a, b and c.
if you learn a, continue learning b and learn c sequentially, it will take quite a long time
with the black box method, the learning process can be accelerated because we don't need to know how things work in concepts a, b and c
just need to test the concept of what requires what input and produces what output.
By knowing the black box of concept a, concept a can be used practically.
the key is, concept a can already be used. then you can continue by studying black box concepts b and c.
why is this useful? if you already know the black box, learning these concepts will be faster because:
- works quickly
the information needed to use something is less than the information needed to understand something
- lets you know where to look
if one day you decide to learn it, you can strengthen the concept by studying it. So, for example, if you encounter a problem with a concept that you don't really understand. Maybe you know the black box concept but don't really understand it. at least you know what you are looking for. You know this concept is related to the problem, you're just not very good at it yet.
- lets you identify related problems.
You already know where to practice the concept when you decide to learn it.
- keeps learning focused
because you already know what the concept does, you already know the goal. What you just have to do to transition from black box to normal learning is how that thing works. you already know what the concept does, what the concept needs. You just have to understand the internal mechanism of the concept.
- makes learning less scary
if you already know what the purpose of the concept is and are familiar with it. it makes it less scary to learn it for real. because you already know what the end result will be. you just need to learn how the input can be turned into output.
My brain rejects blackboxing to some degree. If I don't know the inner mechanisms enough to manipulate and edit it, then I simply dont acknowledge that I understand it
In the end you have to blackbox *something* for one cannot understand the true fundamentals, only accept them.
But that's what I'd call "levels" of blackboxing, hence how deep you go before you have to blackbox
But these levels of different things often converge. Many things often result in the same questions in the end, fundamental questions. So the best you can do is understand these branches and lead them to the "trunk" or "stem": the sequence of levels that deterministically lead to a fundamental question
Can i use the black box method to learn how to use the black box method?
You put a concept into the black box method, and out of that you get the concept's process simplified to the inputs required and the outputs it returns back
Just be careful not to accidentally start boxing with black dudes
That's what the difference between a algorithm enthusiast and one who is not. You see they both are opposites sides of same coin its just they both can't see each other and when they do they get excited.
This is essentially the same idea as the 80/20 Principle. 80% of outputs are a result of 20% of the inputs.
No.
How is this the same your still trying to understand everything this from most relevant to less relevant..
Huh?
Impressive stuff! I stopped watching 10 seconds in but the black box looks great! Drawing boxes is a hard concept as you said in the title but I hope everyone learnt something new here today :)
I have no programming experience but this sounds like memorizing math formulas and learning where to use them instead of actually understanding why those formulas makes sense. It's not something I do much, nor is it something that I like to do but as things get more complex, it could be a better idea to just blackbox things and leave them unboxed until you get to a point you can understand them easier and faster, or until you actually feel the need to understand them. This seems like a pretty good method that doesn't only apply to programming but also applies to learning logic-based things in general.
I have a feeling the concept of the black box is the future for humanity. Knows how to use something in terms of inputs and outputs but if they were cast 100 years into the past they wouldn't be able to build the black boxes to begin with.
i started to do this and it helps not to stress that much over details! so it’s basically a top down approach, where you only need to study down the tree when it’s necessary? the only problem is studying the details...
this would take ages
Love love love this, so simple, thank you.