Author profile image

James K. Sohn

2023-12-13 Wednesday

Just Thoughts

2023 Memoir: Developer From Zerobase

2023

Memoir

Frontend Developer

In 2022, I was an entrepreneur with a business degree. In 2023, a software engineer. This is a memoir of my 2023 (and 2022) where I transitioned from a developer from scratch.

2023 Memoir: Developer From Zerobase post thumbnail

1. Introduction

It's wild to imagine that just about a year and a few months ago, I was clueless about what software engineers do; nor did I have any intentions of becoming a software engineer myself. I was just a young startup owner with a business degree who often felt frustrated about it being so difficult to communicate with developers on the team. Like any other non-technical manager, I wanted immediate results and refused to understand why developers working with me were rejecting my brilliant ideas.

In efforts to become a better communicator/project manager, I started spending my time off work studying programming HTML/CSS. At first, I just mindlessly binge watched a bunch of YouTube videos like it was a K-drama series. After a few days, I randomly felt a burst of confidence, unconsciously downloaded VS Code, typed a few lines of HTML and CSS, clicked live share. To my surprise, I had what looked like a website open in front of my eyes. Like cavemen who first discovered fire, I was immediately mesmerized.

This all happened towards the end of 2022 summer. It's December of 2023 now and it has been a few months since I started my career as a web developer now. Fortunately, I know much better to understand that being able to write a few lines of HTML and click live share does not equate to being a good developer. Thank God!

2023 Git Commits
My commits in 2023 (as of 12.13.2023). The empty spots since August are usually because my company uses Bitbucket

After more than a year, I still find developing immmensely exciting as my first day. But as is with anything, I know this level of passion cannot be constantly maintained. So these memoirs are for mainly myself (and some of you who lost your way on Google and landed on this post). I want to write a memoir every year as long as I am still a developer, recording my progress and thoughts as a dev. In the end, I hope to read these memoirs down the road and use them to fuel a new wave of evergy and enthusiasm for developing. Hopefully, I can fit at least 30 of these before having to retire. Welcome to the first one!

2. Learning to Code

Learning to code was an interesting journey that felt like a three phase process.

  • The YouTube is Enough For Me Stage
  • The I Need Help Stage
  • The There's More? Stage

2-1. 'YouTube is Enough For Me' Stage

This is the stage where you genuinely believe that free contents available on Google and YouTube is pretty much all you need to teach yourself how to code. To be fair, this is probably true for many genius devs out there. Just not for me.

I too went through this stage when I started binge watching YouTube videos on HTML/CSS. Thanks to all the great creators in the YouTube ecosystem, I was able to understand when to appropriately use a grid or flex box, or the difference between p and span tags very quickly.

Expert Curve
The Dunning-Kruger Effect: the tendency of people with low ability in a specific area to overestimate his or her ability.

This stage was like me climbing up Mt. Stupid for the first time. I had no roadmap. I was blind to everything beyond HTML/CSS and therefore wasn't strategic about studying. The only curriculum I had was mindlessly jumping around YouTube's related videos tab after I finish a HTML/CSS tutorial video.

When I did eventually find out about JavaScript/React and all that good frontend stuff, I overestimated my abilities and thought I could understand all these things as quickly as I did HTML/CSS. Consequently, I approached JavaScript the same way I approached HTML/CSS: binge watching YouTube.

I remember being miserably confused. I just couldn't understand why in some videos, people were using event handler attributes and arrow functions while in others people used addEventListener and regular functions. To my clueless eye, all these overlapping concepts were doing the same thing despite their syntax differences.

I had no basic knowledge about JavaScript. So with every video, I just ended up having more unanswered questions in my head. I knew that if I wanted to learn JavaScript, I had to have a roadmap.

2-2. 'I Need Help' Stage (Part A: Book)

Modern JavaScript Deep Dive
"Modern JavaScript: Deep Dive" By: Lee Ungmo

I decided to read a book on JavaScript. I did some research here and there, and discovered a book titled Modern JavaScript: Deep Dive. According to the Korean dev forums I read, it apparently is renowned to be the Bible of JavaScript in Korea.

But by no means was the book easy. Unlike the shallow YouTube lessons I preferred to watch, the book did not spoon feed me knowledge. Rather, it was 1,000 pages of really drilling down to the core of how and why JavaScript works certain ways. As a complete JavaScript newbie, reading the book for the first time was a both humbling and frustrating experience.

There were chapters that I've had to read multiple times just to grasp a hint of what the book was trying to say. And every time frustration peaked because I couldn't understand something, I would wish to myself that I would somehow magically run into the author so I can ask him some questions face to face.

Then as if destined I ran into a bootcamp ad on Instagram with a picture of the author. The advertisement was about an online bootcamp, offering top scoring students the opportunity to participate in an exclusive offline program taught by the author of the book himself.

By this time, things weren't going so well for my startup. Unexpected problems hit and I knew I had to close operations soon. I saw this as an opportunity to really deep dive into development; and so without much hesitation, I enrolled.

2-3. 'I Need Help' Stage (Part B: Online Bootcamp)

Online bootcamp started on September 1, 2022. On the morning of, I was invited to a Slack workspace with about 100 other students. I guess the bootcamp's Instagram ads were effective as there were about six other workspaces. So through simple math, there were probably anywhere around 700 students competing to participate in the offline program.

The online program was pretty straightforward but strict. There were online lessons, weekly tests, and assignments. I can't remember their policies word for word, but I think they automatically kicked out any student who failed two or more weekly tests or assignments.

Fortunately, this wasn't a problem for me because I was unemployed and deeply in love with coding. I had all the time I needed. Normally, I like to routinize my life; but during this period, I really had nothing to routinize. I woke up around 7:00 AM and sat in front of my computer. From then, I spent 14 or more hours studying, 6 days a week.

It was a very simple lifestyle I genuinely enjoyed. I think it partly has to do with the fact that focusing so hard on something helped me get over the misery of having to close down my business haha, but pushing myself into an environment that required minimal worrying about life matters and coding all day was subtly satisfying.

JavaScript Assignment: Date Picker
Date picker made with vanilla JavaScript

One of the best decisions I made during the online program was not rushing through JavaScript lessons. A lot of my peers invested minimal time into learning JavaScript and went straight to React assignments, but I took my time and tried to learn the fundamentals doing JavaScript assignments Like the date picker above. I think doing so not only helped me appreciate React more later on, but also realize that understanding the fundamentals is key to becoming a good, versatile developer.

I was invited to the exclusive offline program in December.

2-4. 'I Need Help' Stage (Part C: Offline Bootcamp)

The offline program started on January 2, 2023 and I was finally able to meet the 14 other nominated students and Mr. Lee, author of the book that taught me JavaScript.

The first part of the offline program was reading Modern JavaScript: Deep Dive. For approximately a month, we read the book all together. After about every three chapters though, Mr. Lee picked random people to present his or her learnings. Then other classmates but really, mostly Mr. Lee asked sharp questions, testing the presenter's understanding of the topic. Afterwards, Mr. Lee lectured on the topic.

After the first month, I started to doubt whether I've actually read the book before joining the offline program. Being able to ask questions to the author himself really helped clarify confusing concepts in my head and helped me understand JavaScript much deeper than I did before.

My favorite memories of the offline program was building my first project. Coming from an entrepreneurship background, I like to think about interesting business ideas and have them in hand. So when Mr. Lee allowed us to present our business ideas and scout our own teammates for our final project, I was thrilled. Fortunately, talks went well and I was able to build the first project of my life with some of my favorite people to this day. Shoutout to Team Hoisting!

For about three weeks, my teammates and I really put in the work to finish our project in such a short period of time. We stayed after class, met up on the weekends, and eventually managed to plan, design and develop our ideas into action.

Project Voting System GIF
MyChelin Guide: A service where users can vote their favorite restaurant per food category

It was an astounding experience seeing my ideas turn into code, then into a visible product. The moment the project was finished, I knew I would never regret becoming a dev. (Also began to understand why the developers on my team always rejected my ideas for "technical reasons")

Of course, looking back we could have definitely done better. But I think that's something any developer feels about his or her project. Likewise, my teammates and I had a never ending list of changes we could potentially make to the project, but decided to keep our first project as it is. (We did meet up after the offline program ended to refactor and migrate the project to TypeScript)

2-5. 'There's More?' Stage

So, did I feel like an absolute frontend expert after bootcamp ended? No. As a matter of fact, I felt the opposite. I felt like I finally climbed down from the peak of Mt. Stupid, only to see the Valley of Despair.

Expert Curve
The Dunning-Kruger Effect: the tendency of people with low ability in a specific area to overestimate his or her ability.

Unlike when I believed HTML/CSS was all there was to learn about programming, me coming out of bootcamp definitely knew what I had to study from here on. There just was too much. I had too many things in mind. I had to dig deeper into TypeScript, learn Next.js, try styling libraries beside styled-components, and the list goes on and on and on. Surprisingly, the more I learned about something, the more I saw beyond the things I was comfortable with. It was an endless cycle of persuading myself to study something and shutting my computer down after thinking to myself: "there's more?".

I mean, I remember hating on Next.js only because it meant I had to move away from the psychological comfort zone I have developed with React. I would search up and cherrypick all the hate on Next, just to give myself reasons to procrastinate on studying Next.js But this blog is made with Next.js lol. But I quickly realized all this unwillingness to push myself out of my comfort zone is only going to slow me down. I think I was just scared to put in the effort to get past the Valley of Despair.

Fortunately, I pushed through and managed to study new techs outside my comfort zone. But this doesn't mean I am past the Valley of Despair yet. Far from it actually. I've just begun to take my first steps out of the valley and I think I'll be here for quite some time. Maybe even forever. With all the things there is to study in the development world, I wonder if anyone is actually able to confidently call himself an expert while not being on a Mt. Stupid of his own.

3. First Developer Job

I started working at a startup as a frontend developer on August of 2023.

3-1. Getting the Job

The way I got hired is pretty interesting. I actually applied to a different company where, during the final interview, the CEO found me apparently interesting. The company hired a different candidate no feelings hurt but the CEO who interviewed me e-mailed me and asked if he could reference me to a different person who is looking for someone just like me. By then, I was becoming extremely exhausted with the endless coding tests and tech interviews so the e-mail was like an oasis.

I was referenced to my current boss whom, after a few interviews, offered me a job. I remember feeling super relieved when I heard I got the position. After approximately a year of studying, I was finally able to call myself a dev.

3-2. The Work Environment

Before becoming a developer, I've owned startups and been employed at management consulting and accelerating firms. Naturally, I've taken on many professional roles; and through my experiences, I can guarantee that no other role has been as fun as being a developer.

This is not a poor attempt to overexaggerate how much I love being a developer. I just simply don't feel like I am at work when I am developing. To me, work was always something like fixing powerpoint slides at four in the morning, doing market research, and bouncing on never-ending Zoom calls. On the other hand, working as a developer is none of that... except the never-ending zoom calls part lol.

Plus, I think the work culture favored by developers are better than the ones I am more used to. Not to say the culture at my old workspaces were terrible because they actually weren't, but the degree of openness developers have towards sharing opinions and reviewing each other's work amazes me still to this day. I know not all developers would probably agree, but at least for the company I am working for, sharing opinions and peer reviews in a non-hierarchical manner is highly emphasized.

The culture was something I was definitely not used to, but I gave it a try during a recent meeting where I shared my opnions about the company's business model and propsed a new project that better suits our needs. I can't share the details of it, but I can share that my boss liked it and asked me to manage all the frontend roles associated with the new project.

Some people might dislike the fact that this means more work and responsibility, but I personally like the situation I've got myself into.

4. Plans for 2024

The transition from an entrepreneur with a business degree to a developer was a wild journey.

It still feels very surreal to think that just around the summer of last year, I used to be clueless enough to believe that HTML/CSS was all there was to web development. Relatively, I feel much smarter and more like dev now.

However, I know so well that there is a bigger world even beyond the things I know right now, and that becoming a developer essentially means I am going to have to commit myself to study new techs and trends for the rest of my career. Honestly, thoughts like this do overwhelm me sometimes. But compared to myself in the past when I first discovered JavaScript was a thing, I am not afraid to move beyond my comfort zone to learn new things anymore.

Throughout 2023, I've touched on many new techs outside the JavaScript + React spectrum. I am proud of it, but as I stated, I've literally just touched up on it. In 2024, I want to really deep dive into some of the these new things I am touching on. I also have numerous project ideas that I will use to keep myself entertained in the learning process.

As I proudly reminisce about 2023 as my transition to developer phase, hopefully, I can do the same looking back around this time of next year and feel confident that I have made progress as a developer.

© 2023 sqsung devlog. All Rights Reserved.