I’m sharing the following with you in the hopes of inspiring those who are lost, who feel like they aren’t getting anywhere and who have great aspirations but no idea about the “correct” steps to follow into the wonderful world of programming.
I’m not some lucky or gifted developer working for a fortune 500 company, but a regular individual who absolutely loves problem solving and programming.
Why does this have any relevance? I personally feel that if you end up doing the things that you love, everything will come more naturally and you will WANT to make the progress necessary in order to succeed.
Today marks my 50th day of learning to code, having had no prior formal experience.
I did not attend college or university for this. This was all self-taught. I did this, because I wanted to; because I chose to.
You can also do this, because YOU want to, because you choose to.
But let’s be brutally honest here; programming is hard. Whoever told you it was easy, was either trying to sell you something, or was forgetting about the initial steps getting to that point; since everything feels easier once you have the know-how.
There’s nothing worse than having people say “Oh, that? That’s easy!” and then you start to wonder if you just weren’t cut out for this because you’re comparing yourself to someone who is at a different level of experience, has a different background and learns differently to you.
You’re going to feel like giving up countless times over, depending on your level of perseverance, so things like those unhealthy comparisons to others are just the tip of the iceberg. But guess what? That is part of the journey!
No one worth their salt ever said programming was going to be easy. It isn’t. Once you accept that, you can begin to channel your energy towards where it really matters; yourself.
So you got this far, but now you’re possibly starting to question yourself. You’re out here, looking for answers, looking for something, anything, to keep you going. But if there’s one thing I’ve come to realise in life thus far, it’s something someone really close to me once said;
“Motivation is fickle and fleeting. It cannot exist as your sole reason for achieving something.”
And you know what? They were absolutely right!
Fortune cookie phrases on a pretty background are not going to be the reason you succeed at anything. YOU, your time, your effort, and your sheer dedication for the things that you love; THAT is going to be the reason you succeed!
You don’t need me to tell you what to do, because you already know what you want to do; that’s the whole reason why you began this journey in the first place, isn’t it?
Instead, you need to know that, no matter the distance, no matter the differences; someone, somewhere, believes in you. That person has been on this journey with you since the start. That person hasn’t given up hope yet. And that person is you.
I too am a part of this journey. I’m only half-way to my initial goal of 100 days, and instead of writing this as an afterthought of having achieved something, I wanted this to be something I shared whilst actively trying to achieve it so that others could also reach out; to know that they have someone to turn to, should they feel the need.
It’s also a way for me to look back on my own progress, because when I started this journey I knew nothing about web development, and in less than a month in I had built my first project, front and backend, using only the skills I had acquired in that time thanks to free sources of information such as freeCodeCamp.
So with that being said, ask yourself; why are you doing this? You need to be in this, 100%, for yourself. This needs to be something you want to do, because you love it, not because you have to.
Be brutally honest with yourself about why you’re doing this. If you’re trying for all the wrong reasons, you will be making it a thousand times harder than it needs to be; passion cannot be taught or earned.
If you’re doing this because you enjoy it, because you’re excited about it and what you can achieve with the skills you’ll gain from it, then you’re already half-way towards achieving success!
But of course simply being excited about or enjoying something may not be enough, as we all hit a wall or two at some point in time, and in programming you may be hitting several walls per day!
That’s why it’s a great idea to commit to a challenge or join welcoming communities, such as #100DaysOfCode, #CodeNewbie, or #WizardsInTech, which are some of the super active and friendly ones I have come across on Twitter.
Simply add one or more community hashtags to your post and you’re already a part of said community!
You’re going to make them, they are unavoidable, and even the most skilled developers out there make them. It’s a part of your journey.
If you’re not making mistakes and analysing what went wrong and how you can improve, then how are you actually learning?
I feel that making mistakes are a crucial part of learning, and if you don’t make any, well hey; good for you!
Try not to just read books or watch tutorials etc. Actually BUILD something with what you’ve learnt! You’ve read up on that “Hello World” section?
Great stuff! Now take a break and actually make it happen in a little project folder you keep!
Constantly build stuff from the things you learn, as it is a great way to retain the information you’ve just taken in. Repetition is your friend!
At the same time; don’t feel pressured into having to move on from the current section you’re busy with if you don’t fully understand it.
There’s nothing worse than winging it and then later being stuck, feeling frustrated, because you skipped out on a crucial part of your studies.
You never know when you’re going to need that bit of information, so feel free to take it in and build around that. If you need to take your time, you do that; you’re not racing against anyone, you’re doing this for you.
If you’ve just started out you may have seen the term “standards” and “best practices” tossed around, and if you were curious, like me, you probably read up on pages upon pages of discussions relating to what should and shouldn’t be done.
But do you know what? All that ever did was fill my journey thus far with unnecessary anxiety and put me in a space where I kept second-guessing myself, being “too afraid” to make a “mistake” for fear of what others might think or for fear of doing something “wrong”.
Remember what I said earlier about mistakes?
So instead, forget about all that for now. Yes, there are certain things you shouldn’t do, but we are going to assume that you, just like me, aren’t working with production code that hundreds or thousands of people rely on.
You’re here to study, to learn, to grow; and as such, you are allowed to make mistakes and learn from them. Often times there are many different solutions to solve any given problem, so try to take a step back and think about it logically and come up with a solution that will work.
Once you have a working solution then you can optimise what you have, and delve deeper into the expectations or standards of coding.
When you feel you’re finally at a point where you have a better understanding of the language you’re working in and the logic behind programming, you can easily go back to things you’ve done in the past and assess how you could have done things differently/better, with regards to best practices, refactoring, etc.
Honestly, what better way is there to see quantifiable proof of your progress than that?
The biggest slowdown and source of frustration for me was constantly rewriting my code when I learnt something new, be it a new method, a better practice etc. and all that did was prevent me from actually learning new things and troubleshooting things I’ve never had to deal with before.
If you’re working on a single project, and constantly changing it, perfecting it, chances are, that project will never reach a “complete” status and you won’t move on to other projects that’ll most likely end up teaching you far more.
You’ll never get to a stage where you figure out different challenges and how to approach them.
So instead, keep the new things you’ve learnt, and apply them in the next project. That’s the point of growth, that’s the way you will see literal change in the current you and the you from a week or month from now. It’s a great visual motivator, as it is all you!
Build projects, on ANYTHING, just build them! Think of something you’d like to build, regardless of whether it has been done before or not; this is for YOU, no one else.
The best way you are going to learn is by building projects.
Because you’ll be faced with real-world problems you’ll need to solve, such as planning, design, implementation, debugging etc. You will have to make something, from pretty much nothing, and it will have to work.
Something isn’t working as intended? You will have to figure out why. There are no shortcuts, no cheats; just you, and your ability to solve the problem in the best possible way you can come up with.
And when you do this, you will discover areas that you can improve upon, you will discover new and exciting things to implement, you will better understand concepts that you covered by now actually utilising them!
And as a result of all this you can gain confidence, thanks to having completed project after project.
That’s 100% you, no tricks, no looking for “motivation”, just you, getting stuff done and being proud of it as a result. What’s not to love?
Use Google, as often as you need to! Most of the resources you end up going through may end up being vague, so you need to get into the mindset of Googling.
Use keywords to specifically target what you need vs. entire sentences. And use resources like W3Schools, MDN Web Docs, and Stack Overflow for some really good information.
You’ll never stop Googling, even years down the line, as there will always be something you’ll need to recall or new technologies to brush up on.
Do not ever compare yourself to others! This is most likely the number one reason people feel disheartened and end up giving up!
You may see someone else has achieved something or built something, or has landed a position somewhere, and then you start questioning yourself, your abilities, and your own self-worth.
This isn’t a competition. You’re still trying to learn, remember? Everyone learns at a different pace, and that is perfectly acceptable!
Am I better or worse than anyone else? No! I excel at things I naturally understand, and struggle with things I don’t.
We all have our strengths, and you need to focus on yours instead of focusing on the negative. There is no rush, and if you do rush you risk losing out on crucial information that needs to sink in. Learn at your own pace.
Don’t seek validation from anyone but yourself. Believe in yourself, do this for yourself. There are no limits. Anything is achievable. The only thing that can possibly stop you, is you. Now go out there and live your dreams!
I invite everyone who found this article helpful, in any way, to feel free to reach out to me via Twitter. I’m quite active on there where I post about the progress of my own journey, and I’d love to hear about yours!
I also stream my coding journey daily over at twitch.tv/DeadmanoDoesCode so if you’d like to drop by and see what I’m working with, share some advice, ask any questions, or simply just to chat, then you’re more than welcome to!