Black Box Method
![squirrel.png](./media/squirrel.png)
A guy that explained this concept to me is competing in coding competitions. It's the first time I hear about those, but I imagine you have to know a lot of different methods for solving problems, because when the contest comes, you don’t know what problem you are going to get.
Recently, when I started to think about effective ways of learning a new subject, I came up to people saying to learn things broadly, to just scratch the surface of the new subjects instead of what I used to always do - learn as much as I can (like a squirrel with cheeks full of nuts) about a topic. According to them, after having general knowledge of the field/s you can take up a project and deepen the knowledge along the way.
So let's say there is a field that I want to get into. Conveniently I have such a field - Data science. Data science includes many topics:
- Mathematics
- Statistics
- Programming languages (Python, R)
- Data cleanign and visualization - (Pandas, NumPy, Matplotlib, Seaborn)
- Exploring the data (SQL)?
- Machine learnign algorithms
- Deep learning (all about neural networks)
- SQL & MongoDb (working with databases)
- BI tools (creating interactive visualizations)
and so on…
So, If I want to get into the field AND I am learning by myself from scratch, creating my own small project and working on it. Would it be smart for me to start with and dive very very deep in mathematics? Know the ins and outs of it needed for data science?
As I came to see it, it is worth investing some time to explore ALL those major fields BEFORE you actually proceed to learn one specific topic in depth.
Why is that?
Well, If for example I get a piece of data from somewhere (I am still working on that.. Not sure how, what kind and from where to get it) and I am only focusing on mathematics, I won’t know what else exactly is there I can do with that piece of data. Can I create a visualization, can I make a dashboard or reports, can I get some insights from it? I lack a lot of general knowledge, all I know is math.
![black-box1.png](./media/black-box1.png)
I learn concept-1 (mathematics), but the rest of the topics are unknown to me.
Would it be smart if I take concept-2 and concept-3 from the unknown row and only then proceed with learning one topic in depth. In that case, I have knowledge of all of the topics, broad knowledge (I am going to learn it in depth anyway, so it's only good that I started to learn it already) so if sa project or a difficulty appears, I know about the possible tools I have in my reach that I can use to solve the problem. Yes, I don’t have an in depth knowledge of concept-2 and concept-3, but it is better than not having ANY knowledge.
So, okay.
This is what I am going to do. I will spend the next few days getting an understanding of those fields I mentioned above, so when I am solving a particular problem related with data, I will have an idea what else is there that is possible to achieve with the data that I have.
It's an easy gap to cross versus understanding the whole thing. Black box all the concepts before starting to fully learn them. It is not a substitute for learning them, just for the start.
It is an intermediate step, except it has no drawbacks, you are going to learn this stuff anyway. So it is only going to benefit you.
Advantages
- Works quickly - information required to USE something is much less than the information required to fully understand something.
- Keeps the learning focused - you know what everything is “doing”, you know what purpose of it is. All you are doing when you are transitioning from having something black boxed to learning it norma+lly - you are just figuring out how it works. You already know what it does, you already know everything required to use it, you are just understanding the internal mechanisms of it.
- Keeps the learning focused - you know what everything is “doing”, you know what purpose of it is. All you are doing when you are transitioning from having something black boxed to learning it norma+lly - you are just figuring out how it works. You already know what it does, you already know everything required to use it, you are just understanding the internal mechanisms of it
- Makes learning less scary - when you understand the underlying purpose of something it makes it a lot less scary to learn it for real, because you know the end result already, it is just figuring out how it gets there.
I would like to believe that by doing so I am learning from my mistakes that I made when trying to cram all the knowledge about one field in my head (machine learning algorithms when doing the coursera course. It would have been beneficial to know somy python so I could graph the gradient descent and play with it, have some actual data to work with and so on.. Instead of just staring at one algorithm).
1 To sum up
![black-box2.png](./media/black-box2.png)
Whether you choose to use it or not is up to you, but it can’t hurt, for sure. It takes a really short time, like mere minutes for a single topic. It involves information that you would eventually have to learn anyway and it also gives you a brief but sufficient (sufficient for using it) introduction to topics, allowing you to use them much quicker than you would be able to if you decide to learn them all fully in sequence.
p.s. damn it takes a lot of time to write this html document in a proper way. I sometimes miss Word document, but sometimes I don't. Vim has it's own advantages, but I am new with it so I am a little bit slow. Learned how to yank, paste a word or a whole line today.