For those who don’t know — Black box theory is widely used among programmers (and scientists) for efficient learning and understanding of complex programs and algorithms that cannot be understood in one go. I am about to graduate college and it’s been years since I have been dedicated to my studies and career, I have also prepared for multiple national-level exams and am currently pursuing a domain outside and irrelevant with my degree while pursuing competitive programming, so yes- I think about efficient studying a lot.
Google’s definition of The black box theory says: “Black box theory is a way of understanding something based on its function, without considering the mechanism that enables it to perform that function”, It helps us to get ahead to the function of the program that matters instead of wasting our time understanding the underlying mechanism of it. Since kindergarten, we have been wired to deeply understand each concept we are learning, instead of just figuring a way out or a solution, but as we grow up I have noticed the pattern we require to understand these complex subjects such as programming and organic chemistry, sometimes physical chemistry as well changes, and the black box theory has helped me implement these subjects more efficiently.
The practical idea is very simple: 1) when you hit a plateau, which you would do very early while learning these subjects, you. don’t. stop. Even when you feel you are not getting a single word or term written, you go on — see it as a mathematical puzzle, see it as a foreign language written and you just have to make sense out of it, some sense at least, do it over and over again, maybe you’ll learn a point or two, not necessarily the mechanisms underneath or the reason behind the reaction or response, probably some facts, but you will learn. 2) Give it time, do not set a deadline for when you will be able to completely understand the topic or when you will be an expert in the subject, just go on, even if you feel blind, stay tight and focus — again, think of it as a puzzle. 3) Do not get stuck on the basics: We might think giving the basics too much time will strengthen our fundamentals and understanding (which is true, in another category of cases) But if you get stuck on what all libraries are important in a c++ program and which libraries include which methods and data structures, you will never be able to learn the working of graphs and trees. And let’s be honest, these basic things won’t help you ace exams, neither will they help you get a job. Nobody will pat you on the back if you know why we use int main() initiating a program and not another data type. This is a completely different category of learning, and black box theory helps you make progress faster and not get stuck, keep in mind to understand that being on a plateau is okay, that’s how it works when you are starting to learn things like these.
Following are some of my incidents: This is the time when I was in 11th standard(15–16 yo) when my organic chemistry prof told me these golden points: “ Even if you feel like you are not understanding anything, do not stop, do not start again and again, just keep moving forward and all of this will hit you in 6 months” and that’s exactly what happened, it hit me like a brick after 6 months, It was demotivating at times, not able to understand why is something happening a particular way, but when I reached a threshold of the syllabus, those points just connected and everything I’ve been learning started to make sense.
See the point is, Some of these subjects can not be articulated like an English poem your teacher used to read to you, Some of these subjects need you to dive into this black hole of their concepts and stay there for a while until everything joins and starts to make sense. You just have to be patient enough to hold on to it even when you feel like you are making no progress, and one day it will just hit you- and you will be glad you stayed focused.
The second one of my incidents is more of a mistake: When I started college, people told me to dive into competitive programming if I wanted to join the software industry, given I had no coding background it made no sense to me at first, you have to pick a language first, then understand how coding in that certain language works, then you have to learn about data structures and algorithms- which is a topic that never ends, you can spend years learning it and there will always be something more to learn (well, this is how it is in most of the things we learn- but we still learn a bit of everything, we don’t have to be an expert in everything) so I let it get to me, It felt so unachievable to me I started procrastinating, using various excuses so I don’t have to face that feeling of being inside that darkness- of not knowing- on that plateau- the feeling that I’m not making progress. By the end of my first year in college, I saw my batchmates become great competitive programmers and acing in contests, By the second year, I saw people getting various paid internships, people having their ranks of coding platforms up their LinkedIn profiles, and it hit me- I was a loser, I was not able to do it, I was not able to make it. In my third year, I saw people getting paid 3 lakhs INR per month for their programming skills, and I did not even get shortlisted for an interview. I accepted I was a loser, but started working on my DSA skills anyway- as a last hope for me to get a job, if I have decent DSA skills, maybe some low-paying company would consider hiring me- and that is, just sad, it hits a sad unexplainable spot inside me. So I started preparing for it, and I had no other option (I did not consider switching my domain because I knew I wanted to pursue programming, even if I were a failure in it) I did not think of anything at all while studying it- I had no time to wander, the placement season is near, I do not want to be unemployed, I had to do something about it. I unconsciously applied the black box theory all this time- desperately trying to get a hold of the solution and what comes next, rather than sitting and understanding the depth and mechanism of the program like a time-privileged brat, beggars don’t get to choose. And here I am, fast forward 7 months into it- I have gotten a hold of it, and every moment is an awakening, I connect dots now and then and it goes on, I never sit on anything, and I am glad to say I am at a very decent position, I believe I’d be able to afford my dream life and I will get a job where I wouldn’t feel like I have settled, the placement tests are going to start in a week, and I wanted to put it out there- how grateful I am of this knowledge, that I can choose not to get stuck, and how privileged I am for being able to deduce such things that add value to my life- Thank you, black box theory.