Since the age of 18, I have been obsessed with the problem of automating software maintenance. This began a journey of becoming deeply knowledgable about the theory of programming languages and program analysis, founding a developer tools company and working for two more, and ultimately to my present day-job as a Ph. D. student at the Massachusetts Institute of Technology, where I research ways to make program transformation and synthesis tools easier to build and more general (a.k.a.: “programs that write programs that write programs”).
At the age of 19, I began to think about how my technical training in formal verification and program analysis could lead to deep principles about how to write better software. In the ensuing months, I found my own software engineering ability rapidly skyrocketing. When I started working at Apptimize at age 21, my first experience working for someone else since graduating a year and a half earlier, I soon found myself outperforming the other engineers on my team, many of whom on-paper had far more experience than I had. After a few occasions sharing my knowledge, I realized that I could have far greater impact in an hour of coaching than an hour of coding, and started doing so professionally in early 2016.
My teachings are drawn from many sources. Some are 50 year-old concepts which are little-known outside the research community. Others are amalgamated from the best writers in the software industry. And others yet are my own insights. All come from the philosophy that, behind the myriad languages and frameworks, there are just a few unifying ideas.