Two learning paradigms
The traditional paradigm for learning is how all Schools and Universities work: at the outset you define a step by step program and you follow it linearly. Each chunk of the learning builds on the previous and you are guaranteed that, if you follow it diligently until the end, in general you will receive a thorough base knowledge in the whole field . After the process is completed, it will be fast and easy for you to specialize in any of a variety of subfields related to some application of what you studied, though you are not yet specialized in anything.
The advantages of this paradigm are clear: it strives to give you a complete formation and ultimately make you a sought-after expert. It does however require a long time investment and enough discipline from the learner to push through all the intermediate steps, even when they are not a good match for his interests.
In our modern Google-era, a new way of learning is possible, at least for most technical disciplines — I’m not sure how well this applies to subjects in History and Literature for example. We’ll call this the google paradigm: it boils down to, well, you google it. You can literally type in your question and usually find an exact answer to it in a matter of seconds.
So the question naturally arises: can one skip the lengthy process proposed by the traditional paradigm and jump straight to specializing in whatever skill he requires, simply by strategizing a specific succesion of questions to google?
Though I do not have a general answer to this, I think there are many cases in which the outcome of the google paradigm learning is more desirable, especially in the context of developing software which I will focus on. When you are working on a real project (which many agree is the best way to learn a new software technology) I think it is best to dive head in by gooogling exactly what it is you need and then actually using it, rather than going through generic tutorials.
While it may feel more chaotic at first, the big advantages of this approach are flexibility, efficiency and transferability: you are not bound to a specific way of doing things or a specific library, you are learning nothing more than what you need to know to solve your problem and once you learn to use this approach for one problem you can use it everywhere.
A case study: learning git
Let’s look at how the two paradigms look on a concrete example: learning git. It is my opinion git is one of the most fundamental technologies for anyone writing any type of software, or really just dealing with text files of any sort. In Mathematics departments it is not usually taught, so aspiring data scientists with that background must usually learn it by themselves on their first job.
It actually happened twice in the last month that a friend of mine from Mathematics had to improve his git skills because of job requirements. Let’s then suppose to be in this situation: you have just heard about git, at most run “git clone” to get some data science code you needed, and on your first day on the new job your boss tells you: you have to clone this repository, make a new branch and push commits only on that branch. He really stresses this last point, and you don’t want to mess up. You have no idea what a “commit” or a “branch” is, so what do you do?
The traditional paradigm ironically would start by googling “git tutorial” or similar. This would lead to pages such as this blog or the git-scm tutorial. These are both very well written tutorials that take you through basic git operations, and while they do at some point mention and explain commits and branches, they also contain a lot of other information.
If instead you follow the google paradigm you could start for example by searching “what is a git branch”. Directly on the results page, Google shows a quote from this page:
A branch in Git is simply a lightweight movable pointer to one of these commits. … As you start making commits, you’re given a master branch that points to the last commit you made. Every time you commit, the master branch pointer moves forward automatically. Note. The “master” branch in Git is not a special branch.
That seems informative but a bit terse, and it relies heavily on the definition of commit which you don’t know yet. So before googling that you try instead “what is a git branch simple explanation” and Google shows you a quote from this page:
A branch represents an independent line of development. … The git branch command lets you create, list, rename, and delete branches. It doesn’t let you switch between branches or put a forked history back together again. For this reason, git branch is tightly integrated with the git checkout and git merge commands.
Ok, that is indeed a more simple explanation, which you can keep as a guiding intuition. Note that through the syntax highlighting, you can extrapolate that “git branch” must be an actual command you can give on the terminal — only “git merge” does not get fully recognized as a command. Now back to commits: you google “what is a git commit” and you get a quote from here:
git commit creates a commit, which is like a snapshot of your repository. These commits are snapshots of your entire repository at specific times. … Commits include lots of metadata in addition to the contents and message, like the author, timestamp, and more.
Ok, this is good, you now have a good general idea: commits are snapshots of your repository and branches represent independent lines of development. So, now, how do you actually do it?
Googling “how do i git commit” gives links to introductory tutorials like the ones linked above — since this is not what you want, you google instead “stackoverflow how do i git commit” and get to this question.
General stackoverflow tip for speed: read first the accepted answer and its top comments and if you need more context, only then read the question. This works especially well for “simple” questions like this, because you can be fairly certain that the question you typed in Google is very similar to the one posed on stackoverflow.
In this case the accepted answer gives a very succint and pragmatic view on exactly what you wanted to learn, the “git commit” command. Maybe you could have found such a good explanation in one of the tutorials found using the traditional paradigm, but why go by chance when you can find exactly what you need?
Finally you google “stackoverflow how do I git branch” and you arrive to another high quality answer/comments here. At this point you’re confused as to what a “remote” is: you google “what is a git remote” and get a quote from here:
A remote repository in Git, also called a remote, is a Git repository that’s hosted on the Internet or another network. … The video will take you through pushing changes to a remote repository on GitHub, viewing a remote’s branches, and manually adding remote.
Now all the pieces start coming together: you start trying some of the commands. Eventually, inevitably, you will get some errors. Guess what then? Literally copy/paste the commands and errors you received in Google and continue iterating the process.
While the traditional paradigm has been used effectively for centuries, since 10–20 years a completely new way of learning has been made possible by the high quality of Google Search. It is not clear to me whether this can or should completely overtake the traditional linear approach. What is crystal clear is that in many cases, when you have a specific problem you wish to solve, it is much faster. In some cases it is also the only viable solution: if your code throws an error, the traditional paradigm would require you to go through all resources on the topic hoping to find something about that specific error, or find an expert, while the google paradigm makes you jump directly to the solution.
I’m a Math PhD currently working in Blockchain Technical Intelligence. I also have skills in software and data engineering, I love sports and music! Get in contact and let’s have a chat — I’m always curious about meeting new people.