Introduction
I've been programming for almost one year and half now (since March 2019) and amazed by the progress I've made, but also by the landscape of learning that grows endlessly beyond me.
Programming is probably not an easy thing to learn for the majority of people.
I don't really know where to put myself on the spectrum, but I think I was pretty lucky to have the will and the interest to persist.
So in this post, I will talk about the difficulties I faced and how I overcame them.
I hope it will give hope for those who begin coding and prepare them to potential barriers they may face.
Thus, that should reduce the chances of giving up.
First encounter with code
I guess it depends on the background of each one of us, but I personally haven't been exposed even a little to programming.
I probably had more general knowledge on computers than the avergage (because I was quite into video games) but I certainly had no idea of the GIGANTIC world that's behind our screens.
It just strikes me how I never really questionned myself about how all these softwares I used were made.
When you're a mere user, you have absolutely no idea of what's happening behind the scene, and care no more.
That's really something to keep in mind while gaining knowledge in programming and computers in general:
Most of the people, and therefore the majority of the users of your software, don't know what you know.
They don't care about the technical aspects. They care about what they want to achieve with your software.
If you remember that, you will a have a great advantage.
You will never loose the track because you will have the perspective to know what's the most important thing: solving a problem with your software and do it as well as possible.
Because otherwise it's very easy to confine yourself in "not so important" technical aspects and basically waist your time and energy on them.
Tools (languages, frameworks, protocols, devices etc) are only relevant because of the objective they help to achieve.
Enough digression.
So I started to learn HTML and CSS, then JavaScript. (and English in addition because I was a french teenager of 16yo without the capacity to read fairly complex english texts... Yeah, that was a bit rough.)
I used free resources (which I always do apart from some books) like freeCodeCamp, MDN documentation, video tutorials... (trust me, you will quickly find stuff to explore. By the way, that leads to a problem that will talk about later in this post.)
I've some glimpse of memories of when I was beginning (and that was just 1 year and a half ago!).
I remember that sense of oddness, I mean that's really what it is, a language I've no familiarity with.
So yeah, my brain struggled for some weeks before being more familiar with that language.
Passed that step, you've gain a familiarity with programming languages in general that will make things way easier to learn (at least way easier than the beginning).
Things started to be more interesting when I learned JavaScript.
Javascript is a script language unlike HTML which is a markup language.
I would say that learning such a language increases your familiarity to an higher level.
Because the majority of languages are script ones, learning Javascript really helped me learning (or at least experimenting) other languages such as Python, PHP or Clojure recently.
I find those to be the two big steps.
Once you've overcome them, you will never be the same person. Really.
How to know if you love programming ?
The approach I had when I started programming (and I've this approach with any kind of new activity I start to learn) was to force me to code 1/2h each day during a month.
Only then I would make a recap and decide to continue or not based on my feelings.
Why ?
Because otherwise, one day that I get particularly de-motivated or upset, I could decide to stop programming forever.
And that's a shame to abandon a potential source of joy in your life, as well as accumulated knowledge and experience that may be really useful in the future, just because of a decision biaised by your mood in the moment.
At the end of the month, you will have a real time dedicated to taking perspective on your experience and feelings, thus making a decision less biaised and more likely to reflect your real desires.
If you find that you don't like programming after this month, just stop.
There's no reason to continue.
Don't feel guilty because you judge that you give up.
That's not abandoning. That's a conscious choice.
And by the way, that decision is not irreversible.
You can realise some days/weeks later that you actually want to keep coding.
Otherwise, if your motivation go up and down, that sometimes your super excited and other times you feel depressed, not good enough or that some bugs annoy you for multiple hours/days (or even forces you to put aside the thing to keep your mental health), then I would advise you to PERSIST.
That means that there's interest, passion, however you call it.
A challenged passion for sure, but a passion anyway.
Then, you can plan another cycle of 2/3 months this time, determining what you will focus on and AGAIN (that's very important), fixing in advance a moment to recap.
Being in the latter case, that's what I did and I keep making "cycles" to progress.
The gist here is that if you feel to have a real interest in programming, then PERSISTENCE is the most valuable skill you can have.
So spend appropriate resources (time, energy to develop habits and strategies) in order to build that skill.
Facing information overload and choosing what to learn
Halalala.... What a struggle... To be honest, I've certainly not resolved this problem yet.
I will share my thoughts and advices on that, but because, like I said, I still struggle, you must take perspective on what I'll say and test by yourself.
There's a lot of resources out there.
The good point is that you can easily access these once you've an internet connection.
You can clearly content yourself with free resources, especially in the world of programming where the community has an "open source" mentality I've never seen anywhere else.
The downside, however, is that you have to choose.
Doesn't seem horrible right ? Isn't it a sign of freedom ?
Well. It is. But now you must spend more time and energy in order to choose.
And that's not what we want. We want to spend these on learning/working.
(By the way, I highly recommend The Paradox of Choice by Barry Schwartz. It explains all the downsides of an excess of choice.)
But in the mean time, you don't want to pick a bad resource.
So here lies the friction.
I think the key is to make a conscious decision.
Don't fall into the habit of either picking whatever resource is close to hand or always spending an enormous amount of time pondering about what you'll pick next.
You must put the amount of time and energy you want in the choice process.
How do you determine that ?
I've no perfect answer but some general guidelines.
If you start learning something, there's no reason to worry too much about the quality of the resource, because anyway, you will learn something.
And at the beginning, it's more important to get going, to build the habit of working on the new subject of interest.
Going forward, you're knowledge will expand and it will be more and more difficult to find resources that bring something new.
At this phase, I think it's more relevant to spend more time searching for great, in-depth resources that may bring you novelty.
I always struggle with the feeling of waist when I read or watch something I already know.
But we must be patient and I would say that experience (i.e actually building stuff and explore yourself) will become the most valuable.
So if you have something to remember from this section, it's that:
The majority of your time and energy should be spent on learning. Not choosing.
Final note
There will be moments of struggle, fear, wrongness, culpability, maybe shame...
The thing is that in all those unpleasant situations that seem to be dead ends, remember that there's always reasons and thus, solutions.
Remember that wrong actions or decisions from your part doesn't mean that YOU are wrong.
Take it as a challenge, to make better actions and decisions for the goal in place.
Anyway...
If programming helps you enjoy life, then do it.
It's that simple.
Top comments (0)