1 Year Reflections - Learning to Code
Plus tips for beginners entering the world of web development
About Me
I am a qualified practitioner psychologist working in the UK; this has been my main occupation for almost the last ten years. I've always been interested in computers and making applications, though I always felt moving into this world was beyond possible. As a young kid (many moons ago!), I always wanted to pursue something to do with computer programming. I even completed an A-Level in Computing. Unfortunately, this experience completely put me off. We programmed in Pascal, and it just did not make sense to me. I ended up using Microsoft Access for my main project to create a database for a newsagents shop handling the newspaper round. It was pretty slick, I must admit! I also understood basic computer concepts, and this allowed me to pass the A-Level qualification with a relatively high grade (B). However, the experience of Pascal stopped me from pursuing any further interest in computing. You have to remember that at this time, the internet was in its early phases. It was rare to have access to the internet at home, and I didn't have access to any mentors. It all seemed hard and scary. It is only in the last few years that I have felt compelled to learn some programming/coding skills, though it has been difficult with changing employment, house moves, family, etc. I have now done a year of focused study in web development. It's not been a smooth ride, but I have learnt a lot. Below I offer some tips based on my reflections to new beginners who may be contemplating a similar journey into web development, especially those who are in a completely unrelated occupation and are trying to achieve this in their time outside their typical work hours.
Tip #1 - Motivation and Understanding the Why
When I first started this journey, I asked myself why am I doing this. What am I seeking to achieve? Yes, web development and coding is something that I am interested in, and it is something that brings me joy. But the greater 'why' was the potential to create digital applications that would benefit children and young people in their development. This ultimately allows me to utilise my knowledge as a psychologist, and bring this into the digital tools that I am intending to develop. This has been the critical factor that has kept me persisting in this journey. There will be many moments where you are balancing whether it is worth the effort, but it is the motivation and your 'why' that keeps you going. So Tip #1 is to understand your 'why', which will be the source of your motivation.
Tip #2 - Taking Away the Fear
The second biggest challenge when I embarked on this journey was the sheer amount to learn. There are so many web development technologies, especially if you are interested in full-stack web development. You look at roadmaps, and you think it is going to be impossible to cover all these topics. You look at some code snippets and it seems a foreign language to you. You follow a few people on Twitter, and they seem like super intellectuals. All of this is very scary, and there were occasions when I thought I am never going to be able to do this. I think it is quite natural to look at the bigger picture and to also compare your skillset with others. Tip #2 is to ignore all of this, and remind yourself it's not that scary. When you learn any new skill, everyone experiences the initial struggles, then you think 'Oh, I can do this', and then after a bad day, you think that you can't do it. This is all a normal part of the learning highs and lows that you experience. If you find yourself feeling fearful, reduce your expectations. Work towards small goals and small steps. It's not that scary, trust me.
Tip #3 - Consistent Effort
Trying to learn web development whilst working a full-time job, plus all your other responsibilities, as well as making sure you dedicate enough of your time to your family is a tough balancing act. In the last year, there were periods where I did a lot of coding, and weeks where I did no coding at all. I also find it very difficult to cognitively switch from being a psychologist, and then into a student learning web development. This mental shift is even harder if I have not done anything coding related for 2-3 days. So Tip #3 is to have planned moments where you will learn to code and to do this consistently every day. I try to do something related to web development for at least one-two hours a day. You will be surprised how much you can learn by consistently learning something every day. There are incremental benefits and it almost becomes habitual, part of your daily routine. This builds the foundation for more focused and extended periods of learning.
Tip #4 - Adapt your Environment
One of the greatest challenges that I have had over the past year is that my community (colleagues, friends, etc.) are not in the world of web development. At work, they are either psychologists or education professionals. With my friends, I share other interests. The problem that arises then is that web development and coding becomes a solitary endeavour. This increases the likelihood of giving up, and not much incidental learning is taking place. Tip #4 is to mould your conversations and your environment, so it is focused on your learning journey. When I talk about learning web development at work, I tell my colleagues why I am doing this. I tell my family and friends similarly. This ensures that everyday conversations are focused on my 'why' (see Tip #1). I have also addressed my lack of incidental learning by utilising Twitter, Youtube, Reddit and Discord. For example, I have a separate Twitter account where I follow a lot of people related to a lot of technologies I am learning. On Youtube, I have subscribed to various people that are posting something related to web development. On Reddit, I follow specific communities e.g. React, Nextjs. I use Discord for the same purpose, and this has been a great resource when asking for help. Make it a part of your daily ritual to access these resources.
Tip #5 - Use AI as Your Coding Tutor
One of the big challenges when learning to code through a self-directed path, especially when working a full-time job, is that you are not regularly in contact with people who are experienced in the area or those that are on the same learning journey as you. Tip #4 attempts to resolve some of that. However, sometimes there are basic things that you want to ask and want an immediate response. This is where Tip #5 comes into play; which is to leverage AI to aid you in your learning. ChatGPT has been immensely helpful to me in my coding journey, and I have only been using it for the last two months. I use the ChatGPT web application (GPT 4), as well as Copilot Chat in VS Code. When I don't understand a code snippet, I ask the AI to explain the code. Sometimes I ask it to explain in beginner terms. Sometimes I ask the AI to act like a tutor teaching a beginner. In any code that I read or write, I always seek to fully understand it, and using AI certainly helps break down complicated concepts, as well as consolidating my learning at the same time.
The Future
The last 12 months have been great, and it has given me the confidence that this is a journey that I can pursue and one that I can be successful in. I have learnt the basics of the internet, HTML, CSS and Javascript. I have moved into learning Javascript frameworks such as React. I am now more interested in learning technologies that will allow me to build full-stack web applications. In the next 12 months, I am intending to focus more on Nextjs, Typescript, Prisma, and Supabase, as I feel this will be the shortest path in terms of being able to build full-stack applications. If this article has resonated with you and you're either navigating the challenging yet rewarding path, or considering taking that exciting leap, connect with me on Twitter. Share your unique learning experiences, triumphs, and struggles with me, and let us grow together. For those already on this path facing obstacles, remember: perseverance transforms ordinary beginnings into extraordinary achievements. Let's conquer the web development world, one line of code at a time.