Reflecting on my summer internship at Wealthfront

September 05, 2017

A concern I’ve heard from classmates considering an internship at a tech startup is that the internship program at a startup may not be as well-formed and organized as that of a more established company. While this may be true for some startups, I found Wealthfront to very much be an exception. I had a great experience as an intern at Wealthfront, and I found their intern program to be very organized and well run. Furthermore, I felt more like a full-time engineer at Wealthfront than an intern, having spent much of my summer working within the heart of the investing code that powers Wealthfront’s trading. How is it that Wealthfront can entrust such meaningful project work to a summer intern? The answer includes training, code review, and good test coverage. One of the most valuable and impressive aspects of Wealthfront’s intern program is the effort put into onboarding interns into the company.

All new hire backend engineers at Wealthfront, interns and full-time engineers alike, spend their first couple weeks working through an onboarding course dubbed by Wealthfront as “Modern Java”. The course consists of several lessons covering topics which collectively set up the new hire engineer to be comfortable writing production code in the Wealthfront way leveraging Wealthfront libraries.  Each lesson consists of a combination of learning from linked resources, hearing about the topic from a colleague facilitator, working through coding exercises within a sandbox environment, and reading through Wealthfront code to find the answers to given questions. I was surprised and impressed to realize that pull requests for the Modern Java coding exercises are subjected to code review by experienced engineers, just as they would be in production.

Despite having written Java code throughout high school and in college, I had little knowledge of how Java was used in industry. Within Modern Java and throughout this summer, I learned about common design patterns in the Wealthfront code base such as the visitor pattern, well-typed programs, test-driven development using stubs, fakes, and mocks, as well as tools and libraries such as Apache Maven, Google’s Guice, and Hibernate. After two weeks of Modern Java, I was ready to push my first code to production (after code review, of course).

Putting the fin in fintech

I came to Wealthfront for its engineering culture, and to learn about fintech. So, when Wealthfront engineers presented several intern project options to me and my fellow interns, I chose one related to Wealthfront’s investing code. Coming in, I was fascinated by how Wealthfront could implement its various investment strategies, and by the abstractions of various real-world entities that must be required. For example, I wondered how Wealthfront code models an individual investor, their portfolio, investments, and risk profile. How is Wealthfront’s investment code written in a specific yet accommodating manner? How does this code interact with the market? Working within the investing code all summer revealed the answers to many of these questions and more. I also came to realize a key guiding principle which allows the Wealthfront codebase to stay clean and maintainable: high cohesion and loose coupling. This principle was familiar to me, but seeing it in action across a large codebase was very educational. I feel much more prepared now to put my coding skills to work within the context of a team.

The goal of my intern project was to add functionality to extend Wealthfront’s handling of “substantially identical securities” within investing code. My work enabled Wealthfront to transition to a lower cost ETF (MUB –> VTEB) more opportunistically within each client portfolio without sacrificing tax-efficiency. Substantially identical securities relate to tax-efficiency because of the wash sale rule. The tricky part about this topic is that the IRS does not precisely define which securities it considers to be substantially identical. How does one implement a solution to a problem that isn’t well-defined? I wondered that too! Within the context of my intern project, Wealthfront treats ETFs as substantially identical if they track the same benchmark.

Wealthfront engineers love data and visibility into their systems. So, my project was not complete after implementation. First, for convenience, I created a dashboard using Klipfolio which displays all securities being considered as substantially identical. This was pretty straight forward since the SQL to retrieve the data was simple. Next we needed a way to monitor that wash sales between substantially identical securities are not being created. While the SQL for this was much more involved, Wealthfront now has additional visibility into any wash sales that the Wealthfront system may have generated.

Learning off the job

Wealthfront encourages colleague connections by providing “coffee cards” – check one out and walk with a colleague to a nearby coffee shop for a Wealthfront-funded coffee break. Aside from being a sweet and unexpected perk, I found that the coffee walk culture really does provide a great way for colleagues to connect. Through coffee walk chats with data scientists, product managers, and front-end engineers, I learned about their work at Wealthfront, and the career trajectories they came from.

I was also pleased and impressed to experience the amount of company access and inclusion I experienced as an intern at Wealthfront. I found everyone to be very approachable, and the culture is one where folks prioritize making time for you. For example, executive lunches were organized for the sole purpose of providing interns access to top executives. We also attended the weekly company all-hands meeting, where we were privy to discussion of topics such as why various business and product decisions were made the way they were, and even where the company is headed in the future. Wealthfront entrusted us with a lot of company confidential information, and as a result I learned a lot beyond the technical.

Did you say startup?

Working at a startup means that there is always more work to be done. I wrapped up my main intern project with some time to spare, and so I joined an internal Machine Learning bootcamp (much like Modern Java), and then I took on a smaller data engineering project. I got to write some Spark pipelines in Scala, and I learned a lot about Wealthfront’s data engineering infrastructure, and how data moves from one system to another before eventually making its way to the front-end (or not).

What is it like at a startup like Wealthfront? Uncertainty abounds and things change fast. The mission is audacious, and requires impressive efforts out of everyone to make it work. Boy did I find the environment exciting, but I could see how it is not for everyone. I may want to start my own company some day, and I found my internship at Wealthfront a glimpse into what success on that front might look like. Thank you Wealthfront!


Disclosure

Nothing in this communication should be construed as an offer, recommendation, or solicitation to buy or sell any security. Wealthfront’s financial advisory and planning services, provided to investors who become clients pursuant to a written agreement, are designed to aid our clients in preparing for their financial futures and allow them to personalize their assumptions for their portfolios. Additionally, Wealthfront and its affiliates do not provide tax advice and investors are encouraged to consult with their personal tax advisors.

All investing involves risk, including the possible loss of money you invest, and past performance does not guarantee future performance. Wealthfront and its affiliates rely on information from various sources believed to be reliable, including clients and third parties, but cannot guarantee the accuracy and completeness of that information.