Foreword
Hello world, I'm Josh Wheeler, a self-taught Software Engineer based in London. As of the time of writing this blog post, I work as a Full Stack Developer for an insuretech startup called By Miles.
In this inaugural blog post, I will go over why I have decided to blog and the type of content you can expect from me in the future. In addition, it is only fitting that I properly introduce myself and summarise my journey on how I became a full stack web developer.
In addition, I'll highlight some of the key resources that helped me on my journey, in the hope of assisting aspiring web developers.
Why I Decided To Blog?
Blogging is an activity that I've always wanted to try, but sadly I've never been motivated enough to find the time for it. It wasn't until recently, after listening to an informative episode of the 'React Podcast', that I finally found the inspiration to make time to build and write my own blog.
This particular episode featured a guest by the name of Shawn Yang. Some people may recognise his handle, Swyx, from twitter or even reddit (he is one of the main moderators of the /r/reactjs subreddit). On the show, Shawn (Swyx) talked about his upcoming book 'The Coding Career Handbook' and his concept of 'learning in public', which in short, is the practice of publishing your learning on public mediums to enhance your self-development and learning.
It's also important to understand that learning in public not only benefits your own development, but also others in the community!
Instantly I was sold on the benefits of learning in public, both for my own growth and for being able to pay my learnings forward to others. So after listening to the episode, I made a commitment to myself to build and write my own tech blog.
Whilst I haven't set any quantitative goals yet, I will aim to publish a new post at least once a month. Though that might sound like a small commitment, the key to keeping myself motivated is by working towards small achievable goals. This is something I learned the hard way as a self-taught software engineer.
What Will I Be Blogging About?
With learning in public being a key motivator to starting this blog, I will focus my blogging on things I'm learning / building, useful things I've learned as a full stack web developer, and any general documentation that future Josh will appreciate. Expect topics ranging from React and Node, all the way to AWS and even Vim ❤️.
The blog will be targetting junior to intermediate level web developers depending on the topic at hand. My aim is for at least one of my posts to be of help to someone.
Now, A Bit About Me
I graduated from the University of Western Australia in 2015, with a Master's Degree in Civil Engineering and a Bachelor of Finance. Although I was exposed to some programming at university (MATLAB and Python), I never considered it to be a viable skill for a career (oh, the irony).
After graduating, I started working full time as a Highways and Traffic engineer at a multinational civil engineering consultancy. In this role, I was fortunate enough to be involved in the design of many major motorways and interchanges across Australia.
Although the civil engineering work was challenging, my heart wasn't truly in it. It wasn't until one day, where I was 'fortunate' enough to be put onto a very menial task, that a light bulb flicked on in my head. 'Hey, a computer could be programmed to do this a lot quicker than me, so why don't I have a crack at making that happen?'.
Using the knowledge I acquired in my programming subjects at university, I spent the rest of the day and night writing a script in Python that did the task for me. The script was a success! What was previously a 4 hour manual task for a human to process, only took the computer less than a second. I was hooked ,solving problems via programming became an addiction. From this point forward, I immediately knew I had found my true passion.
Over the next year, I started taking programming more seriously, going deeper into learning Python and VBA (to write applications in Excel) in my own time, with the goal of becoming quicker and better at writing scripts for laborious tasks at work. As I got better, I started hunting for more and more automation opportunities in our team.
It eventually got to a point where I was undertaking more development work than actual civil engineering work. I was finally enjoying my job.
This sense of enjoyment finally gave me the confidence I needed to make the big decision of completely transitioning out of civil engineering to software engineering.
In July 2019, I was lucky enough to find an opportunity in the company's London office. The role of the job was to develop automation tools for civil engineers full time, which perfectly aligned with my skills and experience. Luckily, my partner was also able to find a job in her field, so we packed our bags and off we went.
Early on, I mostly developed Python applications that ran locally on people's computers. But, it didn't take long before the shortcomings and frustrations of deploying software in this fashion, led me to embark on a wild goose chase to find a better way.
This is when I discovered the excitingly overwhelming world of web development. Somehow everything finally clicked, and I saw web applications as the solution to all my problems I was facing. This realisation was enough to motivate me to begin my journey to become a self-taught full stack web developer.
Fast-forward to 2021, and today marks my 2 year anniversary since arriving in London. I now work for an insuretech startup, building full stack web and mobile applications in Node.js and React. I also work a lot in the cloud with AWS, deploying both containerised and serverless applications and working with relational (Postgres) and non-relational (DynamoDB) databases.
With 1.5 years of experience under my belt and many blood, sweat and tears, I would like to offer some advice to others that may be starting their own journey.
Self-taught Full Stack Web Development
So how does one even start learning to become a full stack web developer? It is very easy to quickly become overwhelmed with the breadth of technology and tools required for full stack web development. I assume this is what scares a lot of people off early in their journey.
Upon reflection, I was very fortunate that a combination of passion, prior knowledge and a heavy appetite for problem-solving was enough to fuel me for my journey. But don't get me wrong, it wasn't easy. It took over a year of very hard work and dedication until I was able to successfully and comfortably build full stack web applications in the cloud. So please, don't give up!
There is a lot of information on the Internet. Knowing what is good, and what is not so good is important. So, I would like to offer a list of resources that were influential on my journey. Essentially, this is a list I would have liked to be given when I started.
Udemy courses by Jonas Schmedtmann
Although Jonas isn't the first name that comes up in a lot of the learning web development subreddits, he is easily one of the best on Udemy. His course content and the depth that he goes into is unmatched in my opinion.
The things you build in his courses are also really fun and visually appealing, which helped keep me engaged. I would highly recommend his JavaScript, Advanced CSS and Sass and Node.JS courses in particular. The course are always on sale through the year (~£10-15), so please don't pay full price for them!
Full Stack Open
After Jonas' course, I felt like I needed to learn a JS framework and extend my overall full stack knowledge. This is where Full Stack Open came in, a free online bootcamp by the University of Helsinki that deep dive's into modern web development. I can not recommend this enough.
The no hand-holding, practical style of delivery is exactly the kind of course that really makes you learn. You are thrown directly into the deep-end from early on, but if you can swim, you will come out with a very well-rounded set of skills and understanding.
Developer Roadmaps
Let's be real. Learning full stack web development is bloody hard. The list of technologies to learn seems to be ever-growing. This is where these community-made roadmaps come in. They helped me filter out the noise, and allowed me to hone in on the actual critical skills a full stack engineer requires in this modern world.
Learn Git
Create a free GitHub account and start getting into the habit of committing EVERYTHING you do. Have a look at this link for an awesome list of git commands displayed by user stories.
Get Comfortable In The Terminal And Using CLI's
Linux Journey - A lot of people put off using and getting comfortable with the terminal. DON'T DO THIS. Get used to it from day 1 please. As a developer, you will basically live inside the terminal for most of your day, so it's critical that you are comfortable with it.
If you are using a unix-based machine i.e. Linux or Mac, Linux Journey is a great resource for beginners to learn the most useful commands for day-to-day work in the terminal.
For a bonus tip, making your terminal look nice goes a long way with user experience. Have a look into using zsh (default shell with newer Macs) and the oh-my-zsh plugin to spice up your terminal
Syntax FM Podcast
Syntax FM favourite web development podcast. Again, in such a fast-moving industry, it's hard to stay on top of all the latest news, frameworks and tooling. Hosted by Wes Bos and Scott Tolinski, the podcast keeps you up to speed with everything that's going on and there are many deep dive episodes to help beginners with certain topics. Definitely subscribe to this and listen to some older episodes.
AWS Certified Developer - Associate
Let's face it, with the rapid growth of the cloud in recent years, more companies are hiring full stack developers with cloud experience. I know... another thing you have to learn, but having a great foundation of cloud engineering skills can really set you apart from other developers. However, I would put this last in terms of your learning priorities as it's just a bonus.
Learning cloud was possibly the most difficult part for me. Yes there are a lot of services to learn, but the hard part was understanding the underlying domain knowledge of infrastructure and networking.
I recommend not jumping into AWS without the aid of a course. Stephane Maarek's Udemy course helped me get a better grasp of cloud in general, and also helped me obtain the AWS certification too. As a bonus, I recommend subscribing to the Be A Better Dev channel - he is very underrated youtuber who delivers high quality cloud tutorial content.
Learning How To Google
Learn how to Google, and don't feel like an imposter for doing so. I won't go into much detail on this point, as you can find a plethora of articles online about this. But please, get good at knowing how to Google. Being specific with the language, library and error message in your search goes a long way.
Conclusion
That was a long first blog, so I'll wrap it up here. I hope someone out there will be able to benefit from some of this advice. If the blog was helpful or you just have a general question, please get in touch. Otherwise, see you in my next post!