"Unlocking the challenges":3 Reasons Why You Find it Hard to Learn a Programming Language
"The more that you read, the more things you will know. The more that you learn, the more places you'll go." - Dr. Seuss. However, this may not be the case with learning a programming language
Many a times, we just learn passively, you just sit there and browse the internet. You find amazing articles about why you need to learn Python, (ES13) JavaScript new features etc.
Sometimes you just learn things randomly, today you are learning about basic terminal commands, tomorrow you are doing Kotlin, then you are doing Python for beginners... you are just a jack of all trades ๐(You know just a little bit about everything)
We will look at a couple of reasons as to why people find it hard to pick up a programming language (I will use JavaScript)
Reason 1: Not being biased to action
Let's imagine two chefs on their culinary journey:
Chef A - Learns by Cooking:
- Approach: Chef A believes in the hands-on approach to learning. They spend hours in the kitchen experimenting with different ingredients, techniques, and recipes. Every trial and error becomes a valuable lesson. Chef A's philosophy is that true mastery comes from the experience gained through cooking and tasting.
- Style: Chef A might be known for their creativity and adaptability in the kitchen. They have an intuitive understanding of flavors and textures, honed through continuous cooking and experimentation.
Chef B - Learns from Videos and Reading:
Approach: Chef B takes a more theoretical approach to learning. They diligently watch cooking videos, read cookbooks, and stay updated on the latest culinary trends. Chef B believes in understanding the science and art of cooking through knowledge acquisition before applying it in the kitchen.
Style: Chef B might be recognized for their precision and attention to detail. They bring a deep understanding of various cuisines and techniques, often incorporating a blend of traditional and contemporary methods.
Determining the "better" chef between Chef A and Chef B depends on the specific context and the criteria used to evaluate their skills
Chef A is more likely to learn faster and more effective than Chef B because most of the time He /She is hands-on
Chef A can learn from his / her mistakes while that may not be the case for Chef B
Chef A can experiment new techniques that are effective unlike Chef B who only reads on how to cook "pilau" but has never practically done that ๐๐๐๐
Reason 2 : Tutorial Hell
I know every beginner programmer , at some point, has come across some online courses , whether free on YouTube or paid on Coursera, Udemy etc.
While these tutorials are good at pin pointing out various concepts, its not a good idea to just sit there and watch all these tutorials
Some tutorials, especially paid, are lengthened in order to give you an impression for value for money
Let me give an example. Let's assume you want to learn TailwindCss
You go to Youtube / Udemy or whichever platform and find a 21 hours long video.
You start watching for a hour and feel bored. Then thats it you close the video and try to find a shorter version.
Before you even finish, its already 3 am ๐๐๐ you leave the tabs open and go to sleep
Long story short, the cycle continues, one month is down, a year and you haven't learnt anything
instead of opting for tutorials for tailwind, you can just go to TailwindCSS docs and just read it. It wont even take you more than a day (Assuming you already understand CSS)
Fact: If you know CSS you already know 80% of TailwindCSS
Reason 3: Not building projects
You are the type of guy who just learns about functions or Objects in JavaScript then you just leave it at that point
Then you make excuses that "You know what, I know JavaScript but I don't have an idea for a project" or "I just dont know how to start a project"
For effectiveness, If you learn about arrays for example, try to build something like a todo list
// Get references to HTML elements
const taskInput = document.getElementById('taskInput');
const taskList = document.getElementById('taskList');
// Function to add a new task
function addTask() {
const taskText = taskInput.value.trim();
if (taskText !== '') {
// Create a new list item
const listItem = document.createElement('li');
listItem.textContent = taskText;
// Add a delete button to the list item
const deleteButton = document.createElement('button');
deleteButton.textContent = 'Delete';
deleteButton.onclick = function () {
listItem.remove();
};
// Append the delete button to the list item
listItem.appendChild(deleteButton);
// Append the list item to the task list
taskList.appendChild(listItem);
// Clear the input field
taskInput.value = '';
}
}
Then learn about number methods and try to build something like a random number generator
// Function to generate a random integer between min and max (inclusive)
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// Example usage: Generate a random integer between 1 and 10
const randomNum = getRandomInt(1, 10);
console.log(randomNum);
In short, learn something and try to know where its used / how to use it. Rather than bombarding yourself with abstract knowledge without knowing where / how to use it.
"Knowledge is not a mere collection of abstract facts; it's the art of understanding, the power to connect ideas, and the wisdom to apply them in meaningful ways."