Introduction to Learn a New Programming Language Quickly
“Necessity is the mother of invention”- This sentence even holds good for Information Technology or Computer Science Engineers. In today’s ever-changing adoption of new Technologies, Computer specialists need to adopt the new technology on language quickly and start delivering in superfast Agile environment.
A second important aspect is that during academic years, the engineers are taught some language at a basic level but in professional life, they always get the advance version of any language. So, in overall, the tech specialists have a delta about actual knowledge and required knowledge.
As per TIOBE, there are 250 languages in the world (unofficially around 5500). But we need to focus only the one we require.
In the core level, every language finally writes/reads 0 and 1. 0 represents false and 1 represents true. All digital equipment, storing devices computer understand these binary introductions. Four bits are called Nibble, 8 bits are called byte. 1 byte can store any character available in the ASCII table.
Before jumping into learning students need to do some self-studies. These will help you to understand the core psychological ways to learn to program to Learn a New Programming Language.
In this article, I tried to give several ways to learn a language quickly.
Determine what type of learner you are?
Think yourself and identify the best model you follow to learn a topic.
Learners can be –
- Visual learner
- Audio learner
- Read-write learner
- Kinesthetic learner
Let us understand all the types :
If you love to see ideas, working principle visually and learn in the form of visual aid, you are potentially a visual learner. Create a mind map by checking the problem statement then use visual aids like – white page, whiteboard, digital boards to create diagram-based learning. As image or visuals can talk more words, it is easy to absorb.
The tools for Visual learner are
- YouTube or other video learning video-based tutorials.
- Meme based training.
- Doodle based training.
This is by far the best in the current, fast-paced life. You can actually listen to the courses when you are on the go.
Tools for Audio learner
- Classroom training (recorded).
Read/write based learner
In this mode, learners open books (physical, digital), read through the chapters and take notes whenever necessary. It is in-depth learning and takes time to exult as the learners always depend on the author.
The concepts are followed by examples and some hansom’s make perfect learning.
Tools for reading/write based learner
- A digital or physical notebook
- IDEs to code.
These types of learners actually are most focused and benefitted as they learn and simultaneously, they do the practice. As learners are physically engaged and act on them. They are quick to grasp.
Tools for Kinesthetic learner
- Project work
- Group study
- Code championship etc.
As per you need various courses available, you can curate the learning path.
A guide for Beginner Learners
Thinking is the new king- Be a great thinker
Thinking towards a solution actually is the main key aspect of any problem. I do not like the idea to read, practice and apply only. You may become stereotype if you do that. Always think before you code. Thinking may give you a new idea (Do not afraid of the implementation is outside of your learning).
Now post those ideas to the forum or just paste in the sticky notes. As and when you grow by learning the languages, you will be able to solve them. Who knows, you may come up with an awesome product plan?
There are several types of thinkers –
- Bottom-up thinker
- Top-down thinker
- Visual thinker
- Audiovisual thinker
- Other thinkers
Understand the Language’s basics
The common terms and their meaning across languages –
- Variables – They can store values temporary.
- Operators – They can be operated on variables to produce a result.
- Conditions – The flow switch statements commonly referred to as decisions.
- Loops – This simplifies the iterative tasks.
- Functions – A set of code can be clubbed together to form a function.
- Class – If the language supports class, then we need to understand how the common functionalities are clubbed together.
- Object – If a class is a blueprint, the objects are the actual things present in the real world. Every object has a parent class.
The second thing as a learner you need to decide is what kind of language we know and what type of language we are going to learn?
Primarily from a Coder perspective language are divided into –
- Object-Oriented Programming (C++, Java)
- Procedural language (C, Haskell etc)
Now each type of languages exhibits similar types of concepts. So, picking up a similar type of learning actually speed up the learning process.
But just in case, you need to learn cross-type languages. You need to be a little attentive. They just different ways to handle things. Just like normal language, they will have different grammar.
Remove fearing factor
The biggest issue while learning a new language is the fear factor regarding the language. The fear is not a real one. It is a perception of the toughness of the language as we fear to fail. But if you look at the rule’s point of view, they are basically same.
Once you pick up one language you know how computer system work. So, from this angle, Computer languages are simple. And every language is like a tool kit to work with the system.
Just like the tool kit of different manufacturer looks different, the operating / working principle is different from one to another but their job is the same as you do things.
Always start with an easy approach
First, learn how to code. What are the basic syntaxes of the language then slowly learning Complex programming like chaining, advanced concepts etc? The language’s basic steps will help to understand the simple steps to put to get some basic programming.
Get your hands dirty
Confusing Coding in new languages will go away if you start practising on the Coding. So, get started even if you do not have any or sufficient knowledge. Target a goal/product then starts Coding, tweaking or playing with The Code. This will help you to familiarize with the language, syntaxes, Coding style etc.
Learn and unlearn is the key
This is very easy to say but practically impossible to learn a language in a short period of time. It is also equally tough to unlearn the previously learnt language in a quick succession manner. Coders always carry personal bag and pieces of baggage with themselves.
In the agile, DevOps era, we have to practice, learn exercise and effectively Google in such a way that our mind accepts the new language as a part of parcel of life.
Play with the code
Even if you learn seeing visual courses, audiobook or physical book concepts are just learnt. But to mix these concepts with probably with your blood you need to bleed first. The tools that help to bleed are IDEs, coding practices.
Do not stick to the exercises, tweak then and ask yourself how to solve it. Once you start playing with the code you start referring the syntaxes, reference documents, more search engines results.
Since you are using the code, Syntaxe, etc, you will not lose the concepts.
Understand the fundamentals for the long-term advantages. Fundamentals are the basic building blocks of the language. If you miss understanding the fundamentals, you may get stuck later.
“There is no royal road to learning“. How many courses or books you buy, you always need to read and practice. The only difference between a great coder and a normal coder is that great coder does a lot of coding practice.
The more practice, you do, you get extra knowledge about how to apply the language in the required area.
Listening, seeing (viewing) or just going through the sample Code will give you half of the idea. To get the other half, you need to really write the code manually, play around it, tweak it.
Ask help, do not shy while learning
You may get stuck while playing with a new language. It may take days of effort to get the Correct Code. I always suggest taking help from the online community, Google (or any other search engines).
It may be tough for us to solve but not for gurus. The stack overflow, Code review sites have tones of gurus who will give numerous previous ideas to go forward. The learning curve becomes quick.
Look for online resource –
While the course, lecture and classroom training will give you a short and sweet mostly theory-based content, you need to look for online resources, foram for some serious advanced learning.
The online resources can join the dots to create a clear picture of the topic. But the source to learn any language is the language’s community.
Try to uptake design patterns
Design patterns are the basic foundations of software. While coding or practising try to follow the design patterns. You can start with basic one like SOLID (link) then move deeper up-taking design patterns will reduce the ambiguity of your code.
Never lose hope and give up
New learning is always challenging, frustrating with a high learning curve. Learners often give up, by losing hope when they cannot see the green, success bar of IDE.
As the sentence says “Failure is the pillar of success”. These little efforts to make your Code pass will give you lots of learning that eventually make you a perfect Coder.
One of my favourite English teachers (Sukhen Manna) often used to tell us that “if you do not fail, you are not in the right direction”. So initial red lines, expectations, failures of the Code are the hope of future success.
Cherish the Success
Even if you learn a small looping program and applied successfully into your practice Code. It is a success. A baby little step to make a huge software. Cherish this moment. Do not ignore the feeling of joy as it is merely a loop.
Instead of Copy paste from the internet and execute, you created a Code that actually works with all of your best efforts. Time to cheer.
As wording goes, “Rome was not built in a day” similarly a Coder cannot be created overnight. It needs time, energy, dedication and most importantly willingness to learn
A guide for Advanced Learners
Pressure generates productivity
Pressure on a person often yields better productivity. The pressure of the deadline is the biggest accelerator for learning. Even if you are not into production, set a deadline and try to accomplish the target micro-step within your deadline.
Decide your daily target about the task
If you are working on a project or learning on your own setting up goals is very important. Setting up goals, task, subtasks will give you a moment to cherish as soon as you accomplish them. Sticking to the timeline actually help you to come out of laziness.
Adhoc learning bits pieces may not help you as you are trying to venture a language (Sea of topics). So, making a dedicated daily effort to learn the new language will be really helpful.
Doing a lot of mock-ups will actually boost your confidence. Let the acquired knowledge settle in your brain. Give brain some rest restart afresh.
Do not use Editors
I was reading an article where a coder uninstalled around 10 editors to learn the code better. Yes, editors are there to help coding faster. But they may not best be suited for learning.
Handwritten code on paper or simple text editor (Notepad, Notepad++ or Sublime Text) will make your basics stronger. Since you are without the support of IDEs, you can understand the code logic in a more reliable way. It is a time-consuming process but makes you a strong coder.
Create a Project and start Building solutions
Create a project to depict all the necessary attributes of the language and start reading on the topic. As and when reading is completed, just implement the concepts pick the best one for the project showcase.
In this way, you can learn the concepts and with the practical advantages and disadvantages, you can pick the best solution.
Preparing for the interview can be another way to aid your learning. The exercise of the book on a topic may have some questions to answers. But the interview preparation may give you some best questions.
While stuck with your code, do not spend huge time in debugging the issue for hours. Take a break, go for your favourite drink. Then come back with a fresh perspective.
Check others code
Go to your organisation’s Code repository or a public code repository (like GitHub) to check out the several productions like or production-ready code. It will be awesome if you can contribute there.
Take help from a Code linting tool
Code linter can analyse your Code and pin in print issues like buy, unreachable Code, style etc. This keeps you to learn in a trial and error method. This will no doubt make you perfect.
Build a framework or uptake a framework
Making a framework for your project starting from the scratch will make your project and coding knowledge one level up. A successful framework can generate 60% re-usability. Once starting building a framework or follow one, you will be seeing the problems and solutions from a different perspective and angle.
Use practical value-added software even when you are learning
The internet is full of everything. But how to make use of them is up to the users. Building a practical and value-added solution will create new learning opportunities.
These are more than just browsing some books and checking out syntaxes. New ideas will also welcome fellow coders who will be interested in code with you. This group-based activity will create more help while learning new languages. The idea should be based on needs the consumers not what you already know.
Learn how data structures are implemented in the language
Being Comfortable with the language often means being familiar with the syntaxes of the language. But to gain deeper knowledge you must know how the language stores data, handles data. This is often referred to as Data structure.
Learn File Handling –
The majority of the data if not stored in databases are stored in File. It is always better to help yourself to learn File handling while learning the language. Learning file handling will also help you input, output, streaming, chain of actions.
It is always better to check out how other developers are coding. Related libraries are a nice place to check out how these codes are written to help you to speed up your loading. On the internet (GitHub) there are several related libraries to showcase related libraries.
A guide for Expert Learners
Join Hackathon, Code Challenges
Joining Hackathon, Code challenges will give fresh ideas and new innovation and new product idea. This will also give ideas on how to code better.
Teach in Group study
While learning in a group, try to learn some portion and try to teach the group. This is also applicable to project work where only you are studying a new language.
When you present in front of a group, you may come across some questions, you never thought often. In case, you cannot deliver in front of the group try to teach yourself in front of mirror assuming that the person on the mirror (shadow) is your student.
Just pick the target language and find an open-source project in GitHub. Learn how the Code has glued different Code in different situations. Pick some portion of it, try on your local. This will give you deeper learning. You yourself can search on search engineers and several forms to improve the solution.
In this process Seeing the Source Code, you can develop several questions. They try to solve them on your own. These Corner Cases when solved enrich you with relevant knowledge.
Once you have created sample application, float it to your organisation’s repository or float it to the world via GitHub. Real people start giving feedback on what they feel about your application.
Not all feedbacks are good (few may be toxic, negative). Do not dishearten if you get negative or toxic feedback, check the points they made and apply in your Code. This will make you more knowledge-rich and efficient. As a result, the application will become more robust.
Prepare for Mock question or Certification
Only Coding skill may not give you full knowledge of the language. What I found during my learning is as soon as you finish reading a chapter, start the exercise and finish practising Coding it will be better if you check the objective questions on the concept.
Objective questions are way confusing than the Coding on the editor. So, go to internet search for the objective question on a concept. You will get plenty. Start practising them as well. This way you can start preparing for certification also.
There is nothing like when you clear certification for a new learned language. The Internet has multiple resources for objective type certification question.
A guide for All Learners
Try to insert Comment while Coding
Many times, we miss inserting Comment while Coding. This is done as we read the Concept fresh, our memory has 100% access to the Concept. Due to this we become overconfident and forget to put Comment on the Code.
The problem arises when our memory starts forgetting things after a week and the brain is struggling to store new things as you read more things. When we look back the code, we generally get no idea why we coded like that.
In this scenario, comments can really help to understand. Comments are not only beneficial to you to revise but also in a new Coder to understand what your Code is doing.
It is told that “our memory also decays”. So, what we learn today may remain 80% the next day, 50% in the 3rd day. Eventually, we lose what we read.
To remember the concept at its best-shaped way is to revise, apply and fresh read. The revision cycle does not have a timeline.
It is up to individuals when they need to revise and reapply the concept. Best way to create a schedule as per your need.
Create your own cheat sheet
Cheat sheets are in death, more valuable reference produced in a tabular manner. Our mind is very comfortable to remember tabular structure than long text.
Apart from quick references, cheat sheets give a quick view of Syntax, examples etc. So, while reading and practising try to follow some cheat sheet from the internet to create your own cheat sheet.
Once you start creating a cheat sheet, paste it to your desk, door or somewhere so that can notify them when you are not reading. Glancing it will help you to memorize the concepts better.
Research, Review and find the material
Before picking up any book, tutorials or materials over the internet, just start research on the books. Read reviews, read some sample chapters. It the book is easy to understand for you, pick the book otherwise pick another one.
Remember every author is different so as the students. So not all books suits for all students. Same goes for tutorial sites. Online materials are not always written to keep a novice programmer in mind. So, you have to be double sure what materials you are picking.
The best practice is to go to the language’s documentation library and start reading it. They are the best source of truth. Once you glance through it start applying them. At this point you know the basic concept about the topic, now it’s time to venture online portals for future reading.
Join Conferences, Webinar or meetups
Conferences, webinars, meetups work great as they motivate, encourage to learn new concepts. You may get in touch with some fellow Coders who can support you in your need.
This gives an opportunity to create your personal network. I know many people got friends of a lifetime. You can ask doubts, learn new ideas, get new concepts, understand new features of the language. This network even helps you to get a job! On your newly learnt language.
Online documentation – create a blog
In general, when we create notes, cheat sheet, Code we mostly work local offline notebook or may use notepad, word Excel. These documentations are hard to retain long or maybe inaccessible when we actually need it badly.
So instead of creating an offline note, I would suggest putting your findings on the internet like a blog. There are several companies like Blogspot, WordPress, Medium etc offer you a free blog.
Just create one and start putting things. Trust me, as soon as you plan posting things, you try to offer more value to your viewers and followers. You do it by maximizing research over books, internet.
By this way, you start learning in a new way. If you do not like the idea to own a blog, you can start doing guest posting.
The last option in this list has online Note apps like Evernote. These apps can be public/private but serve your need.
Gone those days, when coders were given huge time to learn a language and immediately pushed to a project to learn the actual job. Now in the era of NOOPs, where coders have to be on their feet to learn, implement and provide a solution.
This article, said, in the above, what are the best ways to learn and implement a new language with a fast efficient manner. Once we practice with proper techniques, tools, aids, we can also become an elite class coder.