I landed my first dev job after about a year of self-directed study.
I can still relate to it, but over the past three years I've also had time to reflect on the experience.
It was a rocky road, and I did a lot of things well, but there were also things I could have done better.
These are the lessons I learned.
I was afraid to commit, even though I wanted to get into coding for a long time. I imagined a job where I robotically wrote code all day and thought I may get stuck doing it forever.
I wasn't even sure what coding was, and doubted whether I could do it. After all, I wasn't a maths genius.
When I faced these thoughts, I realised I was holding myself back. This did not have to be a lifelong commitment.
Take the time to figure out what coding is and what a developer does. Find out what you're in for.
There are many ways that code can be used, but the foundations are mostly the same. Take the time to explore, and keep an open mind.
Coding can be like a puzzle game solved by fitting pieces together and reframing the problem in different ways. It can be frustrating sometimes, but the satisfaction of solving the puzzle is worth it.
Learn what code looks like. Watch YouTube videos, or look at source code. It can be overwhelming, but a mass of code is just a lot of smaller pieces.
Immerse yourself. If you're surrounded by experts you will naturally soak up some of their knowledge
Go to dev meetups in your area and embrace the vibrant online developer community.
Listen to podcasts. They are a great way to maximise your time, and keep you inspired and connected.
I'd have dozens of tabs open at any time, all relating to web development. I read countless articles and tutorials.
The first course I took, a free online introductory course to computer science, was fantastic for building foundational knowledge.
Although challenging, it was well structured. I decided I would give the course a chance and then decide if I wanted to continue learning.
It's important to research and explore, but eventually you'll want a concrete plan to anchor and guide you. Your learning will be less efficient if you constantly shift focus.
Spend time exploring, see what's out there and what you enjoy, and then focus in. Create a plan for your own learning. It can change, but only after deliberate consideration.
A danger on the other side is not allowing yourself to progress until you've mastered every topic you come across. Learn enough to be proficient and then move on. You can return to something later to understand it deeply.
Using a whole tech stack can be overwhelming in the beginning, and tutorials are great for guiding you through that.
But be careful: it's easy to get stuck in 'tutorial purgatory' — doing tutorials without applying what you learn.
Treat tutorials as a starting point, and then decide if you want to explore things yourself or build out the tutorial project more.
It was hard to step away from tutorials where everything was neatly laid out, so I decided to block off the morning time for intensive work on my own projects.
At the end of the day, when I didn't need to be quite as focused, I followed along with tutorials and looked out for lessons that I could apply.
Building projects is where the real learning happens. You will come across roadblocks, but this is how you learn to problem solve.
Projects teach you to manage yourself. Start out with something small and gradually expand your goals.
Choose a project that challenges you, but not so much that it's overwhelming. The sweet spot is when you're about 80% comfortable with the whole tech stack.
There's no need to think of a completely original idea to start building. Cloning an existing project is great practice. Reverse engineer it and add your own spin.
After about 9 months of online courses and tutorials, I started to apply for jobs. I crafted a CV bio and cover letter describing how keen I was to learn.
I got 0 interviews, and many simply didn't reply. I didn't have experience to list so companies weren't interested in finding out more.
I didn't let this discourage me. I shifted focus to showcasing my work. Over the next months I created a portfolio with 5 side projects that were live and open source.
Once you land your first job you'll get to learn while working on real projects, but landing that first job can be difficult without real experience.
Picture yourself working where you want and plot a path to get there. Find a job listing you would like to apply for, see what the requirements are, and work on meeting them.
Do what you would do on the job before you have it, and put it out there for the world to see.
You don't necessarily need a computer science degree to land a dev job. Show off your code and let your projects be your qualification.
Open source your code on a platform like GitHub as soon as you can. Push code often and keep your projects up to date.
Your code is there to show what you're capable of. It should showcase how you think an app or website should be built. Keep this in mind and be deliberate in the patterns you use.
Demo your websites. It's much easier for someone to check out a demo of what you've built, get excited and curious, and then dig into the code.
This time things were different. I had projects to show, and companies were actually getting back to me.
I interviewed with a handful of them, and received multiple offers. I was able to negotiate and take my pick.
I decided to work for a startup in the IoT space, and was excited to start my next chapter.
Being a beginner is difficult, but your rate of learning is through the roof. Basically anything you do will be a learning opportunity.
Let's recap the main points for breaking into a dev career:
- Identify – find out what you're in for
- Learn - plan a path and treat tutorials as a starting point
- Build - build real projects and put them out there
- Apply - do what you would do at your dream job before you have it
Once you land your first job, your hard work will have paid off. I'm still amazed at how fortunate I am to have a job that's fun and that I look forward to doing.
Everybody is in a unique situation and people learn differently. This is my experience, but I hope these lessons can translate to other learners on their journey.