How to learn coding?
A monologue I was having when someone asked, "how do I learn coding?”
I don't think coding can be learnt. It is about having a problem to solve and then solving it using a mix of tools. If we are able to solve it using any tool whatsoever, then it is coding.
There are over 100,000 (actually 800k+) computer engineers trained every year in India. Yet, the _creators_ are handful. Most of these creators don't have a background in coding.
The first step to learn coding is to have a *small problem*. A tiny little problem that makes no sense otherwise:
- see all images on the page
- see all links on a page
- get that table from PDF to excel
These problems have a very specific output. Having that clearly defined output does half the work. In other words, ask yourself: "What is the required output?" **Examples of what is the required output:**
- get the mean of few numbers
- get the last trade price of any stock symbol
- get the text for any audio
- get the audio of any text
- get a picture for any word
The pattern is to have a clear defined output and a clearly defined input. These kinds of problems are the best problems to start learning coding. —— **Learning the language** Once you have a problem, it is then about finding the shortest way around it. There are usually some tools available around your problem - but they require some *setup*. Most of the coding is learning _that_ language of *setup*.
- Want to Tweet anything I post on Instagram: Setting up IFTTT hooks
- Want to apply 5 Photoshop filter each time: Writing Photoshop actions
- Avoiding writing same emails each time: Writing canned responses in Gmail
- Removing tons of emails from banks: Writing search filters in Gmail
- Avoiding writing same thing (url, command, text input) each time: Alfred scripts, AutoHotKey
- Fetching data of stocks: Google Sheet formula eg `=Googlefinance`
- Formatting Excel data each time: recording macros in VBA
- Doing some stuff in Excel each time: writing macros in VBA
- Generating powerful graphs: importing CSVs in Tablue
- Creating custom dashboards: writing SQL in Metabase
- Creating databases (complex Excel sheets): creating tables in Airflow
- Sending emails and notifications: setting up hooks in Zappier
You see? Learning the language is *not* about learning Python or Java. It is about learning the language of the software that gets it done. ----- **Creating a solution for all** Extensive coding is only required when we want to *distribute* our creation with others. This stuff is hard. We need to have an installer (app, website, exe). And we need to have a UI that is easy to use. These things often require more code than the code for problem itself. But the good thing is that you will automatically start figuring these things out. How? Because now you know the art of solving the problems - the coding! ---- Thanks to [Aniruddha](https://twitter.com/iamaniruddhaj) for listening to this monologue.