This is a personal blog to document my journey towards becoming a software developer and doing work that I am passionate about. If you like to follow along, I'd be excited to share what I learn with you.
I have always been into STEM, reading W.Gibson's cyberpunk books, breaking and fixing my first IBM x286 computer and figuring out how Assembler and Pascale languages worked when I was a school boy. Then majoring in automotive engineering during my university years and fixing computers as a side business. Finally, I worked in IT companies from startup to big firms, but for some reason always thought that my average math skills wouldn't be enough to work as a developer. So I have not had a chance to seriously dive into coding (lack of time, playing in rock band and moving to different countries for work), not until MOOCS and other learning tools took the stage and made it all possible for me. I had a gainful employment and a family with two sweet baby girls at that time and did a little bit of scripting at work. But I was missing it more and more and wanted to spend all my working hours doing something I was quite interested in - solving problems on a computer. Being a lifelong learner and getting a 24/7 self paced online access to programming courses meant I could do it in my spare time. So I jumped right into it.
Soon enough I doubled down on my online studying the results of which were creating a simple discussion board site in PHP with login autorization and a basic Android mobile app (i wasn't a big fan of iPhones at that time) that would act like a flashlight. I even started googling local tech companies and imagining how cool it would be to work for some of them. I picked my top 3 and even connected to some HR people from those companies on LinkedIn. And just when I pondered of approaching them online to take my first steps I had this terrible nightmare one night. This is what I remembered when I woke up... I was sitting in this nice reception area, you know those that most corporate firms have, with receptionists, flowers and glass doors. It turned out I was there for an interview waiting for my turn. I looked around and saw the HR lady from my top 3 tech firms list(!) interviewing somebody behind the glass door. I then saw another candidate approaching me and then we start talking about how nervous we are at interviews. Suddenly this person asked me if I knew how to solve the fizz buzz problem and when I said no he just laughed out loud. He said how could you pass any interviews if you didn't know how to solve a fizz buzz problem. I felt so embarassed because everyone in reception area including the HR person who came out to grab the next candidate could hear our conversation. I got up and left ashamed and broken. And that's when I woke up.
This nightmare was a great wake up call for me because that's when I realized I needed a more fundamental knowledge to fill in the gaps in my skill set. Yes, I could put simple websites together, but whenever I tried something harder like bootstraping elements or adding paralax scrolling efects, my end products would work like some slow loading "frankensteins". Here is a screenshot of my first portfolio web site that worked horribly slow.
I knew I could no longer just copy and paste code snippets and call myself a developer. I needed to find a more comprehensive course that would not only give me a better understanding of programming, but would also show my potential employers that I was not their average junior developer. Going back to university for another 4 years of engineering degree was not an option for me due to my work and family commitments. Moving forward to 2016, after countless nights scouring the internet and reading about each course and what it offered, I finally found what I was looking for. It was a very challenging but highly regarded online certificate course on introduction to computer science offered by one of the top universities in the world. It taught how to think algorithmically and its topics included abstraction, data structures, encapsulation, resource management, security, software engineering, and web development. After watching their first lecture I knew I found a jewel in the crown of online offerings. And yes, I solved the fizz buzz problem too.
As my confidence grew little by little, I happened to discover the PluralSight online resource which offered a wealth of pre-recorded sessions on different programming languages. Having acquired a 3-month trial subscription I started to teach myself C# (C sharp) and ASP.Net technologies. I have heard a lot about them earlier and so could not help it. And yet again, my world was shattered by these new concepts and interconnections of .NET stack and I felt like a newbie again. I tried to comprehend .NET as much as I could in a very limited time, juggling my career with raising children. I remember I had to fly to another city on a business trip and so I downloaded the sessions onto my laptop and had an awesome uninterrupted 5 hours of studying up there in the air. Discovering things like .NET, angular js and typescript taught me that there is so much more out there that I needed to know before I was ready to take the next step in my career. As I was starting to get closer to my goal (at least that's what I thought at that time), I started to explore online mock interview platforms to help me prepare for the dreaded whiteboard interviews. One great tool that drew my attention was Pramp. I quickly set up online account and got my first interview in a few days. The idea of this platform was to randomly connect two coders and give each one of them a coding challenge. So I would connect online and ask my vis-a-vis to crack a pre-set coding challenge. We'll go through it and once it's solved, they'll do the same to me. The most amazing thing that happened during my first mock interview was that I managed to solve(!) the problem, but only using the brute force approach. The problem was to write a function for an array of sorted and distict integers that would return an index i for which array[i] = i or -1 if no such index exists. Another thing that I really liked was that some of the coders that I met online liked how passionate I was about solving problems and said that that my attitude would help me in interviews.
With a few projects under my belt (see screenshots below), one of which being building website for a small business (that website brought a lot of wows from clients and was very successful in bringing more business to the owners), I was eager to apply my skills in a real world.
One interesting opportunity came about via email from one of the meetup groups that I was part of. The email said that one non-profit organization was looking for volunteer developers to help them build a new website. So I read through the job description which required front end development skills and applied without hesitation. A project manager of that non-profit organization had a quick phone interview with me and explained what was needed from me. He then invited me to the casual meet and greet meeting where I met with two more developers who were also chosen for this work. I was very nervous as that was my first meeting and I did not know what to say. They assigned one senior developer (who was working as a full time dev elsewhere) to supervise the other two developers - myself and another intermediate developer. The meeting went quite well despite me calling the senior dev a wrong name (I felt a bit nervous). This work helped me to get more familiar with reading technical requirements and design documents for the new website. Not to mention, writing CSS with SASS and even installing node.js because our senior dev wanted everyone to use it. And even though my input in this project was minimal (i.e. I was involved in coding some footers and headings with the majority of work being quickly completed by the senior and intermediate devs). I gained some good experience which would hopefully help me in future.
I know how the world works and how it is sometimes not fair to us. I've seen people getting hired for roles they were never qualified for in the first place. Even after being hired, they often had no motivation to improve to do more than a bare minimum. A lot of times they got away with it by knowing how to talk the talk, but rarely walk the walk. For myself, I was always the opposite and never felt comfortable to ask for any favours. I built my career and established a reputation of a high achiever by constantly learning and improving upon my skills. It's not that I was bad at networking. I had good friends in software development world whom I could ask for help. But I guess it had more to do with my values that shaped my life, my relationships and ultimately my career path. At this stage of my career I have proven myself, and accomplished many of the goals I had when I was younger. Now, when I think of challenging work, I think of something that I care about, something that ignites my passion and makes me happy. So I am looking forward to find a company that needs such people - reliable top performers who have a sense of personal quality control. And if you are that company...let's connect!