Frontend Developer @ 3i

First time working on a web 3D project. Began to appreciate how hard it is to build a video game. Fascinating field, but didn't enjoy as much as building 2D web apps and websites.

Work
-
Seoul, South Korea

Looking back, the main reason I joined this company was probably because I wanted to experience something new. I knew they were using Vue (which I had no prior experience with) instead of React (my comfort zone), and that the work would involve WebGL—a technology I had zero exposure to at the time. I was also drawn to the company’s vibe, which felt refreshingly different from other Korean companies I’d worked at. In fact, I was about to accept an offer elsewhere, but I ended up switching to 3i almost on a whim after the final interview.

Trying something new can be exciting and rewarding—but in this case, it was also pretty overwhelming. I ended up feeling burnt out, mostly because there was nobody left at the company who understood the core codebase. The original developers behind the Vue.js and Three.js apps had long left, and no documentation or internal knowledge base was preserved. (In hindsight, I probably should’ve taken that as a red flag… but I stuck around.)

Despite all this, I learned a ton—especially about 3D graphics, while working on a complete rewrite of the company’s JavaScript-based panoramic 3D viewer (similar to Google Street View). It was daunting at first, but I managed to ship two versions: v1 and v2, both with fairly detailed documentation. Resources like the three.js manual, Three.js Journey, and the book Introduction to Computer Graphics were lifesavers.

It was also during this time that I first became interested in software design patterns. I was dealing with lots of loosely coupled classes that needed to communicate without knowing about each other. I eventually ended up copying mrdoob’s eventdispatcher.js to help decouple those interactions. This experience taught me how tricky it is to strike the right level of abstraction—sometimes I exposed too few public APIs, making components inflexible; other times, I exposed too much, creating tight coupling between classes. That struggle actually planted the seed that led me to pursue CS fundamentals later—and ultimately take a sabbatical from work to do so.

Outside of 3D and Three.js, I was also exposed to a number of web technologies for the first time: Vue 2 & 3, TypeScript, Rollup, Vite, as well as VitePress and Docusaurus for documentation.

Strangely, even though I didn’t have major issues using Vue, I often found myself missing React. I remember reading this section of the old React docs and thinking: whoever wrote this clearly knows what they’re doing. It had an unmistakable tone of clarity and authority. While I have a lot of respect for Evan You, Vue’s creator, and the Vue community as a whole, I just didn’t get the same feeling when reading Vue’s docs. And to be honest, part of my draw back to React was probably due to its ecosystem and voices like Dan Abramov, who’ve written so many thoughtful, in-depth articles about React. So even though my time at 3i had nothing to do with React, it ended up making me want to come back to it.