article

My Journey from an ESL Teacher to Software Developer in Vietnam

My Journey from an ESL Teacher to Software Developer in Vietnam

Introduction

Hi, my name is Alberto, and this is the story of how I learned to code, wrote a programming book, started my own blog and became a software developer.

My background is in accounting and law, and never in my life did I think I would end up working as a software developer. But here I am today, working for a startup as a Full-Stack JavaScript developer.

My first steps

Everything started when I was in New Zealand and my girlfriend was studying at a local University. One of her upcoming exams was about HTML and I got curious and started helping her.

That was the first time I looked at a piece of code. I started studying HTML and CSS from Coursera and my first website was awful, a bunch of text centered in the middle of the page with an ugly colored background.

first website  

October 2016 - One of my first attempts at a blog page. it's all static, the links go nowhere

After I helped her prepare for her exam, I continued to study and practice because for the first time in a long time I was doing something I enjoyed.

The first resources I've used to practice were Coursera and Codecademy. Mostly because these two were the first ones I found online.

  • Codecademy is very good to get some hands-on basic experience with a new language. You won't learn much but if you just want to learn the very basics it's enough.
  • Coursera, on the other hand, introduced me to the world of MOOCs. Back then I didn't know there were such things as FREE online courses. I remember taking this course, taught by the John Hopkins University, and even though I'm not aware if it has been updated, I can assure you the teacher is very good.

After discovering MOOCs, it was just a matter of time before I stumbled upon the most popular of them all: CS50 by Harvard. Admittedly, I never finished it, but it's a great course to introduce you to the foundations of computer science.

 

book banner Get my ebook on Amazon and Leanpub

 

During that same period, around October / November 2016, I discovered freeCodeCamp and I started working on their curriculum. To this date, I haven't completed the certificates, but that's mostly because of a bit of laziness in completing some of the projects. I also prefer working on my own projects and ideas.

Other very useful websites and resources I'd like to suggest that were useful to me were:

  • Lynda (even though some of their courses are not up-to-date, with a free trial you can have access to a lot of useful material)
  • Team Treehouse (another paid website but again, with a free trial you can have enough time to watch a few courses)
  • Udemy (huge marketplace of courses, it can be hard to find what you need. Don't blindly trust reviews as I've found that many courses with high ratings were not my favorites)
  • Udacity (high-quality material for free. Not a lot of topics but what they have is very good, curated by the likes of Google and other tech companies)
  • Khan Academy (very good to learn math and algorithms, I highly suggest you taking their algorithm course, it will provide you with a good foundation)
  • Awesome (a repository on Github where you can find literally everything you may need)
  • Developer roadmap (another repository that can help you guide you in your path to become a developer)

random quote generator

A pearl of wisdom from the FreeCodeCamp random quote machine project I made in December 2016

Just a tip regarding Udemy: stay away from those "10 projects in 1, from zero to hero" kind of courses that last 30+ hours. If you are like me, you'll end up dropping them halfway through (or even earlier). Everybody is different, so maybe you've had a different experience. Let me know.

 

Moving to another country and studying in a Bootcamp

After a few months in New Zealand, I followed my girlfriend to Vietnam where I caught the opportunity for a free part-time Bootcamp in Ruby on Rails.

At that time I barely knew what Rails was. The only programming language I knew was JavaScript and I was still a beginner. If you happen to be in Vietnam, check them out at Coderschool.vn.

Regardless, attending that Bootcamp was the best decision I could make. Another tip I can give you is:

Surround yourself with like-minded people, that have similar goals and interests to you. Pursuing your goals will become easier.

My goal was to become a better programmer. By spending more time together with other people like me, I felt more motivated and I was able to learn a lot.

One example I remember was learning how to use the command line. When I was self-learning I was always reluctant to start using it, but during the Bootcamp I was forced to learn how to use it.

Sometimes we are just too lazy and what we need is a small push to do the extra step required to improve.

Having a weekly deadline to complete a project and being able to see my classmates' projects motivated me to push myself and do more as well.

The best part was working with two other guys on the final project which gave me an insight into what it is like to be a part of a team. We had to write our own user stories, work on sprints to create an MVP, iterate to improve the product, fix bugs and finally deploy it to production.

We did not win, but it was a great experience to get a glimpse of real-world scenarios. The Bootcamp lasted only 2 months and after the demo day, I didn't get any job offers. So what next?

 

After the Bootcamp

After a few weeks, clueless about what to do next, my girlfriend and I decided to create our own application.

We spent a lot of time working on our idea and doing research.

Unfortunately, my skills at the time were at a point where I could not even build an MVP, and our idea got rejected by a local startup accelerator. Looking back at it, I think it was for the best, as I prefer working as part of a team for now before starting my own endeavors.

Here's another tip: if you really want to start your own startup, get ready and mentally prepared because it's gonna be a very hard and time-consuming task. I suggest you watch videos from the Y-Combinator on YouTube, as they can help you evaluate your idea and see if it's actually something worth spending your time on.

soyo site

Another static page I created - June 2017

Fast forward a couple of months and hurray, I got a job. But wait, it wasn't a programming job. It was a teaching job.

One of the most popular jobs for foreigners in Vietnam is teaching English. That was what I also ended up doing, despite being a non-native speaker.

My passion for programming was still high and growing (at this time I had been studying for a year) but this new job brought new challenges that made me lose motivation for a few months during which I almost didn't touch my laptop.

After a few months, my motivation came back but I was faced with a decision: continue studying Ruby on rails or go back to my first language, JavaScript.

I loved how easy and fun it was to start building something on Rails but I ultimately decided to go back to JavaScript because:

  • To me, it seems like the popularity of Rails is on the decline. On the other hand, JavaScript has established itself in a strong position and nowadays you can literally build a full-stack application with just JavaScript.
  • I've also liked JavaScript since the beginning of my journey and I wanted to continue improving it since it was my first programming language.

After making my decision, I started waking up early (4:30/5 AM) to study before going to work.

During that period I finished reading the "You don't know JavaScript" series of books (which I started reading the year before) and I started watching ES6 for everyone by Wes Bos.

 

My own projects

While studying JavaScript, I took a lot of notes and eventually I ended up with so many of them that I decide that I could compile them together and write a book.

It took me around 2 months, from March to April 2018, to come up with the first draft of my book. Around this period I also started my first blog, built with Jekyll and hosted on Github Pages. I've since created a new one, built with Wordpress (Now rebuilt with Gatsby).

When I first posted my book on Reddit I was blown away by the response. So many people liked it and that made me feel very proud and happy.

Following what Kyle Simpson did with his "You Don't know Javascript" series, I also made it available for everybody to read on Github, with the option of purchasing it if they wanted to have an epub, pdf or mobi copy or if they simply wanted to support me.

my book

https://github.com/AlbertoMontalesi/The-complete-guide-to-modern-JavaScript

Here's another tip: I think that if you are struggling with some concepts, trying to explain them to somebody else is a great idea. If you can't explain it simply enough for a beginner to understand it, it probably means that you also did not fully understand it.

This project boosted my confidence and made me realize I went a long way since those days in New Zealand playing around with HTML.

I started enjoying writing and I created more material, like this cheat sheet to quickly review the last 3 versions of JavaScript.

cheatsheet

You can download the whole picture here (it's too big to embed in an article). My first-ever cheatsheet, not the full version.

Getting a new job

Fast forward a few more months, and it was August. At that time I was getting ready to sign my contract for another year as an English teacher, as I didn't feel confident enough to apply for any programming position during the summer.

Yes, despite all the time and effort I put in, I did not feel ready to apply for a job. I felt scared by the possibility of getting rejected.

Another tip I can give you is this: if you don't feel like you are qualified enough to get a job, chances are that you actually are just suffering from the 'Impostor Syndrome' and you may have already built more than enough skills to be a Junior Developer. Just go for it, the worst you can get is a no.

 

How it happened

One day I decided to join a newly created Facebook Group of local expats working in tech and I introduced myself, my skills and my accomplishments.

This is the moment where I felt I just happened to be in the right place at the right moment: I received a message from a software engineer asking me if I wanted to interview for a JavaScript position.

The reason why he contacted me was that he was looking for a Junior JavaScript developer and he felt intrigued by the fact I wrote a book about JavaScript. This showed him that I had the required knowledge of the language and that I was very passionate.

Remember, the best way you can impress your recruiter is with your personal projects, but sometimes you can think outside the box. In my case, my project was the book, but I wouldn't be surprised to hear of somebody who got an interview or got hired because they had a blog where they wrote tutorials or guides that showcased their knowledge and passion.

At the moment I felt very surprised and also scared. I started thinking about all the ways the interview could go wrong and I also thought about declining the offer. Please, do me a favor and don't be like me. Fortunately, I accepted it in the end.

Still, since I didn't feel ready for the interview, I asked the recruiter for a week to prepare myself. I had never practiced whiteboard exercises or anything interview related so I decided to dedicate that week to practicing problems and interview-related questions.

YouTube is full of mock interviews and they can really help you boost your confidence. Practicing coding games such as Codewars is also very good to improve your problem-solving skills. Don't wait until the last moment, start preparing for an interview months before you even think of applying for a job. You may never know when you will need these skills and it's better to start early. A book I always see being suggested is "Cracking the coding interview' but I can't recommend it as I have not read it.

It turned out I didn't need most of that stuff in my case. More important than my previous knowledge was my eagerness to learn more and my passion for the subject. That seemed to be enough to convince them to hire me for a Junior position.

The interview went very smoothly, and finally, after all the time I'd spent learning to code, I received an offer! 👍 Now I'm in my 10th month here. I'm loving every day and get to work on new features and learn new skills.

My original plans were to become a web developer but now I'm currently working as a software developer, working daily on an enterprise app and honestly I'm very happy about it.

I am learning tools and languages I never used or practiced much such as MySQL, AWS, Node, Fusebox, Knex and especially Typescript.

This marks the end of my story. Do you have one that you want to share? Or is there simply anything that worries you in your quest to become a developer?

 


About the author

You can follow more of my stories on Devto or on my blog, where I post articles and tutorials.

You can find the book on Amazon.com or check the book on Leanpub. The free version of the book is available on Github

carousel

Animated carousel with just a few lines of code - one of the tutorials available on my blog

If this was useful, please share


NEWEST ARTICLES

  • An introduction to CSS Variables