I’m an Software Engineering leader with a passion for developing sensible systems with healthy bones and building products that delight. I especially enjoy the space between design and engineering where the vision is made real.
Skills
I primarily use various JavaScript-related frontend technologies and Node.js, because it’s nice being part of the user experience. However, I’m comfortable enough just about anywhere in the stack. I also know my way around a design suite.
My belief is that it’s worthwhile to take the time to discuss software architecture and get the design right. Building good interfaces is crucial to ending up with a product that is more stable and scalable. It’s also great way to practice cross-functional empathy, align goals, and strengthen a team.
Technologies
It feels kind of hokey to include a laundry list of every language, technology, and tool that I’ve ever used, but here are a few things that I’ve enjoyed lately.
- TypeScript and slick new ES language features (Babel)
- Declarative component interfaces (React/JSX)
- Component-based styles (emotion, styled-components)
- Flux-esque state management and asychronous side-effects (Redux, Redux Saga)
- Static site generators (Gatsby)
- Centralized design languages that are run through slick transformation pipelines (Style Dictionary)
- Unit tests at the public interface level and text- and image-based snapshots (Jest)
Work Experience
Tinder
Engineering Manager II, UI Platform
March 2022 to present
I lead a team of engineers across platforms (iOS, Android, and Web) that is responsible for maintaining the systems and best practices for building consistent UI across Tinder. As the engineering arm of Tinder’s Obsidian design system, we build everything from components to tooling to make ideas translate more easily from design to implementation. Our goal is to consolidate the boilerplate of building UI and making design decisions to allow feature teams to focus on the aspects that are actually unique to their projects.
Notable projects
-
Synchronized design tokens: We built a pipeline using Style Dictionary to share design decisions between Figma and our client codebases as “design tokens” using a single source of truth that could be edited by designers and engineers alike. This allowed us to eliminate a lot of manual (and error-prone) interpretation of designs and to publish versioned libraries for deliberated controlled upgrades. The result was less lag and confusion between design and engineering.
-
Component library: Collaborating with the designers, our team implementedd components from the design system across platforms, including React (Web), UIView (iOS), Jetpack Compose (Android), and Android View. We collaborated to create a consistent configurable interface across design and engineering with thoughtful platform-specific variations where appropriate.
-
Icon library: Our team built a workflow around exporting icon assets as SVGs from Figma. The conventions and tooling we developed around layer naming and icon construction on the Figma side allows us to rig the assets for dynamic programmatic recoloring in the client across platforms.
-
Documentation and internal tooling: What good is a design system if nobody knows how to use it? In addition to building “the things,” the team maintains documentations and interactive demos and tooling in Storybook to help visualize what’s available and what’s possible to do with it.
Staff Software Engineer, Web Platform
August 2017 to March 2022
I was a member of the Web team doing everything from user-facing feature development, architecture and internal tooling work, and mentorship with junior developers. I acted as a strong proponent of best practices for the long-term health of the web platform. I joined as the web team was preparing for the global launch of the Tinder Progressive Web App, rapidly implementing product features to reach parity with the native iOS and Android apps.
I introduced a method of managing Redux state in the web app by applying data schemas at API request/response boundary. This allowed us to clarify business logic by extracting and consolidating various data transformations, insulating those parts of the app from the server and eliminating the need for costly rewrites as a result of future API changes. I also led the charge on improving our standard React UI components with more stable and composable interfaces, providing better consistency with the style guide at their core and ultimately increasing our velocity when using them to develop larger features.
In addition to my work on the Web Platform team, I was also “borrowed” for projects that lacked dedicated web resources to help with various new features in tandem with engineers on other platforms and to work on the UI of internal tools. Some of those tools include the first versions of both our CRM team’s campaign manager and the Experimentation team’s test management and results UI.
Splash
Senior Software Engineer
August 2016 to August 2017
Splash provides the tools to build beautiful event pages, gather information about guests and customers, and manage and analyze that data. My role on our small engineering team is a mix of product feature development and frontend infrastructure maintenance and leadership. I have the privilege of working on a collaborative and curious team where I can both build features and explore new technologies.
I joined to help productionize the codebase that allowed provde the viability of the product vision and initial feature set, applying my experience and knowledge to make it more sustainable, understandable, and future-proof. To this end, I drove a refactor of our build process that introduced the industry-standard tools and practices and migrated multiple legacy systems into just one legacy system and a clear path forward. This reduced build and rebuild times significantly, shaving hours off the process of developing product features and making the build and testing pipelines both more modular and transparent.
I also built the frontend for our integrations platform, simultaneously architecting and implementing a build process, React/Redux-based framework and UI component library, and the application itself, working closely with another engineer who build the backend API. The components and patterns that were built as a part of this project are providing the foundation for new feature work and being cleverly integrated into our existing Backbone codebase.
Tumblr
Staff Engineer
April 2015 to August 2015
Tumblr has a codebase forged over years of product innovation. As the Web Client Staff Engineer, it was my job to make sure that things in the frontend world didn’t get too hairy. I made sure that we were up-to-date on the best tools for the job, aware of what was next, and managing our technical debt. I helped keep our developers happy and on the same page about our best practices, acting as the advocate for the user’s browser in architecture reviews.
As a member of the Core Web team, I was as much an individual contributor as an evangelist: largely responsible for maintaining and improving our frontend framework (an in-house framework built on Backbone), build scripts (Webpack), and unit testing, as well as leading the charge on new initiatives and presenting information to the rest of the engineering organization in Lunch and Learns. I encouraged more active participation by Tumblr in the Open Source community, upgrading the official JavaScript Tumblr API client and writing a web implementation of Apple’s Live Photo technology.
Perhaps my biggest impact on the Tumblr frontend infrastructure was wrangling other tech debt to create sustainable patterns for the future. I migrated our build scripts from Browserify to Webpack, which cut build times by about 80% (building was a tremendous timesink in our workflow). I also refactored and documented a great deal of our framework code, which put us in a better place to understand what we had and how to proceed.
Product Engineer
October 2012 to April 2015
Assembling neat user experiences on the Tumblr dashboard. I’ve worked on everything from theme and post authoring to API integrations with third party services, primarily in JavaScript and PHP, but using whatever gets the desired results (but mostly Backbone). Some projects are big, some are small. Some require a full team, some are just me. They’re all cool; we try to keep the kids happy.
Some of my favorite things to work on have been the theme editor, post creation tools, and an interactive animated anthropomorphic photocopier assistant (it was introduced on April 1st, but sadly died within 24 hours).
Moda Operandi
Frontend Developer
February 2012 to October 2012
I was go-to for all things frontend. Our goal was to give the best presentation for our products, including collections and details views, and a painless and understandable checkout experience. I worked with our in-house creative team as well as outside agencies to implement designs for the site and ensure a seamless integration between the backend and the storefront.
Heavy, Inc.
Developer
July 2010 to January 2012
I was hired here to do “rich-media takeovers,” which is a nice way of saying intrusive “Flash ads.” A lot of them still looked pretty neat, given what they were. Pretty soon I also took over responsibility of developing the user-facing site, implementing maintaining a WordPress theme and plugins for our editors, troubleshooting and neutralizing renegade ads, and opening up Photoshop when a project comes up and it’s due yesterday. Oh, the fast-paced world of DoubleClick ads!
Splintertek, LLC
Simulation Developer
January 2009 to August 2010
I worked for a few different subcontractors at Lockheed Martin, but Splintertek was the last one before I moved to New York. They had a few non-Lockheed simulations that I worked on.
Lockheed Martin
Programmer Analyst (subcontractor)
August 2008 to August 2010
In my first job out of college, I worked on the TSA version of the game Myst. This “Courseware” was a hybrid of Flash and JavaScript, used for web-based training for employees of several government agencies. Working with 3D modelers and animators, we created interactive point-and-click simulations of machine operations and repair prodedures, as well as interpersonal communication and protocols.
Some interesting things I got to implement were a framework for seamlessly switching between interactive still-image-based states using full-motion video transitions, a tool for coordinating animations to lip sync an avatar to an audio track, and figuring out what exactly SCORM was and why I needed to care about it. Please note that the last one wasn’t actually very interesting.
Other Points of Interest
Open Source Contributions
I’m always overjoyed to find that many of the problems I have run into are shared by other developers, who have graciously shared their solutions on the internet through npm and Github. I contribute to these projects when I can, especially when I come across a utility that doesn’t seem to exist or a feature that is missing or broken.
Take a look at my Github page to see some of the things I’ve worked on.
Hipster City Cycle
Once upon a time, I worked with a few folks I knew from college on an iPhone game about a bicycle-riding hipster cruising the streets of Philadelphia, PA trying to blow through his trust fund by throwing parties. This seems like a quaint and very dated concept now, but it was really cool at the time.
I helped design many of levels and gameplay elements and drew all the artwork myself in a pixelated Maniac Mansion-inspired style.
Education
I have been educated!
University of Pennsylvania
BSE in Digital Media Design
Penn’s DMD program is a like a typical Computer Science program, but with an interdisciplinary spin that focuses on the application of technology to the creative and interactive. In other words, there was a lot of math and programming, but also plenty of fine arts and design. Physics is plenty interesting on its own, but it starts really getting fun when you’re using it to govern the laws of a virtual world.
Some things I built while in school include a website for the student radio station WQHS (with an insane PHP intranet so that we could have live playlists and archive them), a 3D clone of the arcade game Joust, and a Nintendo Wiimote hack to recognize and respond to distinct arm gestures.
Contacting Me
If you’d like to contact me in some professional capacity, please send an email or a LinkedIn message.
keith@mcknig.ht