I just finished reading Michael Lewis’ new book, Flash Boys. It was a great book (like everything else by Michael Lewis)!
Flash Boys is about high frequency trading (HFT) in financial markets. It has fascinating stories of many different involved parties: from people laying down ultra-straight fiber-optic cables in response to demand for the fastest New York/Chicago internet connection, to a gifted programmer who goes to prison for cloning a Goldman Sachs SVN repository, to a Candian banker who starts his own, fairer stock exchange.
There are so many themes in this book that are important for programmers to consider. One is the need to understand what your code is for. It sounds so simple, so obvious; borderline ridiculous. But in large organizations, there can be many layers of separation between the people who understand the “big picture” — how the business is going to make money — and the people writing the code to make that vision a reality. Consider this excerpt:
[The tech guy responsible for making the bank’s computers run faster] was also keenly aware that he had only the faintest idea of the reason for this incredible new lust for speed. He heard a lot of loose talk about “arbitrage”, but what, exactly was being arbitraged, and why did it need to be done so fast? […] Towards the end I’m like, ‘Excuse me sirs, but what are you doing in the bank?’
Note that “what are you doing in the bank?” was asked towards the end, and not towards the beginning!
HFT may be a special case, but when programmers understand the overall vision of the company they work for, it is a huge win for everybody. So here is a challenge to all my readers: the next time you are asked to implement a feature, go and spend a few days doing the job of whoever in your company is going to end up actually using the feature. Get to know them personally. Get to know the job. Understand how the feature will fit in to those people’s workflows. See if you can think of alternatives that would be even better.
Know your industry. Know your company. Understand the business. Understand the “why”. It’s not only more efficient, it’s more fun. And that’s as good a reason as any to give it a try!