I know this may sound like clickbait, but I have a shortcut method that makes it possible for a programmer to quickly learn a new programming language within a day (or a few days depending on the level of focus). This will work for someone who is already a programmer and is already familiar with most programming language concepts. It won’t work for a novice programmer who is not well-versed in basic programming concepts and hasn’t worked on some full project.
Programming is not just the language, but the concepts and ideas.
Concepts and Ideas
This is where everything begins. You have an idea, you conceive a desirable end that you want to achieve with some programs. If you don’t have any reason for learning a new programming language, don’t. It will be a waste of time to learn a new programming language you aren’t going to use for anything. If you just want to try one project in the language and have a feel for it, that’s fine.
Aside from having clear concepts and ideas you want to implement, the question still stands; why don’t you do so in a language you already know?
There are many circumstances to answer this question. It could be that the environment requires using a different language. For example, you are a bitcoin developer but need to work on an Ethereum smart contract. You already have a proper understanding of how blockchains and smart contracts work, the only barrier now is that you have never used Solidity, which is the programming language for Ethereum smart contracts.
A personal example is when I had to implement blockchain functionalities in a flutter library. The problem was that dart had no proper blockchain libraries and the only option was to link a library written in Swift and Kotlin. In this case, I had a solid reason for learning those languages, so I went ahead and did exactly that. I had a goal and programming language wasn’t going to stop me from achieving that goal, so I applied the same steps I’m about to share in later parts of the post. Of course, I successfully developed initial versions of the library which worked beautifully and is currently used in the flutter app to serve customers. At the end of the day, the user is what matters. You can check out the library here https://github.com/EjaraApp/trustdart.
The approach mainly involves learning how the programming language behaves on the following topics;
- How Variables work.
- Data Types.
- Control flow.
- In-built Data structures.
- How to create and invoke functions.
- Familiarise yourself with some in-built functions.
- How to create your objects, data structures, classes, etc …
- Familiarize yourself with some in-built objects.
- Now time to understand how to put code projects together, ie. packages, imports, exports, libraries, etc …
- Familiarize yourself with some in-built packages or libraries.
- Error handling
- Understand good and bad practices, coding conventions, gotchas, etc …
- Work on a quick project to tie everything together
Just strictly follow these topics in the order they have been listed. Make sure to keep summary notes for each topic that you can quickly reference later. Don’t try to go in too deep on each topic but do take advantage of your existing programming knowledge, contrast, compare, and take note of equivalences.
Another important thing to note is that you are just reading and understanding, not coding along, and no need to memorize syntax. The goal is just to get a feel for the language. The only time you will need to code is with the last step where you quickly work on a project to bring everything you just learned to full practice. The project must be very small and easy but it should also be such that implementation requires you to use most of the topics you have covered.
If you were learning the language to be able to work on a particular task, then you should jump right into the task after finishing the steps through to step 12. No need to work on a different little project since you already had something you were going to work on. However, if you were just learning for fun or to get a feel of the language, then you should finish up the last step 13. It doesn’t make you a master yet but now at least you can read and write code in the language. If you just wanted to get a feel for the language, at this point you may have had enough.
Choosing a minimal project
To top everything off, if you need to work on a minimal project to practice what you just learned, then it must be a project whose implementation will allow you to try out most of what you just learned. The project will largely depend on the environment you’re working within. I will list one project for the most common software environment these days.
STARSCII program that will ask the user to enter any word from the 26 alphabets and print out the same words using *. Don’t use any third-party package. And an alphabet can be generated by printing one * character at a time. This project can be used in a cli environment, web environment, mobile environment, or server environment. It’s the same code, just different I/Os.
Find the proper description here https://github.com/baahkusi/newlangs/tree/main/rust/starscii
I created a GitHub repo to demonstrate the whole process. You can find it here https://github.com/baahkusi/newlangs.