A new way of learning quickly

Photo by Dennis Brekke on Unsplash

Two learning paradigms

The tra­di­tion­al par­a­digm for learn­ing is how all Schools and Uni­ver­si­ties work: at the out­set you define a step by step pro­gram and you fol­low it lin­ear­ly. Each chunk of the learn­ing builds on the pre­vi­ous and you are guar­an­teed that, if you fol­low it dili­gent­ly until the end, in gen­er­al you will receive a thor­ough base knowl­edge in the whole field . After the process is com­plet­ed, it will be fast and easy for you to spe­cial­ize in any of a vari­ety of sub­fields relat­ed to some appli­ca­tion of what you stud­ied, though you are not yet spe­cial­ized in anything.

The advan­tages of this par­a­digm are clear: it strives to give you a com­plete for­ma­tion and ulti­mate­ly make you a sought-after expert. It does how­ev­er require a long time invest­ment and enough dis­ci­pline from the learn­er to push through all the inter­me­di­ate steps, even when they are not a good match for his interests.

In our mod­ern Google-era, a new way of learn­ing is pos­si­ble, at least for most tech­ni­cal dis­ci­plines — I’m not sure how well this applies to sub­jects in His­to­ry and Lit­er­a­ture for exam­ple. We’ll call this the google par­a­digm: it boils down to, well, you google it. You can lit­er­al­ly type in your ques­tion and usu­al­ly find an exact answer to it in a mat­ter of seconds.

So the ques­tion nat­u­ral­ly aris­es: can one skip the lengthy process pro­posed by the tra­di­tion­al par­a­digm and jump straight to spe­cial­iz­ing in what­ev­er skill he requires, sim­ply by strate­giz­ing a spe­cif­ic suc­ce­sion of ques­tions to google?

Though I do not have a gen­er­al answer to this, I think there are many cas­es in which the out­come of the google par­a­digm learn­ing is more desir­able, espe­cial­ly in the con­text of devel­op­ing soft­ware which I will focus on. When you are work­ing on a real project  (which many agree is the best way to learn a new soft­ware tech­nol­o­gy) I think it is best to dive head in by gooogling exact­ly what it is you need and then actu­al­ly using it, rather than going through gener­ic tutorials.

While it may feel more chaot­ic at first, the big advan­tages of this approach are flex­i­bil­i­ty, effi­cien­cy and trans­fer­abil­i­ty: you are not bound to a spe­cif­ic way of doing things or a spe­cif­ic library, you are learn­ing noth­ing more than what you need to know to solve your prob­lem and once you learn to use this approach for one prob­lem you can use it everywhere.

A case study: learning git

Let’s look at how the two par­a­digms look on a con­crete exam­ple: learn­ing git. It is my opin­ion git is one of the most fun­da­men­tal tech­nolo­gies for any­one writ­ing any type of soft­ware, or real­ly just deal­ing with text files of any sort. In Math­e­mat­ics depart­ments it is not usu­al­ly taught, so aspir­ing data sci­en­tists with that back­ground must usu­al­ly learn it by them­selves on their first job.

It actu­al­ly hap­pened twice in the last month that a friend of mine from Math­e­mat­ics had to improve his git skills because of job require­ments. Let’s then sup­pose to be in this sit­u­a­tion: you have just heard about git, at most run “git clone” to get some data sci­ence code you need­ed, and on your first day on the new job your boss tells you: you have to clone this repos­i­to­ry, make a new branch and push com­mits only on that branch. He real­ly stress­es this last point, and you don’t want to mess up. You have no idea what a “com­mit” or a “branch” is, so what do you do?

The tra­di­tion­al par­a­digm iron­i­cal­ly would start by googling “git tuto­r­i­al” or sim­i­lar. This would lead to pages such as this blog or the git-scm tuto­r­i­al. These are both very well writ­ten tuto­ri­als that take you through basic git oper­a­tions, and while they do at some point men­tion and explain com­mits and branch­es, they also con­tain a lot of oth­er information.

If instead you fol­low the google par­a­digm you could start for exam­ple by search­ing “what is a git branch”. Direct­ly on the results page, Google shows a quote from this page:

A branch in Git is sim­ply a light­weight mov­able point­er to one of these com­mits. … As you start mak­ing com­mits, you’re giv­en a mas­ter branch that points to the last com­mit you made. Every time you com­mit, the mas­ter branch point­er moves for­ward auto­mat­i­cal­ly. Note. The “mas­ter” branch in Git is not a spe­cial branch.

That seems infor­ma­tive but a bit terse, and it relies heav­i­ly on the def­i­n­i­tion of com­mit which you don’t know yet. So before googling that you try  instead “what is a git branch sim­ple expla­na­tion” and Google shows you a quote from this page:

A branch rep­re­sents an inde­pen­dent line of devel­op­ment. … The git branch com­mand lets you cre­ate, list, rename, and delete branch­es. It does­n’t let you switch between branch­es or put a forked his­to­ry back togeth­er again. For this rea­son, git branch is tight­ly inte­grat­ed with the git check­out and git merge commands.

Ok, that is indeed a more sim­ple expla­na­tion, which you can keep as a guid­ing intu­ition. Note that through the syn­tax high­light­ing, you can extrap­o­late that “git branch” must be an actu­al com­mand you can give on the ter­mi­nal — only “git merge” does not get ful­ly rec­og­nized as a com­mand. Now back to com­mits: you google “what is a git com­mit” and you get a quote from here:

git com­mit cre­ates a com­mit, which is like a snap­shot of your repos­i­to­ry. These com­mits are snap­shots of your entire repos­i­to­ry at spe­cif­ic times. … Com­mits include lots of meta­da­ta in addi­tion to the con­tents and mes­sage, like the author, time­stamp, and more.

Ok, this is good, you now have a good gen­er­al idea: com­mits are snap­shots of your repos­i­to­ry and branch­es rep­re­sent inde­pen­dent lines of devel­op­ment. So, now, how do you actu­al­ly do it?

Googling “how do i git com­mit” gives links to intro­duc­to­ry tuto­ri­als like the ones linked above — since this is not what you want, you google instead “stack­over­flow how do i git com­mit” and get to this ques­tion.

Gen­er­al stack­over­flow tip for speed: read first the accept­ed answer and its top com­ments and if you need more con­text, only then read the ques­tion. This works espe­cial­ly well for “sim­ple” ques­tions like this, because you can be fair­ly cer­tain that the ques­tion you typed in Google is very sim­i­lar to the one posed on stackoverflow.

In this case the accept­ed answer gives a very suc­cint and prag­mat­ic view on exact­ly what you want­ed to learn, the “git com­mit” com­mand. Maybe you could have found such a good expla­na­tion in one of the tuto­ri­als found using the tra­di­tion­al par­a­digm, but why go by chance when you can find exact­ly what you need?

Final­ly you google “stack­over­flow how do I git branch” and you arrive to anoth­er high qual­i­ty answer/comments here. At this point you’re con­fused as to what a “remote” is: you google “what is a git remote” and get a quote from here:

remote repos­i­to­ry in Git, also called a remote, is a Git repos­i­to­ry that’s host­ed on the Inter­net or anoth­er net­work. … The video will take you through push­ing changes to a remote repos­i­to­ry on GitHub, view­ing a remote’s branch­es, and man­u­al­ly adding remote.

Now all the pieces start com­ing togeth­er: you start try­ing some of the com­mands. Even­tu­al­ly, inevitably, you will get some errors. Guess what then? Lit­er­al­ly copy/paste the com­mands and errors you received in Google and con­tin­ue iter­at­ing the process.

Conclusion

While the tra­di­tion­al par­a­digm has been used effec­tive­ly for cen­turies, since 10–20 years a com­plete­ly new way of learn­ing has been made pos­si­ble by the high qual­i­ty of Google Search. It is not clear to me whether this can or should com­plete­ly over­take the tra­di­tion­al lin­ear approach. What is crys­tal clear is that in many cas­es, when you have a spe­cif­ic prob­lem you wish to solve, it is much faster. In some cas­es it is also the only viable solu­tion: if your code throws an error, the tra­di­tion­al par­a­digm would require you to go through all resources on the top­ic hop­ing to find some­thing about that spe­cif­ic error, or find an expert, while the google par­a­digm makes you jump direct­ly to the solution.

About me

I’m a Math PhD cur­rent­ly work­ing in Blockchain Tech­ni­cal Intel­li­gence. I also have skills in soft­ware and data engi­neer­ing, I love sports and music! Get in con­tact and let’s have a chat — I’m always curi­ous about meet­ing new people.

Leave a Comment

Your email address will not be published. Required fields are marked *