About
My Software Developer Journey
I’ve been working in Software for a long time, but offline mostly. Meaning I did not have a blog, newsletter, podcast, or a public github profile. And didn’t really have a chance to go to conferences or be on twitter until the last couple years. Now I do have a blog so I’m writing down my software developer backstory here for other’s benefit (and so I don’t have to spend too much time talking about myself when we meet, as that’s my least favorite subject to talk about:) ).
I’ve been a web developer since 2012 when I taught myself Ruby on Rails from a Coursera course, Codeschool’s Rails for Zombies, and The Rails Tutorial by Michael Hartl. Then I worked at a health tech company in San Francisco as a Lead/Staff Software Engineer for close to 7 years. I did full stack work but more skewed towards backend. The team started with a Rails monolith and over time incorporated SOA with Java/Spring services and introduced Angular in the front-end. Later, we acquired another company with a Ruby codebase. I lead the effort to ‘merge’ our codebases, specifically the User/Account models + authentication and feature access stuff to support a single user-facing application that was powered by both codebases. I ended up working on Kafka data pipelines, API gateways and other distributed systems stuff in the process. But I spent the majority of my 7 years building tools and systems to improve developer experience and productivity of our entire engineering team. I was part of a small team that did the ‘shaping’ work for feature teams, designed and lead many tech migrations to keep our tech stack updated, and refactorings to reign in the complexity of our system over time. I enjoy this type of work.
Prior to transitioning to web development in 2012 I worked in the medical device industry for 6 years doing embedded firmware in C and C++ for implantable pacemakers and defibrillators. My first job out of college was in the defense industry where I worked on RADAR simulation software in C++.
I went to school for Computer Engineering and got a Master in CE with minor in EE/Math from University of Pennsylvania in Philadelphia. That’s how I ended up doing low level software at the beginning of my career. But I made an intentional transition to web development in 2012 by teaching myself Ruby + Rails and haven’t looked back since.
In parallel to working as a software engineer, looking back I’ve always been involved in some sort of teaching. I as a teaching assistant for my favorite class in undergrad. I volunteered as an ‘industry mentor’ at a couple bootcamps in SF from 2013 to 2015. I was a ‘buddy’ to new hires at work. Last 2.5 years I have been doing the teaching thing more formally with 1-on-1, long-term, paid mentorship. Teaching is fun and rewarding. I like to understand things deeply and the more I learn the more I realize, well, there is more layers of abstractions to explore in the world of software. I will never get bored of this. Teaching fits in well because I get to share what I learn and figure out. That makes the learning feel more complete.
Why is this called Leaf Node?
The way I think about learning/teaching and my writing/sharing is that it’s about getting to the bottom of things. As in, when you are traversing a binary search tree (I know, stay with me, it does makes sense soon) and you reach the leaf node - a node without any children - you know that you’ve reach the end. Similary when you use an database index using B+ tree, when you reach the leaf node, you’ve found what you’re looking for.
Anyway…that was the analogy in my head, when I bought the domain couple years ago. I admit the real reason why my Internet home is going to be called The Leaf Node is that I own this domain. And I’m commiting to one domain! And also because, as you know, naming things is hard! But also! What’s in a name? That which we call a rose, by any other word, etc. etc. So The Leaf Node it is. I may rename the newsletter to The Leaf Node newsletter.