Back in 2011 I graduated with a reasonably good Computer Science degree from University of Abertay Dundee. Towards the end of my studies, the financial crisis was in full swing in the UK, and I realized that I although I was technically competent, I wanted to gain experience in a field that would push and develop my business and people skills – universal skills that have wide applications in life. I joined the Oxylane group as a manager, and learnt a lot of valuable life lessons during my years at the company.
Fast forward to 2014 and it had then been a few years since I had seen the inside of a compiler, although the principles and understanding of computer science were still there and will probably always be with me.
However, my coding skills were rusty and I was going to have to relearn a lot. I took a good look at where the software industry was at before creating a learning plan. Web development was the hot thing at the time, with people coming out of 3 month bootcamps able to find jobs in the Silicon Valley for $100’000.
I didn’t really have the money for a bootcamp, as the ones I looked at costed around $10’000 in tuition and were all almost exclusively in high cost of life areas such as New York and Los Angeles. But as it turns out, one doesn’t need to attend university or bootcamps to get a job in the industry, and I already knew that because I knew quite a lot of software developers didn’t have a degree.
Since I already had the credential of holding a degree, I chose to go the self-taught route and study at my own pace during my spare time.
“The research part”
The first part was making sure I wasn’t wasting my time, as my goal was quite clearly to get a foot in the door as a software developer. I spent weeks researching and reading up on the industry and its various entry paths. Luckily, if one wants a career in programming, there are many ways to get one’s foot in the door.
At the time, React existed but was not as widely adopted as it is today. Ruby on Rails was popular but starting to fade. And the MEAN stack was growing in popularity, the Angular ecosystem in particular was revolutionizing frontend development.
The learning plan I came up with included revisiting some important CS fundamentals including Operating System, Networking, Data Structure and Algorithms. And also becoming familiar with the MEAN stack by building a high quality portfolio of one or two polished applications. I still believe that one really good application with interesting design and implementation decisions is going to be more impressive, and a better talking piece during interviews, than building many lesser quality apps.
“The learning part”
I learnt from any resource I could find. Of which there are many. My focus was mainly on online courses, tutorials and books.
Keeping my time expectations in check that was by far the hardest aspect of this adventure for me. My mind was fixated on the smashing the “learning plan”, and I wanted it learn it all right there and then! Learning is painfully slow if one is too focused on the day to day progress, it’s much better to take a look at one’s progress after a couple months of learning, because learning takes times.
From my experience and from the others testimonies that I have read, it can take anywhere from 3 to 24 months of learning to land a coding job as a self-taught developer – depending on prior experience and location. I still feel like 12-24 months is the most reasonable target one should set himself: plenty of time to learn things in detail while not going overboard.
One of the pitfalls of learning can be that beyond two years it becomes easy to not be able to see the forest for the trees. There is no end to the amount that you can learn about and you need a cutoff point or will you get lost, and you will lose sight out your outcomes. That is why your learning plan is important: it should clearly set out your goals.
Be careful of “goal creep” however. Goal creep is adding more goals to your original plan that might not add that much value.
It took me 2 years all in all or around 2000 hours. Despite my prior knowledge and degree, it took so long because I wanted to feel very comfortable in my new trade before getting a job and actually be able to make meaningful contributions to my team rather than having to struggle at the beginning.
“The Portfolio”
Simply put, you are probably not going to find a job doing something you cannot demonstrate you are already capable of doing.
I made a first good polished application, my Kanban app. Kanbans are a type of time management tool, invented by Japanese car manufacturer Toyota to keep track of the various stages of their projects. If you want to know what a Kanban looks like check out Trello, my app was an almost identical clone that had a “The Simpsons” themed to it.
I also had a second polished application. I made a lightweight version of AngularJS. It is still to this day one of my proudest realizations, and it took 3 months of full time devotion to complete. This is the project that really made me into a better programmer simply because popular open source projects tend to be incredibly well engineered and one because there is a lot to learn from studying and contributing to them.
“Outcome”
Because I had a solid learning plan, didn’t try to take shortcuts in learning and didn’t add more goals, I was able to accomplish my goal in the time I had forecasting.
My junior-level portfolio was excellent and once I was ready to start searching, it was the easiest time I had ever had finding a job. All sorts of interesting opportunities came my way.
This experience has perhaps more importantly given me the skills and methodology needed to keep on self-learning throughout my career. It was a huge undertaking and has made me noticeably more confident in myself.
I eventually decided on taking up an Full Stack Developer internship position at TransferWise in Tallinn. After which I had the option to work at the Quebecer startup studio Maple Inside where I currently work as a Full Stack Developer on an ongoing basis.