I am often asked what is the best way to acquire the first practical glimpse into the world of programming. I hear it from people with diverse educational backgrounds: linguists and psychologists performing academic research, sales managers calculating business forecasts and simply people excited to learn something new. I decided to write this post as an aid for everyone who wants to learn programming from scratch in a fun way.
The first question is of course the choice of the programming language.
There are many programming languages out there. Wikipedia lists more than 700 various languages. Some of them are old (C, lint), some are new (Rust, Go). Some are designed with a specific use case in mind (C for memory-critical applications, Go for async programming), some are general-use languages (Java, Python).
I personally believe — and this holds true to all aspects of life — that people learn faster and more memorably when they are having fun. The choice of the first programming language is to me thus the question of selecting the language which gives the student the fastest results, most fun and satisfaction along the way, and can also be used in a wide variety of applications.
My suggestion is to start with Python. It is a beautiful and easy-to-learn general programming language with applications in a myriad of different industries. Python is at the core of applied data science, the ubiquitous artificial intelligence, business analytics, as well as server-side web development, deployment and rapid prototyping.
Python is valued for the simple, yet clear language structure. One thing special about Python is indentation: it takes some time to get used to it, but after a while you don’t want to be missing it.
As the learner wants to get going easily, he/she should start with a prepared development environment which includes not only Python language interpreter (the application which takes the Python files and executes them), but also a graphical user interface to tinkle with and see fast results.
I am huge fan of Jupyter Notebooks. It is a browser-based UI that allows you to execute Python statements and see the results in real-time. You can either install Jupyter Notebooks as part of Anaconda Suite locally (see the links at the end of the article), or subscribe for a free Google Colab account in the cloud. I prefer the local version because I find the native Jupyter UI easier to use than the Google one.
A fantastic advantage to learning Python is the huge number of supported libraries, all available with just one click. Each library covers some application field. For example, pandas is fabulous for structured data analysis (e.g. analyzing data in CSV files or in SQL databases). Pandas is extensively used by data scientists and BI analysts around the world.
Flask is a light-weight web programming library. It is easy to start with and one can develop simple web applications in a course of a few hours. Flask is still one of the most powerful web frameworks in Python and is used for serious applications as well.
Scikit is a family of scientific tools (hence the name!). Scikit-learn has a solid collection of data science algorithms, from simple regressions through to machine learning algorithms. It is a great way to see complex scientific algorithms in action, in just a few clicks. Do check out their documentation for working examples!
Scikit-image is another scientific library which has been designed for image processing in Python. In my opinion, it is one of the most accessible ways to juggling with image data. You could in fact even develop a simple autonomous vehicle prototype using scikit-image for camera data processing, and scikit-learn for decision making based on that data.
Where to start
Personally, I would propose the following curriculum.
- Install Anaconda with Python 3. Click here for instructions.
- Run Jupyter Notebooks in your browser. In the Terminal, type
jupyter-lab. Start learning Jupyter Notebooks with a fun tutorial.
- Start learning Python: e.g. check this video tutorial.
- Start learning pandas for data analysis. This will make you more familiar with data processing techniques.
- Let your interests guide you: explore web development with Flask, machine learning with this beginner’s guide for scikit-learn, image processing with scikit-image or something totally different.
There is no better way to learn that through fun and self-motivation. I believe that both these factors will come together when you start learning Python on real-world examples.
Begin learning Python first with a tutorial and go into examples from real life, and half-way through the training you will start recognizing the potential of applying your new skills to practical problems around you.
You can automate your own smart home, predict your monthly expenses, develop a Lego robot, program your first personal web site or participate in a hackathon for a greater good. If it becomes difficult at some point, make a break, then choose another example and continue.
The world is full of challenges waiting to be addressed: programming will open the door for you to have them solved.
About the Author
I am technical project manager at Doctolib where I apply my knowledge of computer sciences (15+ years of experience with programming languages in Python and beyond) to solving one of the most acute and complex challenges of today — digitalizing the healthcare system in Europe. You can learn more about me in LinkedIn and on GitHub.