fear@large codebase #web/script coders

One Conclusion — my c++ /mileage/ made me a more confident, and slightly more competent programmer, having “been there; done that”

For half my career I avoided enterprise technologies like java/c++/c#/SQL/storedProc/MOM/Corba/sockets/turboC++…

Until GS, I was scared of the technical jargon, complexities, low-level API’s debuggers/linkers/IDE, compiler errors and opaque failures in java/SQL … (even more scared of C and Windows). Scared of the larger, more verbose codebases in these languages (cf the small php/perl programs)… so scared that I had no appetite to study these languages.

Look around your office. Many people have at most a single (rarely two) project involving a large codebase. Large like 50k to 100k lines of code (excluding comments and empty lines). I feel the RTB/DBA or BA/PM roles within dev teams usually don’t require the individual to take on those large codebases. Since it’s no fun, time-consuming and possibly impenetrable, few of them would take it on. In other words, most people who try would give up sooner or later.

Searching in a large codebase is a first challenge. Even figuring out a variable’s actual type can be a challenge in a compiled language.

Compiling can be a challenge esp. with C/c++.

Tracing code flow is a common complexity across languages but worse in compiled languages.

In my experience, perl,php,py,javascript codebases are usually small like pets. When they grow to big creatures they are daunting and formidable just like compiled language projects. Some personal experiences —
* Qz? Not a python codebase at all
* pwm comm? I would STILL say codebase would be bigger if using a compiled language

  • Analogy — if you have not run marathons you would be afraid of it.
  • Analogy — if you have not coached a child on big exams you would be afraid of it.

I feel web (or batch) app developers using standard tools lack the hardcore experience. They operate at a higher level, cleaner and simpler.

Note Java is much cleaner than c++

 

Advertisements

%%engaging[def2]deep dive shines through QQ interviews

Opening example — I had 3M of fixation on tibrv^JMS. Just look at my blogposts. I go beyond interview topics. This fixation hopefully shines through on interviews.

This post is more about “engaging” than focused effort — I couldn’t really force myself to focus on speed coding or c++ TMP, or high-churning javascript.

Ken Li (Citi-muni) was probably a sharp observer of my personality and once said “If you are interested in software development then you will have a long career till retirement … no need to worry. A lot of developers lack that interest.”

Very few candidates had more than 3M personal spare time engaged in any tech topic.. Something like a deep dive. (Even fewer can sustain 12M focus.) Consider XR’s interest in machine learning. Consider grandpa.

Apparently, many interviewers are personally interested in these same details (the whys/hows/whats) so they seek out like-minded enthusiasts. This is one hypothetical explanation why those crazy theoretical QQ questions come up so often.

Other examples of personal fixation that (hopefully) shine through

  • sockets — blocking operations …; unplugged
  • clustered index
  • timer hardware interrupts
  • userland vs kernel mode
  • nested classes across languages
  • compiler rules on overriding

Now, many of the weeks spent has low ROTI but I was not fixated on ROTI since my earliest engaging studies in 1998 — first deep dive in unix + C programming + perl. As it turned out

  • unix and linux became dominant on server side and enhanced my career
  • perl became m entry point into programming career
  • C domain was hopeless, but with c++ I was able to capitalize on it

Still, many of my engaging studies had low ROTI, but what if I didn’t capture my interest? I think I would end up wasting my spare energy!

Striking balance — too much “engaging” –> regretful ROTI; too little “engaging” –> bored and unfulfilled.

%%geek profile cf 200x era, thanks2tsn

Until my early 30’s I was determined to stick to perl, php, javascript, mysql, http [2] … the lighter, more modern technologies and avoided [1] the traditional enterprise technologies like java/c++/c#/SQL/MOM/Corba . As a result, my rating in the “body-building contest” was rather low.

Like assembly programming, I thought the “hard” (hardware-friendly) languages were giving way to easier, “productivity” languages in the Internet era. Who would care about a few microsec? Wrong…. The harder languages still dominate high-end jobs.

Analogy?

* An electronics engineering graduate stuck in a small, unsuccessful wafer fab
* An uneducated pretty girl unable to speak well, dress well.

Today (2017) my resume features java/c++/py + algo trading, quant, latency … and I have some accumulated insight on core c++/c#, SQL, sockets, connectivity, ..

[1] See also fear@large codebase
[2] To my surprise, some of these lighter technologies became enterprise —

  1. linux
  2. python
  3. javascript GUI
  4. http intranet apps

## 9 c++realized $ROTI

I wanted c++ ROTI. After so many years of trial and error, I got two

  • G3 [18] The CVA $122/hr offer
  • G3 [18] SCB-FM S$210k offer, unthinkable in my Singapore job search.
    • In terms of base, This one is about $$190k. My “reasonable” target was S$150k and my “high” target was $170k.
  • G5 [18] SIG technical win
  • G5 [12] BNP forex prop trading contract offer
  • [19] MLP-sg java connectivity team actually has a small c++ requirement.
  • G9 overcame fear@large codebase]c++/j and emerged above most developers.

##OK,%%spare time had low ROTI..how about Theirs@@

I often feel bad that all of my efforts in my spare time had no tangible ROTI, but look around, who fared better?

Note this post is more about peer comparison (recrec blog), less about my spare time usage (open blog)

For the record my spare time effort did produce some tangible outcomes

  • coding drill in github and wordpress. I think most of my friends didn’t bother to record. Their practice is short-term.
  • yoga, jogging
  • blogging on housing (and school districts) — our real needs. The time spent convinced me to live in Bayonne
  • blogging on personal investment — complex. The time spent directly affected my investment decisions
  • blogging, discussion on boy. The time spent directly influenced my views, decisions and communications with family members
  • helping friends (Deepak,Ashish,YH) with job hunting
  • helping my kids with sports, piano, renzi
  • –less tangible:
  • studying risk systems, data science, crypto-currency? Helps way-finding and navigating the job market

fixation@ROTI@tech-xx : too result-oriented; disengaged

fixation@ROTI/payoff/success/result/accu … dampens job satisfaction+joy@learning.

This affects my “engagement”. Granted, we should not Ignore these ROTI factors, or those “smells” … instead we should evaluate our direction and take stock, but let’s not overdo it.

  • +ve Eg: Barcap option math
  • +ve Eg: Barcap swing learning
  • +ve Eg: RTS socket programming
  • -ve Eg: git
  • -ve Eg: curve building
  • -ve Eg: WCF

Consider a tour guide aiming for the tip at the end.
Consider Grandpa in his research career.
Consider a singer like 王杰 or the last few years of 邓丽君。
Consider Einstein’s violin

Q: has that increased your income or benchmark score? # more time in office, shorter commute, MSFM, c# ….

  1. This question can be posed to grandpa.
  2. This question can be posed to any education institute including the “top schools 名校”. Ironically the same questioners seem to be /fixated/ on these top schools for their kids. So for these people, this question is self-contradictory.
  3. This question can be posed to my friends engaged in quantitative investment analysis.

This question is harmful, misleading, derogatory, discriminatory, browbeating, pessimistic/fatalistic, myopic, … This question tosses aside many important things to our lives, our joys, and satisfaction —

  • career safety net
  • exploration of personal talents and personal interests
  • “in-demand” satisfaction
  • market depth
  • mobility between firms
  • freedom — I don’t want to feel “trapped”
  • observation (even conviction) on various topics, based on in-depth personal research

ROTI@learning ED/IRS/FX-swap/repo #math-lite

Note this effort is after my basic bond math study, though I often count this effort as part of the broader “bond math” study.

Basic bond-math knowledge has robust demand on Wall St. Without hard evidence I feel ROTI is decent in basic bond math study. Q1: How is the ROTI in this study?

I feel many of the jargon terms in this space are common and essential knowledge:)

  • swap rate; comparative advantage;
  • OIS; Libor;
  • basis risk;
  • collateral;
  • curve building

However, this self-study rarely helped me:

  • MSFM course
  • Stirt job interview

Q1b: How is the market depth and robust demand of this skill?
A: not used much in the trading buy-side, but some asset management and most sell-side do need this know-how.

Note this topic is generally math-lite and much simpler than option math, so I was able to self-study:) See fixation@ROTI…dampens job satisfaction+joy@learning

Q2: how is the knowledge retention rate?
A2: decent. Thin->thick yes but not yet thick->thin

j4 stick2c++: Score big{losing@quant/c#

See also vindicative specializations , what if I transition to desk quant role but don’t rise up@@ and j4 c#: hind sight

I already give up several “investments”. If I take a java job, I would again forgo so many years of investment in c++. Now after I got more c++ offers, I feel /triumphant/vindicative/.

swing py c# quant 2010~13 quant af 2013 c/c++  (Zoom out …)
 $0 $0  $0 S$70k $ invested
 $0 $0 S$5k/Y  $0 $1k/Y cf
nonQuant job
up to USD20k/Y pretax opportunity cost
6M 2Y since barc 2Y  1Y 3Y 6Y since 1998 nominal effort
3M 4M 1Y  6M 2.5Y 4Y serious effort incl. STS
3M 2M 1M  2M 2Y 2Y spare time sacrificed(STS)
-2 -3 -6  -5 #more than py -15 -16 points invested
Barx passed some IVs OC, Bbg, Reuters 95G/OC Stirt/Mac/CVA ~18 offers job “offers”
Trex,bbg.. DRW; Nomura; Mako; Trex; Pimco analytics too many help interviews
helps my WPF xx value@algo IV deepens java nlg brain teasers; math cfd; contrarian insight into bigData/quantTrading; see y re-enter c++ other ROTI
2 more than
invested
3 #built real
professional xp
more than invested 9 #50%+ more than invested points SCORED
 no loss? no loss -3 no loss -7 no loss net points lost

[17]orgro^unconnecteDiversify: tech xx ROTI

Update — Is the xx fortified with job IV success? Yes to some extent.

Background – my learning capacity is NOT unlimited. In terms of QQ and ZZ (see post on tough topics with low leverage), many technical subjects require substantial amount of /laser energy/, not a few weeks of cram — remember FIX, tibrv and focus+engagement2dive into a tech topic#Ashish. With limited resources, we have to economize and plan long term with vision, instead of shooting in all directions.

Actually, at the time, c#+java was a common combination, and FIX, tibrv … were all considered orgro to some extent.

Example – my time spent on XAML now looks not organic growth, so the effort is likely wasted. So is Swing…

Similarly, I always keep a distance from the new web stuff — spring, javascript, mobile apps, cloud, big data …

However, on the other extreme, staying in my familiar zone of java/SQL/perl/Linux is not strategic. I feel stagnant and left behind by those who branch out (see https://bintanvictor.wordpress.com/2017/02/22/skill-deependiversifystack-up/). More seriously, I feel my GTD capabilities are possibly reducing as I age, so I feel a need to find new “cheese station”.

My Initial learning curves were steeper and exciting — cpp, c#, SQL.

Since 2008, this has felt like a fundamental balancing act in my career.

Unlike most of my peers, I enjoy (rather than hate) learning new things. My learning capacity is 7/10 or 8/10 but I don’t enjoy staying in one area too long.

How about data science? I feel it’s kind of organic based on my pricing knowledge and math training. Also it could become a research/teaching career.

I have a habit of “touch and go”. Perhaps more appropriately, “touch, deep dive and go”. I deep dived on 10 to 20 topic and decided to move on: (ranked by significance)

  • sockets
  • linux kernel
  • classic algorithms for IV #2D/recur
  • py/perl
  • bond math, forex
  • black Scholes and option dnlg
  • pthreads
  • VisualStudio
  • FIX
  • c#, WCF
  • Excel, VBA
  • xaml
  • swing
  • in-mem DB #gemfire
  • ION
  • functional programming
  • java threading and java core language
  • SQL joins and tuning, stored proc

Following such a habit I could spread out too thin.

0%ROTI:php,mysql,javascript..really@@

2000 – 2002 are the first few years I spent in IT and had a deep impact on my outlook. However, there are many overstatements:

  • Too early to say — javascript had a surprise revival, even on Wall St! I have not decided to go back there.
  • Too early to say — perl was widely used on Wall St and was a key factor to my survival in GS.
  • SQL — skills I acquired in GS is not completely irrelevant. Many (financial etc) systems still use it. Perhaps less used on west coast in web 2.0 shops.
  • php — investment was not 100% lost. It did provide me a job at NBC. I think this is still a valuable skill on west coast. My php confidence is an asset.
  • mysql — investment was not completely lost. I would say my mysql experience gave me enough confidence and competence to take on other database systems.
  • apache — investment gave me valuable insight into network servers. I think apache is still widely used outside Wall St.
  • weblogic — investment was 90% lost but luckily I didn’t invest too much

 

[11]traction[def1]^learning curve gradient

Context — learning a new software language, API, entire server (OS, DB..) or toolkit, with non-trivial concepts embedded therein.

The more common pattern is the learning curve. Initial gradient is often higher as pick up speed. After 6 months (or 1, or 12..) it flattens and tapers off and you experience diminishing returns.

A 2nd pattern is “gaining traction” . For the first 4 weeks (or 1 or 20..), you spend a lot of time reading and experimenting but without growing confidence…

  1. after a while, you start to connect the dots via thick->thin, often in a series of incremental breakthroughs.
  2. thick -> thin is not merely (superficial) accumulation of knowledge
  3. you often need perseverance and sustained focus. See focus+engagement2dive into a tech topic#Ashish
  4. knowledge gap build-up above the new entrants
  5. high ROTI
  6. high retention rate
  7. gaining-traction is opposite of wheel-spinning

I experienced and overcame this wheel-spinning process in ..

– swing
– C++, – java, c#
– python
– JMS, RV
– drv pricing
– options
– yield
– IRS

Solution?

A related pattern is engagement