March 2018 - Present
Founder of a new ethical social networking app.
Principal Software Engineer
June 2013 - June 2017
- Upgraded password storage to industry-standard best security practices
- First self-directed project; discovered it as part of larger project I was hired to work on
- 2 senior engineers had attempted previously and left it in various unfinished states
- Came up with a clever in-place upgrade scheme that was invisible to user
- Completed in first ~3 weeks on job
- Successfully rewrote the permission system controlling access to repositories, organizations, and teams
- First year-long attempt had just failed when team attempted to roll it out just before I joined
- Worked with team lead to implement his new approach using learnings from previous failure
- Took over as project lead half-way through
- Uncovered and systematically worked through complicated refactorings and major data quality problems
- Developed and improved tools and processes to do this in a data-driven, safe way (github.com/github/scientist)
- Finished project and switched over to new system in a year (with a team that went from 4 people to 2 people half-way through)
- Embedded with the team building the first features on top of the new system to help them use it properly, build necessary APIs, migrate data to the new system
- Security and performance improvements to forks
- Entangled with permissions and privacy, needed to make some major changes to ensure security of private forks
- Worked with support to contact all affected users and give them several options to fix themselves, automatically fixed the rest after a given amount of time
- Collaborated with an engineer with git internals expertise to optimize process for moving repo and forks around between servers (patent pending)
- Given the title "Head of Web Technology"
- Org was still flat and mostly title-less
- This became "Principal Engineer" once titles and levels were introduced
- Reported to CTO, or VP of Eng for most of tenure, often working across teams and disciplines
- Did a lot of managing up, providing feedback to VPs and execs on leadership issues and org shape during several re-orgs/shakeups with the chain of command
- Implemented and introduced an interview process to the Engineering org
- There were no standards or guidance on interviewing previously, often just conversations or coding exercises made up quickly the day before. Results were mixed. The best engineers hired other good engineers; the rest hired their friends.
- Systematic - questions were derived from position requirements, previous work done by engineers in same position
- Repeatable - all candidates got the same questions and went through the same process
- Reduced bias - standardized expected responses, eventually full rubrics for all questions
- Devised a process to onboard and train interviewers and set them up to do the same for others
- My process was adopted and expanded upon by entire Engineering org after 6 months of failed attempts by VPE + Eng managers to come up with their own process
- 100% of my hires were at the top tier of talent and were from under-represented backgrounds
- Developed the first version of an Engineering Onboarding
- Developed in tandem with interview process to bring new hires up to speed quickly
- Week-long, generalized curriculum: topics, exercises, meet & greets
- Did outreach and recruited engineers from across the organization to give presentations on relevant topics
- Recorded all sessions and made them easily available for independent consumption by any curious engineers or by smaller onboarding classes that may not warrant a full, in-person run of all of the content
- Worked closely with database team to standardize database migrations from application engineers
- Took over running migrations from DBAs and built a process around review and scheduling of migrations
- Educated engineers on best practices
- Adding multi-tenancy to website
- Brainstormed initial approach for prototyping
- First iteration of project ultimately failed due to lack of fleshed out requirements on the product side, lots of pressure, little concrete direction and data
- Worked to fold major improvements to the codebase and database into the required work, which remained after the rest of the project's initial attempt was scrapped, and which unblocked other teams to make more long-needed improvements in the area
- Lead Engineering-wide tech initiatives
- Removing anti-patterns and unsupported hacks from a particular period of growth from the codebase
- Led cross-department discussions and standardization of accepted technologies, process for deploying and supporting new tech
- Mentored and supported other Engineers in the organization
- Helped initiate a new project to replace the event notification system
- Documented the old system and its problems
- Brought new team up to speed
- Set architectural direction of new system
- Guided team on a gradual, side-by-side replacement
August 2012 - April 2013
- Paired and continued teaching TDD to colleagues
Jan 2011 - August 2012
- Introduced new client developers to Rails, agile, and test-driven development by pair programming.
- Projects included: consumer web applications, developer APIs, internal management websites, and tools
- A sampling of projects:
- Built a consumer website that integrated many other internal services in a service-oriented architecture style
- Implemented a data visualization app's front end in pure backbone, which talked to a backend Java API.
- Completed a custom skinning of a jQuery file uploader for a photo-sharing web app that required cross-browser compatibility, including IE6.
- Worked on a large legacy codebase to introduce new features while cleaning up and refactoring old code.
- Began training to lead teams and projects before I left
Software Engineering Intern
June 2010 - Aug 2010
- Created a Java framework to automatically generate the XML config files for mobile new devices.
- Added new features to a Java-based carrier admin portal.
- Implemented a prototype of the portal in Groovy on Grails framework, which was adopted after I left.
University of California, Berkeley
August 2008 - December 2010
Bachelors, Computer Science
San Jose State University
August 2006 - May 2008