Newb to programming but slowly opening up to the idea that it is very beneficial for trading and also for holding down a regular job outside of trading.
Right now I am contemplating the first language to learn.. So far I am stuck between Java or Python.
What would you recommend for someone new to programming but wants to have the most impact in regards to trading?
I see people recommending C#. I absolutely agree with them, just want to add more specifics:
1. You will get more luck looking for a job if you stick to Microsoft technologies, like it or not. Corporate/finance mostly use MS products, they have tons of legacy code to support and dozens of never-ending internal projects. From my personal and my friends experience, people with MS background often get paid more for the same task. Especially when it comes to business/finance solutions.
2. C# is really fast, sometimes maybe even faster than C++. It may sound superfluous, but there is the reason: C# code gets compiled to a specific platform on the very first launch, not when you build the project. It means that it gets optimized for the exact hardware configuration, not for some abstract safe one.
I developed some pieces of unsafe code which I share between all my projects which enable me to reach speeds that wasn't possible to get when I used C++ 10 years ago. Yes, I have enough C++ background to compare, I developed really complex and time-critical applications like SCADA and satellite communication systems in the past. My previous business (keyword research) was built entirely on C#, I was able to do full-text search of 4+ billions of keywords in 20ms. It's about 70Gb of data, by the way. Just reading a file of this size from a cheap HDD will take over 20 minutes, not even taking into acoount the full-text search itself.
3. When you see slow C# apps, it's not about the language itself, it's about algorithms or third-party libraries without optimizations. Or some resource-hungry visual things, like WPF. It's also a common mistake to link "fast" C++ library without taking into account that there are some costs involved when you do cross-boundary calls. There is always a room for speed optimization, when you really need it. I'm not a fan, I optimize only bottlnecks detected by the profiler. It alone enabled me to serve 3,000+ customers from a single server silently eating 60W/hr near the fridge at my kitchen, while my competitors paid up to $100,000/mo for "smart" AWS solutions.
4. The software development environment is great. It's the main reason why I'm stuck there. I like Visual Studio and I literally love ReSharper. The speed of software development/testing/optimization/bug fixes is enormous. I was able to develop and polish a full-featured backtesting tool with charts/data/simulation/drawing tools and indicators in about 3 months. Yes, it took me 20+ years of previous experience to do it, but anyway
It's always a pain when I'm forced to use some other languages or IDEs. Not because I haven't got used to them, but because they lack so many obvious features that it's hard to convert. When using C# in VS+ReSharper, I don't "code", I just imagine what do I need and the code just magically appears on the screen
5. There are plenty of ready-to-use libraries and solutions in NuGet. Don't invent the wheel, just google anything you need first. At 99%+ of cases you will find that somebody somewhere had the same problem, which resulted in a great solution. Even if it's not in NuGet, Stack Overflow have enough code samples to copy/paste and see if it works, or not.
6. You can use the same language and IDE to develop any type of product: Windows, Mac, iOS, Android, online or combine them. They will share the same libraries, so you don't need to write, debug and optimize the same code again and again.