We spend a lot of time and effort on training new people, and it never stops for long. Right now our winter-intern class is ending; in five months we’ll have a slew of new interns to get up to speed, and a few months after that we’ll have an incoming class of new hires.
A big part of our new-hire training is OCaml Bootcamp, a month-long immersion program for non-dev hires (mostly trading, but some from other areas like research, systems, and accounting). We don’t think everyone at Jane Street should be a full-on software developer, but writing code is such a useful way to get things done that it’s worth teaching the basics to a broad set of people.
Teaching programming, especially to people who are not planning on becoming software developers, is an opportunity to reflect on how unnecessarily hard programming can be. There’s a huge learning curve as you struggle to learn your way around the Unix command-line, or figure out the key commands for controlling a 1970’s era text editor like Emacs or Vi, or puzzle through the semantics of a distributed version control system like Mercurial. And all of that is before you even start writing code!
To me, this serves as a reminder of the importance of good tools. The quality of your tools can increase or decrease the steepness of the learning curve, and they also affect your day-to-day efficiency after you’ve climbed up that hill.
Tools are easy to undervalue. Most of our development time is spent, as it should be, on our first order problems – writing the code that powers the systems that let us trade. And the connection between better tools and better trading can seem tenuous.
But really it’s not tenuous at all. If you spend all your time on first order problems, you’ll discover you’re not solving them as fast as you should be. Getting things done effectively requires optimizing your own productivity, and to do that, you have to spend some time sharpening your tools.
And we’ve done a fair bit of sharpening. One recent example is Iron, a new code review and release management system that we started using last summer. Last year, we also rolled out a new build system called Jenga, which greatly simplified and sped up the process of compiling our code. Plus, we switched to a new version of OCaml, which includes a big set of improvements, some of which were specifically aimed at improving our development process [7]. And we funded some former interns to improve Merlin, a fantastic tool that provides IDE-like features like context-sensitive autocompletion in a way that can be easily integrated into multiple editors.
Jane Street is a pretty small shop – we have fewer than 65 full time developers – but even at our modest scale, spending time on tools is a big win. But it’s really about more than dev tools. Thinking about how to make the people around you more effective informs how you work more generally, changing how you design libraries, how you manage services, and how (and whether!) you write documentation.
And in addition to making for a more effective organization, it’s also a more pleasant way to live.