Today I got an email from a recruiter about a java development opportunity. Roughly speaking, it is in the trading or commodities field. To me, it feels like an interesting job as it somewhat demands high performance computing skillset. Here is the job description:
-At least three years of software architecture and senior development skills in a high pressure, time critical environment.
-Skills in one or more of the following areas: Java J2SE, Java Swing, Adobe Flex/ActionScript, Python
-Experience of developing highly multi-threaded, highly scalable, concurrent applications (for example using Doug Leas framework).
-Relational database experience (Oracle preferred).
-Experience of multi-tier architectures.
-Exposure to Messaging bus architectures for delivery of market & time series data.
-Excellent communication skills, both written and verbal
-Ability to effectively manage multiple streams of work and to organize self and others to deliver in a timely fashion.
-Understanding of performance tuning, message integrity and security related to real-time applications.
It smells programming for the high frequency trading financial applications, doesn't it? Anyhow, it is nice to see that java and python are the two primary skills required in this job, and also relational database. I thought that these days it is all about big data and no sql, but it looks like the old-school relational stuff is still alive and well and much in demand.
The other interesting part of this job is that, it is a good combination of advanced java programming (multi-threading, scalability) and computer networking / security knowledge. I guess the only drawback of it is it is using Oracle. To me, MySQL pretty much could undertake most of the work, depending on how you configure the server(s). I always think companies/people using Oracle to be just too bloated. Anyhow, maybe I am under-estimating the magnitude of the data?
Talking about java multi-threaded programming, I've read some books and took an actual course on it, but that was couple years ago. Now there are good books about this topic:
Java Concurrency in Practice
Best introduction to java multi-threading issues. It describes all the Java concurrency utilities and how to use them. It also covers what the core issues are with concurrent programming in general. Probably one of the best, very readable and mostly easy to understand.
Concurrent Programming in Java
This is another book that needs to be mentioned as it is written by Doug Lea. It is a valuable resource for experienced programmers who are trying to write large, complex, real-life concurrent Java programs, but not as easily digestible compared to Java Concurrency in Practice