Software Engineer at Google

Loc Phan

I build front ends

Hi, I’m Loc. I write software at Google — front end, back end, and most of what sits between. I’m still happiest on the days something I built ends up in front of real people.

01 — Work

The work in production

The systems have gotten bigger with each job and the mistakes more expensive. Building fast is not enough at that size — landing a useful feature takes a careful engineering process.

Google Software Engineer · 2020–now

  1. 01

    The web app front end

    Angular and AngularDart features in a web app my team owns and other teams build on. A large codebase with real users and no appetite for a rewrite, so the craft is landing change incrementally — behind flags, in pieces, without breaking what already works.

    • Angular
    • AngularDart
    • TypeScript
  2. 02

    A large-scale datastore

    Designed and built from the ground up: schema, access patterns, indexes, and the room to grow into. The decisions that are expensive to undo all get made while the tables are still empty.

    • Schema design
    • SQL
    • Capacity
  3. 03

    A live schema migration

    Split one overloaded table into a normalized schema in production, with no downtime and no broken consumers. A migration like this is barely about the SQL — it is sequencing, backfills, and dual writes held long enough that the old path is safe to delete.

    • Zero downtime
    • Backfill
    • Dual writes
  4. 04

    RPC APIs

    Service contracts that stay stable while everything behind them moves. Versioning, backward compatibility and error semantics picked so the caller has an easy time — because the caller is another team, and their outage is my outage.

    • RPC
    • Protocol buffers
    • Versioning
  5. 05

    Model training and serving

    A workflow that trains a model, hosts it, and answers live inference requests behind an endpoint. The interesting parts are the unglamorous ones: reproducible training runs, safe rollout, a latency budget, and a sane answer for when the model is wrong.

    • Python
    • Model serving
    • Live inference
  6. Also

    The on-call rotation

    I carry the pager for the system my team maintains. Being the one who gets paged changes how you build: you write the runbook, you add the log line, you make failure legible at 3 a.m. It is the fastest way I know to learn a system all the way down.

    • On-call
    • Debugging
    • Runbooks

Smarkets Software Engineer · 2018–2020

  1. 01

    New mobile app

    Cross-platform, in React Native, from the early stages through to the App Store launch and on to nine thousand users. Redux Saga managed the API and WebSocket data flow behind every key feature, live odds included.

    • React Native
    • Redux Saga
    • iOS & Android
  2. 02

    Animation and performance

    Animation libraries and styling to build the mocked designs out properly, then the work to keep them cheap: granular components and selectors with efficient time complexity, which brought down both re-render counts and load times.

    • React Native
    • Animation
    • Performance
  3. 03

    Geofencing

    Enforced where a user actually was before letting them place a bet, checking GPS against the IP address. Flask on the back, React on the front.

    • Flask
    • React
    • Geolocation
  4. 04

    Social features

    Django models and API endpoints for the social side of the app — profiles, posts and comments — with a Redis cache in front to keep responses fast. Unit and automation tests plus crash reporting to catch what got through.

    • Django
    • Redis
    • Testing

02 — Tech

The stack I have used

I am a learner first — new techniques and new technology are things I want to pick up, not work around. The list below is where that has landed so far, not where it stops.

A Front end

  • TypeScript
  • Angular
  • AngularDart
  • React
  • React Native
  • JavaScript
  • CSS

B Back end & data

  • RPC APIs
  • Protocol buffers
  • SQL
  • Schema design
  • Node.js
  • Python
  • Django
  • Redis

C ML & pipelines

  • Model training
  • Model hosting
  • Live inference
  • Batch pipelines

D How I work

  • Design docs
  • Code review
  • Incremental migration
  • On-call

04 — Contact

Let’s talk about anything.