Beware many big domains don’t need lots of developers.
- Bonds including sovereign
- [V] Eq (including ETF) cash and swap
- [V] FX cash and fwd
- Eq/FX options
- [Q] IRS
- IR (including bond) futures
- [Q] CDS
- [Q] MBS
- [d=will see higher demand for developers??]
- [V=volume and velocity drive the demand for developers]
- [Q=low volume but j4 automation is quantitative in terms of automated risk and pricing.] I believe these quantitative asset classes play to my “theoretical” strength and not too niche, but these domains aren’t growing.
C++ interviewers may demand <del>c++ecosystem knowledge</del> but java also has its own ecosystem like add-on packages.
As I told my friend and fellow c++ developer Deepak CM,
- c++ecosystem QQ questions can be more obscure and tougher than core c++ questions
- tool chain — compiler, linker, debugger, preprocessor
- IPC, socket, pthreads and other C-level system libraries
- kernel interface — signals, interrupts, timers, device drivers, virtual memory+ system programming in general # see the blog catetory
- processor cache tuning
- (at a higher level) boost, design patterns, CORBA, xml
- cross-language integration with python, R, pyp, Fortran + other languages
- java ecosystem QQ questions are easier than core java questions. In other words, toughest java QQ questions are core java.
- java ecosystem questions are often come-n-go, high-churn
Low level topics are tough
- c++ ecosystem questions are mostly in C and very low-level
- java ecosystem questions are usually high-level
- JVM internals, GC … are low-level and core java
I was a decent sprinter at age 6 through 13, then I realized I was not good enough to compete at Beijing municipal level.
There are quite a number of HFT shops in Singapore. I think they have a higher bar than ibanks. At ibank interviews I felt again like that pre-teen sprinter, but HFT interview is generally too hard for me
A sensible national football team (say China) should not focus solely on the World Cup as the only measurement of visible progress.
There are many other indications of progress.
It’s completely counterproductive to always point a finger and sneer “this country has never made it to the world cup”.
- reputation risks to renters/landlord
- legal risks to accountants — sis
- legal risks to doctors like malpractices
- legal risks to car drivers
- legal risks to security traders
- legal risks to sales people
- legal risks about intellectual property such as stealing code
Bytedance backend engineer told me “90%” same when I asked “can I say that as a backend dev i don’t care if client is smartphone or computer”
Some interviewers have requested my github profile. I create github content for learning and to share with my friends, not really for interviewers. I have decided not to spend too much time polishing my github content. The content would be rough round the edges. If there’s any doubt or bug report, I would be happy to discuss.
- — python
- https://github.com/tiger40490/repo1/blob/py1/py/loggingDecorator.py is a logging decorator
- https://github.com/tiger40490/repo1/blob/py1/py/sock/1sock2server.py demonstrates a single socket can be shared by two TCP daemons
- https://github.com/tiger40490/repo1/blob/py1/py/sock/tcpEchoServer.py is an echo-server I used during my integration testing
- — java
- https://github.com/tiger40490/repo1/tree/jProj/java/com/tanbinFIX is a simple FIX engine written from scratch over a weekend
- https://github.com/tiger40490/repo1/tree/jProj/java/com/wells is an aggressively concurrent Queue implementation that aggressively avoids locking
- https://github.com/tiger40490/repo1/tree/jProj/java/com/nsdq/drone is a drone simulator
- — perl
- https://github.com/tiger40490/repo1/blob/perl1/perl/scan_c_src.pl is a source code search engine, simple but fairly reliable over a few years
- — c++
- https://github.com/tiger40490/repo1/blob/cpp1/cpp/thr/pthr_binarySem.cpp shows a pthreads binary-semaphore is not usable as a lock
- https://github.com/tiger40490/repo1/blob/cpp1/cpp/template/shPtrUpcastCopy.cpp investigates the question
“How is shared_ptr<Der> instance assignable to a shared_ptr<Base> variable when the two types are unrelated?”
- https://github.com/tiger40490/repo1/blob/cpp1/cpp/template/CRTP_clone.cpp is a simple demo of clone() using CRTP
- https://github.com/tiger40490/repo1/blob/cpp1/cpp/rvr/moveOnlyType_pbvalue.cpp is an experiment on move-only data type
- https://github.com/tiger40490/repo1/blob/cpp1/cpp/template/downCast_MultiInherit.cpp demonstrates dynamic_cast can return a modified address.
- https://github.com/tiger40490/repo1/blob/cpp1/cpp/thr/takeTurn.cpp solves the classic problem of N threads taking turn, without condition variables or sleep()
- https://github.com/tiger40490/repo1/blob/cpp1/cpp/88miscLang/typeid_WithoutVptr.cpp shows typeid() can “work” without any virtual ptr.
- https://github.com/tiger40490/repo1/tree/cppProj/cppProj/tetris is a visual toy game of “Tetris”
- https://github.com/tiger40490/repo1/tree/cppProj/cppProj/elevator is a simple elevator simulator
- https://github.com/tiger40490/repo1/tree/cppProj/cppProj/2015_OrderBook is a toy exchange order book
Conclusion — my tech-bets and investment in many FOSS technologies proved to be correct. In contrast, only a few of my tech bets on commercial softwares are correct — MSVS, Oracle, Sybase, Excel+VBA,
I didn’t want to spend too much effort analyzing the forces around FOSS, but to my surprise, those forces keep growing and evolving.
- Eg: weblogic was once dominant, but left behind by Tomcat and Jboss
- Eg: Microsoft has to contend with Linux, Java, Apache
- Eg: Oracle has to keep developing OpenSolaris, and MySQL
- Eg: IBM, Oracle … have to support Linux
- Eg: SUN, HP-UX all lost the battle against Linux. SUN has no choice but OpenSolaris
- Most of them have to face the stiff challenge by a single FOSS — GNU/Linux
Because a FOSS needs no revenue no payroll to stay alive, there’s no survival risk or financial uncertainty in a FOSS project. Therefore, a FOSS often has better longevity.
Some of the most influential, dominant, enduring and low-churn softwares are FOSS and are unlikely to change:
- linux, BSD-unix
- java and GCC
- python, perl, and most scripting languages
- most development tools in *nix
- many browsers
Q: what forces power the FOSS and provide the energy, momentum?
A: alpha-geeks who want to create a impact and legacy?
Apparently, you need just one (or a few) alpha-geek to create a formidable competitor to a software vendor’s army of developers.
- I always believe swing is a distinct skill from core java. A regular core Java or jxee guy needs a few years experience to become swing veteran.
- Now I feel socket programming is similarly a distinct skill from core C/c++
In both cases, since the core language knowledge won’t extend to this specialized domain, you need to invest personal time outside work hours .. look at CSY. That’s why we need to be selective which domain.
Socket domain has much better longevity (shelf-life) than swing!
In your gym, we discussed that some developers could be very sharp, knowledgeable, analytical, fast-thinking, fast-learning, but most of these developers don’t achieve the greatness like the achievement of your “Hibernate” colleague. I can think of a few other “great” achievers.
– A Citi developer who built the pricing engine almost single-handed, with so much logic thrown in. Perhaps design wasn’t great, but this engine works — no mean achievement given the tons of functionality. There’s so much logic that it took initially 2 developers and later 3/4 full time guys to support it. (One of the guys said this implementation is overcomplicated.)
– A ML manager who knows the entire trading engine (execution, offer/bid, RFQ, PnL, pricing, ECN..) inside out. The other 4 full time developers under him can’t support the app as well as he can by himself. When he is on leave for 2 weeks, we worry about if production issues will stay unresolved.
It takes more than talent + diligence to achieve greatness. For one thing, the guy must spend a few years dedicated to researching and experimenting with the core parts of the system, without cold feat. In my GS team, everyone did this. Outside of GS, i don’t see many doing this sort of hardcore inside-out system hacking, which is mandatory to mastery. Typically it takes 3 (up to 5) years to become a master, but the great developers take 25% of the time. They focus, they work (much) harder, they go deep — fearless and relentless. They seem to (quietly) believe that they “can do it” in 25% of the time, and they stick to the timeline and finish it. Determination, confidence, commitment and drive — common qualities of a few of my team leads.
They also must know when to give up on something hopeless, fruitless, worthless, or something with poor cost/benefit ratio. Without this critical Judgment, one would invariably waste time in all kinds of situations, and lose momentum, lose opportunities, lose management support, lose confidence. I believe the few great achievements I know are all achieved with a tight deadline. Wasting time is deadly. Great developers must know how to identify and avoid deathly traps.
Almost always, they also need to work with many others to finish a big task quickly, so some people skill is required, to varying degrees. I’m not good at analyzing this so let me skip.
Needless to say, none of these qualities are testable in an interview. Everything can be faked up. Therefore I believe it’s impossible to identify powerful achievers by job interview.
Singapore is a trickier work place than US. It would be great to find a mentor and a protective manager.
I usually have good rapport with users, but it's possible that I may not jell well with some traders and some colleagues.
I hope to fall back on my ability to get-things-done and my system knowledge so they would feel it's hard to find someone to replace me.
2012 – make people feel comfortable with you
2011 – imagine most people’s average antenna is much longer
2011 – Identify your eccentricities and unlearn — conform. Shift midpoint of your spectrum of normalcy.
2010 – Make your manager look good
2004 – “Shrink” and “Be invisible
2006 – Identify role models and imitate
2005 – Assume other people are potentially intolerant, cynical, over-sensitive, fragile, inferiority-stricken, and won’t give me the benefit of doubt
2000 – Focus the next 14 days on making someone truly happy
Seek weekly/monthly feedback — GS career advice
empathy, protocol, etiquette
Be a “teammate” rather than a mere co-worker
Be open to bitter medicines, hard-to-swallow medicines