How Flappy Bird Got Me My Start in Software

After watching my flappy bird bounce and respond to my keystrokes, a fire was lit inside me. I just had completed a Unity tutorial at age 22. It had been a childhood dream to create software — to be an engineer. But it never really happened. So I decided to make it happen.

Flappy bird

Video game tutorials seemed pretty accessible so I kept that up for a few weeks. Brute force learning about functions, types, and classes. I delved away from the instructions and tinkered where I could but it didn't feel like I was actually creating anything, only copying. I was waiting for the results from my Creative Writing degree to come in. I had been working with some web technologies throughout my time at university but it was small potatoes compared to where I wanted to go, to where I am now.

I read an article about a conversion Masters in Computer Science. These are full Masters programmes that aim to bring passionate students up to the level of a bachelors graduate and beyond, including a heavy thesis. These courses really push you and many institutions have 'suggested' learnings for before term starts. (They're required if you want to excel). If these courses sound intense — maybe even scary — it's because they are. Often times I found myself researching concepts in order to learn other concepts in order to go back to the lecture notes!

I applied to many but ended up choosing a distance-learning MSc. I respected the institution and the alumni buzz grabbed my attention. The first modules were in Java so over the summer I prepared by completing both parts of the popular Java MOOC Object-Oriented programming with Java. I knew that I would be choosing any optional web-related modules so I completed most of freeCodeCamp as well. Alongside this, I was also entering game jams and creating small games in Unity with C#. This whole journey was possible with one rule: make things. Small programs, CLI programs, goofy games, silly bots.

Any fears that I had about the online delivery of my course were soothed by the active Discord chatrooms that the students maintained and the rapid pace at which professors would reply to questions — as well as the interactive live-streamed lectures. A year-long intensive course was exactly what I needed to support everything I was learning from building my own applications. The module choices were flexible but still forced us to learn the fundamentals like algorithms and data structures, databases, and practical software development.

Before long, I had to start thinking about applying for jobs. This is where things got scary. Everything I had done up to this point was without risk. If you study hard, you usually get good grades, if you keep trying to build toy projects and don't give up then you will usually succeed. But applying for jobs? Interviewing? Failure is part of the process.

I stepped away from the safety of my fun apps and curriculums and I built three portfolio projects. Each one aimed to solve a problem that I or someone else in my community was facing. They were all full stack and unit tested, they had databases attached and were hosted on real servers at real hostnames — I wanted all the trimmings. I ended up building a website analytics service, a low-latency pair-programming solution, and a website for enabling game jam developers' to track user highscores. All open sourced.

Cover letters seem to catch a bunch of flak online but I think most of my interviews were related to the personal paragraph or so that I wrote for each company. If I didn't feel like what I was putting down was sincere then I started over. Often, the things that I spoke about were brought up on the phone or in-person. I applied country-wide and had a ~10% response rate for phone interviews. I spoke to hiring managers as I paced around my room and surprisingly passed all of them. I stayed up late working on coding tests. Chipping away at the rockface of documentation. The timed algorithm tests caught me sweating too.

In-person interviews were more exciting. After all this time, I finally got to speak to real people about my programming passions! I had been couped up in my room for so long that I probably came across as over-excited. I failed most of them. Which was the wrong way to think about it at the time. There are some interviews that you just can't pass. I walked out of each one thinking: that was the one. Each one felt perfect until the email finally came.

The interview that I ended up passing (for the job that I came home from earlier today) felt like every other one. I walked out grinning and called my fianceé and told her that this one, this one was different. She laughed, hopeful but cautiously optimistic. I was surprised that my last-minute reviewing of HTTP status codes paid off — that part felt a bit surreal.

I've been studying and coding ever since. In my last post, I spoke about what my day-to-day life is like at this office. In my next, I might write about what I think makes a good portfolio project 🕹️.