I heard somewhere in passing that Sanskrit language does not have a word for teaching. There is only a word for learning. This is intuitive too: you can’t teach a person that doesn’t want to learn and a person who wants to learn, will find any way. This is more true now more than ever, with a million resources available. Even so, we all have different styles of learning - some can read textbooks, while others listen and retain information, and some are visual learners. In my combined experience of attending some of the best educational institutes, self-learning and learning while at work, I have found that the best way to learn is to relate it to every day things: maybe this is why you learn more at work/projects than while attending classes. For example, differential calculus can be learnt through the examples such as of a runner when you want to know the runner’s velocity in some exact moment as it may be different at different times. Visual learning is also very powerful to keep things in memory.
I have a formal training in C/C++ by amazing teachers in my 11th and 12th std. We used the compilers and for the final exam, I also remember writing the code on paper and then also using the compiler in the lab for it. With that solid programming background, I self-learnt R easily after several years of learning C, but learning python was a mix of self-learning, books, online free courses and videos and a very helpfu certificate course.
R vs Python
This is always a tough choice. In short, both are amazing but you tend to use what your peers use: R in academics and python in industry (although plenty of academics use both and more: even Fortran!). My journey of using R and Python started with excel, spss, more excel and statistics and probability course (audit) taken entirely in excel and then hopping on to a huge semi-organized Census of India 2001 and 2011 dataset. Excel couldn’t handle the large dataset anymore. I remember trying to pivot the data and I got very weird numbers for totals which did not match with the actual. And when I did the same in R after learning it for a few days: it was easy (just a few lines of code), perfect and amazing.
I learnt R through SWIRL and I think it is the best way to start to learn R. It walks you through the coding, makes you write the code yourself and makes you comfortable with coding too. The order in which you go through is:
-
Swirl
-
Tidyverse and dplyr (data wrangling is an fun adventure!)
-
ggplot (matplotlib has nothing on ggplot unless you come from a matlab/octave background)
-
Everything else
After the basics in Swirl, I jumped right in with the data, got overwheled, used excel, but after it gave me a very wrong pivot, vowed never to use excel again for any data handling (I still use it for making my to do’s and done’s now). I remember learning R was a breeze after that: tons of stackoverflows, blogs, tutorials, videos and courses from amazing fields of ecology, biology, medicine, etc.
Python was different from the start. I don’t know why I thought jumping right in with OSMNX and NetworkX was a good idea: it wasn’t. I started using python for the sole purpose that these great packages were only available in Python. While I was comfortable with even using spatial data (sf, sp, tmap, etc.) in R, networks data (edges, nodes, bipartite, directional and sometimes with spatial component) is one of the tougher datasets to handle. This made me fear python itself somehow. While I was fearfully approaching python through online courses, books and blogs, I was fortunate to come across a course offered for a very quick, hectic month which covered everything from Pandas, Numpy, API handling to building machine learning models and the most fun time series. Once I learnt it, python feels easy too - it is simple, intutive and can handle even external elements: folders, APIs which I am not sure if it works in R.
Now my go to coding language is python and even though I could write R codes through memory before, I now need google for R and I can code python from memory. I want to come to a stage where I can use both seamlessly without getting confused with the sytax for each.
Best is Python and R and in that order as there are so many more cool modules in Python for my use/interest/field.