The Next Step in Your Career — Quick and Dirty

Written byKalanKalan
💡

If you have any questions or feedback, pleasefill out this form

This post is translated by ChatGPT and originally written in Mandarin, so there may be some inaccuracies or mistakes.

Approaching a decade in front-end development has been an illuminating journey.

Like many computer science students, I was introduced to web development in college. Back then, Angular was more popular than React, and although Vue had been released, I was unaware of it at the time.

Navigating through the "Warring States" era of front-end development has significantly contributed to my understanding and insight into the evolution of front-end technologies. Looking back at community discussions, many of the issues debated years ago are still relevant, prompting a reflection on what it means to grow and evolve in this field.

In the early stages of my career, I experimented with writing articles, giving presentations, and working on small projects. However, my main contributions remained confined within the products and services of the companies I worked for, a fact I somewhat regret.

Here, I share some thoughts on the future and career development, inviting further discussion.

Thoughts on Front-End Development and the Future

The job market for front-end engineers seems to be saturating, making it increasingly challenging to find employment.

Even non-specialist engineers, or anyone with a basic familiarity with computers and a willingness to code, can easily create a webpage by reviewing React or Vue documentation, selecting a user-friendly UI library, and leveraging ChatGPT or running LLM locally. Debugging, of course, will consume some time for beginners. As a result, the unique value of front-end engineers must manifest in other areas, indicating that newcomers to the field might find job hunting more difficult.

Let's explore another path.

Many junior engineers tend to pigeonhole themselves into a specific area, such as front-end development, focusing solely on meeting requirements and UI slicing without venturing beyond web-related tasks. While there's still a short-term demand for such roles, the lowering barriers and maturation of UI libraries will eventually lead to a bottleneck: if most demands can be met by other developers, or if one's contribution is merely translating business requirements into code, where does one's value lie?

In the short to medium term, my answer is to be a software engineer first.

Before specializing in front-end, one should be a competent software engineer with a deeper understanding of the front-end domain.

This includes knowledge of computer architecture, algorithms, data structures, and cybersecurity, among others. The broader your knowledge base, the wider the perspective you'll have when approaching problems. For example, understanding computer architecture, experimenting with Arduino to grasp low-level protocols, or writing a simple HTML parser while learning Svelte are not directly related to front-end development but offer valuable insights when troubleshooting.

I've met many exceptionally skilled software engineers who possess a deep understanding of underlying systems. A colleague once excitedly shared how he modified a humidifier with a relay switch controlled by Arduino to enable timing functions, showcasing the innovative application of technical knowledge.

Gaining a solid grasp of domain knowledge is also crucial. For instance, working on securities-related services led me to understand Japanese regulatory constraints, the NISA system, margin trading, and even delve into quantitative trading and external service integrations (like private mailbox services). When researching Japan's broadcasting mechanisms, I developed a simple subtitle analyzer. These experiences can make you stand out from other engineers.

Another path is to contribute to or create ecosystems.

The advent of React revolutionized UI construction by abstracting UIs as functions and managing states and side effects, allowing for the creation of reusable components.

This represents another avenue for front-end engineers, though it may be challenging to find opportunities to contribute in smaller companies. Entering through the open-source community is an option, but not everyone has the ability to change ecosystems. However, one shouldn't underestimate their potential. For instance, Svelte's creator, Rich Harris, was initially a journalist who, through programming for visual journalism, developed Svelte.

Exploring various branches within the front-end domain is yet another route. Typically, "front-end" refers to web development, specifically using HTML and JavaScript to build UIs. However, the capabilities of browsers are continually expanding, leading to numerous subfields, including:

  • Data Visualization
  • Animation (UI animations, transitions, micro-interactions, etc.)
  • Accessibility
  • Web games
  • Applications of WebGPU, such as porting LLMs to web platforms and using WebGPU to migrate applications traditionally run locally to the web
  • WebAssembly
  • Effects, 3D: WebGL or Three.js
  • Web integrations for various IoT devices, such as WebSerial, Web Bluetooth, WebUSB, etc. For example, VIA is essential for custom keyboard enthusiasts, allowing web-based keyboard key mapping via WebUSB.
  • Underlying protocols: applications of WebRTC, the emerging WebCodecs API, etc.
  • Performance optimization

The more subfields you are familiar with, the harder you are to replace.

While the barrier to entry for front-end development has lowered (and was never particularly high to begin with), creating a web page that optimizes SEO, performance, and accessibility still requires significant experience. LLMs might produce a website that meets basic requirements, but achieving a balance among these aspects is more challenging.

Other Directions

From a software development perspective, CI/CD, automated deployment, version control, and testing are also worth exploring, though I consider these to be part of the natural skill set of software engineers, especially if the services being deployed are not overly complex and can often be managed with configuration files.

It's beneficial to pair your skills with an industry, such as renewable energy, the food industry, or service industry. Identifying needs within an industry of interest and developing an MVP to address those needs reveals that front-end development is just one method to achieve an end.

I was recently inspired by a podcast featuring Pieter Levels and Lex Fridman, discussing how Levels, using PHP, jQuery, and MySQL, develops projects that generate $300K per month.

These are older technologies, but they solve problems efficiently. This approach, focusing on service and product development with technology as a tool, resembles the essence of The Story of Git: This Time It's Not Fun—Linus Torvalds' development of git and his interaction with Junio Hamano. I highly recommend reading this article for its insights.

Linus sought to write a merge algorithm using a scripting language and invited contributions, leading Junio Hamano to develop a version in Perl that was both quick and dirty. Linus's response highlighted the value of this approach:

…Quick and Dirty That’s exactly what I wanted. Q ‘n’ D is how the ball gets rolling.

This philosophy resonates with me. An excellent engineer should strive for quick and dirty solutions, refining them later as needed.

Career Reflections

I haven't touched on soft skills such as communication, leadership, and management, which are undoubtedly important. However, my recent thoughts are that these skills complement each other; improving your technical skills also enhances your communication abilities.

Many inquire about how to get promoted or which programming language to learn for better job prospects. While these are valid concerns, I believe that once you've accumulated sufficient experience, pursuing a better career should not be the end goal but a means to an end.

Unless you have a clear goal, such as developing a service or product you are passionate about within a company, exchanging your time for money from a capitalist perspective is not worthwhile.

This is something I am actively exploring. If working for a reputable company, try to expand your network and utilize relationships and resources to learn what interests you. Connections made can be valuable even after leaving the company. My recent shift towards more backend development has offered me new perspectives and insights.

A stable monthly salary can be both comforting and limiting.

It can be reassuring during stressful times, knowing that payday is just around the corner, or that completing assigned tasks allows for an early departure from work. However, this stability has more drawbacks than benefits for me currently.

This mirrors a misconception I once firmly held.

The concept of finite and infinite games discussed in "Designing Your Life" by James Carse—playing by the rules to win in finite games versus enjoying the ongoing play in infinite games—reflects a broader perspective on life and career goals.

In essence, we should focus on pursuits beyond our careers, considering what kind of life we aspire to live and whether our current actions align with those aspirations.

Physical and industry constraints may pose challenges, such as in manufacturing or semiconductor industries, where quitting a job to start designing ICs or opening a foundry is not feasible. However, it's worth considering whether your current career aligns with your goals.

I constantly remind myself to ask, "Did I embrace quick and dirty solutions today?"

Like many, I am still navigating my path in both career and life, open to sharing and learning from others' experiences.

If you found this article helpful, please consider buying me a coffee ☕ It'll make my ordinary day shine ✨

Buy me a coffee