For several years now, software engineering has been and remains one of the most popular career aspirations for people around the world. While the traditional route of entry for many, into this field has primarily been through a university degree or formalised instructor-led courses, effective alternatives such as the “self-taught” route do exist. As I have personally leveraged the self-taught option, this post is intended to signpost how I have and continue to use this learning option. The aim is that it will inspire you to achieve your dreams.
The IT industry is a continuously changing one and this change has even increased with the advent of cloud computing. As a result, many of the traditional formalised training options have curricula that are lagging behind what the industry demands.
While this does not in any way invalidate the knowledge obtained from such training institutions, it does place a requirement on the individuals obtaining such training to compensate for this skill/knowledge gap.
So, it is therefore no surprise that self-paced learning is gaining a lot of traction on the internet. The breadth of material available on the internet is so vast that it caters even for those with little or no experience in IT and as such many have been able to develop very robust software engineering capabilities from their bedrooms, leading to actual employment in the IT industry.
I am one such individual.
A few years ago, I decided I wanted to pursue a career in software engineering, as I discovered I had a passion for automation and enjoyed finding smarter and easier ways to do things.
Here are some of the resources which I used in my journey towards a career in software engineering (remember this list is not exhaustive!):
- Learn C#
- Get started with Power Apps
- Clean Code: A Handbook of Agile Software Craftsmanship
The primary driver for me then and now has been the understanding that the future is going to be software-driven and whatever leverage I can apply to my existing knowledge will pay off. This served as a push to keep the self-training routine going.
Initially joining a small but ambitious software company was ideal for me as most of their software development was done in-house. This offered a unique opportunity for me to put into practice the skills I acquired from the online resources and as the saying goes, “practice makes perfect”.
Eventually, I was able to transition into a managed service consultant role which brought further software development opportunities. Here, many of the skills which I have developed over the years during my self-learning routines became indispensable. Since then, I have taken up various roles within the software engineering industry.
Why do this?
In my experience, with no university degree in software engineering or computer science, the odds are stacked against you — one of the first lessons I learnt. However, not everyone is able to take this route especially in terms of the cost and flexibility which the self-taught option brings to the table.
Virtually anyone with the drive can leverage self-learning — even those with little or no knowledge about computers. I was fortunate to have a broad spectrum of knowledge on technology which helped my journey into software engineering.
The primary key to success when taking the self-taught route is personal sacrifice and finding/creating opportunities to put the things you have learnt into practice. This point cannot be emphasised enough!
While self-learning offers several of the previously mentioned benefits, it also presents challenges — for example, you will have to invest evenings and weekends, especially when you already have a 9–5 job. What I have done is to try and weave self-learning activities into my regular 9–5 job. This might be 10 minutes here and there dedicated to the short basic concepts. While this does not eliminate the need to do the evenings and weekend, it minimises it.
One of the biggest challenges I faced when I “officially” entered the engineering space as a self-taught individual, was that while I have learnt a lot on how to “get things to work”, the enterprise space required more than this. The robust enterprise solutions, require you to think about best practices, i.e., the best way to do things and understand why things are done in a particular way. I had to learn concepts such as SOLID principles, clean code etc. To be honest, learning never really stops, and I am still learning!
Looking back, I would recommend focusing your self-taught routines on technologies, where there are opportunities and then spend time mastering these technologies. For example, if you work for a company that uses Power Platform or Dynamics 365 you could choose to focus on the technology where Microsoft provides a lot of free resource such as the Power Platform which by its nature caters to the Citizen Developer— remember that it is easier to concentrate on one thing at a time. After this, seek out opportunities to put this knowledge into practice and as such gain experience and confidence!
In our world today, there are many people who are either aspiring to be software engineers or mindful about how to remain relevant in a fast-changing IT industry. The self-taught route, while not a silver bullet offers a lot of opportunities to address these situations. In this post, I have used my personal experience to show how I have leveraged these training options and hope it has inspired you.
If you are considering entering the software engineering space, I would highly recommend considering joining an apprenticeship programme such as the one offered by Capgemini.
Please note, there are other such programmes — you must search and identify the programme that best suits your needs and ambitions.