My agenda for writing this post is two-fold:
- To share my mistakes, so you can avoid making these
- 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.
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.
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
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.
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.
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.
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.
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!
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!
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!
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).
Thank you for lending me your time and feel free to reach out to me.