Snail's pace in a lighting fast industry, my 5 year battle with JavaScript and web development.
Tags: javascript, beginners, webdev, codenewbie
Published: 2020-08-04 15:09:40

If you click on this post it is highly likely that you are in a similar position to myself, and that is struggling to keep up with how quickly JavaScript and the extensive web development universe is transforming. 

My agenda for writing this post is two-fold: 
1. To share my mistakes, so you can avoid making these
2. To get your advise of traversing this wonderful industry

I did not study CS at University or College for my American readers, nor did I learn how to code as a teenager. I started programming at the ripe age of 23, out of pure necessity. At the time I worked as a Junior Product Manager for a healthcare company that outsourced all of its web development and we had zero in-house  technology knowledge. I this as an opportunity to become the company's very own Tech Lead with visions of CTO-ship just a discounted $10 Udemy web development course away. All I needed to do was to convince my boss to let me take a couple of hours each week to complete the curriculum and I would be ready. He agreed, somewhat reluctantly and I proceeded to use every foreseeable Friday from 9-5 to complete the Udemy web development course. 

### **MISTAKE NO.1** Bulk learning is not the way forward. 
Although I was able to dedicate an entire working day and part of my weekend to progressing through the course, by the next Friday, regardless of how thorough my notes, I had to re-watch large parts of the course. I cracked on in this fashion for a good 2 month before I made the change to daily study time 45 - 60 minutes. 

Learning HTML and CSS became pretty straight forward, but not supplementing the JavaScript component of the course with additional resources was becoming a growing issue. I tried reading online documentation on MDN or W3School, but I found this to be even more confusing. Logically I visited Amazon.com and ordered the highest rated books on JavaScript and JQuery. Insert mistakes 2, 3 & 4.
 
### **MISTAKE NO.2** Books are great only for the now. 
Over the past 5 years I have amassed a total of 12 books on web development, which at some point in time were helpful, but now only serve as accessories in bi-weekly Instagram posts. By the time you get through a 245 page on JavaScript, the language itself has progressed so much you may as well be reading a history book.  Stick to online resources which are maintained and updated frequently. [Eloquent JavaScript](https://eloquentjavascript.net/) is a great example of a resource that stays current.

###**MISTAKE NO.3** Learn how to read the documentation. 
This mistake haunts me to this day and I never fully rectified it. Documenting code and the reading there off will always be part programming. Learn how to do this early on and any new or updated programming language or framework or a library will become exponentially easier to pick up. Don't know where to start? Try [this](http://blog.techtalentsouth.com/8-tips-to-reading-documentation-a-newbies-guide)

###**MISTAKE NO.4** Avoid excessively jumping between learning resources. 
If you invested in Udemy, or in Team Treehouse, Udacity, etc or are even just following a YouTube tutorial, stick to them until the end. Don't get sucked into thinking "I am not getting this, because of who and how they are explaining it". The ability to stick to it is hugely important in programming, not just for the reward of accomplishment, but you're also learning to become more resilient and having bags of resilience comes in very handy when completing a difficult or confusing programming task. Resilience and patients are a good programmers' bread and butter. 

After, 4 months I abandoned my Udemy course and both books were gathering dusts, while I was bouncing between YouTube tutorials and online learning platforms like FreeCodeCamp or Codecademy. My frustration grew as the learning curve felt endless. By the time I became comfortable with functions, arrow functions appeared; just as I was getting my head around objects, class syntax became more prevalent. Every time I became comfortable with a fundamental component of JavaScript the language mutated and new standards were set. I began to wonder whether learning programming part time was ever going to be possible. I had reached the end of my tether and I gave up. 

Two more months had passed and the company I was working for decided it was time to bring in a proper Tech Lead that combined the COO & CTO position. Upon hearing this the disappointment spread across my face. I thought I could do this, I thought I was destined to be the next tech wizard of the healthcare industry, but alas I had given up, I had failed. Here come mistakes number 5, 6 & 7. 

###**MISTAKE NO.5** Set realistic targets and expectations. 
You are not going to become the next Gates, Woz, Zukerberg Musk, Doresy, *insert any other tech icon here* over night. Whether your ambition is to code as a hobby or to build the next world changing technology, it will take a lot of time and you will never stop learning. The sooner you understand that programming and everything around it is an ongoing process, the sooner you can begin setting achievable goals and reaching them. 

###**MISTAKE NO.6** Spot the opportunity. 
My ego and unrealistic goals wouldn't allow me to see the massive positives in the business hiring a senior technologist who has had a wealth of experience in the field I was desperate the conquer. It took me almost 3 month to accept that my new boss was not my competition, but much rather my greatest ally. He instigated projects and transformed the business in a way, which even now almost 5 years later I'm not sure I could replicate. He became my mentor and helped me wrapped my head around programming concepts I struggled to understand simply by applying them to projects we were working on. This brings me onto mistake number 7.

###**MISTAKE NO.7** Surround yourself with as many like minded developers as possible.
The greatest advise my new boss and mentor gave to me was to speak to as many developers of all levels as possible. I had avoided doing so for various reasons; like the impostor syndrome which we will cycle back to later. So on his advise I opened up to the developers we were outsourcing to. If you have developers who are working on the same project or in the same company as you, I'd advise you to do so. Else if you are not in a position to do so, join development focused chat rooms online communities and maybe attend conferences. Did you enjoy that conditional? Social interaction and asking questions is super important, there is no need to be shy or worry about your question, there is a 99% chance that the person you are asking has wondered the same thing. Developers although often and unfairly labelled as introverts are 
in fact very social creatures. We want to share and be helpful, if you succeed then I succeed! 

Over the next 3 years I learned an awful lot about development and my role changed from Junior Product Manager to IT manager. Here I was involved in building the company's first public facing API along a team of developers. I should point out I was also acting as the front-end web dev. I hadn't yet picked up a framework or library, like React, Vue or Angular. Good old JQuery and Bootstrap had me covered. I had now nailed down most updated JavaScript fundamentals, yet I still felt like an impostor. Most of my coding colleagues were raving about how great state management in React was or how Typescript is better than vanilla JavaScript and that I should "definitely learn it", in a bid to defeat my impostor demons, I began researching which one framework is best and why. I spend days, if not weeks, agonising over which I should learn. Frequently googling "React vs Angular vs Vue" or "Which is the best - React, Angular or Vue?". In the end I found myself falling back into the old habits of finding a Udemy course on React, then one on Vue, then one on Angular and I believe I gave Ember.js a quick glance. And here in lie my last the last three mistakes number 8, 9 & 10.

###**MISTAKE NO.8** Don't feel pressured. 
In my capacity as IT Manager / Front-End Web Dev after every conversation with the devs on my team I felt the need to learn a different framework or a library. Bob said Vue, Jim said React, Lisa said Angular, etc, etc... The reality was that the JQuery & Bootstrap combination was getting the job done, data was being displayed, the site was mobile friendly and the users were satisfied. I should mention that I am now learning React, but at the time (and even now) I felt overwhelmed with all the options. I had just come to grips with the fundamentals and I was already out the loop again, frustration struck again. So unless your job requires, it or you really don't know why you should use a particular framework or library and stick to what you know. Then when feel like you understand why you need to use a framework or library, go for it. The worst thing you can do is flip flop between two or more of these, without fully understanding why you need them and you will end up like me - confused, annoyed and borderline depressed! 

###**MISTAKE NO.9** There is no such thing as an impostor in coding! 
This might be a tad controversial as the impostor syndrome is heavily discussed in the programming community. I understand the impostor "emotions" because I believed myself to be one (as I mentioned above), but stick with me on this. The only way you are a programming impostor is if you have never written a single line of code in your life. Everyone else, from those who have just written a hello world html page to those working on machine learning algorithms are coders, you are simply at different stages of your coding life-cycle. Be positive about your programming knowledge, your abilities will get better if you stick to it!

###**MISTAKE NO.10** Learning from your/my mistakes. 
My wife often says to me: 

> "A goal without a plan, is just a wish"

In pursuit of learning my first front-end framework I ignored all my previous mistakes: 
* I didn't set realistic expectations 
* I tried cramming everything into intense and long sessions 
* I bought some more books
* I didn't read the documentation properly
* I jumped from resource to resource
* I refused to see the opportunity to learn from one of our React Devs 
* I didn't join any React sub-reddits or online forums 
* I felt like a fraud whenever I mentioned React 
* I felt overwhelmed at the daunting prospect of learning React. 

I needed a mental reboot and for once listen to my wife!

For all the mistakes I made, there is light at the end of the tunnel. It is now been 5 years since my web development journey has started and a year since I started learning React. I have moved jobs, I am now a Technical Consultant, and my work no longer requires me to write front-end code. I am currently learning node and SQL and continue to work on front-end projects in my spare time (USING REACT!!!). Once I had identified the mistakes I made along the way and realised how much impact they were having on my learning process, I immediately took action. My life as a developer, whatever shape that will take next, will be better off for it. My regret is how long it took me to make and understand these mistakes. 

I wanted to share this with you in the hope you can avoid making these mistakes and as per my second agenda point, push you to share and reflect on the mistakes have you made. If you choose to do so others can be better off and we only have each other to depend on. So far no machine, alien or sentient being has been able to explain why my async/await wasn't working (Wes Bos did a great job though -> [here](https://www.youtube.com/watch?v=DwQJ_NPQWWo)). 

Thank you for lending me your time and feel free to reach out to me. 

Dan
LinkedIn - [Dan's Profile](https://www.linkedin.com/in/daniel-wolks-53047668/)
instagram - [@dev.works](https://www.instagram.com/dev.works/?hl=en)