Be SMART about learning to code.

Be SMART about learning to code.

ยท

16 min read

Introduction

Learning how to code is hard, and becoming a (web) developer is possibly even harder! I've been thinking about this, and my own 20 year journey, a lot lately. Making me spit out random tweets and ideas that I hope might help out people that want to start out in this amazing tech industry.

With all these little ideas in the back of my mind i remembered something that i picked up during years of therapy for psychological and addiction problems. Something that could help you get of the ground faster and without al lot of the struggles a lot of the newcomers to code experience.

This something is called the SMART Principle. The SMART Principle is an idea that comes from a psychology background and is used a lot in management to formulate ideas and goals in the most optimal way possible to make sure that goals and targets are actually reached down the line.

SMART is an abbreviation which stands for Specific, Measurable, Acceptable, Realistic and Time-bound. In this article i want to make a quick stop at all five of these words, and explain to you how they can help you to make your own goal more concrete and achievable.

Disclaimer: I am not a trained psychologist, nor am I a expert in education. And this article is not a step by step guide on how to become a developer. It's just me trying to share some of my experience to help you with your journey.

Enough talk, let's start with being more specific about your goal.

Specific

The point here is to make your goal as concrete as possible. I see a lot of tweets of people saying "i want to learn to be a web developer", and while this goal is ambitious and very understandable, there are (in my opinion) a couple of issues with a statement like this.

One: Wanting to be a web developer is about as vague as saying you want to be in sports. Their are to many options to explore and it's so tempting to want to know everything that you run the risk of wanting to try everything, and end up knowing just a bit, of little value, about a lot of things.

Knowing one thing well > Knowing a little about a lot.

Two: There are too many unknowns, outside of your control, that could impact your ability to reach that goal. For one, your local economy could collapse. Just look at the current state of the world where it's extremely difficult to even get any random job.

My advice here would be to take a step back and determine the actual skills needed to be a web developer. What is it that you should be able to build!? And even more specific to development, what are the tools and languages that you need to know to build that.

This way you can formulate a much clearer, more specific and reachable goal like "I want to learn to build websites using Html, Css, javascript, React and Node." Ill get back to this.

I personally learned how to code because I really wanted to build a website and publish thing on this new thing called the world wide web. (Remind you that this was 20 years ago) I had no idea what I wanted to publish to be honest, but my urge to be able to gave me the drive to learn how to build something we now call a blog. At some point getting a job in development was just a new possibility to think about.

My point here is, instead of making "being a web developer" your immediate goal, set a goal that is more specific and tangible like being able to build a website that uses X, Y and Z as the languages or tools. Focus your learning on those tools and when you know how to use them to build that website make finding a job, a.k.a being a web developer, a new separate goal.

Specific to web development it's also a good idea to pick a stack early on. Since there are so many options out there I would suggest you spend some time to investigate your options. You will probably want to learn Html, Css and Javascript. But then? Are you going for Angular, React, Vue, or Svelte? And for the backend? Php, Python, Node or none at all?

Go watch some basic tutorials on Youtube to get a feel for them and then pick a stack that feels right for you. Going back and forward between all these languages and frameworks is gonna slowdown your learning and keep you from reaching your goal.

President IObama saying: In hindsight, i should heve been more specific

Measurable

The idea here is to set a measurable end-goal and set equally measurable target-points. Again "becoming a web developer" is just to vague. When have you actually reach that goal?

If you write a blog post, or send out a tweet you have contributed to the web, but does that make you a web developer? You could go to WordPress.com register a new blog and start publishing thighs. You have now formally published a new website but does that make you a web developer?

Let me tell you that there are countless people who work in the web industry who wonder whether they are really web developers every day! You've probably heared of the term "Impostor Syndrome"? Which is basically web devs (amongst other) questioning themselves if they are really web devs or if they are faking to be one by googling the stuff they need.

So instead of "becoming a web developer" try to set a goal that you can actually measure. Think up a project that you want to be able to build! A project that requires all the skills that you need to become a developer.

Let's say you want to be good at front-end/react development this project might be a personal blog written in React (With Html and Css of course) that can consume an external Api for ti's content and has a contact form and commenting section.

Such a project is not only a measurable goal (You can either build that or you can't) it's also great because if you are able to build it you are basically ready (Again, My opinion) to start applying for junior positions.

You can also split such a project up into multiple sub-targets. that align with the technologies and languages you want to learn. And these sub-targets can also be measurable. You might split up this project and your learning goals like:

  • Being able to build out the semantic Html markup for this blog.
  • Being able to make it look good with Css.
  • Being able to add a off-screen mobile menu using Javascript.
  • Being able to refactor everything into a React app.
  • Being able to fetch the content from an Api.
  • Being able to process a contact form.
  • Being able to handle user comments and displaying those.

You could even, if you are so brave, attach due dates to these targets by which you could measure if you are still on track. But do keep in mind that not making your own targets is often killing for your motivation. So be kind to yourself here.

Acceptable

This one might seem obvious but is actually worth giving some thought to. Take my situation for example. As i mentioned earlier I suffer from an addiction disease, and while I have my drinking under control (I'm 4 years sober now) is still have the tendency to lose myself in other things like spending way to much time behind a screen, which could have a negative impact on my family life if i wasn't aware of this every day.

Learning how to code is going to take up a lot of your time. And is that acceptable in your current situation? Will you be able to figure out the right balance between your current life and learning towards your goal.

Maybe you are still attending college, and is all this coding on the side going to affect your grades!? Maybe you have children, is it acceptable that you are going to spend some of your time with them on your new goal!? I could keep going here but I assume you get my point.

Don't get me wrong here. If you want to create a better life for yourself and your family, or just want to reach for your dreams I totally understand and I applaud your ambition. Every hurdle has a solution. Just make sure that your new goal isn't going to have a negative impact on yourself, your family, your social life, and last but not least your health. Because these things in turn will have a negative impact on you reaching your goal in the first place.

This dude had to make a appearance here!

Realistic

In parts this one is easy because I'm a strong believer that anyone who wants to can learn how to code. As long as you don't set yourself up for failure because of to strict deadlines or telling your self that you can become a developer in half a year!

I know some bootcamps say you can, and some may actualy do, but i do want to warn you about some shady tactics going on around bootcamps.

Just keep in mind that learning how to code isn't always going to be easy, and you are going to face stuggles. But as long as you can see your struggles as opertunities to learn i would say you are good to go!

Time-bound

So now that you have a clear picture of what you want to achieve it's time to start studying towards that goal. But when and where are you going to do that. Taking the time now to come up with and committing to a set schedule will help you to stay on track in the long run.

I would suggest you really take your time to do this. Have good look at your current schedule and block out space for your learning. But please try not to over due yourself. Keep in mind that every week is different and there will be birthdays, dentist appointments and what not that will prevent you to get today's hour done. Try to plan some "backup time" in case you "fall behind". Nothing will kill your motivation more then not meeting your own requirements.

For the bigger picture, also try to make room for down time. Chances are that you will learn how to code on the side, next to school, your day job, or taking care of the kids. And all this is going to ask a lot of your mind and body. Sometimes you will feel warn out and instead of beating yourself up about it, take some of that planned down time to recharge. As an example you could grand yourself one week of downtime a month that you can use when needed, while staying on track.

There is no golden rule here. Everyone learns at a different pace, and everyone's daily life and journey is unique. So you will have to figure out what works for you. You will also probably not get this right in the first week, and you may need to adjust your planning. So don't be afraid to fail here. As long as you keep planning and making progress i'm convinced you'll get there.

Final thought

Taking the time now to think things through, and coming up with a good and achievable plan will definitely increase your chances of success. The fact that you took the time to read this article and are considering taking up coding means that you are already moving in the right direction. And I hope that the principle described in this article can help you with the rest of your journey. If you have any questions please don't be shy and reach out! ๐Ÿ™‚

"Just play. Have fun. And enjoy the game."

Michael Jordan

Thanks

Join me on twitter @Vanaf1979 if you like to tell/ask/show me anything, Or follow me on dev.to @Vanaf1979 or Hashnode for more articles like this.

Originally posted on my website on November 23th 2020

Stay safe and thanks for reading.