On my way to...


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.


Beginning

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.


First encounter

The earliest opportunity presented itself in August 2015 when my family went on a month long vacation and I was left with too much time on my hands. My regular routine was to wake up at 5 a.m. and hit the gym. Then be at work from 9 to 5, and come back home at around 6. Because I was never a big fan of wasting my time on watching tv shows (except for a few ones) or playing video games on my xbox I started exploring different online resources and educated myself on programming languages that I would later learn were part of the front end development (aka client-side development) - html/css/javascript. I knew basic html markup from the old times of myspace and frontpage and dreamweaver, but it wasn't as fun as I found it now when building the "Like" buttons and tying css magic for my online projects. It just blew my mind and I felt so empowered. Who knows, maybe sometime soon I will be forever grateful to my family for giving me this month "off" to pursue my interest. Maybe that one right direction and one positive action can take me to the whole new level of my life. Only time will tell.


Meetups

After my family came back from vacation I had to reconsider my routine. You know you are a parent when you cram your entire adult life between the time your kids go down and you go to sleep, right? I was able to quickly learn the basics of markup languages and cascading styles, but then quickly got stuck when it came to javascript. Having little kids around didn't help much either so I had to ditch my gym routine and do some more studying instead. Unfortunately, online courses couldn't get me far because I needed more help and guidance. So I turned my attention to local meetup groups and started attending a few meetings for aspiring developers. It was an amazing idea because not only I met people who just like me wanted to break into this field, but I also met a few real world developers who shared a lot of new knowledge and concepts with me. We had sessions where we would buy our own domain and upload our mock websites. Or do some bootstrap magic along with ruby sites or learn mobile development. My head was spinning from all that knowledge, but it was at that time when I started to see how it was all possible for me and that i didn't need to worry about my old fears like "I could never be a developer".


My nightmare

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.


Diving in

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.


What a venture

As I was diving deep into little-known waters of computer science, I quickly found myself drowning in low level programming languages like C. Having to solve mind-bending problem sets like building dictionaries by implementing a hash table or tries manually and not having benefits of higher level programming languages that came equipped with all the data structures and classes you needed out of the box was very challenging. I learned a lot from this course as I built my fundamental skills first in C language moving up to Python and Javascript later in the course. More importantly, I learned how to not get stuck on one problem for weeks and ask for help instead. At first, I was feeling like I could solve all problems by myself, but as my frustration grew, I learned that sitting stuck on one problem would not get you anywhere. Attending a hackathon as part of the course helped me realize that fast. And so, I always ask for help! :) Another technique that I learned was to let the problem sit idle for some time and get some rest from it. Refocusing helped me to look at things from a different angle. At some point in the course I actually had no choice but to leave this course for some time as I had other family matters I had to attend to (birth of my daughter, purchase of our new home to name a few). After I came back to continue my certificate course, I felt more energized and ready to tackle new problem sets. I would start studying at 5 a.m. on a regular basis and the hardest thing for me would be the need to stop coding at 7 a.m., get myself ready and go to work. Those were the moments when I wished I could be a developer during working hours too because I was getting such a kick out of it.


There is so much more out there

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.


My first developer job

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.


What if

After this short stint as a junior developer, I decided to push my luck further. I got in touch with a placement agency and made a personal connection with one recruiter. He was interested in my pursuing a new career in development and arranged two interviews for me. The first interview was with a very small trade stock company who was more interested in a support person than a pure developer. So even though my interview went well, I was not interested in technical support role as I have already been working as a support analyst at my existing job. Another interview was much more interesting than the first one. It was an energy company that was looking for an actual developer. I had a great interview that lasted for one hour and learned a lot from it. The manager who was a senior developer asked me numerous questions from creating JavaScript functions dealing with 2d arrays to SQL functionality to .NET. With little help I was able to answer half of the questions and even though I did not pass that interview he gave me some great feedback and offered me to go grab a coffee later on. The feedback he provided to me afterwards was priceless and mostly revolved around me improving on .NET stack as they used a lot of .NET in their firm and I had a difficulty in my interview when trying to create a program in C# that would calculate how many right and left wheel cars there are in a dealership that sells both versions of cars (spoiler alert: I would solve that exact problem when I dive into C#. Read my next post down below).


Back to study

That last interview showed me that I needed to improve on .NET side if I wanted to succeed as a developer (I was already an accomplished IT professional in corporate Canada and witnessed the ubiquity of .NET applications first hand). Another advantage I was missing on was having a formal software development education on my resume. After careful consideration, I made a decision to go back to school to get a formal education in programming. After some sleepless nights on choosing the right program and discussing and making arrangements with my family and kids, I was able to find a college diploma program that provided evening classes in programming with expertise in SharePoint development. I made a decision to take that diploma program for the following reasons. First of all, the server side versions of SharePoint platform were built on .NET technologies and so the college curriculum included extensive classes and labs on front-end and back-end languages like C# and ASP.NET. Secondly, SharePoint moved on to online version which required extensive knowledge of JavaScript and REST calls to talk to SharePoint Online. My plan was to kill two birds with one stone. Fast forwarding to early 2018, I was enjoying the program and was glad that I chose SharePoint development (and deeply thankful to my family as I would've never achieved anything if it wasn't for their support. Taking care of small kids and driving me home from my evening classes in programming...I was so blessed to have my family by my side). Microsoft was doing incredible job at improving the online version, and with everything connected to office 365 the new SharePoint was killing it. I had high hopes to really make it this time around.


Hello world

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!