Jimmy Li: Law School to Software Engineering to Tech Lead
This is a continuation of our series exploring the paths that Recursers take to RC, what they do during their batch, and what happens after.
Jimmy came to RC for the first time in 2011, and for a second time in 2013. He currently works as a Technical Lead Manager at Google.
Here is Jimmy’s story:
Before RC
I took one programming class in college - I enjoyed it, but for various reasons was discouraged from doing any more than just one class. I don’t really count that as the beginning though; the beginning was in the summer of 2011, right when I was in between the first and second years of law school. My law school classmate and I had a start-up idea that we got overly excited about, and we couldn’t find anyone who was willing to help us code a prototype. I remembered enjoying programming back in college, so I said, “Let me see if I can learn enough to cobble something together,” and so I started coding that summer.
Pretty soon, I became less interested in the start-up idea and more interested in the coding itself. I was on a legal internship that summer and I found that most of the day I would just spend coding rather than doing my job. I went back to law school for the Fall of my second year, and I continued to ignore what I was supposed to do and instead coded on stuff, and I guess a small part of my brain was thinking, “Maybe I should do this for a living,” but I wasn’t sure how that would work out.
Very serendipitously, I went to a YCombinator event in New York, and Hacker School (as RC was then called) was there. I went to that event to ostensibly pitch the idea that my friend and I had. But, I was already giving up on that idea so instead I went around asking if folks needed volunteer coding help. I realized I could only go so far programming by myself in the law school library, surrounded by people who had no interest in this stuff. I needed some sort of community, I needed to be in a group that cared about programming. So, my thought was to try and be a volunteer coder because I wasn’t good enough to be paid. Eventually, a couple of different folks asked if I’d spoken to the people from Hacker School.
I still remember the conversation really well. Nick and Dave were like, “Wow, you seem really enthusiastic” — and I was. They were, in a very generous way, willing to give me a chance even though I hadn’t gone through the application and interview process. This was the day before the second batch was about to start. They said, “Come to the Spotify office tomorrow, and if there’s a physical seat for you, you’re in!”
During RC
It was a whirlwind three months because I was in law school at Yale at the same time, and I ended up taking Metro North three days a week. At the time, RC was Monday, Tuesday, Thursday, and Saturday, so I’d take the train up Monday, crash on a friend’s couch in NYC Monday night, come back Thursday, and come back Saturday. I took that train a lot — two hours both ways. It was definitely one of the most thrilling three month periods of my life, without question. I’d continue coding or reading books like The Little Schemer on the train.
In addition to the amazing amount of programming that I learned from people in this atmosphere of curiosity and passion, this desire to learn and this inquisitiveness was ignited in me in a way that it never had been before.
In my first batch, I focused on one project for 80% of my time there. The project was an improved course selection site for my law school classmates. Basically, when students at my law school picked classes it was very painful, and if you wanted to figure out what classes would fit into an open block on a Thursday, you had to do CTRL-F for capital T, lowercase h for Thursday. This was a problem I could help fix, so I learned how to scrape the data, put it into a database, set up the frontend with the ability to search and sort and filter – basically I built this full-stack web application. One of the many things that got me into programming professionally, in addition to loving the actual practice of programming, was that I picked this nice starter project: I was able to launch this to my classmates and they loved it! It was awesome to sit in a law school classroom and see my classmates using it on their laptops in the desks in front of me. I’d never felt like I’d provided value for people in such a clear manner, and that was pretty exhilarating.
Talking to all the other Recursers and people like Nick and Sonali, I realized that it wasn’t too late for me to try to get into programming. At that time, I didn’t have many examples of folks who were self-taught and didn’t have a CS degree, and talking with the folks at RC was definitely eye-opening. I also changed my overall philosophy about learning. Before that, I’d given way too much weight to learning in a formal classroom setting.
I feel like there are so many advantages to learning on your own — not only is it possible, but in many ways it’s better. I think this helped set off a lifelong practice of learning.
After his first batch
After my first batch, I did the interview circuit guided by RC, and also did some interviews outside of what RC set up for me, and I ended up taking an apprenticeship with Pivotal Labs that converted into a full-time job. I went to SF to do that, and then I got a job offer from Codecademy, and decided to take that since I was a big believer in people learning how to code. I worked at Codecademy as one of the early engineers for a little over a year, and then right after that I went back to RC.
I was at another transition point in my life where I decided I was going to finish my last year of law school, and I wanted to tap into that feeling of why I love coding. Working as a coder brought to my attention that there are aspects of the professional practice that don’t quite have the Disneyland quality of RC. Something that continued to be hard for me as a coder was the aspect of coding that involves reading the manual and figuring out how some of the details work. I enjoy thinking about stuff at a conceptual level and problem solving, but I hate setting up IKEA furniture. That didn’t really get much better for me — it continued to be a problem!
During his second batch at RC
When I went back to RC, it was a bigger group. It was like 40 or 50 people instead of 10 or 12 people; it was harder to get to know everyone, but it was a nice group and I was able to forge great connections as well, despite the size.
I also approached it differently in terms of what I spent my time on. I spent my time learning a broader array of things instead of working on one large project. I did a handful of smaller things - I built a JavaScript game, I built a simulation of Conway’s Game of Life and worked through SICP. My mindset was also different: the first time around I had such a clear goal of getting decent at programming, and the second time around I wasn’t sure what I wanted out of it. But, I did succeed at reigniting some of that love of learning.
After his second batch
After that, I went back to law school to finish my last year. I kept programming and I ended up taking a job in DC working for an analytics company called Blue Labs that helps Democrats. It occurred to me that programming is about a lot of things in addition to the things I love. The things I love are problem solving and learning how things work — the kind of things you get in classrooms and you talk a lot about at RC. When you’re a professional, it also involves meetings, and again, reading the manual on some other person’s code and learning how to use it. I was thinking, do I have the temperament, the patience, the attention to detail to be a programmer for the next 40 years? I started to doubt that, and I thought being a product manager would be a sweet spot for me where I’d still be in tech and get to talk to programmers, and help solve problems. I gave that a try, and was a product manager in a medium-sized company, but there wasn’t as much problem solving as I thought.
I decided I’d have the courage to go back into programming, get better at the aspects I didn’t think I was good at, and understand that as a whole, programming is still the best job given my interests and skills. I recommitted, with my wife’s help, and we decided to move to California. I did the interview circuit, and decided to work at Google and have been there since 2017. I started working as a frontend engineer on the Chat team, and then two years in I switched to the Health part of Google. I worked full-stack, and then in the last year and a half I’ve been a Technical Lead Manager, and I lead a small team and have a small number of people report to me.
To keep learning, I read, I watch YouTube videos, and talk with coworkers, and we have a weekly meeting where we share something that we learned recently that we think is cool. I occasionally do a Coursera course, or follow resources from Bradfield School of Computer Science.
RC is such a special place of learning and curiosity. It’s better than most of the formal educational institutions I was a part of. In those places, even with the quality of instructors and the research caliber, that spirit of wanting to learn and figuring stuff out on your own, and taking your learning by the horns, I never found that anywhere else. It’s a very intoxicating feeling and group to be a part of, and I’ve tried to chase some version of that ever since.