Structure
We tend to work in small and often overlapping teams, with different groups responsible for different elements of the software stack.
These small teams have a lot of freedom to make decisions about the future course of the systems they’re building, and are responsible for coordinating with people in other areas of the firm to figure out what’s important.
Desks are organized like a traditional trading-floor, with people seated close to each other on an open plan rather than in cubicles or offices. Working together on a floor facilitates communication with the group, and keeps you close to the daily rhythms of trading.
Although technologists spend most of their time on the trading floor, there are times when people prefer to focus, distraction-free, on their work. We have designated quiet rooms where people can go when they need absolute silence to focus on a task.
Tools
Creating software is a key part of what makes us profitable, so we spend significant effort working on our own tools. We’ve built a variety of internal development tools, including custom editor integration with our build system, a compile-daemon used to handle proposed changes before accepting them, a unit testing system that integrates with our build system, and tools for managing the process of code review.