Over the years, there has been a huge interest in learning programming. Tech jobs remain as one of the top-paying jobs in the world. And in Singapore, technological skills shortage remains a major issue for Singapore employers.
If you have the relevant technical skills and portfolio, you could enter the technological industry. As a self-taught developer myself, I find that there are many channels to look for jobs. Demand for IT professional continues as Singapore is position at the frontier of the technological frontier. With the increase in demand for skilled IT professional, many companies are fighting for a limited amount of talents. In an interview conducted by Asian Correspondent, it is reported that nearly 9 in 10 Chief Information Officers find it difficult to find qualified IT professionals.
My formal academic background is in aviation management and services. However, throughout my decade of working life, my choices of career have mostly been a result of being self-taught. Personal training, group fitness coaching and web development. While having the time and autonomy to explore my directions in my early twenties, the self-taught journey could have been smoother. Here are 5 things that I wish someone has told me when I first started my self-taught journey.
Chances are when you first decide to embark on the self-taught journey, you are probably doing it alongside your full-time job. If your end goal is to find a job as a developer, it can take anywhere from months to years.While learning, it could be tempting to put the notion of learning programming on the back burner and spend time relaxing. When I freelance, sometimes I tend to spend my day watching Netflix during standard office hours.
We are born to move away from pain and towards pleasure. Programming can be sometimes an agonizing endeavour. Sometimes what seems to be an easy problem turns out consuming half of the day. One of the productive tools that I enjoy using is the Pomodoro Technique. The technique uses a timer to break down the work into intervals. For example. you could set your working time to 25 minutes interspersed with 3-5 minutes break. After 4 rounds of 25 minutes, you could take a longer break. Understanding your energy level throughout the day and matching that to the work you allocate for yourself in that period of time help to boost efficiency as well.
"What language should I learn?" is not the question to start off asking. I know I use to ask this question when I first start out.
The question is not what language but what do you hope to achieve. Essentially, certain concepts of programming cross over to various programming languages. If you are just trying out programming, ask yourself, what do you enjoy doing. Do you prefer to design? Do you like to build things that you can see? Do you like logic? Do you like working with data? Essentially, you will narrow down your preference to front-end development, back-end development or database development, for a start.
From there, personally, I will choose to find out what are the easier languages to initially pick up. The idea here is to learn the fundamentals and basic concepts of programming. In the beginning, it is about enjoying the process of solving a problem. One website that I use is www.freecodecamp.com. Once you have more confidence in programming, you can proceed to learn other frameworks, computer science fundamentals, data structure and algorithms, etc.
This is similar to the point above. It is very easy to find basic programming courses online. But you don't know what you don't know. When I was working in the fitness industry, I thought I have gained a good basic understanding of the intricacies of the human body: the anatomy, physiology and biomechanics. It isn't until I enrol into a Sports Science bridging course to realise that the scope of Sports Science goes deeper into how the movement begins from chemical and electrical impulses.
I enjoy the classes. And I love the social setting. But I prefer to learn as per my own pace online. In order to ensure there is enough coverage, you can look into the curriculum of a program and structure your own learning plan. It will help to validate this with an industry mentor to make sure that you are on the right track. In fact, nowadays, technology is moving so fast that people ended up needing to be self-taught in one way or another. But with the internet, there are many good online courses, which could even provide you support with an experienced mentor. One of them being Codecademy.
Probably, the main fallback of being self-taught is that there are no immediate reliable sources of feedback loops. If you stand on the giant of the shoulders, you could achieve much more faster. Even as a front-end developer, sometimes I find it confusing to navigate through the various tutorials all trying to achieve the same thing. Honestly, why are there so many ways to write webpack with React.js? And we haven't even gone into server-side rendering, which, the last time I try, the code shatters into a blitsy allure.
However, there is a web solution for this as well. Codementor is an on-demand marketplace to connect with expert mentors. If you prefer face-to-face, I find the developers in the developers meetup group are usually more than willing to help. And chances are the coding dojo and coding group usually have senior developers around to help you out.
Perhaps the hardest of it all is having the motivation and willpower to show up on the desk day after day, consistently. There are going to be days that are going to be difficult. There will be days when you feel like this is all going no where. But you will only get to know the results if you work on it consistently for months and even years. But like what the late Steve Jobs says, "You can't connect the dots looking forward; you can only connect them looking backwards."
There is no hard and fast rule when it comes to maintaining self-discipline. For me, I work best when I know there is a deadline. Or when there is a structure to follow. I also find out that I work well when I'm not at home.
These are the 5 difficult things that I encounter during my self taught journey. Learning programming can be a lonely endeavour. At times, it can seem like there is no progress made. For the past 3 months, I take a break from learning front end development and reevaluate my path. One year back, my goal is firm, find a job as a front end web developer and move onto a full stack developer role.
When I quit my previous full-time job, I start weighing in on my skillsets: communication and coordination definitely top the chart. While there are jobs that are approaching me for that role, I find myself missing the analytical work of employing design thinking and programming during these 3 months of programming hiatus. After going for a few rounds of interview, contemplating my goals in 5 years' time, researching for alternatives and asking for answers that I would probably never get, I'm back on track again.