I'm Tobias, and I'm from the UK. I live in Korea, and I'm a Front End Developer.
When I first came to Korea though, I was an English teacher. I recently had a couple of people asking about how I managed to make the change.
This is the story all about how my career got flipped, turned upside down.
90's references aside, I first started programming in Oct 2018 by picking up a book on Python, called Automate The Boring Stuff. Python! That sounds cool! And the book's contents page made it sound like I'd learn how to use Python to write students' reports with ease! (Spoiler: that's exactly what happened) I used my rare-as-hens'-teeth 2 hour breaks on Tuesdays and Thursdays to read the book and try out the code on the computer at work. Somehow, it was just the right mix of challenging and intriguing to keep my interest.
Even at this time, I was always thinking, "What does this do? How does it break if I do this?" and more importantly, "What else can I do with this?"
One of the first programs I wrote on my own was something to help choose a student from my kindergarten class to receive a differently-coloured box of milk in the morning. (Totally the same milk, different colour box. But they were crazy about it :S)
I made it through that book without really skipping anything. Then I moved to another school. At that point I didn't have any plans to become a programmer except for a 'maybe one day' thought that was brewing in the depths of my mind.
In the second school, I was the only foreign teacher. This meant the only person writing reports for some 100 students was me. I began thinking. How could I make this process faster? Especially knowing that each report is going to contain a good paragraph of the same material - news, what unit everyone's on. So that's what I built! That cut the work down by about a third.
It was a really enjoyable puzzle, thinking about breaking the problem down, finding things that could be done with the skills I had.
There was another issue at that school. The kids weren't so motivated there. So, how could I get the kids to at least speak some English in the class? Kids usually enjoy whiteboard-based games. Kids really like phone and video games.
Turns out the same guy who wrote Automate The Boring Stuff also wrote a book about writing simple games in PyGame.
So I used one of the games in there, and modified it, and turned it into a game called The Creeper Game..
The kids loved it, but I knew only having one of these would get boring, so I got to work turning another game I played, with paper cups, into The Pokemon Game.
This one was a challenge. It required starting from scratch.
I had to make something completely new, using other projects and tutorials only for the odd hint.
It paid off, and this game was a hit. Students came in asking to play it, and it really helped the kids get more comfortable with the phrases we were learning.
Choosing a Path
Then 2020 hit, and I lost almost all of my classes. My wife also had a child. It was time to get real. I needed a career that isn't going to collapse when the next pandemic happens. I looked at what Python could do, professionally. People often use Python for data science and for building web servers. Data science doesn't sound exciting to me, but web servers - I could do that. I bought a bundle of Python books, including one for Flask, a server framework. I got right to work, going through that book. I'd read paragraphs once, pick out only a few parts I understood, and then go back later to re-read, understanding it gradually.
I neared the end of the book, and I was always thinking about what I could do with this new stuff I was learning. I built a small web app for managing our schedule at home, and for tracking parcels.
I still had a few classes. I wanted to build something for that.
I wanted to look at what problems I could solve in my own life by building a program for it. Something that other people could use, too.
I started working on an app that could take news articles from CNN (and later, pasted text) and put together a word list, some fill-in-the-blank questions, and give me some template questions I could fill in quickly, to speed up preparation. This became Auto-Worksheet - hopefully it still works properly.
I used it quite a bit. You could even scrape YouTube subtitles and run them through it to create listening classes!
This app was a lot of work, but having something that was a little bit larger scale really helped.
At this time, I discovered a coding meetup nearby, one associated with FreeCodeCamp. This was the first step in trying to change careers. Building a network. Building in this case more literally - I found myself setting up and running a discord server for this group!
At this time, I also discovered that generally it's a bit easier to get into the industry as a front end developer rather than a back end dev building servers when you're self-taught.
I started looking at what the market needed. In this early stage, what skill would have the best return for learning?
How many Python-Flask jobs were there? (not many at all - it's all Django!) How many React jobs? (Markedly more.)
This was October of 2020. I was applying for every job I could find. I think I made it to about 150 jobs. When I finally got hired, I had received two interviews that I failed, and two online coding tests that I failed, and the rest straight up rejections. I was able to recognize an automated rejection by the first line.
I caught the eye of a team leader for a startup, putting together a new team of international members.
I was armed with the best resume I could write at the time - reviewed by a respected developer who I now work with - my Auto-Worksheet project, and a determination fueled at least in part by
At that time my teaching schedule was still decimated, but I knew for sure I didn't want to get back into it.
I received a task, to go to this company and build something for them. Something that for me now would be a walk in the park. I resolved to get through this test if I had to fight the code with my bare hands. I remember feeling overwhelming dread for most of that day, thinking 'I have no idea what I am doing'. But when I got stuck, I tried. I tried to unstick myself. Then I asked the team leader for some guidance.
My final project wasn't pretty, nor was it fully featured, but it did most of what it should, and I did it. I spent the whole day on it, but I did it.
I got this job.
I later learned it was because I never gave up, and because I tried to unstick myself, that I got this job.
That's my superhero origin story, haha. There is one other factor that I can't ignore, though. Luck. Out of 100-150 applications, I got one job offer. It's not easy, guys, but it is doable. You have to keep going, one foot after the other. If you do, sooner or later it will pay off.
I highlighted with italics the main points that I know made me the programmer I am today, but I'll list them here too:
Always be thinking, "What does this do? How does it break if I do this?" and more importantly, "What else can I do with this?"
Enjoy the puzzle. And think about breaking the problem down, finding things that could be done with the skills you have.
Make something completely new, using other projects and tutorials only for the odd hint
Look at what problems you could solve in your own life by building a program for it. Something that other people could use, too.
Looking at what the market needs. In this early stage, what skill would have the best return for learning?
When you got stuck, try. Try to unstick yourself. Then ask for guidance.
But Wait, There's More
I worked at that company for a year and change, and parted ways when the company changed their scheduling rules in a way that was incompatible with my life at home. I had reached out to a friend that I made through the FCC group, and his company was hiring. This friend was happy to recommend me to his company, and I was glad to see his confidence wasn't misplaced, by successfully getting in.
That's it, it's cemented now, it's permanent. I'm a front end developer. I'm a programmer. I finally found what suits me best.