Learning software development (coding, programming) is hard. But I believe that for many beginners, learning contextual tech vocabulary (what words mean, and in which context) is at least half the battle of your journey.
Yes, there are other important elements in development, such as critical thinking, systems thinking, logic, abstraction, syntax, debugging, principles, methods and tools — which are all essential elements of your developer skill-stack.
But in my experience, when you start out learning to code or program, the first obstacle you need to conquer is trying to grasp the meaning of tech terms, not just as “in general” but within the specific context that these terms are used.
Outside of the programming world, “class” can mean a lot of things, and your brain will associate this term with whatever context you’ve been most exposed to, e.g. going to a class in school — which literally has nothing to do with programming, unless the class is about programming.
An object is an instance/part of a class that allows you to use variables and methods inside the class. An object is like a variable of the class.
Outside of programming: a method is a way to go about doing something, like an approach or a technique. This is not totally different from programming, but a method is a broader and more abstract concept outside of programming — similar to object.
A function is a tool that does something when you tell it to.
A variable is a container that you use to store information/values that you can reference (via the variable) and manipulate.
Outside of programming: to me and my Danish ears variable is a programming/tech term, because outside of programming, I rarely if ever hear anyone use it. To you and your native language, it might be different.
Programming is used by people of all countries, and depending on your native language, some programming terms will be harder to get used to than others.
It’s the most normal thing in the world to have a hard time associating words that you are used to associating with non-programming things, with programming.
It’s just a phase, though. Your brain will quickly learn to automatically associate words to the context of the environment you’re working in — at the given time — whether it’s programming, cooking, or something else.
But don’t worry, the confusion subsides over time as you gain experience and familiarity with different tech environments (languages, tools etc.).
The good news is that you will automatically start becoming more and more familiar with tech-terms the deeper you get into your development journey. Just like if you join a new class in school and have to remember 20-30 students’ names. It takes a few days, sometimes weeks or more, but eventually it will stick.
Learning is a matter of repetition, and some need more repetition than others (that’s life) so don’t get discouraged if you’re still confused a month or two into your journey — that’s normal. As most honest developers will say, even after doing this for years, there are still things that confuse them.
You can’t remove confusion completely, because there will always be something new to understand — especially in technology, the fastest evolving industry in the world. What truly matters is that you consistently reduce the confusion within the specific tech environments that you work in the most.
How do you do that? By focusing on grasping principles of technology rather than getting too caught up by methods (approaches/tools). Unlike methods, principles are timeless and reuseable.
As for terminology? You’ll pick it up as you go, and over time it’ll be less and less of a hurdle, as your tech-vocabulary improves — just like learning any language.
Once you no longer have to spend most of your time pondering about the meaning of words you will automatically start becoming better at developing good thinking and consequently good habits because now you have freed up enough mental resources that you can spend where it matters the most:
On solving meaningful (and often hard) problems.