Skip to main content

TOP down or bottom UP approach to Learning

     All of us have unique learning ability. Learning new thing has two of many approaches ( i.e TOP-DOWN or BOTTOM-UP ). TOP down approach is from Generalisation to Specialisation approach and BOTTOM up is inverse. Which approach to follow depends on the individuals choice and level of experience. In both the cases you can start small then broaden your learning and then narrow it down for easier storage and retrieval. Let's do a comparative analysis today of these approaches and understand which approach is better.

    Learning something new requires lot of efforts and if you do it wrong then you tend to confuse yourself and lose confidence. Let's take an example of the BOTTOM up approach, if you are learning a new programming language and you start with the datatypes, reserved keywords, access specifiers, etc. then you will need more efforts to first store all what you learnt then club them together to create a logical whole. Most of us will argue saying that - That's how we learnt as a child. We learnt basic things then we started grouping and generalising them. But isn't it the old way of doing things since ages ? Think for a moment in the preliminary stages of human development we did not know much about our surroundings and we started with basics and built our knowledge bank and then started grouping things. We learnt about wheel followed by motion creation which lead to invention of vehicles, machines, etc. But what if we invert the approach ? 

    BOTTOM up approach is good when everyone ( I mean almost everyone ) is new in learning things but its a slow way to learn and recollect information. Your brain has to remember things as they are without any relation. For example if you want to buy a property and I explain you about the rooms first then tell you about the building then about the society then where is this property situated within the city, your brain will not be able to easily correlate things. On the contrary if I tell you first about where is the property in the city you brain will first try to understand how to reach to that location ? Next I explain you about the society you will know high level what all community shared assets are present. Then I explain about the building then you start think about your level or ownership in detail. Eventually when I explain about the rooms then you will know what accessibility you have in your private space.

    TOP down approach is good because we can start with simple and logical things based on our prior knowledge. You can start learning a new Programming language by understanding what is the key differentiator that makes it unique. When to use it ? Why to use it ? What are its use cases ? What are it pros and cons ? Now that you got to know these things, you should look for how to write a basic code and execute it. The classic hello world program :) Now you know that you can write and run a Program written in this new language. Next comes is finding the basic components of the Program you have written and understanding them at high level. Just to know what they are. Then as mentioned above you can deep dive on different topics by starting with basic composable building block. For instance in case of Java its classes. After classes you can see its kinds like interfaces, abstract classes, etc. These are the composable things similar to classes but are different w.r.t what they represent and their use cases. Now you could go for datatypes by learning and using them in your Program sample codes. You are gradually creating a depth in your knowledge. But wait are we missing something. What about packages, modules, JAR files, etc. Aren't these at a higher level compared to classes ? Should't we start learning about them if we follow TOP down approach ? So what should we do. A new approach to follow ? Start in the middle and go both ways.

    Hence I recommend a sweet spot between these approaches is to find a starting place which is not very lower level and not very higher level based on your comfort level and experience. Most of the books and official documentations which I read, do not follow this sweet spot approach, as they have to generalise things. Hence its onto us to find that spot and learn accordingly. You can either traverse both ways from the spot towards Generalisation and Specialisation following parallel baby steps. What is your sweet starting spot of learning a new Programming language ? Think over it !!

Comments

Popular posts from this blog

Container detached from docker network

Introduction One fine day you find out that one of your docker containers is running but is not currently attached to the container network that you created using docker network command. Ideally a container should be detached from the network when there is some error in it. However, if you set the restart: on-failure in the docker-compose.yml  in that case the container should restart and still be attached to the network. In such a weird situation follow the steps documented in this blog. Possible reasons Listed below are the possible reasons for this issue Storage space issue Memory issue ( We will cover this in next blog ) Storage space issue We need to check the space utilisation at the server level first then drill down to the docker engine. Server level utilisation In most cases the server is ubuntu system hence check the disk usage using the disk free command (i.e. df -h ). It will show you the current storage space utilisation of the server. df -h Docker engine space utilis...

Secure login to MySQL for bash scripts

Introduction In this blog we will connect to a mysql via CLI from a bash script for generating a db dump. A cleaner approach for the same is using mysql config editor. In this blog we are taking an example of a mysql container running inside docker and we have a script for taking a db backup using  mysqldump . We will not use a password as a parameter to  mysqldump  command instead we will use something called as login path. MySQL config editor It is a utility to store authentication credentials in a obfuscated login path file named as  .mylogin.cnf . How to do it ? View existing configurations To view existing configurations if there are any use below command. The command will output existing configurations if there are otherwise it won't print anything. mysql_config_editor print --all Sample output In the output below you can see that the password is obfuscated and is not readable directly. It is handled by the mysql utilities to use this password as per the flags ...

How to install Google font on MacOS

Introduction Google fonts are open source. I was reading through the new angular website  and was astonished by the beautiful font used in the code editor shown in the samples. The font name is DM Mono . I wanted to use the same font on my Visual studio code editor for the Angular project development but I could not find a good blog which will guide through the installation process. Hence I am documenting this blog for the same. Get the font Follow below steps to download a font from Google fonts website . Visit the Google fonts website .  Search for the font you like for example DM Mono Click on the Get font button It will download a zip containing ttf format files Install the font on MacOS Once the zip is downloaded in the default downloads folder on your Mac. Follow below steps Double click to uzip the zip Open the folder Ex: DM_Mono Select all files with extension as .ttf and do not select other files like txt or some other format Keeping all the files selected double clic...