10 May, 2021#work

So it has been one full year of getting paid to write code

Tomorrow marks my first work anniversary at my first job as web developer. Incidentally, I also had my first annual performance review just a few days ago--not because of the timing of my employment but due to how the financial year works for the University of Chicago. Well, it's been an enjoyable journey and I have some thoughts to jot down.

First of all, I'm reminded of how immensely fortunate I am to be working as a software developer, which seems to be one of the few remaining jobs in the US that can pay well while having relatively low barriers to entry.1 Here I'm speaking as someone who neither has a degree in computer science nor work for some "FAANG"-like company in Silicon Valley! And yet, since switching jobs in last May, the skills I mostly taught myself2 have greatly helped me and my spouse to finally move out of a small one-bedroom apartment to a place we can call ours earlier this year (with a ton of mortage, of course 😂).

While my experience cannot be generalized blindly, I do suspect that there might be many hidden opportunities in non-tech companies and institutions to work as software developer/engineers and enjoy a relatively generous level of compensations. These places too need someone to build software, likely business-oriented applications that are not as technically challenging as what you'd find in typical "tech companies."

That said, the privileges I've tasted over the last year also serve as a source of worries regarding the possibility of downward mobility. I currently contribute to two projects at work, each slowly but surely getting close to its big launch date. At least a few months of fixing bugs and adding/modifying features will follow. But what happens after that? What comes after the team's focus eventually and inevitably evolves from building applications to elsewhere? Will there be enough work to justify keeping my position in the team next year? What about in three years? Most fundamentally, will I still be competitive if I return to the job market after years of writing "boring" React code?

Meanwhile, I'm finding myself in a sort of local maximum with all low-hanging fruits gone. I am now capable of building a moderately complex UI in React with some insight into the library. I have also developed a good understanding of the projects I'm working on--what their goals and needs are and how the software my colleagues and I are building support them. The flip-side of this very development is that learning more about React and its quirks no longer feels as motivating3 and the day-to-day tasks for the projects that are gradually reaching their maturity inevitably as well as increasingly become, uh, less exciting.

This is where the Internet would recommend starting new side projects or learning some new technology/language/framework/etc. (And do it in public, right?) The challenge here is that it is difficult for me personally to start building or learning something too distant from what I know and enjoy, i.e. building UI. Which means no Rust or Go for me--oh yes, I remember my failed attempt at learning Haskell.4 On the other hand, having gained a bit more experience, it has become difficult for me to learn truly new lessons from simply building toy projects using differnet UI libraries--even in TypeScript!

In fact, the most exciting and innovative space in the current web frontend landscape seems to be "shipping less JavaScript" in the form of (meta-)frameworks and tooling, partly reinvirogated by the annoucement of React Server Component.5 This may seem not so distant from what I know and like, but I'm realizing that truly getting into that space requires a wholly different level of knowledge and proficiency vs. just using them. I know I could use that very gap as a motivation to get better... 🙈

So here I am, after one full year of actually being paid to write code. Maybe feeling a bit too comfortable with where I am and yet not much less uncertain about the path forward. (Can I just blame COVID for all this? Or life--like getting a mortgage and moving?) Just to clarify, I am not complainig. Not at all! It's been a truly amazing year. Still, my hope is that around this time next year, I feel less unsure about where I stand and be more proud of my accomplishments, small or big. And the only person to make this hope into a reality is, well, myself.

  1. Here my experience is limited to the United States and (only vicariously) South Korea job markets. In both places, but clearly more so in the United States, software developers and engineers are generally very well paid. Of course, this does not apply to every job titled as such.
  2. I acknowledge that this "teaching myself to code" was only possible thanks to the thriving FOSS culture and other factors I discussed in a previous post.
  3. This does not mean I no longer enjoy writing React. I especially appreciate how trivial it is in (post-hooks) React to break a component into many smaller components. This is a complete reversal of how I felt when I was just getting started, coming from Vue.
  4. Though I'd argue that I still benefit from having tried, especially since the ideas from functional programming has successfully penetrated the world of frontend web development when I was getting into it.
  5. Of course, the discourse on "JavaScript bloat" has been going on forever and in the context of modern web UI development, there exist some tricks and "best practices" to address it, including code-splitting and server-side rendering in popular frameworks, as well as less known but more fundamental solutions, like multi-page application by Marko. Nonetheless, I do get an impression that RSC helped the frontend web development community in general to pay more attention to this issue and build/discover solutions, new and existing alike.