At work — Problems solved

I naturally fit the Solver Archetype, and value growth & variety highly. Here's a short list of problems at work that I'm most proud of solving.

Atomic Events - Instrumentation library

Problem Statement

We need to capture wait time and outcome after a customer interaction. This means capturing outcome, and duration for the time between user click until the next page is ready & actionable.

Proposal

What if we could toggle a UI's state as waiting/ready? Then we could capture the duration and outcome of those state changes.

Implementation & Impact

I created the first version of the library. Then successfully drove adoption and alignment onto this new library across 6 teams with many stakeholders, architects and principal engineers. After, I grew the team from solo dev (me) to 5 engineers. Then I transitioned to tech lead / architect / product manager of the new Atomic Events library

Capturing blank page renders

Problem Statement

Over the last 3 years we've had several blank-page outages with different root causes. These occurrences were at small enough volume that they didn't trigger our normal alerting mechanisms. We need to find a way to alert on these occurrences.

Proposal

Could we have a set of client-side health checks that run after the page is done loading?

Implementation & Impact

I developed an algorithm to check for several signals on the page, including visible count of text chars within the root element, and root element depth. These proved to be very effective signals and provided a minimal level of false alerts.

Helped ship a critical project on a tight timeline

Problem Statement

I was brought into a project after it started. We had critical deadlines that were at risk. How can we get back on track?

Proposal

I jumped in. Met with several members of the team, and asked them what would be the most helpful problems to solve.

Implementation & Impact

Instead diving into the code, I did whatever necessary to help unblock the engineers already on the team. I wrote new stories, re-wrote and clarified others, and quickly drove conversations to resolve blockers and points of confusion. When certain became items became blockers, met with product, got alignment, and moved those items further back in the timeline.

Created release pipeline for Atomic Events library

Problem Statement

We kept releasing minor but annoying bugs with the Atomic Events library my team owns. TypeScript compilation bugs were especially annoying for consumers and difficult for us to test before releases.

Proposal

How can we model our pre-release pipeline to match (as closely as possible) how teams will consume and use our library?

Implementation & Impact

I set up some pre-release hooks with a bash script that did the following: Ran `npm pack`, extracted the dist files from that, then loaded those into a test suite, and ran against playwright tests. Finally these new files were included in a sample app, and `tsc` was run to verify there were no TS compile errors. If all of this succeeded, the release was allowed to proceed. This worked really well and helped improved stability for our library releases.

Migrating the Send Money app on PayPal.com from Backbone.js to React & Redux

Problem Statement

In 2014 when I joined PayPal on the Send Money team it became clear that our team was painting ourselves into a corner with our architecture. Many subtle state bugs took days to solve. We needed a better way forward

Proposal

Let's look at Ember and React. Could the additional structure help solve our state problems?

Implementation & Impact

I was able to get our team tickets to the first ReactConf. Then I introduced and shipped React in our Backbone app in one small spot (in the Send Money Notes field). That went really well, so I started the migration by converting parts of our Backbone app to React. This allowed us to make incremental progress on our main branch without having to delay any critical features. After moving the big pieces and paving the way, I was able to hand off the rest to the team and they continued migrating to Redux successfully.