Young Reacts #150

My org is still figuring out how to transition from function-oriented platform teams to mission-oriented product teams. My team in particular needs to clarify what our mission and vision are. So my readings this week are oriented towards those themes.


Software Engineering ⚙️

GraphQL, meet LiveGraph: a real-time data system at scale

Figma engineers discuss how they implemented their real-time collaboration with GraphQL Live Queries. I particularly found it interesting to read about how they made it scale using shared subqueries.

People ❤️

Coordination Headwind

This slide deck explains why it’s so much harder to prioritize decisively and get things done in a larger organization. This is why we need a strategy and get everyone aligned.

The Building Blocks of Strategy

This article reminds me that when we come up with a strategy, we need to consider the needs of our customers first.

Tool: Create a vision with the team

I have a 4-hour block next week to create a team vision with my team. I had limited internal resources so I scoured the internet and found this resource from Google:reWork.

Business 💸

Evolving our business model to address developer needs

Google announced various programs that will lower fees for Android developers. For example, if you have a subscription business or a content business with high content costs, you will qualify for a service fee of 15% or less.

It Was Never About Dave

Netflix employees walked out last week to demand action from Netflix to instigate cultural changes. I’ve been proud that I worked at Netflix and hope I can stay proud. Trans lives matter

Young Reacts #148

As I learned that my team is having issues managing incidents, I naturally gravitated towards those issues.


Software Engineering ⚙️

More details about the October 4 outage

Facebook suffered the worst outage in recent years last week. Its VP of Infrastructure explains how a wrong command and a bug resulted in a global outage lasting hours.

Incidents are for everyone

A common pitfall for an engineering team dealing with an incident is not to involve customer-facing teams like account management or customer service teams. Everyone who gets impacted by an incident should be informed and consulted.

Changing the tires on a moving bus

An engineer from Mailchimp shares a cautionary (yet, exciting) tale on what could go wrong when overly optimistic. Being optimistic is ok, but let’s think the plan through before we invest our precious time.

genqlient: A truly type-safe Go GraphQL client

I found it surprising that Go didn’t have a typegen-based GraphQL client before genqclient. There is gqlgen, which focuses on creating a type-safe GraphQL server, but nothing as a client.

Designing for Productivity in a Large-Scale iOS Application

As the products and the teams scale, their codebases get larger. When the sizes get to a certain point, the existing tools start to break down. That’s why teams come up with git alternatives and cloud editors. The iOS team at Airbnb adopted a cached build system, introduced module types, and enabled dev apps.

People ❤️

Asymmetric Workloads: One Way Leaders Can Poison Their Culture

A leader’s work is about leverage. Since feedback cycles for leaders are generally longer and people are usually less inclined to provide feedback to their leaders, it’s too easy for leaders to create negative leverage by creating busy work for their teams.

How to Influence Without Authority

Decision-making based on authority should be the last resort as such unilateralism can fail to get needed commitment and, worse, result in skepticism and burnouts. My usual tactic is to build trusting relationships and use story-telling based on the shared understanding.

Cool stuff 😎

MagInkCal

20210924_175459
From MagInkCal Github repo

I didn’t know I needed this before. But I want it so badly now.

Young Reacts #147

I spent most of my time meeting my new colleagues last week and reading documents to understand where we are and how we got here. I am still learning about the team, but I have seen some shared themes. They don’t look easy to tackle, but I appreciate that many agree that those problems need to be solved.

I am looking forward to more conversations this week.


Software Engineering ⚙️

Understanding the EAV data model and when to use it

My team’s database uses an unusual Entity-Attribute-Value (EAV) structure to express different types of items that our sellers sell. It’s my first time running into such a structure, so I read up on it. Now I know the pros and cons, I have a few follow-up questions for the team.

Announcing TypeScript 4.5 Beta

This release improves how Typescript works with an ECMAScript module.

People ❤️

Square Defangs Difficult Decisions with this System — Here’s How

Like Netflix’s Freedom-and-Responsibility, Square has its own set of shortcuts to make decisions. SPADE, which stands for Setting, People, Alternatives, Decision, and Explain, is one. It is essentially a checklist for critical questions, such as “what decision needs to be made,” “who is responsible,” and “who is the approver.” A lot of our internal docs follow this structure.

Direction + Alignment + Commitment (DAC) = Leadership

I learned about this concept from an internal training video. DAC stands for the key ingredients for successful collaboration:

  • Direction: what is the goal?
  • Alignment: how are we going to get there?
  • Commitment: are we prioritizing this work?

This concept isn’t as prevalent as SPADE inside Square, but I like that this idea reminds me of how to drive a collaborative project.

Good People, Big Dreams

Square, too, relies on individual teams to onboard newcomers as Netflix does. As I think about onboarding new people to my team, I need to prioritize relationship-building as much as skill training. Lemonade has built a strong cohort program that will help the newcomers gell.

There’s Another Gender Pay Gap: Stock Options

This article is another reminder of why we should share our compensation numbers with our colleagues. Information asymmetry has real consequences.

Young Reacts #146

Near the end of High Output Management, Andy Grove argued that the organizations should lean into the Peter Principle. He says anyone who’s recently promoted to a new role will be mediocre at first. If we want to prevent that mediocrity completely, there cannot be any growth opportunities for the employees. Instead, he suggests that the organizations revert the promotion if the necessary training and the ramp-up take longer than the organizations demand.

His argument reminded me of Netflix’s high-performance culture, whose failure mode is not giving the employees the stretching assignment. The managers are afraid the employees will not perform at the needed level right away. A Netflix VP once told me that all hiring managers should hire someone who will contribute the most over the 3-5 year’s time to counter that failure mode. But I don’t think that’s how it works now.


Software Engineering ⚙️

Rome will be written in Rust 🦀

Rust is taking more and more shares among the next generations of Javascript tooling. I previously wrote that I wished UI engineers didn’t need to learn a new language to understand their tools. However, I’ve changed my mind. We work with browsers, IDEs, and containers that aren’t written in Javascript. In most cases, we don’t need to understand their internals. Maybe Javascript tools could be evolved to be like that.

How Engineering Standards Help You Build More Perfect Software Faster

When an engineer joins a new team, there are many tools and conventions they need to learn before they can function independently. Since it’s harder to learn about those organically since we are remote, explicit engineering standards like New Relic’s will become the best practice.

People ❤️

Implementing Amazon’s single threaded owner model a retrospective

I’ve only worked in organizations where a product team operates as a triad of product, design, and engineering where all three have an equal voice. Thus, it was eye-opening to read about this Single-Threaded-Owner (STO) model where a single person manages all three functions.

‘Great Attrition’ or ‘Great Attraction’? The choice is yours

McKinsey published an article on the ongoing “Great Attrition.” I found this quote particularly powerful:

Employees were far more likely to prioritize relational factors, whereas employers were more likely to focus on transactional ones.

Business 💸

Should You Leave a Big Company for a Startup?

I got two thoughts after reading this article. First, as the author points out, a big tech career looks different from a startup career, and few people cross between the two worlds. So, think about what you value.

Second, many people (founders, recruiters, hiring managers, etc.) will razzle-dazzle you so that you make the decisions benefiting them, not yourself. Understand what you get out of the particular role and determine if that’s right for you.

Young Reacts #145

To prepare for my next role, I’ve been re-reading High Output Management by Andy Grove, a former Intel CEO. Although the book was first published about forty years ago, this book is surprisingly still applicable to the modern workplace. It provides both fundamental ideas and tactical tips for leaders: from measuring leaders’ impacts to running effective meetings. Having read other more recent management books (such as Measure What Matters and Death By Meeting), I see that Andy Grove thought about these current, mainstream ideas decades ago. Even though he doesn’t go as deep on these topics as other more topical books, the book is an excellent introduction to how leaders (both technical and people) should work.

It is a short read, so I recommend reading the book if you haven’t done so.


Software Engineering ⚙️

The Analytics Engineer

It’s been almost seven years since I worked in the data analytics space. Back then, the “data engineer” role was the hot new thing. Now, that role is superseded by various data tools, and a new “analytics engineer” role is getting more popular.

Migrating Notion’s marketing site to Next.js

Not all engineering projects have clearly defined goals like this migration (but all successful projects have them). It’s also great to see that the team went back and checked if the migration met the goals.

Why are hyperlinks blue?

This article is a thorough investigation of the origin of blue hyperlinks. My next question is, why are clicked hyperlinks purple?

People ❤️

How Many People Can Someone Lead?

An engineer needs a certain amount of support: technical guidance, product management, and people management. If one engineering manager needs to provide all three, his team needs to be smaller. It reminded me of my startup days with twelve reports, when I did “shallow” people management.

From SWOT to TOWS: Answering a Reader’s Strategy Question

SWOT (strengths-weaknesses-opportunities-threats) naturally makes the team look internally first (strengths and weaknesses) in analyzing its strategy. But without context, anything can be strengths and weaknesses. For example, Netflix’s freedom and responsibility culture can be an asset in the entertainment industry but not healthcare. To set the context, TOWS puts threats and opportunities first.

levels.fyi Internship Compensation Data

If you are curious how much companies paid summer interns, click through.

Cool stuff 😎

From Motor Control to Team Play in Simulated Humanoid Football

A fantastic video on how DeepMind taught virtual agents to play 2v2 football. I found it interesting that separately teaching the agents the low-level (running), mid-level (dribbling), and high-level (team coordination) skills worked for them as it does for humans.

Young Reacts #144

My two weeks of unemployment begin this week. Looking forward to some quality rest and recharge.

Photo by Tyler Nowak on Unsplash

Software Engineering ⚙️

Diagnose engineering process failures with data visualization

The author came up with a set of cool visualizations that describe engineering processes. But what I found interesting is not the visualizations themselves but the questions that the visualizations try to answer.

Answer 👉 2.6% of free #iOS apps and 4.4% of free #Android apps are built with #ReactNative

A couple of caveats with the statistics: first, the statistics include games usually built with game engines. Second, the more popular apps use React Native more (12%).

People ❤️

The 25 Micro-Habits of High-Impact Managers

I found “I trust you, make the call” the most important of all the listed micro-habits. Another great one I heard is using “and” not “but” when you are giving positive and constructive feedback. “But” invalidates all feedback that came before.

Business 💸

Apple must allow other forms of in-app purchases, rules judge in Epic v. Apple

Different folks have different views on if Apple won in this round: some say Apple lost now that they have to give up a sizeable chunk of their payment processing fee. Others say Apple won because it still kept control over the App Store. However, Epic hasn’t yet achieved its original goal, to restore Fortnite with its payment system despite its transgression.

HashiCorp runs low on staff, calls a halt to Terraform pull requests

Possibly the fallout of the Great Resignation?

Young Reacts #143

This is my last week at Netflix. I am satisfied with my experiences and contributions at Netflix. But I do have a couple of learnings that I wish I had known before joining Netflix.

  • First, because my manager at Netflix has complete freedom in setting my compensation, it is critical to work with the manager that fits my style.
  • Second, at a large company like Netflix, not all teams are created equal. Some are given more spotlights (and pressure, too). Find the team that suits my priority.
  • Third, I should broadcast my aspirations so that people will think of you when they see an opportunity. I need to talk to my direct management chain AND the leadership of the adjacent teams.

The first is probably specific to Netflix, but the other two apply to any large organization. I hope these experiences will make me a better leader.


Software Engineering ⚙️

Elasticsearch from the Bottom Up, Part 1 and Elasticsearch from the Top Down

Elasticsearch probably is the most popular search technology. I’ve heard of Elasticsearch many times and used APIs built on top of Elasticsearch throughout my career. But I haven’t learned how it works. Since my new team owns an Elasticsearch service, I finally decided to read about it. These two articles were good introductions.

I completely ignored the front end development scene for 6 months. It was fine

I agree that we don’t need to follow up on every new framework and library in the web development, but with a caveat.

It’s unnecessary to learn everything, but it is important to keep up with the major trends. They can affect our employability, especially after the early stage of our career. A shift toward component-based development was one (jQuery to React), and a shift toward a strongly-typed language is another. The good thing is that these shifts happen over a few years, so we don’t need to study everything all the time.

People ❤️

Guide: Understand team effectiveness

Measuring team effectiveness and creating an environment for it are both priorities for a manager. This study from Google answers both.

Gateway Teams

How one gets introduced to the new environment largely determines their future performance. Organizations should pay extra attention to whom the newcomers meet in their first few months. The newcomers should also seek out the high-performers and learn from them.

The Seniority Roller[c]oaster

When one moves between companies, especially after an entry-level role, their title or compensation is not always transferred. That’s because the same titles in different teams will have different expectations. “Lead Engineer” could be a purely technical role or management role. The above-senior roles require deeper domain knowledge and relationships, which makes the hiring managers more conservative. The article has some good tips for dealing with disappointing down-leveling.

Rejected internal applicants twice as likely to quit

As a rejected internal applicant, this was an interesting study to read and reflect on.

Business 💸

S. Korea passes bill to curb sway of Google, Apple in app store fees

The South Korean government will force Google and Apple to allow alternative payment systems when the users purchase digital goods within the apps. This issue can get more complicated as this bill benefits Korean app developers at the expense of Apple and Google.

Young Reacts #142

I started having my farewell conversations with my colleagues. During those conversations, I’ve shared what I especially enjoyed working with them and asked for feedback. In general, I appreciated their vote of confidence that I will do well in my new role at Square.

In one conversation, I received the most positive feedback so far in my engineering career: I epitomized what it means to be a senior engineer as I went outside my teams and tackled the challenges faced by the larger organizations. I am very grateful for that kind word, but I also recognize that the environments had to be right to stretch myself like that. I needed access to the right opportunity and freedom to pursue my vision. When I join Square, I plan to create the same environment for my team and others to go beyond their immediate responsibilities and stretch themselves.

Software Engineering ⚙️

Focusing on What Matters: Using SLOs to Pursue User Happiness

I tend to blindly trust existing processes and policies at their face value, especially when new to the domain. So I appreciated this list of assumptions to double-check when a service failed its service-level objectives:

  • Was the error budget consumed by real failures?
  • Did we notice a number of false positives?
  • Maybe we need to reevaluate the metrics we’re collecting,
  • or perhaps we’re okay with setting a lower target goal because there are other targets that will be more important to our customers.

How Replicache Works

Our users increasingly expect our tools to allow real-time collaboration thanks to tools like Google Docs and Figma. How to implement real-time collaboration correctly is not straightforward. This library explains one possible implementation strategy.

People ❤️

Why don’t hiring managers give 3 of THEIR references to job candidates?

A reference check is one of those rarely done but important signals. Candidates are already at a significant disadvantage in terms of the information they can get about their hiring managers. The hiring managers should level the playground by sharing their references.

Business 💸

Apple makes App Store concessions to settle developer suit

A class-action lawsuit against Apple forced Apple to concede on multiple fronts: allowing direct communication between developers and customers, lower commissions for smaller developers, and so on. Whether the court will accept this proposal and how this settlement could affect the Apple-Epic lawsuit are to be seen.

Netflix and Video Games

An interesting analysis of what video games mean for Netflix. The point that the younger generations are playing more video games, which poses a significant threat to Netflix, was spot on.

Young Reacts #141

I am returning to my final weeks at Netflix after two weeks of vacation. As much as I wanted to do the job well when I was here, I want to leave well, too. I started jotting down a list of things to do:

  • Handoff ongoing project responsibilities and past knowledge
  • Reach out to people I worked closely with
  • Back up some of my presentations and documents
  • Draft a farewell email early and iterate
  • Figure out what to do with the company devices
  • (and probably more as I think this through…)

Software Engineering ⚙️

Shipping fast and safe: Building a culture of low-risk learning

An Intercom engineer shares techniques to move fast while de-risking changes. Two were new to me: Ship instrumentation first and Ship the “read” path first.

Announcing TypeScript 4.4 RC

I won’t be using Typescript for quite some time now, but I am still excited about the changes in this release. Especially, the improved control flow analysis and the new exact optional property types will be huge.

Choice Words about the Upcoming Deprecation of JavaScript Dialogs

Chrome tried to deprecate JavaScript Dialogs (the dialogs from alert() and confirm() methods). It broke quite a few websites and surprised many. The community pushed back, and the deprecation is now postponed but still planned to go ahead. Has Chrome become too big for the internet?

Business 💸

Google considers switching FLoC to a topic-based approach, as exec acknowledges cookie replacement has fingerprinting potential

Federated Learning of Cohorts, or FLoC, is Google’s proposed alternative to the soon-to-be third-party cookies. However, several researchers and companies have confirmed that the assigned cohorts are too granular to protect users’ privacy. So Google is now contemplating a switch to a more coarse topic-based approach.

The Epic v. Google lawsuit finally makes sense

The Verge goes into various tactics Google employed to dissuade Epic from building its own app store. When Google Play comes preinstalled on all Android devices, only a few will bother to side-load another app store. That Android technically allows side-loading doesn’t make the platform open.

Young Reacts #140

Interviewing for a job is stressful but negotiating for the offer is even more so for me. That’s because I am not used to discussing money openly. During the negotiation, I kept telling myself that neither the employer nor I want me to accept an offer I don’t feel was fair. That feeling of leaving something on the table could turn into resentment quickly.

So I asked for more in a short email (it took me about 30 minutes to write) and got a sizable increase in my equity package. The discomfort from negotiating fades quickly, but the consequence lives long.

Photo by Scott Graham on Unsplash

Software Engineering ⚙️

The Alternative to Roadmaps

When there are interdependencies, roadmaps align teams towards common goals and timelines. At the same time, I’ve seen many cases where my teams’ work based on the roadmap didn’t actually deliver the results. How do we provide the space for iterations while we hold ourselves accountable to other stakeholders?

How We Design Our APIs at Slack

Building a public API is a whole different ballgame than building a private API. One needs to be far more careful about breaking changes and provide more consistency and visibility. As the choices will stay for a long time, more planning and testing are required.

What’s new in GraphQL-Codegen v2?

GraphQL-Codegen v2 is almost here. The Guild has created and shepherds many JS GraphQL tools, but GraphQL-Codegen probably is the most important. The most notable feature is the gql-tag-operations plugin, which works like Babel macros.

People ❤️

Job burnout: How to spot it and take action

I had a conversation with a colleague recently about feeling stuck and having trouble concentrating. After reading this list of burnout symptoms from Mayo Clinic, I believe I am experiencing burnout. Have a look and take some action if necessary.

Why Don’t Tech Companies Pay Their Engineers to Stay?

I agree with the author that companies should match the impact of their employees regardless of their current salary. But I disagree that a longer tenure equals a larger impact. The tenured could lose enthusiasm and go on autopilot, and the fresh eyes could come up with creative solutions.

How To Measure Data Engineering Teams

Quantifying an engineering team’s performance will always be difficult. Still, this article gave me an idea: one set of metrics to track the quality of service (uptime, error rates, etc.) and another set of metrics to track the effectiveness of new feature work. These metrics then can be fed into this resourcing framework.

Business 💸

A look at Americans’ return to workplaces

Envoy, the company that does B2B building access management, published the statistics on how people return to the office.