Young Reacts #153

The reorg had finally happened last Friday. The team memberships are finalized, old meetings canceled, and new ones set up. We still need to tackle issues such as splitting shared responsibilities across the teams. But I am glad that we pulled the trigger. The three-week-long limbo put a lot of stress on the engineers. Now, we can look towards the future.


Software Engineering ⚙️

TC39 proposal for chaining errors

Though I don’t code Javascript anymore, I am still excited about the proposal. It will make error handling far more convenient in Javascript.

Benchling’s double-writes approach to incrementally adopting GraphQL

TheI’velity to find and follow a gradual migration path is the org’s bread and butter of software engineering. This article is a perfect example in a large web application.

People ❤️

On Direction ‘Versus’ Empowerment

Over the last few weeks, I’ve been a bit frustrated that my org’s leaders mandated decisions that I felt the individual teams should own. Reading this article made me realize that different circumstances call for different types of leadership. Still, I should share my frustration with my manager.

How to Create an Individual Development Plan

The growth conversations in my org revolve around upcoming promotions. Managers at Square often use the promotion packet template to track their reports’ progress. That helps prepare for the next promotion cycle, but there is a significant gap: the promotion packet template doesn’t track our growth outside Square’s definition of progress. Therefore, the internal training team recommended creating a development plan for everyone on the team, and I intend to do so.

Why The Status Quo Is So Hard To Change In Engineering Teams

“Learned helplessness” is a powerful concept that I learned from this article. I’ve seen many engineers overlook problems because “that’s just how it is.”

Cool stuff 😎

To the brain, reading computer code is not the same as reading language

I used to say that we should write code as if we were writing prose. This research debunked that. But apparently, it’s not like math either:

Understanding computer code seems to be its own thing. It’s not the same as language, and it’s not the same as math and logic.

Young Reacts #151

A lot has happened to last week. My wife and I adopted a cat we’ve been fostering; we finally got a couch we ordered eight months ago; I got a new Pixel 6 Pro. On top of them, my org still is going through changes. So I had been quite overwhlemed last week. I hope to get a bit more grounded this coming week.


Software Engineering ⚙️

GraphQL 2021

GraphQL October 2021 spec is now available. It is a significant milestone for the GraphQL community because this release is the first after GraphQL ownership was transferred to the GraphQL foundation from Facebook.

Hotwire: HTML over Wire

Even though I do not personally like Rails, I value its focus on developer productivity and unconventional philosophy. Basecamp, led by the creator of Rails, created a web framework that also departed from the conventional wisdom of single-page applications. Instead of using JSON to communicate with the server, a Hotwire application uses server-rendered HTML.

A developer’s guide to programatically overcome fear of failure

Failure is part of our learning journey. The key is to ensure that we learn everything we can from each failure.

Deploying SwiftUI on the Web

WASM enables iOS engineers to create a web app with Swift.

People ❤️

How Guilds Promote the Exchange of Technical Ideas & Best Practices Within Bloomberg Engineering

When teams are organized by product areas, it becomes more difficult for engineers to learn from each other as fewer engineers of the same discipline are in the same team. That’s when the guild system comes in.

Capitalizing on Clarity

I am hosting a workshop for my team to define our team charter this week. This guide suggests that the session should allow individuals to develop their answers before discussing as a group, and I like that it would give more voice to the less vocal members of the team.

Business 💸

Founder’s Letter, 2021

Facebook changes its name to Meta and redefines its vision to enable the metaverse:

Our hope is that within the next decade, the metaverse will reach a billion people, host hundreds of billions of dollars of digital commerce, and support jobs for millions of creators and developers.

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 #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.

Young Reacts #137

My wife and I started fostering a dog last week. We had to adjust to living with this little boy. But it felt good to look after something that needs my help. I started feeling quite a bit more positive over the last couple of days. I wouldn’t say fostering is for everyone, but I’d suggest looking for some purpose bigger than oneself.


Software Engineering ⚙️

Introducing Envelop – The GraphQL Plugin System

This is a cool idea from The Guild. I am excited that this plugin approach allows developers to adopt new features without waiting for the framework owners to support them as Babel does.

The Latest Ref Pattern in React

We don’t want to use useState because we don’t need to trigger a component re-render when we update to the latest value.

When I read this, I immediately thought of the infinite loop I created because I used useState instead of useRef 🤦🏻‍♂️

at method for relative indexing

The “at” method is an alternative for the “indexOf” method on an array. This new method understands negative indexes such as “-1,” making it simpler to get elements near the end. This feature is available on the latest Chrome (92) and Firefox (90).

People ❤️

The Activision Blizzard Lawsuit Fallout Is What Women Have Been Saying All Along

This recurring sexism in the game industry showcases how difficult it is to fix cultural issues. Press releases and public apologies won’t fix them. That makes me reconsider the companies I am talking to with checkered pasts.

The Case for Location-Independent Salaries

I’ve seen many employees argue for location-independent salaries. But this is the first time I’ve seen such a founder. I appreciate that the founder aligned the company’s compensation policy with its mission. If you wonder how much the company pays, check out its job posts.

Beat the bystander effect with minimal social pressure

When my team needs to find the owner for the next steps, I usually take them myself as I don’t like unowned tasks and feel awkward asking others to do the work. “Being clear that “no” is a fine response” is the neat trick I’ve been missing.

Business 💸

Visual guide to the best books on product management

A list of interesting books on product management. I’ve read a few on this list. Because I don’t have a great memory, I usually summarize my takeaways in one sentence per book:

  • Crossing the chasm: your customer profiles change as you go from early adopters to the mass market.
  • The Lean Startup: Build-Measure-Learn-Repeat
  • Escaping the build trap: a collection of useful tactical PM tips
  • Measure What Matters: A good reference for when you implement OKR

Young Reacts #134

As I talk to different teams about their management roles, I realize that I haven’t actually interviewed for a manager role before. I underestimated the amount of preparation and failed to present myself in the clearest and best way. In fact, I’ve received one feedback saying I should have prepared more. There weren’t that many resources available online, but I found one at Exponent and will give that a go.


Software Engineering ⚙️

GitHub Copilot

GitHub announced a VS Code extension that could produce simple functions based on the context. The webpage sure looks impressive. But I don’t have access, so I do not know if it works well yet. Even if it does, I wonder if it has a risk of leaking the proprietary code to the outside.

Is WebAssembly magic performance pixie dust?

This article shattered my misconception that WebAssembly will always make things faster than Javascript. No, WebAssembly may be able to do so in the future, but V8 is already very good at running Javascript fast.

Collecting GraphQL Live Query Resource Identifier with GraphQL Tools

I liked how the author solved eventing by wrapping GraphQL resolvers with common data registration. I wonder how to scale if the number of live queries grows too big.

People ❤️

Dealing with Disappointment

Putting myself out there has the potential to disappoint. I heard from my top-choice role that they wouldn’t move forward with me. It hurt then and still does. But as the article says, “although disappointment is inevitable, being discouraged is always a choice.”

Business 💸

Exclusive: New LinkedIn Data Leak Leaves 700 Million Users Exposed

LinkedIn allowed a malicious actor to scrape data off of its API. While LinkedIn asserts that it’s technically not a breach, it still doesn’t put my mind at ease.

Slopes Diaries #40: The Droid (Stats) You’re Looking For

No explicit takeaways, but I liked reading an indie developer’s experience releasing an Android port of their iOS app.

Young Reacts #132

Thanks to all the new online services such as Netflix, DoorDash, and Amazon Fresh, I almost forget how challenging the real world can be (especially so, if I don’t read the news). When we moved yesterday, I was reminded that there are still tough, physical challenges. As we were unpacking and putting stuff away, I kept thinking, “I wish life could be like Sims and I could just drag and drop stuff.” But boxes had to be opened, and stuff has to be put in place. This is why the metaverse concept is so enticing to me, a world without real constraints.

Photo by Michal Balog on Unsplash

Software Engineering ⚙️

Announcing GraphCDN, the CDN for GraphQL APIs

People criticize GraphQL that GraphQL queries are difficult to cache via HTTP. GraphCDN is an answer to that criticism that uses edge computing to cache the query responses. Impressive!

Scaling relational SQL databases

When I talk to companies for a manager position, some companies ask me to go through technical rounds, which makes sense since they expect their manager to lead technically. However, backend system design is not part of my day job, so I started reading more about backend topics such as databases. My takeaway from reading this article: performance tuning, vertical scaling, replicas, or sharding.

An Unbelievable Demo

Not strictly software-related, but it is a horrible story about how big corporations can be oblivious about the IP. I won’t spoil it for you.

People ❤️

The Return of the Office

Not everyone wants to return to the office. The article discusses the dichotomy between managers and frontline workers. While that dichotomy makes sense, I suspect that other socio-economic factors influence people’s opinions. Regardless, we should show empathy for our colleagues.

People Show Support for Interns after HBO Max Email Snafu

An intern at HBO Max inadvertently sent testing emails to real customers. Then lots of people jumped to share their screwups from their earlier days. That’s amazing, but we also need to admit that the more “senior” professionals still screw up every day. “To make mistakes is human.

Business 💸

Google is using AI to design its next generation of AI chips more quickly than humans can

We are one step closer to singularity.

Young Reacts #131

This Tuesday (June 15), California will “open up…business as usual.” The state government won’t enforce mask mandates or capacity reductions. It will be such a relief after long 15 months. I only hope that this relief isn’t short-lived.

Photo by Mike Petrucci on Unsplash

Software Engineering ⚙️

The Plan for React 18

React 18 is now in the works and looks like it will be released soonish (they say several months). I am glad that they plan to provide a backward-compatible upgrade path—that has been the best feature of React. Of the mentioned features in the announcement, I particularly look forward to startTransition.

Best Practices for Designing Federated GraphQL Schemas 🎞️

A good list of things to keep in mind when working with a federated GraphQL schema. I would emphasize that following the guidelines in practice is where the real work is, especially with this one “Prioritize client needs, but not just one client’s needs.” (at 13:25 mark).

People ❤️

How to Feel Progress

My anti-pattern at work is that I seek quick wins and get impatient with “slow” progress. Some types of meaningful work are possible with such an attitude, but most require persistence and long-term vision. This article made me realize that estimating the required effort and the timeline is key to moderate my impatience.

From Listening Tour to State of the Union

When I came up with a vision for how authorization should work at Netflix Studio, I learned that a vision doesn’t get created in a vacuum; I gathered information with ad-hoc 1:1s, surveys, and focus groups. Only after understanding different points of view across the org, was I able to create a compelling, meaningful vision. As mentioned in the article, one technique I found especially useful was asking whom else to talk to at the end of the 1:1s. This article suggests other helpful tactics, as well.

Tag-ups

Occasionally I find some topics not useful for team-wide meetings but aren’t well covered by 1:1 meetings. A tag-up is a project-specific meeting that gets the right set of people together regularly. I will turn some of my 1:1s into this format.

Business 💸

Y Combinator entrepreneurs say they were kicked out of the accelerator for criticizing its founders and slamming efforts to skip vaccine lines

Incidents like this slowly make me lose faith in the mainstream Silicon Valley startup scene. This isn’t the first time top VCs reacted poorly to criticisms. If you are that rich and powerful, you can’t pretend to be a victim of media and Twitter.

Young Reacts #130

My wife started her summer internship last week. I was excited about her getting real work experience as a UX researcher. But I was also nervous for her because the introductory period could be scary and stressful. But thanks to her caring mentor, who actually spends time providing the context and listening to her questions, she is adjusting without much trouble. He provided a detailed plan for the summer in advance and checks in with her at the end of every workday. I am thankful for what he does to help my wife succeed and want to replicate the kindness for others in the future.

Photo by Jessica Lewis on Unsplash

Software Engineering ⚙️

15 Things You Should Know About Product Managers

This article made me empathize with product managers more deeply. All of us engineers work with product managers one way or another, so maintaining a productive relationship is key to our own success. Let’s not set our partner up to fail.

The case against normalized caching in GraphQL

I agree with the author that rich GraphQL clients force UI developers to know too much about the domain. But I don’t agree with the author’s solution to use browser caching. In an enterprise environment, GraphQL subscriptions enable the UI to react to data changes correctly and promptly.

Introducing Handsfree.js

This library enables JS apps to understand hand gestures, facial expressions, and poses. It’s impressive what Javascript can do these days.

People ❤️

I Want to Hire Someone My Team Said No to on the Debrief: Ask the EM

Even though most companies are not democracies and decisions are to be made by certain individuals, relationships and trust are important. To keep the hard-earned trust, try understanding where differences come from. Disagreements are signs of possible misalignment.

Surviving IDEO

Bad culture hurts real people and turns the abused into abusers. This is a story of ex-IDEO employees.

Inclusion and diversity matter

Snowflake and Medium are among the latest companies to get publicly hammered on I&D issues. I get that most executives do not have the background to navigate the complex inclusion issues at work. But these issues create serious retention and hiring problems, so they better figure this out soon.

Business 💸

Colorado Excluded

Colorado started requiring all job postings for Coloradans to contain salary ranges. To avoid noting their salary range, some companies decided to exclude Coloradans from their candidate pool. For example, one Twitter job posting says, “Roles listing ‘Remote US’ as a location are not currently available in the following states: Colorado, Iowa, and Louisiana.”