Why I did 100 days of JavaScript Challenges

For the last few years, I have been doing 100 days of code, just switching between mainly CSS and JavaScript in an attempt to become a master at these technologies so I can be truly helpful to people when working with them. I have also done a little work on MVC with PHP since I worked on a project last year that needed a better understanding. However, I now know I want to concentrate on front-end design and development and because of this, I decided that I needed to really learn JavaScript at a deeper level. The following are the main reasons I want to learn it at a deeper level.

Imposter Syndrome

This may sound weird when you have built successful websites for people. When I say successful I mean sites that have ranked well in search and aided individuals and businesses to bring in millions of dollars in revenue. Individual projects aside, I had built these using frameworks such as WordPress and Drupal or static HTML and used basic JavaScript and jQuery to add interactivity, form processing, calendar configurations, and basic module development where needed. Let's say I had a basic grasp of JavaScript and enough to build these sites.

While we are at this point I would like to point out that you only need a basic understanding of JavaScript to make a website. That said I still feel I need to know more to take the next step in my journey, I need a deeper understanding not only of JavaScript but basic data structures and algorithms. It was this that made me feel I could no longer call myself a front-end developer, I had imposter syndrome.

Build modern front-ends

I wanted to move on from being this jack-of-all-trades and master of none. I really enjoyed my experience building these companies and small business websites for others, managing and consulting on full-stack from server to marketing but it was tough work. I did this for about 10 years with various other digital projects such as photography and 3D rendering if they came long. It was this second type of work that I had set out to do years previous and it is where I want to now spend my time.

When juggling full-stack development it was hard to put the time into really mastering a front-end specific language such as JavaScript. So after playing around with JavaScript now for 4 -5 years I thought I needed to really just solves lots of small problems that are common problems. And the way to do this was to take on challenges on websites such as Code Signal, Edibit, and Codewars.

So with that, I embarked on these 100 days and the following is what I learnt.

What I learnt

I learnt that learning JavaScript was more about learning problem solving and becoming familiar with all the built functions we can use. Knowing what the language offers to solve problems not only gives you a better understanding of the language but also opens your eyes to what sort of problems these tools are built to solve. If a language has a function or control structure, it is there for a reason and the chances are other languages will have similar tools to use.

Secondly, and probably more importantly, well in the case of Code Signal, you get to see other people's solutions once you have solved it. This is a valuable step to learning as you can always learn from people who are more advanced than you.

While we are on the topic of this I also found that some people just seemed to know the most succinct way of doing things. Where I may have used multiple methods or loops to do something they may have used a fancy math method or an ES6 method. Over time I was able to use these in my solutions.

In opposite, by watching some computer science classes (again) I was able to see how more advanced programmers solved problems and found that being verbose in each line of code is sometimes needed. This by itself has given me more confidence.

Even though some of the solutions others had used and I reviewed seem very succinct and elegant, maybe knowing these solutions is more you know it or don't than being able to truly solve the problem. This last sentence may seem a bit strange and I don't mean to discredit anyone, all I am saying is writing a few more lines of code to arrive at an answer should not be viewed as being less capable.

So overall I learnt that there are many solutions to the same problem and if you can solve a challenge then the code is correct.

What now?

After 6 rounds of coding #100daysofcode, I am going to continue to work using what I know and start to build some fun projects in my free time. I have many ideas so I will see where they take me and write about them here.  

I really enjoy using only CSS, it is a powerful language and CSS can do a lot so work-wise I will be focusing on this and also using Drupal and Twig templating or Laravel Blade if something like that comes along. I will also continue with Vue.js as it provides what I need to build nice native feeling websites and work with JavaScript and APIs when I need remote data on my sites.

I could keep writing but I think it's time to write something more technical. If you enjoyed this and want to follow my journey, sign up for my newsletter. I write about front-end development and design and will do the odd giveaway.

Thanks for reading and till next time carpe diem.