Non-CS Frontend Engineer - 5 Years Career Review
January 1, 20219 min read

Non-CS Frontend Engineer - 5 Years Career Review

This article was translated through AI, there might be inaccuracies.

I'm a frontend engineer who decided to switch to the IT field only after completing military service. Looking back from writing my first HTML line to now, it's been 5 years and 2 months. I want to write this article to record this journey. Although I can't compare with many talented individuals, I hope sharing these experiences can help those with similar backgrounds!

The article is structured as follows. If you don't want to read the whole thing, you can jump directly to the sections that interest you :)

  1. Why I Changed Career Paths
  2. From Self-Learning to Getting My First Offer
  3. Experiences at Four Companies
  4. Technical Learning Insights
  5. Conclusion

No Clear Goals

I graduated with a master's degree in Finance, but never had a clear goal about what to do in the future. Being an introverted person, I considered two directions at the time:

  1. Insurance Actuarial Science
  2. Investment-related fields

Regarding actuarial science, I passed two actuarial exams during graduate school, but later felt that the actuarial career path seemed very fixed - just continuously taking exams. While I thought this career was stable with decent income, it seemed quite boring, so I didn't continue pursuing it.

Regarding investment, while I had some interest, if I made it my profession, constantly chasing price numbers every day, combined with pressure and lack of tangible output, I felt this wasn't what I wanted to pursue.

As a finance graduate student without clear goals, the most suitable job was probably becoming a bank management trainee. Through the training process in the first year or two, I could exposure to various aspects of banking operations and perhaps discover areas of interest.

So during military service, I interviewed for management trainee positions at several banks. The results were pretty dismal - I appeared very passive and not proactive during group interviews. Management trainees in any industry need to have more proactive and outgoing personalities. I began to feel that my personality traits weren't suitable for this field, which made me confused about my future.

I Remembered I Enjoyed Programming

Looking back to graduate school, my thesis and several courses required programming for numerical analysis. I found programming quite interesting and fulfilling at the time. I even created a small vocabulary and preposition learning program using VBA. But I didn't think about changing careers immediately - I just quietly kept "programming is fun" in my heart. However, in this moment of confusion, I remembered this.

Starting Over

If I potentially have 20-30 years of work ahead (wake up, it's 40 years), spending an extra 1-2 years exploring to find work I'm interested in and happy doing seems worthwhile. I decided to give myself a chance to start over, hoping to choose a profession that aligns with:

  • My interests: Only with interest can one work happily and sustainably.
  • My strengths: Doing what you're good at provides more opportunities for achievement in the field.
  • Market demand: Realistically, this profession must have market demand to make a living.
  • Openness: I don't like feeling tied down, so I hope this profession isn't limited to a single region or industry, with opportunities to travel and see more, even start my own business, making the future feel full of possibilities.

For me, programming was the biggest intersection of these four points, so I decided to explore this field. I'm really grateful that my mom didn't mind me being unemployed at home, and my girlfriend at the time (now my wife) also encouraged me during the career transition.

Given my background in probability and statistics, I initially chose the related field of machine learning. But after studying for 2-3 weeks, I thought - since I've decided to start over, why not try something new?

So I dove headfirst into the frontend world, because...

  • Frontend provides quick wins early on - you can see results immediately in the browser
  • I like thinking from the user's perspective and creating good user experiences
  • For job hunting, I felt approaching from frontend would be more convincing for employers to hire a non-CS graduate rookie like me

My frontend engineer journey officially began in August 2015!

Hello World!

Fortunately, during college and graduate school, I felt that regardless of future direction, English was essential to go further. So I invested considerable effort in continuously learning English, which gave me many more options in technical learning and application.

I started learning HTML, CSS, and JS, mainly using two learning resources:

I roughly went through the W3 school documentation and practiced implementations following freecodecamp tutorials. When I created some projects (Pomodoro timer, random quote generator, etc.), I thought I was amazing. But looking back on codepen now, well, these were elementary school homework for sure, with coding style dirtier than a park restroom.

During this period, every day brought new things and challenges waiting for me. The most satisfying moments were solving problems and personal growth! So even though I sometimes spent over ten hours a day programming and learning, I still felt happy!

After two months like this, believing I had certain implementation abilities, I took my awkward personal website and opened 104 (Taiwan job site)...

Mom, I Got a Job!

I forget how many companies I applied to, but I eventually interviewed at three companies. My mindset at the time was:

As long as a company is willing to hire me, even if the pay is peanuts, I'll do anything.

At the first two companies, I probably performed quite comically. I couldn't even distinguish between synchronous and asynchronous JS clearly, which left the interviewers quite dumbfounded. Looking back, it's really embarrassing.

But at the third company, I could barely answer some questions, had good rapport chatting with the interviewers, and showed an attitude of being willing to learn anything. Right after the interview, the boss generously said: "When can you start?" I was truly flattered.

Although to increase my chances, my expected salary upper limit was actually below the lower limit of the job's salary range on 104, the boss still gave me my upper limit without hesitation. I'm still grateful that he was willing to trust me despite having no background.

I still remember how happy I was on the way home that day. To reward myself, I even went to the bookstore and bought several books randomly. In the following five years, I received several job offers from companies, but the satisfaction never matched this first one!

5 Years, 4 Companies

In these 5 years, I worked at 4 companies, all as a frontend engineer. The first 2 were small to medium startups, the 3rd was a large startup (17LIVE), and currently I'm at LINE Taiwan.

At the first two startups, there wasn't much technical discussion or exchange with other frontend developers. The companies didn't have code review processes at the time. Relying solely on Google and continuous technical learning, I thought being able to independently design and develop several small to medium frontend projects with some testing made me a frontend expert...

But after joining the latter two companies, my eyes were opened!

Project Scale Was Another Level

In major projects, the codebase often had hundreds of thousands of lines. The required architecture and development/deployment processes were vastly different from small to medium projects. Concepts like Error Log Tracing, various monitoring tools, module portability, multi-platform support, GitOps, etc. - these were rarely encountered at previous companies. Additionally, business logic was more complex, like pages or components behaving differently based on various conditions.

There were also complex internal implementations that might require forking multiple open source projects to create a complete solution.

In my previous mindset, building everything from scratch was the only way, which meant spending much more time with potentially unstable results.

My Talented Colleagues Pulled This Frog Out of the Well

In daily work observations, colleagues often made me think:

Wow, this person is really talented

  • Some could propose multiple solutions for an implementation, analyze which was most suitable for the current situation, and make decisions
  • Some had deep understanding of JS internals and could do fine-grained performance optimizations
  • Some could often spot issues during code reviews and give precise feedback
  • Some would immediately clarify approaches and sync with all team members when requirements were unclear

Based on these two points, I felt I still had much room for improvement. I hope over time I can gradually step out of my comfort zone in various aspects and become a more reliable partner!

About Technical Learning

In the early career stage, with stronger curiosity and more time (before marriage and kids), I often spent lots of time studying cool-looking technologies like HTML Canvas and three.js. But the ROI wasn't actually high - these only made me happy at the moment of learning, but if not used later, I'd forget everything after a few months...

In the later two years, apart from core frontend technologies and concepts like Web performance, TypeScript, and commonly used frameworks, I only gained general understanding of other technologies first, then did deeper research when actually encountering usage scenarios. This reduced time waste on one hand, and with sufficient motivation, learning efficiency was super high!

But it's really subjective. If we don't think so pragmatically, we pursue the joy of satisfying curiosity. If learning a technology brings great satisfaction at the moment, whether we use it later actually doesn't matter that much.

Conclusion

If you ask me what's different from my initial expectations after these years of work, I think what I enjoy most is actually application development. But in actual work, there are inevitably other less interesting tasks, such as:

  • Meetings
  • Documentation
  • Tedious parts of development
  • Early morning commutes (just kidding)

But I'm still very satisfied with my current situation. After all, these things usually don't occupy most of your work time. Even if starting a business doing applications you're interested in, you'd still need to handle company trivia. Learning to do these extra tasks better is growth in itself. I'm also glad I chose to switch to this profession, allowing me to have broader paths.

But there's still a long road ahead. I hope to maintain the same enthusiasm in the future, whether in technology or ideas, and hope to help more people through sharing as I grow!