#1 java — the ecosystem
#2 c/c++ — not yet my chosen direction
#3 dotnet including c#, WCF, remoting, windows debugging …
#4 py — purely automation in most places(easy instrumentation); advanced py systems in a few places
# unix power user tools – including scripting, instrumentation… More widespread but depth is seldom required compared to SQL and python. More well-defined as a tech skill than windows dev.
# SQL/stored proc — losing pole position in low latency and big data environments, still dominant in traditional apps
# Excel add-in and automation
– Anyone (even a non-pianist) could teach piano to a kid, but perhaps not correctly;
– Anyone could teach swimming, but Qiu Yi has insight;
– I would guess any medical undergrad could treat patients, guided by a textbook – Management consultants — These guys go by case studies. Not experts in my industry. Why would I listen to them?
– Application design, low or high level, is an art. An inexperienced guy could go by textbooks, but actually, fine judgement needed at every turn.
In Stirt and Macquarie, how fast you get things done is not as important as getting things done right. Managers here are very particular about the details. I think they want things done right and stick to that long term. I can only guess they have seen hasty code that didn’t last, that required massive rework. Example
* the 2 earlier Error Memos coders
* Some of the code in CAOS (account opening)
This is one reason they want older guys with deep experience and strategic insight.
I feel my c++ interviews aren’t so successful (https://nlgpearl.wordpress.com/2015/05/06/sticky-cweakness-revealed-by-interviewsprojects/), but many traditional efforts may generate diminishing returns. (eg: Home coding project can be very time-consuming). Instead, perhaps we should look for special “imprints” – knowledge pearls that help us impress and stand out during competitive interviews. In a way, we must beat the interviewer on some front since on many questions we would be beaten.
Venkat can often stand out within a short conversation, due to his imprints.
My java interview experience – I managed to impress interviewers and stood out although my coding/design may not stand out. Am I a stronger java guy than my friends? I guess only if you quiz me on those special topics
– lock free
– wait/notify intricacies
– condition variable as replacement of wait/notify
– custom thread pool
– volatile keyword intricacies
– skip list (sorted set)
– concurrent hash map
– special singletons
Targets (memory/threading helps efficiency) —
* subvert the virtual mechanism P928[[primer]]
* placement new – real use cases
* replacement of RTTI
* data alignment in market data wire format
* memory page locking
* custom new() and free list in [[eff c++]]
* lock free – real code not concept
* template partial specialization but I don’t know the use cases?
* various custom-made smart pointers with special features — [[safe c++]]
* memory leak detectors – home made (eff c++?)
* comma operator
* exposure to pricing decisions — the most important decisions
* closer to traders and their decision support
* closer to profit center
Look at these job functions —
* Many analysts in finance need to learn data analytics software ….
* Risk managers depend on large risk systems…
* Quants need non-trivial coding skill…
* Everyone in finance needs Excel, databases, and … financial data.
…. while the IT department faces no threat, except outsourcing. Why?
Surely … Financial data volume is growing
Surely … Automation reduces human error, enforces control — operational risk…
Computer capabilities are improving
Financial data quality is improving
Computers are good at data processing, esp. repetitive, multi-step…
Financial info tech is important and valuable (no need to explain), not simple, requires talent, training, experience and a big team. Not really blue-collar.
Many techies point out the organizational inefficiencies and suggest there’s no need for so many techies, but comparatively is there a need for so many analysts, or so many risk managers, or so many accountants or so many traders? Every role is dispensable! Global population is growing and getting better educated, so educated workforce must work.
Domain knowledge is easier to “fake” than c#/c++. It’s hard to fake the mileage…
Q: which fields can be truly self-taught to in-depth? For example, mobile apps, desktop apps.
Goal #1: pass job interviews
Goal #2: reach the professional level of Theoretical expertise
Goal #3: reach the professional level of Practical expertise
* Quant? too dry. Too many doubts to be clarified only by professor. However the basic math part is standard and well-defined. Goal 3 is invalid.
* high-frequency, algo? Many books but none on real tricks. Compare swing books! Very few jobs.
* network/linux optimization? need machine to try. Extreme optimization techniques are top secrets.
* FIX? Many practical issues hard to imagine. No focus.
* swing, wpf? — tricks can be self-taught through experiment. Practical books are available. But practical problems are unknown.
* c# and core libraries? Real obstacle is the IDE. Practical books abound.
risk-mgmt? impossible to experiment.
coherence? too many subtopics. no focus. Hard to experiment.
tibco? no book at all. Hard to experiment
threading? Can hit Goal 2, not 3