Young Reacts #123 – The Discovery Problem in Your Career

My wife and I got our first COVID vaccine shots last week, and I got very emotional. I finally see the light at the end of the tunnel. I pray that the light doesn’t fade due to a variant or a bad policy. Stay safe and sane through this last stretch.


People ❤️

The Discovery Problem in Your Career

“If a tree falls in a forest and no one is around to hear it, does it make a sound?” In a corporate setting, I don’t think it does. Our work needs to be understood and built upon to make an impact. Even if we feel uncomfortable, we need to promote our work.

How to take good meeting notes

In a similar vein as the article above, we need to make sure the decisions in our meetings not get lost. The way to do that is to take notes and share them widely. Plus, the notes will become more important as we shift towards remote work. The post is a good step-by-step guide for note-taking.

From Vision to Values: The Importance of Defining Your Core

Without a strong vision, it’s easy to get pulled in many directions with nothing to show for after years of work. I am seeing that at work, so I am pushing us to define what we want to be in 3 years.

Customer Inspired; Technology Enabled

I used to believe that product managers own why and what, and engineers own how. That tended to make me give lots of feedback to proposed projects but not propose ideas myself. This post asserts that product managers should provide constraints, not requirements, and leave what to engineers.

Business 💸

Introducing OpenSearch

AWS renames its fork of ElasticSearch to OpenSearch. It will rename its hosted service to Amazon OpenSearch as well. This feels like a big middle finger to ElasticSearch. In the midst of this, are ElasticSearch users and its open-source community winning?

Federal investigators looking into breach at software code testing company Codecov

Hackers hacked into a SaaS vendor to access its customers’ credentials. Considering that code testing usually happens in an isolated environment, I don’t think the impact will be high. Regardless, it’s a good reminder that every layer of our software stack is a potential vulnerability.

Young Reacts #122 – Return to the office

Netflix has announced that most of us will be expected to be back in the office after September 6. We finally see the light at the end of the tunnel.

An interesting fact: during the pandemic, my team has become much more distributed. Before the office closed, only one worked out of LA, and the other eight were in Silicon Valley. When we return to the office, only two will be in the Valley, and the others will be in LA, Georgia, and Canada. We are even hiring in Mexico City. I doubt I need to be in the office at all.

Photo by Dane Deaner on Unsplash

Software Engineering ⚙️

Eagerly discerning, discerningly eager

I’ve been working on an internal API and gotten contradictory feedback at times. This article clarified why. An API needs to serve two types of developer users: those eager to solve their problems and move on and those who want to dig deep.

Sending gifts to future-you

I shared this article before, but I read it once again as my organization is updating our strategy bets for the next couple of years. It will be important to have a forward-looking perspective.

Announcing TypeScript 4.3 Beta

Like a clockwork, Typescript 4.3 is here. I like these quality-of-life improvements: @link tags for better documentation, an explicit override check, and #private methods.

People ❤️

Cut down on reports with the 5-15 method

A 5-15 method is to write a weekly report that takes less than 5 minutes to read and less than 15 minutes to write. It discusses wins, roadblocks, and plans. This looks like a lightweight tool to share more context with my colleagues.

Some rough notes on running learning circles.

I used to run a learning circle three years ago where I met the most interesting people in the industry and learned to articulate my thinking clearly. I’ve been thirsty for that kind of opportunity and am thinking of starting a new one in my organization.

Business 💸

Google’s FLoC Is a Terrible Idea

I researched more about FLoC I shared last week and found this scathing criticism from The Electronic Frontier Foundation (EFF). The EFF points out that FLoC will aid fingerprinting, expose more information to websites than a user needs, and opaque ad targeting.

Supreme Court sides with Google in Oracle’s API copyright case

This old lawsuit over Android’s use of Java API was finally concluded this week with Google’s win. This lawsuit paves a clear path for businesses such as Amazon’s DocumentDB (which maintains API compatibility with MongoDB).

Young Reacts #121 – My 360 Feedback

I had gotten feedback from six people last week, and I’d like to share them here and what I plan to do about them.

The positive feedbacks:

  • I care about business goals and provide valuable feedback on our projects to meet the goals.
  • I maintain strong relationships with partners. My partners trust me to deliver what I committed.
  • I bring new technical ideas from my participation in working groups.
  • I promote the voices of the newer and the less vocal colleagues.
  • I reflect on my work often and make necessary adjustments.

The constructive feedbacks:

  • Pursue more opportunities to share ideas and lead in our product domain. Two shared this feedback. I provide plenty of feedback on others’ ideas, but I don’t proactively develop new ideas.
  • Better communicate what I am working on. As I spend more time on working groups, I’ve failed to communicate my lower bandwidth to my product partners.
  • Pay more attention to the details and the user flow. I see this related to the above feedback. I’ve rushed features as I have less time, and it shows.

I haven’t talked to my manager about all this feedback, but here are my current takeaways:

  • I’ve leaned heavily into engineering-focused projects, such as feature flags, so far. I should start focusing more on my product domains and suggesting new projects (say, implement a no-code tool for admin tools).
  • My partners have been very supportive of my “extracurriculars.” So when I don’t have time for that, I need to say so. Once we hire a new engineer for my squad, this conversation will get easier.
  • Keep being empathetic and introspective. Maintaining my emotional capacity will be key.

Software Engineering ⚙️

Announcing the Deno Company

Deno, an alternative server-side Javascript runtime, has received funding and formed a company. The announcement snipes at the Node Foundation and then shares its vision for web-first abstraction layers, where web developers can reuse their skills in other domains.

GraphQL Mesh

GraphQL Mesh is a library that automatically generates a working GraphQL API based on other strongly typed APIs such as gRPC. It’s not just GraphQL Mesh; many tools try to solve the pain point. But I am a huge skeptic. The main benefit of GraphQL is in providing an excellent client developer experience, and these tools seem to optimize for the wrong audience, the graph producers.

The Complete Guide to useRef() and Refs in React

I wasn’t aware that updating a reference doesn’t trigger a component re-rendering. That one nugget was worth my time reading the article.

Business 💸

Implications for cookiepocalypse

The situation is complicated and fascinating.

Third-party cookies have been used to track users across websites, but they will be sunset next year on Chrome (other browsers already blocked them). This change, known as cookiepocalypse, has pushed the Adtech industry to start “fingerprinting” users with other signals and store the user identities on their ends, not on users’ devices. Users won’t have any control over their identity at this point. So Google is coming up with a new, less bad solution called FLoCing, which has its own privacy and business concerns.

More companies announce the office reopenings.

More than 25% of the US population are fully vaccinated, and more companies announce reopening plans. Amazon, Microsoft, and Google will eventually require everyone to be back in the office.

Young Reacts #120 – 360 Time!

After the canceled 360 last year due to the pandemic, I am now going through 360 at Netflix for the first time. 360 is a process where you are invited to give feedback to whoever at the company. I could give feedback to our CEO if I wanted to. The process is overhauled this year, from written feedback to verbal and from once a year to twice a year. The goal of the overhaul is to help people get more accustomed to giving feedback to each other.

I am relieved that feedback is to be given verbally; I am not confident that I can write feedback in such a way that there is no way for miscommunication. I am planning to give feedback to 5 people this cycle and I believe I am receiving it from 3 people. Some get anxious yet I am mildly excited to hear the feedback. As the saying goes, feedback is a gift.

Photo by Jess Bailey on Unsplash

Software Engineering ⚙️

Comparing Svelte and React

I am not sure about the other points, but I agree that useEffect and other hooks with dependenciesare headaches. It’s not easy to keep the dependency list in sync with the logic manually. But it doesn’t look easier with Svelte either. Regardless, it was interesting to compare React and Svelte components line-by-line.

Error Cause in JavaScript

There has been no good practice on how to handle an error from subsystems. Error Cause, a Stage 3 proposal for Javascript, enables chaining errors to expose the underlying errors properly. The proposal will improve error reporting significantly.

People ❤️

Situation-Behavior-Impact framework for feedback

Netflix hasn’t mandated the feedback framework for 360, so I chose this Situation-Behavior-Impact framework. It boils down to:

  1. Describe the specific situation in which the behavior occurred.
  2. Describe the actual, observable behavior.
  3. Describe the results of the behavior.

This framework should stop me from accidentally making character judgments.

Article Link

The Art of the Awkward 1:1

This blog was great to read after reading Things your manager might not know. It’s reinforced my courage to bring up uncomfortable topics like our tendency to hire external candidates for managers.

Business 💸

Facebook and Uber set reopening dates.

Uber plans to open its San Francisco office today (March 29) and Facebook to open its Menlo Park HQ on May 10. The general public is so close to getting vaccines (April 15 in California), and I worry that we are opening a little too fast.

Article Link

Young Reacts #119 – One metric cannot represent engineering productivity

One perk of working at a large tech company is our people’s network at other companies. A director invited me to a meeting between Netflix and Twitter about how the two companies use GraphQL. There were about 20 engineers from both companies—including a Twitter engineer whose blog posts I read many times! I initially expected to sit silently and observe, but I was asked the first question, so I even spoke for a few minutes. It might not have been exciting for those who give talks regularly or have large professional networks, but I got very excited.

After the meeting, I found out that we had similar engagements with Coursera and Atlassian and watched the recordings. It was eye-opening to see that the challenges we’ve seen internally, such as GraphQL schema governance, microservice migrations, and the federated Gateway’s responsibility, are universal. It was a big validation that my work is applicable more broadly. I am now thinking about writing a blog post on schema governance with my working group.


Software Engineering ⚙️

One metric cannot represent engineering productivity

Managers or executives often look for one true metric to track an engineering team’s performance. However, any single metric will be gamed or explained away. So it is important to measure holistically and find balance. For example, not only do we need to look at the completed story points, but also the business KPIs. (Link to the paper, The SPACE of Developer Productivity)

Yalc – Better workflow than npm | yarn link for package authors

I used to find working on libraries annoying as I could not test the changes quickly. I published beta versions like “0.9.0-beta.7” and pulled them into my main app. But it had two problems: the releases made the feedback cycle slow and polluted the package repository with broken versions. Not anymore with Yalc. I can now test my changes locally with “yalc publish” and “yalc add.”

Codetour

When I showcase my code to other engineers, my explanation often becomes confusing as I jump through different files. Codetour is a Visual Studio Code extension from Microsoft that can record markdowns with specific lines of code so that I can share in a reusable and coherent way.

People ❤️

Things your manager might not know

The ability to have a meaningful conversation with your manager is a superpower, yet I am not good at it. I am fine chitchatting with my manager for 30 min every week. But it’s been hard for me to discuss what matters. Julia Evans shares some great tips in this article.

Business 💸

Dark patterns are banned in California

Dark patterns are “tricks used in websites and apps that make you do things that you didn’t mean to.” We run into them everywhere, most recently Clubhouse. But I’ve been skeptical about regulation efforts since it’s difficult to describe design issues in writing. On the contrary, the updated text looks clear enough to give me hope. (Link to The Verge article)

Reflections & Lessons Learned from Roblox, After More Than a Decade of Partnership

I was surprised to learn that Roblox was founded 18 years ago, considering that its game is a leading example of the metaverse concept. Surely, a great story for both the founder and the investors. But the skeptical part of me wonders how the IPO turned out for the early employees.

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.