I just finished my first week at Wealthfront. In my first three hours I fixed a small production bug. By the end of the week, I had shipped my first feature: the backend code to serve up the commit statistics feeding the visualization at our new engineering page. Moving this quick was empowering, and it confirmed that I made the right decision to join Wealthfront.
There were three enablers that made this possible. First, the code base is clean. This was not the easiest hello-world assignment, because it involved scanning the git logs to find out when commits were happening. I then wrote computed statistics to Voldemort, so that the online page could quickly serve up the visualization without blocking on scanning the git logs. I was able to find some git-utility helper functions in the code base that almost did what I wanted. I made a few tweaks, and I had the data I wanted. Writing and reading from Voldemort was trivial, and there were some great examples in the code base.
Second, I never have to deploy anything locally. Once I created my backend API, I was able to find plenty of JUnit/jMock examples that let me test and gain full confidence in my code without ever deploying it. There was even a code-coverage test that failed because I forgot to test one of the API calls I added.
Finally, the deployment system made pushing my code to production a snap. I pushed my code with a description of what service needed to get redeployed in the commit message. As soon as I checked my code in, the Wealthfront deployment manager automatically runs all tests. My commit message instructed it to deploy all instances of the production service with the latest code after validating all tests pass. The whole process, from pushing code to having it run in production, took just a few minutes. There was no staging/QA cycle, or waiting for a deployment time. It was just push and deploy.
$ git commit -a -m "Backend code for commit stats. #realease:dm" $ git push
I couldn’t imagine a better process for new hires. I’m was able to fix a bug in the first day and implement a feature in the first week. I’ve already moved on to implementing a bigger end-to-end feature.