Though my decision of where to spend my 2014 summer may not carry the same drama or headlines as Lebron’s summer decision, my experiences this summer would undoubtedly influence my pursuits after college. My priority was to find an internship program with supportive mentors and a company with an engineering backbone. In these aspects, Wealthfront has gone beyond my expectations.
Wealthfront’s Data Week coincided with the start of my internship. Data Week is dedicated to providing the Wealthfront team with the tools and skills necessary to be fluent with data and analytics. After brief introductions and setup, I found myself packed into a 20’x15′ conference room with the whole engineering and product team. Daily workshops would encompass data methodologies and technologies that are essential to Wealthfront’s data platform. These seminars were encouraging for people of any or no data expertise to attend. Depth and difficulty ranged from ‘Intro to SQL’ with select and query clauses to using Cascading on EMR. For example, the MapReduce seminar consisted of a high level overview of the MapReduce design architecture as well as the Cascading framework, followed by exercises to implement a new Cascading job within the data platform.
After the workshops, we split into three teams, each covering a different domain of Wealthfront (i.e. brokerage operations, investment services, and consumer Internet data). Each team’s mission was to create data sources and dashboards providing diverse metrics on the operations and services at Wealthfront. The dashboards vary from daily cash flow metrics to Wealthfront’s Money Ballers softball team statistics. For example, the dashboard shown below is a time series of the number of pull requests per day. The data source is generated using multiple data inputs from our online systems. The inputs are processed using Cascading and then loaded into our data warehouse. From there, the derived data is queried and loaded into this dashboard. By analyzing our engineering workflow, we can continually better our development processes.
I am extremely impressed by Wealthfront’s encouraging attitude towards experimentation and learning. Already on my first week, I had the opportunity to explore the data warehouse, hack at a Cascading job, and learn about different perspectives on data analytics and data quality.
Holding true to its core engineering values, the Wealthfront team continually searches for and prioritizes processes to automate. One such process was the manual approval procedure for new accounts and retainment of client application information. Wealthfront retained physical copies of client new account applications in compliance with the Financial Industry Regulatory Authority (FINRA). This process does not scale well with Wealthfront’s current client and AUM growth. We wanted to develop an automated procedure of storing electronic copies of client applications that would be compliant with SEC and FINRA regulations. When developing a solution, I adopted Wealthfront’s design methodology of identifying the goals and invariants, researching the technologies and dependencies, and developing an implementation and migration solution. Of course, the solution had to be coupled with a generous serving of tests to help you sleep easy at night.
One project goal was to electronically sign and store each retained new account application in a third-party storage provider. In compliance with FINRA regulations, the client records would have to be stored in write once, read many (WORM) format. This essentially meant redundant data storage filers, restrictions of delete permissions, and full audit logs of storage activity. We would ensure the integrity and security of confidential client information by encrypting the records and properly storing all data.
Another equally important goal was to implement an automated procedure to process and store each new client’s data. This automation substitutes the old print-and-sign procedure and runs in the background, requiring no interaction with our Client Services team. A queue implementation would perfectly satisfy these requirements. Essentially, the queue worker would poll a database table for the next unprocessed payload, in this case, the next client’s data. The worker would then encrypt and upload the data.
The next concern is at what point of the client application approval process to push the data onto the queue for storage. The most sensible answer is to inject this feature at the point where the Client Services team approves an applicant to open an account. We could then leverage the process of electronically storing data by pushing hundreds of clients’ data onto the queue rather than print them out one-by-one. The automated service reduces hours of printing and signing documents every week. As new signups increase every week, we can ensure a minimal delay period between sign up and funding the account; thus, providing a better experience for our new clients.
What I value the most from this summer is the horizontal and vertical exposure to Wealthfront’s many services. I have had the opportunity to explore and contribute to the user management service, the web service client, the mobile server, and the data platform. This is made possible by the mentors’ willingness to offer advice and suggestions, while leaving ample room for personal struggles, failures, and successes. Another great aspect of this internship is witnessing the growth of Wealthfront. I continually meet new people from all walks of life every week, making this summer an incredible experience.