Young Reacts #118 – The hidden cost of responsiveness

An unusual thing happened to me this week.

A startup CEO reached out to me about a job opportunity, which isn’t unusual. I turned down the offer like I usually do. Then, he responded with “we will still be hiring in 10 years” and forwarded his investor letter and the most recent all-hands recording. I could see the company’s strategies, challenges, and even updated financials. I’ve never seen this level of transparency to an outsider and am deeply impressed. I still don’t think the opportunity is right for me, but I am now rooting for them.

Totally Unrelated Photo from Unsplash by Stephen Phillips – Hostreviews.co.uk

Software Engineering ⚙️

There are no “best practices.”

For most important questions at work and in life, the answer is “it depends.” Because our personalities and circumstances are different, a single answer will not work for all of us. How Stack Overflow optimized for speed and forwent the “best practices” like unit testing is one example. Link

People ❤️

The hidden cost of responsiveness

A common compliment I give to my colleagues is that they are responsive to my questions or feedback. I enjoy their prompt responses and try to return the favor; I always have Slack in the foreground and keep an eye out for DMs and mentions. The result is that I don’t get to do anything meaningful during normal business hours (interestingly, many colleagues said the same). This HBR article made me see that painful truth. Link

Uniform compensation across a company

A company decided to pay everyone the same amount of cash salary across different seniorities, locations, and even roles. “That can’t work” was my first reaction. But as I gnawed on the idea, I realized that all compensation structure precludes some of the candidates. If transparency from this uniform structure is important to its employees, why not? I wonder if they are as transparent with the employee performance. Link

Right to Be Anonymous? Not at Some Company Meetings

I’ve been against asking questions anonymously and believed that I should take responsibility for my words. But after reading this article, I remember several occasions where I chose not to ask a question because I did not feel safe to do so. The ideal would be for the leadership to create a safe enough environment and for the employees would choose to ask questions under their names.

It’s Not Just You. A Lot Of Us Are Hitting A Pandemic Wall Right Now.

It’s now been more than a year I’ve been working from home. The working from home part hasn’t been too difficult for me. But I am tired of being constantly in crisis mode. I feel burnt out.

Staff Design

There is not just a staff engineer, but also a staff designer. The project interviews industry veterans about how they got where they are.

Young Reacts #117 – It Can Happen to You

I was pleasantly surprised to receive my green card (permanent resident card) in the mail this week. When I look back at my past nine working years, there wasn’t a time when I was free to look for another work or quit. For the first four years and the last two years, I was on my work visa in the US. While I was lucky to get one in the first place, being on a visa meant my job change would need to get reviewed and approved. A bad legal misstep could kick me out of the country, and I wasn’t comfortable risking it.

Even when I was in Korea, I worked to satisfy my civic obligation instead of active military duty. Again, my job change would mean a round of reviews and approvals. If I had quit my job then, I would have been drafted into active duty.

So the freedom to work wherever and quit whenever brings me a fresh feeling of freedom. I am now truly free to work. I look forward to what I can do with this newly earned freedom.

Welcome Packet from USCIS

Software Engineering ⚙️

It Can Happen to You

Grand Theft Auto Online, a popular online game, had a long-standing, slow loading time. The internet recently discovered that two simple fixes could make a 70% improvement. It’s easy to blame the issue on whoever wrote that code. But a senior software engineer ought to be able to see that they can make the same mistakes too.

Nullability in GraphQL

Whether to mark a field nullable or not has been a contentious topic internally. I believed that fields should be marked non-null if their values should always be defined in business logic because non-null fields are simpler to handle. However, I recently learned that in our federated GraphQL architecture, a non-null field could make a query less resilient to a service failure. So we recently agreed to mark all fields as nullable by default.

Your Linux processes are already “containerized.”

While I’ve used containers and serverless extensively for stateless applications, I felt uncomfortable using them for databases. This article explains that PostgreSQL in a container is not too different from one on a Linux system in how it can go wrong: OOM killer, Storage, Restarts and “in motion,” and Custom Deployments. Link

People ❤️

Don’t create a sense of urgency, foster a sense of purpose.

At big and small companies, I’ve seen the chaos created by the sense of urgency. When we have a deadline lording over us, we stop questioning the basic premise of projects. Not only the sense of urgency fails to maintain the throughput in the long term, but we will also fail to build the right thing. If it’s worth building, it’s worth thinking through.

Taming the Mammoth: Why You Should Stop Caring What Other People Think

My mammoth is that I want to be recognized at work and by my social circle. But I am not sure if I really want something else.

Business 💸

Clubhouse Is Suggesting Users Invite Their Drug Dealers and Therapists

Dark Patterns are defined as “tricks used in websites and apps that make you do things that you didn’t mean to, like buying or signing up for something.” It’s far more prevalent in consumer-facing applications since consumer data is where they make money. As part of their growth tactic, Clubhouse aggressively goes after its users’ contacts and makes suggestions, even if the contact belongs to a blocked harasser.

Young Reacts #116 – What the heck, z-index??

As I am doing more discovery work recently, I’ve been practicing to think more granularly. Most situations do not have binary on/off states, and the optimal solution can be found when we recognize the complexity and lean into the details. As I talk to my users, I find the common traits and categorize them into a few buckets, such as early adopters, majority, and laggards. It’s not exactly rocket science, and I am not a UX expert, but it already changed how my team views a problem.

In practice, while we are building an internal GraphQL system for UI engineers, I’ve learned that each engineer has different levels of expertise and needs. Some are on the bleeding edge and keep pushing us for more features, while some need more education and onboarding support. With this clearer understanding of my user personas and their needs, I can focus on overlooked opportunities, such as improving tutorials and documentation for newcomers.

Photo by Nicolas Brulois on Unsplash

Software Engineering ⚙️

What the heck, z-index??

I’ve worked as a frontend engineer for the last 9 years and still get baffled by the z-index. This article goes deep into how z-indexes work. I didn’t know that z-indexes are only used when the elements are in the same stacking context.

React’s children prop won’t cause rerendering if the children didn’t change.

This was quite surprising for me. I expected that since React’s JSX syntax returns objects, the children prop always fails equality checks and triggers rerendering. Apparently not. React’s rendering behavior still surprises me. Blog Link

Use GraphQL Fragments

If you started using GraphQL with Apollo Client, you probably don’t use Fragments as often as you should. Fragments make reusing and accessing nested types easy, which can be painful with nested nullable fields. Blog Link

People ❤️

The Behind-the-scenes Work of Tech Leadership

The ability to sell an idea becomes more important as we progress in our careers. That means we need to tailor our pitches based on the audience. When we talk to the executives, we need to speak in business terms. When we talk to other engineers, we need to speak to their pain points. The term “tech leadership” makes it look hard, but the leadership really comes down to communication and persistence.

Business 💸

Community perspectives on Elastic vs AWS

I recently heard this podcast that interviewed people in the open-source business about Elastic’s SSPL license change. I expected to hear a more sympathetic tone, especially from those leading open source companies. But I was surprised to hear that they essentially saw the license change as the last-ditch response to a failed differentiation.

Cool things I found 🕶️

10 Years of Open-Source Visualization

D3.js was the first library to introduce visualizations to the mainstream internet. Not only that, it was the first library I learned at my first job. The library is now 10 years old, which makes me reminiscent.

Falsehoods Programmers Believe About Names

My team recently had a heated discussion on whether we should separate the existing “name” field into two “first name” and “last name” fields. I was adamantly against it because I know firsthand that not all names neatly fit into the two fields. The post goes deep into other wrong beliefs about names.

Young Reacts #115 – How to Pick a Product Hypothesis

Not much from me this week. Enjoy the last week of February! 😁


Software Engineering ⚙️

GraphQL Input Union is back to OneOf directives

GraphQL’s Input Union has been in the works for a long time. The first proposal was in early 2018. At this point, a lot of GraphQL users just want a solution, and I hope this proposal is it.

An interesting fact: OneOf directives are currently proposed to be applied against input objects and fields, but they could be used for the return types too. The spec working group intentionally scoped down the proposal to proceed quickly, but we will see the expansion of OneOf directives in the future. OneOf RFC Link

People ❤️

Unpacking Interview Questions

This collection of articles explains what the author looks for when asking typical behavioral interview questions such as The Weakness Question. He thoroughly discusses his motivation behind the questions, the evaluation criteria, and the typical follow-up questions, which gives the interviewees a behind-the-scenes look. I recommend reading this series if you are recruiting now.

How To Measure Engineering Effectiveness

My approach to my team’s effectiveness has been limited to “I know it when I see it.” I found it hard to assess the quality and the quantity of my team’s contribution when we are part of a larger system (product managers, designers, and other stakeholders). Measuring and getting rid of the blockers sound like a solid approach to measuring the team’s efficiency. But it still doesn’t answer if we are building the right thing. Blogpost Link

Google Fires Researcher Meg Mitchell, Escalating AI Saga

Google had suspended another AI ethics researcher, Meg Mitchell, when they fired Timnit Gebru. After weeks of investigations, they fired Meg Mitchell. Talking up diversity is easy but following through with accountability is hard. Google has done some remarkable research on psychological safety, so I am not writing it off completely, but it has lost a lot of my respect.

Business 💸

How to Pick a Product Hypothesis

Coming up with a good hypothesis for a new project is half the battle. A good hypothesis is falsifiable, measurable, and actionable. The article then gives examples of good and bad hypotheses. This article was a recommended read for an internal workshop on hypothesis thinking.

Google made a deal with Rupert Murdoch. Facebook called the bluff.

New Australian law enforces Google and Facebook to pay the news publishers to use their links on their services. Google first threatened to leave Australia (Bing selflessly offered its service in response) but cut a deal with Rupert Murdoch’s News Corp. Facebook decided not to show any news in Australia. Now the small independent outlets are squeezed between the tech and media giants. News link

Young Reacts #114 – Talent is a myth

‘Tis the recruiting season. I occasionally talk to students or recent grads who seek to enter the tech industry. Hearing their experiences is maddening. Their search for the first full-time job turns into a soul-sucking, self-esteem-destroying numbers game. They apply to dozens or hundreds of companies, and they don’t hear back from most. It upsets me that the same companies that ghost those early-career candidates would hire a team of recruiters to court the senior candidates. I wish all of us to remember what it was like to start our careers and treat the next generation with respect.

Photo by Markus Winkler on Unsplash

Software Engineering ⚙️

Stepping Stones not Milestones

When we build towards a goal over a long time with an uncertain path, we need to build and learn iteratively. But, that doesn’t mean we blindly break a 1-year long project into four quarterly goals. We need to choose the next important hypothesis and build the next Minimum Viable Product to test the hypothesis.

Attacking OSS Using Abandoned Resources

Sometimes, it takes meticulous planning and a ludicrous amount of effort to hack. And sometimes, all it takes is a Github account. Once the original owner deactivates their account, an attacker could create another project with the same username and make an unsuspecting developer install their malicious code.

Things You Can Do With CSS Today

I find it harder to stay current with CSS than with JS because CSS proposals progress and release on their own, unlike JS. So I appreciated this overview of new features.

People ❤️

Talent is largely a myth

I agree that statements like “we hire only the top 1% of developers” don’t make sense and that we need to evaluate candidates with a growth mindset. On top of that, I also believe that:

  1. Not everyone can be successful in a given environment within an acceptable time window.
  2. The hiring team’s existing effectiveness and its process is the more important factor for the candidate’s success than the candidate themself.

How We Introduced Levels to Our Engineering Organisation without Losing People or Hurting Our Productivity

Netflix famously has only one level for individual contributors. The flat hierarchy has created an environment where the best ideas, not the highest titles, win. But it has also failed to provide clarity around individual contributors’ growth. While I believe Netflix is too big to introduce levels at this point, how we could introduce them is an interesting thought exercise.

How to answer one of the toughest interview questions

That toughest question is (spoiler alert!) “How much are you making now?” Of course, it is illegal to ask this question in California. However, I will reuse the thought process when discussing my compensation expectation with recruiters or hiring managers.

Young Reacts #113

I started interviewing other engineers in my organization to understand their experience with our GraphQL implementation. I ask for a 30 min chat and come prepared with a few questions.

Among the questions, I found my last question, “Is there anything else I should have asked you?” particularly powerful. My other questions are about the things I know and care about and, thus, miss my blindspots. But this question enables the interviewees to talk about what they care about. I’ve already learned their complex authorization requirements, neighboring teams’ pushback, and the pain points around internal documentation.

When you have a chance to interview your customers or colleagues, try asking this question. You may be surprised by what you learn.

Photo by Alejandro Escamilla on Unsplash

I thank my wife, Eunyoung, for sharing this question.


Software Engineering ⚙️

Surviving the organizational side request

I haven’t experienced a rabbit hole as deep as this hypothetical one. But I wholeheartedly agree that unblocking whatever’s blocked for whatever reasons is also us engineers’ job. Link

npm 7 benchmark

Ever since npm 7 came out last October, I wanted to understand how fast npm 7 was compared to npm 6 and yarn. We finally have one benchmark, and it, unfortunately, doesn’t look groundbreaking. Some improvements with cached modules but also some regressions with fresh installs. Link

People ❤️

Incompetent people don’t know their incompetence, or do they?

The Dunning-Kruger effect can be summarized as “incompetent people don’t know they’re unskilled.” It has been cited by many articles explaining human behaviors. But a research team found that a set of randomly generated numbers could be made to look like the effect. This effect may be an excellent case of a confirmation bias. Link

What got you here won’t get you there

This^ is an important piece of advice as you want to shift into a different role. When you become a senior engineer and aim to be an engineering manager or a staff-level engineer, getting better at coding will not let you get there. We need to re-evaluate our focus based on our new objectives and changing landscapes. Link

Business 💸

Google is shifting (exiting?) its game streaming

Google first announced the game streaming platform Stadia and the internal game studio in early 2019. But in less than 2 years, it is shutting down the studio. If without exclusive games, how will Stadia compete with Microsoft Cloud Gaming or Amazon Luna, especially when these companies are doubling down on exclusive content? Link

Interview with Microsoft’s Head of Cloud Gaming

There are some interesting threads in this interview:

  1. Games are evolving from packaged goods to services to communities.
  2. New SaaS/platform opportunities for games are emerging, like renting out virtual environments for games.
  3. Game developers are evolving from AAA studios to indies to citizen developers (think Roblox).

Link

Young Reacts #113 – Engineering Personas

The term “soft skill” implicitly undervalues interpersonal and communication skills. But these skills are in short supply and become more important as we progress in our careers.

Software Engineering ⚙️

GraphQL Schema Stitching is coming back

Schema stitching was once declared deprecated, but it has come back from the dead. I acknowledge that federation needs some complex tooling like schema validation to work well. But I am still skeptical of schema stitching. I remember that schema stitching suffered from schema merge conflicts (i.e., when two schemas define types with the same name). After looking at the doc on merging, I still see the same problem. Link

People ❤️

Engineering Personas

We are more than just “human resources.” Everyone has their preferences and aspirations, which hiring managers should consider when hiring. The article buckets engineers into five categories. While I think these categorizations are helpful when hiring, we should beware of biases and expect that people grow and change their personas. Link

AWS Compensation Explained

I was just baffled at how unintuitively the compensation works at AWS. Read the article if you are considering joining AWS. Link

Business 💸

Ethereum’s Carbon Footprint

The author researched the carbon footprint of Non-Fungible Tokens, the tokens used to create a limited number of digital goods. He found that a single transaction of an NFT produces 47 kg of CO2 on average, which is equivalent to driving 500 km. It is mindblowing. I never saw blockchain technology from this perspective, and I thank the author for his research. Link

Twitter’s New Peer Review System

On top of its existing review and recommendation system, Twitter launched a peer review system for less prominent tweets. Humans being humans, I am not sure how the system will perform for divisive tweets. I like that all generated data will be publicly available, providing visibility into the system’s vulnerabilities. Link

Young Reacts #111

One of my new year goals is to discuss my career more openly with my manager. I brought up that I want to become a manager in a year or two, and he gracefully offered me to share how he carries out his core responsibilities.

During our 1:1 Last week, he talked me through how he went about hiring for an open position on the team. There were several learnings from the discussion:

  1. Find someone who can not only do the job but also strengthen the whole team. This requires thinking about missing skills on the team.
  2. Relatedly, share and align the expectation with the recruiting teams via syncs and docs.
  3. Hiring is deemed the most important activity for a Netflix manager. One open IC position takes up 30-40% of the hiring manager’s time.

I really missed talking about leadership topics like this, and I thank my manager for this time 🙏🏼 I hope to learn how he prioritizes our product projects next time.


Software Engineering ⚙️

Conventional Commits and its niceties

Conventional Commits specifies a convention for commit messages so that both humans and machines can understand the messages. The machine-readable messages enable powerful automation. For example, at work, I can commit with a message like “fix(hierarchical-dropdown): fix hover state,” and our continuous deployment pipeline automatically increments the version and publish the hierarchical-dropdown library. Now the similar functionality is available on Github Actions thanks to Google. Link

Naming is hard

Naming variables is hard, especially for non-native English speakers. Code should be readable like prose, but that is hard to achieve when you don’t read and write English much. I wish I came up with a naming guide like this one when working in Korea, which would have helped my team. Link

People ❤️

Swinging between IC (individual contribution) and Management

Aaron Suggs was once a director, then a staff engineer, then a manager, and is now a principal engineer (remember Charity’s pendulum?). I like his criteria for choosing his role on his team (although it is a privilege to be able to choose a role):

  • What skills does the team need most acutely: management to coordinate the actions of a group; or an IC to accelerate the execution?
  • Will I have sufficient support and feedback to learn and succeed?
  • Am I the only one on the team who could do this; or could others do it well?

There are other valuable takeaways like framing his impact into “working the plan” and “serendipity” in this interview. Link

Business 💸

Google vs. Australia

The Australian government attempts to make Google and Facebook pay when they link to Australian news organizations. The same law also obliges the tech giants to use the news from those organizations. While I understand the need to ensure journalism’s survival, I am unsure if taxing Google when it forcedly links to the Australian news is the best-formulated policy. Now Google Search is threatening to leave Australia completely. Link

AWS vs. Elastic

Elastic built the popular open-source search technology Elasticsearch and the open-source visualization technology Kibana. But AWS built a competing service on those technologies which threatened Elastic’s survival. In response, Elastic has changed the two technologies’ licenses to forbid cloud providers from using those technologies to offer competing products.

Now, AWS has responded by forking Elasticsearch and creating open-sourced versions. That’s legal, of course. But such a practice discourages future venture-backed open-source technologies, which won’t be ideal for us engineers. Link

Young Reacts #110 – Take risks to grow your career

I started reading books on film making and the movie industry to better understand my team’s projects as we prioritize them (this was from my 2020 review). I’ve learned that the same titles in Hollywood and Korea do not mean the same roles from one book. I am also learning how movies have been distributed pre-Netflix based on seasonality and competition.

I got so much more excited and informed about my team’s impact that I think you should also read more about your company’s domain, even if you are “just an engineer.”

The book I am reading this week. Image from 101thingsilearned.com

Software Engineering ⚙️

How to communicate about tech debt

Tech debt has become that thing all ‘good’ engineers should strive to get rid of. But it’s quite the contrary. We, engineers, are hired to drive business results. So tech debt, like any other project, should be viewed and prioritized in the context of business outcomes. We should learn to explain either quantitative or qualitative business values of the tech debt work to our partners. Link

Is it possible to migrate from a cloud provider in a week?

When Parler went offline last week after AWS refused to work with the controversial service, its founder said the service would be back in a week. But is it possible? Corey Quinn, the famous cloud economist, doesn’t think so. The service hasn’t come online yet. Link

People ❤️

Take risks to grow your career

To keep growing, we need to be exposed to new challenges and learn from them. But once we get that cushy role, it is hard to get out of the comfort zone. I already feel more risk-averse since I work at Netflix — it pays well, my family is proud of me, and so on. I can’t change my roles yet anyway because of my immigration process. But will I try something new when I can? Link

“Escape your 9-to-5 job”

Gumroad is not your typical venture-backed startup. There is no hypergrowth, long hours, nor promised career growth. Even its founder is working part-time (they also pay 50% less for any hours beyond the first 20 hours). This serves as a good reminder that not all paths have to look alike, and we should choose our own lifestyle. Link

Hiring is the last resort

When work gets overwhelming, managers’ first instinct is to hire more. I’ve made that same mistake in the past. But hiring is the most expensive and slowest lever to pull and will make the organization slower to adapt in the future. Philip Fisher-Ogden (an engineering director at Netflix) recommends prioritization, optimization, and innovation before hiring. Link

Business 💸

TV is now a game console

LG’s 2021 TVs will support two game streaming platforms — Google Stadia and GeForce Now. Previously, both platforms have only been available on computers and their proprietary devices. As Phil Spencer said, TV is now turning into a game console. Link

Sports and Gen Z

Gen Z won’t sit down and watch the 2.5-hour match in full but will follow the sports stars on social media for a peek into their personal lives. Also, there is uncertainty from COVID shutting down youth sports. Link

Young Reacts #109

I am back from my trip to Korea and will be back to work this week. I am mildly excited to work again, which shows my vacation was long enough. My year begins now!

Photo by Zoltan Tasi on Unsplash

Software Engineering ⚙️

The State of CSS 2020 Report

My two takeaways:

  1. Tailwind CSS (now with Tailwind UI components) is the thing to learn.
  2. Utility CSS classes are not a minority opinion anymore.

Link

Leveraging the TypeScript API to find issues in your code

I didn’t expect that writing a script to look at Typescript’s syntax tree could be accomplished under 100 lines of code. Something for me to try when I have tedious, mechanical refactors in the future. Link

GitHub’s WebGL Globe

GitHub launched its cool looking website with a 3D globe, visualizing Github’s activity. This article explains the visualization code line by line. Link

Iterating over iterable JS objects

During my phone screens, I see even senior candidates struggle with iterating over an object. It would be a good idea to brush up on iterations if you can only come up with forEach when you read this. (Spoiler: use for-of) Link

People ❤️

Would you discuss politics at work?

This week was marked by a series of challenging political events in the United States. Some workplaces ban the conversation around politics to avoid the pitfalls. But I personally believe acknowledging the stress on all of us and providing the space to process our feelings are the best course of action. Link

Learn to deal with uncertainty

As an engineer, I am used to immediate and clear feedback; I wait for 10 minutes, and automated tests accept or reject my work. But when I discuss long-term product roadmaps or lead cross-functional projects, there are no such mechanisms. This article helped me understand why I struggle with those high-level discussions: fewer constraints, longer feedback loops, and more high-stake problems. Link

Interviewing for Engineering Manager

I am thinking of returning to engineering management in the next year or two. Since it will be quite a big shift, I started looking at what companies look for from their engineering manager candidates. This is from Reddit. Link

News 📰

Twitter bans Trump

Twitter finally bans Trump’s account from the service after Trump used the service to encourage his supporters to storm the Capitol. I am glad that Trump won’t be able to use Twitter to seed confusion and incite violence. But Twitter is not the only social network, and other services still enable these extremists. (The alternative Twitter-like service is now suspended from app stores for the lack of content policing)

A society can’t leave its safety up to the few tech execs. The only proper way to censure and contain Trump will be through democratic institutions. Link