Young Reacts #92 – Remote pay tradeoff

Silicon Valley companies are having debates about remote work. Not only is there a question of whether to go remote-first or not, but there is also one of whether to adjust pay. Teams have to think through three angles:

  • Should they be paid according to their contributions to the company, which may not change meaningfully based on their locations of work?
  • Should there be an adjustment based on cost-of-living so that employees don’t feel more incentivized to work remotely?
  • Should there be an adjustment based on cost-of-labor so that employers can pay competitively across different labor markets?

I find them all valid perspectives to have, which makes the debates all the more difficult.

And there is an issue of reliable data availability. Industry-specific cost-of-labor data are sparse in non-tech hubs. While changing compensation policies is tricky, the companies should get ready to learn and adjust their systems as their first tries at the problem play out in the talent market.

Photo by Christine Roy on Unsplash


Software Engineering ⚙️

We need more inclusive web performance metrics – Scott Jehl

The typical web performance metrics do not answer vital accessibility questions such as:

  • When and how are accessibility trees built and exposed?
  • Does client-side javascript block executions of assistive technologies?

Avoid Export Default – TypeScript Deep Dive

I’ve instinctively avoided default exports in Typescript. But it is nice to see the drawbacks listed. To me, the most significant pain points are the lack of autocomplete and typo protections.

People ❤️

How I operated as a Staff engineer at Heroku – Amy Unger

If one stays at the same place long enough to operate at the Staff level, it’d be easy to accept the status quo—because they are the status quo. Amy suggests that old-timers should “invest in meeting new folks as a counterbalance.” I agree 100% and took a note of it to follow through.

Every Public Engineering Career Ladder – Shawn Wang

This collection of career ladders would have been useful in my previous role. I thought I’d share for those who influence their teams’ career tracks.

Business 💸

Xbox All Access seems like one of the best deals in gaming – Ars Technica

Xbox All Access is an enticing proposition for which I would seriously consider signing up. Rather than competing with Sony on Sony’s turf, Microsoft leverages its investment in the cloud infrastructure and creates a new axis to compete—subscription and streaming games. A lot of transactional consumer products and experiences now are subscribable.

Young Reacts #90 – npm v7 beta

A few days ago, a college student asked me if there is anything I wish I learned sooner in my career. I thought I’d share my answer here too! 🙂

  1. I am solely responsible for my career. I need to keep learning and looking for new growth opportunities. Sometimes take new responsibilities opportunistically.
  2. I need to be able to look at myself in the mirror. That means empathy, inclusion, honesty, and integrity.
  3. Everyone will go through ups and downs at some point, so cut some slack. I will need it too.
  4. I don’t need to know/understand everything. While that is valuable, it is impossible. I need to let go and trust others to fill the gap.
  5. Be skeptical with higher-ups (especially the executives). If the upside (say, the company is getting sold) is big enough, they will screw me.
  6. My network matters. I am not good at expanding, let alone maintaining it. But my few connections already have opened up opportunities (including Netflix).
  7. Any feedback is powerful. But a positive, specific, actionable feedback is far more powerful because all top performers are different.

Software Engineering ⚙️

npm v7 Series – Beta Release! And: SemVer-Major Changes in npm v7 – npm

I just found out about this release from two weeks ago. I am excited by this news since npm will soon support monorepos. I am using yarn for them at work, but don’t want to upgrade to yarn 2 since it has departed radically from the package.json format I am used to.

Dear Google Cloud: Your Deprecation Policy is Killing You – Steve Yegge

How Google Cloud treats its customers makes me look back at how I am served by and serve other teams and platforms. The customer-oriented mindset that Amazon is famous for applies to my work, too— whether I am serving external or internal customers.

What’s a reference in Rust? – Julia Evans

I am having a rough time learning Rust, especially how to handle strings (Javascript was so much simpler!). But I understand them a little bit better now thanks to Julia’s explanation that a reference can point to the heap, the stack, or the data segment of your program.

People ❤️

Our remote work future is going to suck – Sean Blanda

A lot of us in the Silicon Valley buy that remote working is a good thing. However, if your company figures that an engineer in South Korea can do 80% of your job for 30-50% of your Silicon Valley (or in remote companies, Tier 1) salary, will it still employ you? I am not sure about mine.

I do believe that the remote work will provide opportunities for people outside the Valley. But under the current system, it will just pit every worker against another on a global scale.

Business 💸

Pinterest cancels huge SF office lease in unbuilt project, citing work-from-home shift – San Francisco Chronicle

Many people talked about how work from home will upend Silicon Valley’s commercial real estate. This announcement reads like the beginning of the upending.

Open letter to Australians – Google

Australians proposed a rule “to allow news media businesses to bargain individually or collectively with Google and Facebook over payment for the inclusion of news on their services” along with several other restrictions over the search and recommendation algorithms. I am not sure how this will pan out. Won’t Google and Facebook just cut mainstream news and surface more fringe media?

Young React #81 – Being Responsible For Other Lives

My wife and I decided to foster two kittens for the next five weeks. We didn’t make the decision lightly. But as we drove home with the kittens, it dawned on me that this would be the first time I am responsible for other lives.

Since fostering is short, it is not the same as adopting pets, or, much less, having kids. Nonetheless, I feel the pressure and responsibility. I have to feed them regularly, give them medications, and socialize them so that they will find a caring permanent home. To fulfill their needs, I had to adjust some of my routines and tolerate getting disturbed while working.

After a few days, I realize I never fully understood what working parents struggle with: new priorities, daily distractions, and energy drain. I knew it with my head but never felt it myself. This is another reminder that genuine empathy is hard without actually experiencing something similar.

Meet Jelly and Boba 🐈❤️


Software Engineering 🌐

Announcing TypeScript 4.0 Beta – Daniel Rosenwasser

Even though the major version changed from 3 to 4, there are no significant breaking changes. There are additions to type systems like variadic tuple types and labeled tuple elements, and developer experience improvements. I especially look forward to partial editing mode since my project already takes too long to start up.

Variadic tuple types – Anders Hejlsberg

If you were intimidated by the term “variadic tuple types,” I was, too. This PR to Typescript goes deep into what variadic tuple types are, and how it will work in Typescript. In short,

A variadic element is a spread element of the form …T, where T is a generic type constrained to any array or tuple type (specifically, any type that is assignable to readonly any[]).

People ❤

Written communication is remote work super power – Snir David

We need to consider several factors when we think about asynchronous communication: first, the purpose: are we transferring knowledge or creating new? Second, the scope: are we communicating within or without our team? Third, the feasibility: can our team meet synchronously? Depending on the answers, synchronous communication will be preferable. But I agree with the article that we need to choose asynchronous communication more than we currently do.

Reflections on Being a Female Founder – Tracy Young

Before joining Netflix, I had an offer from PlanGrid, the company she founded. So I watched her TechCrunch interview from 2015, in which she disappointed with her lack of gender sensitivity. I love that she courageously, and publicly admits her faults, and shares her learnings.

Business 💸

The Global AI Talent Tracker – MacroPolo

A quantitative argument for allowing more mobility across borders with a beautiful visualization. More relevant now than ever, in the light of the US ban on working visas.

I just hit $100,000/yr on GitHub Sponsors 🎉 – Caleb Porzio

This article is a cool story of how a freelancing developer grew his Github Sponsorship. Most of the sponsorship came from private videos, which means his value proposition was more similar to a paid newsletter or a paid podcast than Patreon.

Good Questions, Real Answers: How Does Facebook Use Machine Learning to Deliver Ads? – Facebook

A short but helpful article on how Facebook’s programmatic ad bidding works.


Young React #78 – UI Library with builtin Web Workers, Vue 3 with compile-time optimizations

I am feeling certain powerlessness being a foreigner. While the events around you impact you, you can’t enact changes.


Software Engineering 🌐

neo.mjs concepts – neo.mjs

This UI library is the only library I know that uses Web Workers to boost its performance. More specifically, it has three workers to handle app logic, data fetching, and virtual dom reconciliation, with main thread handling event fetching and DOM manipulation. I like the idea of using Web Workers very much, but its API is too different for widespread adoption anytime soon (not sure if its JSON template is a good idea). Also, the popular UI libraries are often fast enough.

Solid: A declarative, efficient, and flexible JavaScript library for building user interfaces – Ryan Carniato

Solid is a compile-time UI library, similar to Svelte. It also uses Proxy to figure out dependencies in its state instead of requiring explicit dependencies like React. I appreciate that it uses JSX syntax and has APIs similar to React’s.

The process: Making Vue 3 – Evan You

Vue 3 is also adding compile-time optimizations to improve performance, among other changes. This change made me think that React or Vue will survive and embrace new techniques like compile-time tooling and Web Workers, spurred by the new generation of UI libraries.

Changes to How We Manage DefinitelyTyped – Orta Therox

DefinitelyTyped is core to the Typescript ecosystem. But it is a weird, unwieldy repository from which thousands of npm libraries are published. Microsoft is improving how the repository is managed, and this is the kind of synergy I hoped to see with Microsoft owning both Github and npm.

People ❤

Stripe’s remote engineering hub, one year in – Stripe

This article is Stripe’s retrospective on its experiment with a remote engineering group. The key learning is that “moving multiple remote engineers simultaneously onto a team has yielded much better results for their productivity and happiness.” On the contrary, when my team had one remote engineer last year, we bungled that up. We kept talking about the “productivity tax” of having that one remote engineer, which put the onus on him to adapt. That mindset, unfortunately, didn’t work.

Business 💸

Reddit, and Facebook pondering changes to their moderation policies

Both companies are under immense pressure (Facebook employee walkout, Reddit co-founder’s resignation) to proactively deal with hate speeches, false information, and anything alike. As I said before, dealing with user-generated content is a lose-lose proposition.

Dust in the Light – Ben Thompson

On a related note, Ben Thompson here argues that the internet merely exposes reality by reducing friction to disseminate information.


Young Reacts #76 – Is Your Culture Too Nice?

My org decided to take last Thursday and Friday off to make the long week (it’s Memorial weekend in the U.S.) even longer. I have been working hard on my current project, and I desperately needed the break. Though I wish I were able to finish the project before the break, I am glad we have this.

The off days feel different when your entire team is off. As I know no one else is working, I don’t feel FOMO (fear of missing out). I still thought about work on Thursday but my mind was no longer preoccupied with work and truly recharge by Friday. I am fortunate that the leadership at the company values proper recovery, and puts these day-offs in place.

If you see your team suffer from prolonged work from home, try taking a day off together.

Photo by Drew Coffman on Unsplash


Software Engineering 🌐

Product for Internal Platforms – Camille Fournier

As I work on tools for internal users, I see the similar problems listed here as well. Our user base is too small to get meaningful metrics, and our tool is often the only way to do the work. That makes it hard to see if we are truly meeting our users’ needs, which means we need to put extra effort to listen to our users.

I also appreciate the reminder to think about the migration strategies early. When our stakeholders already keep all their data in Google Sheets or Airtable, data migration becomes a real hurdle for adoption.

Visual Studio Live Share Extension – Microsoft

When I pair programmed over Google Meet, my eyes started hurting after an hour since the code on the shared screen was barely legible. Instead of sending pixels over the wire, this extension just syncs your and your partner’s VS Code together. It is just as revolutionary as Figma for remote working sessions.

Responsively – Manoj Vivek

Without proper tooling, a responsive layout often becomes an afterthought. This tool will help with that. If you would like more support, there is a commercial app that solves the same problem as well.

Image

People

Is Your Culture Too Nice? – Ron Ashkenas

My worst failure mode is conflict avoidance. I have made a habit of giving positive feedback, but I still shy away from speaking personal, constructive feedback to my colleagues. With this advice, “start the conversation by saying that you are trying to get better at dealing with conflict situations,” I hope to get better at confronting issues.

More Silicon Valley Going Remote

Just the last week, Facebook, Shopify, and Coinbase announced that they are going remote-first, letting a substantial number of their employees work remotely. To me, remote-first starts with how you run your meetings, as Coinbase CEO said: “in-office folks dial into meetings separately vs. meeting in person.”

Business 💸

Doordash and Pizza Arbitrage – Ranjan Roy

This article gives a sneak peek at how 3rd party delivery services like Doordash work from a restaurant’s perspective. I am mostly surprised that these services would put up order links on Google Maps or Yelp without the restaurants’ agreements. These egregious behaviors show the pressure to grow at whatever cost to justify their valuations.

What Is Clubhouse, and Why Does Silicon Valley Care? – Wired

Clubhouse, a voice-based social app, not this project management app, got all the hype in Silicon Valley (and some $10 million from Andreessen Horowitz). I, of course, didn’t get the invitation so I read about it instead.


Join 312 other followers

Young Reacts #75 – Deno 1.0, Autonomy vs. Leverage, Twitter going remote forever

I had a disappointing week because our user acceptance testing session after a month of hard work revealed two blocking issues. I don’t expect huge changes, so the release will be delayed only about a week. Normally, I would expect some amount of rework and often appreciate this feedback since it means we can release a better product. But this delay sapped my morale.

Thinking over the weekend, I see two reasons why I am so disappointed. First, I have led the engineering effort for this project and communicated with the stakeholders about the release plan. While I accept the inevitable uncertainty, I still feel that I am responsible for the delay, and it doesn’t feel great.

Second, this is the last project before I move to a different domain, and this delay leaves me in a limbo state longer. I need a clean closure and want to focus on the new domain, which already has many projects that require my attention. But this project is getting in the way.

Hopefully, by the next issue, I will have completed the project!

Photo by Charles Deluvio on Unsplash


Software Engineering 🌐

Deno 1.0 – Ryan Dahl, Bert Belder, and Bartek Iwańczuk

The biggest news in Javascript last week was the announcement of Deno 1.0. Deno is out to simplify and secure the ecosystem, as outlined two years ago. Deno promises to provide stable and standard browser APIs. While its ecosystem is split from the Node ecosystem and still very nascent, it already offers many standardized solutions to common problems, such as formatting and running on AWS Lambda.

Native Javascript APIs are now powerful enough for most tasks, thanks to quickly evolving ECMAScript standards. If we have some key libraries for data access and web server framework production-ready, Deno will be useable as a webserver.

Apollo Server File Upload Best Practices – Khalil Stemmler

JSON isn’t the only form of data that needs to be sent between clients and servers. I read this article in preparation for the internal GraphQL discussions. As the article suggests, it makes sense to isolate binary data handling from GraphQL servers.

The JavaScript coders guide to getting more from GitHub and NPM – Edward Thomson

This video is a sneak peek at the upcoming npm 7. A picture is worth a thousand words and a video worth a thousand pictures. You can find improved npm audit at 7:36, yarn support at 13:56, and workspace support at 16:32.

People

Autonomy vs. Leverage – Marty Cagan

I appreciate this list of factors to consider when you tradeoff between autonomy and leverage. Two factors new to me were Level of Accountability and Importance of Integration. If you want the work by many teams to integrate with relative ease, you will want to align on common interfaces, which is what my org is going through.

Business 💸

#LoveWhereverYouWork – Twitter

Twitter announced last week that it would support a permanently remote workforce. Even though there have been some notable remote-first or remote-only companies, we never had it at a Twitter scale. As more companies support remote work, it will have a massive implication on the local economy (commercial and residential real estate, to begin with). People in Silicon Valley are already talking about moving out.

Reddit About to Beat Facebook, Telegram, and Most ICOs With Actually Useful Token – Camila Russo

Reddit launched the Community Point system for its subreddits on the public Ethereum network, which means the awarded Points belong to the users forever. As a crypto skeptic, I don’t see that this ownership aspect differentiates the system much from other loyalty programs. Doesn’t Reddit still own the rest of the ecosystem that could change the value of the Points? Nonetheless, I am deeply curious about how this experiment will pan out.

Remote Working Recap – First Week

Remote working will eventually be mainstream since talents and living costs have become too expensive in the tech hubs. Thus, even though I never worked remotely and I probably suck at it, I have wanted to try working remotely. Due to COVID-19, Netflix strongly recommended that all Los Gatos employees (that include me) work from home starting last Tuesday. So this week gave me the first taste of working remotely, for a prolonged time. I might as well learn from this experience. I am gathering my initial thoughts here so that I can improve my productivity and satisfaction.

Good

  1. I love that I get to spend more time with my wife. We do a quick grocery run, enjoy lunch, and stretch our legs together throughout the day. My usual commute is pretty short, about 40 minutes. So I should be saving about an hour and a half every day, but I feel that I get far more quality time with my wife. Everyday somehow feels like Friday.
  2. Since remote working introduces additional frictions to meetings, a lot of non-essential meetings, such as a presentation about the latest market research, got postponed or canceled. I will eventually miss those meetings. But, for now, I find more time to code and feel more productive.

Bad

  1. My weekday routine got disrupted. I miss my morning workout, brisk walks to/from my shuttle stop, and a quick meditation session on the way to the office. Instead, I now wake up past 9 am, don’t take a shower until the evening, and walk less than 2000 steps, which upsets me since I feel like I wasted the day. This disruption hurts more because I was making consistent progress towards my health goal. Now I need to build a new routine that will get me through the next coming months.
  2. I can’t seem to focus during remote meetings. I daydream a lot and get distracted easily, so I usually make a point of not bringing my laptop into the meetings. I instead take a pen and a note with me. But now that I need my laptop to call into the meetings, I get distracted by notifications and new emails during the meetings. With the camera on, I behave better. But it is a struggle.
  3. Now that my work laptop is on my home desk, I keep getting sucked back into work after dinner. I tell myself, “I just need to push one more small code change.” It’s so alluring. But I should recognize that work literally has no end and protect my personal time.

Overall, I still feel productive. Possibly more than before. But in the long run, I worry about my psychological health. I also am concerned that our team could suffer organizational problems like lack of alignment and relationship since Netflix has been an office-first company. I will keep logging my thoughts to keep me honest and improve myself in the coming months.