I received an email last week from a reader asking about the best enterprise language, such as C++, Java or C#, to learn in order to get a development job in finance. I replied saying that it was not a straightforward question to answer, for a number of reasons!
Let's have a look at the different languages in turn and see the advantages and disadvantages of each:
If you are prepared to learn C++, object-oriented programming and design patterns to a high standard, then you will likely be in high demand in the financial industry - either as a quant developer or a traditional developer.
Much of the older financial infrastructure is based on C++ code and somebody needs to maintain and extend it. This might be quantitative libraries running derivatives pricing models or simply trading infrastructure to process feeds and store the data.
A senior contractor with 5-7 years experience of strong C++ development, contracting in London, should be able to command £500-£700 GBP a day. In the current climate the market for developers is very buoyant. This may or may not last, so don't expect those figures to be around forever.
One additional benefit of being an expert C++ programmer is that it will put you in demand from the high frequency trading funds. However, you will need to be a serious expert in both optimisation of the language, compiler limitations and operating system internals in order to get into that particular aspect of finance. If you're prepared to study hard for a considerable amount of time, or have the necessary background from an industry such as telecoms, then the salaries can be extremely lucrative.
I've lumped together the garbage-collection VM languages such as C# and Java as they hold similar places, often in investment banks. Both of these languages have been around for a while, just not quite as long as C++. Financial institutions, particularly investment banks, use a lot of these languages for their entire trading infrastructure, including data feeds, front-end trading interfaces and sometimes derivatives pricing.
I'm not one to begin a flame war on which programming language is the best, but I will say this: Both C# and Java are heavily utilised in the sell-side (banks) of finance, but you are less likely to be working on more quantitative work and more likely on infrastructure. This may or may not appeal to you. However, if you are good at what you do and make yourself known to be good within your peer group, you will likely not have trouble obtaining good compensation and an interesting development career.
Python, MATLAB and R
I've collected the "scripting" languages together, less so because of their commonalities are languages and more so due to their usage within finance. All three are mainly used for prototyping quant models, especially in hedge funds and quant trading groups within banks.
Quant traders/researchers write their prototype code in these languages. These prototypes are then coded up in a (perceived) faster language such as C++, by a quant developer. This was part of my duties when I was working as a "quant dev". If you are interested in a more relaxed environment than a bank trading floor then hedge funds are a good answer. Any Python/MATLAB/R scripting skills will be extremely valuable.
As an anecdotal data point, I was recently asked by a friend if I knew any Python developers who might be interested in a quant fund developer position as they're using Python exclusively for their entire trading system within a new quant fund.
If you are brand new to programming then I would suggest becoming proficient at C++ and Python. You won't have trouble getting hired with those languages if you can pass the tricky interview questions. To begin learning either have a look at these QuantStart reading lists: