I'm great at...
Bringing order to a chaotic codebase
I love cleaning up bad code—analyzing, refactoring, standardizing, and documenting. I can turn an ugly codebase into one that is understandable, maintainable, testable, and efficient.
- Refactored an unmaintainable JavaScript application into a modular system with useful developer documentation and broad test coverage. The new architecture was so successful that it was adopted by several subsequent projects within the company. (OneAmerica)
- Defined a design system of standardized user interface components to eliminate massive CSS duplication and enable developers to add new pages without having to write additional CSS. (Autobase)
- Presented my process of analyzing code at two tech conferences in a talk called "Unlocking the Mysteries of an Unfamiliar Codebase."
Creative problem solving
Having worked on many kinds of projects in my career, I apply ideas and lessons I've learned in different ways to solve new challenges.
- Assisted museum staff to redesign the electronics in an unreliable interactive museum exhibit. The new "fail safe" modular architecture kept the exhibit operating as a whole even if an individual part failed. (The Children's Museum of Indianapolis)
- As the first instructor to have a class of more than 25 students, I devised a strategy to scale up to 120+ students with a small staff of teaching assistants while continuing to give each student personal attention. (Kenzie Academy)
Frontend application architecture
Establishing a solid architecture takes extra time at the start of a project, but it allows the development team to move much faster in the long run.
- To avoid problems of tightly-coupled code, I used custom JS events as a way for modules to communicate with each other. Only much later did I learn that I had recreated the publisher/subscriber design pattern. (Compendium Blogware)
- By teaching my team to plan the interfaces before they started coding, developers could create and test their modules in parallel. Then when the parts were brought together at the end of the sprint, the whole system worked with minimal fuss. (Autobase)
Teaching and mentoring
The measure of my success is largely based on how I can help other people succeed. I always look for ways to integrate my passion for teaching in every job. Ultimately, this led me to become a full-time instructor at a coding school.
- When coworkers wanted to learn JavaScript, I took the initiative to teach weekly lessons during our lunch break. These "JS Lunch" sessions included a demonstration, group practice, and a homework challenge. (Compendium Blogware, informally)
- As the front-end development team lead, I established weekly professional development sessions. Each week a different member gave a short presentation on a topic of their choice, followed by group discussion. Junior developers practiced their presentation skills, and everyone learned something new. Two other team leads borrowed the idea for their own teams. (Autobase)