I have grown from a sysAdmin to a dev
I have grown from web and scripting pro into a java pro then c++ pro !
Next, I hope to grow my competence with large codebase.
I feel large codebase is the #1 diffentiator separating the wheat from the chaff — “casual” vs hardcore coders.
With a large codebase, I tend to focus on the parts I don’t understand, regardless that’s 20% or 80% of the code I need to read. I can learn to live with that ambiguity. I guess Rahul was good at that.
In a few cases, within 3M I was able to “take up” a sizable brown field codebase and become somewhat productive. As I told Kyle, I don’t need bottom-up in-depth knowledge to be competent.
In terms of count of successes taking up sizable brown-field codebase, I am a seasoned contractor, so I would score more points than a typical VP or an average old timer in a given system.
- eg: Guardian — don’t belittle the challenge and complexity
- eg: mvea c++ codebase — My changes were localized, but the ets ecosystem codebase was huge
- eg: mvea pspc apportionment/allocation logic + price matching logic
- eg: mtg comm (small green field), integrated into a huge brown field codebase
- eg: StirtRisk personalization — I made it work and manager was impressed
- eg: StirtRisk bug fixes on GUI
- eg: Macq build system — many GTD challenges
- eg: Moodles at NIE
- eg: Panwest website contract job at end of 2016
- ~~~ the obvious success stories
- eg: AICE — huge stored proc + perl
- eg: Quest app owner
- eg: error memos
- eg: RTS
Primarily supply-demand driven
* Reason (demand-side): age discrimination — Davis pointed out that many ibank and other employers would accept (reality) to pay higher salary to a fresh grad than an old-timer because these employers long for fresh blood
* Reason (demand-side): core dev teams — are more central than peripheral teams like devops (eg QAPM), QA, DBA, reporting,.. Consider Ling, the QAPM devops scripting guru.
* Reason (demand-side): Jay Hu pointed out that hard-core dev skillset — is perceived as more valuable, harder than “tools” including reporting tools, devops tools, automation tools, vendor products that encapsulate the underlying complexities.
Similarly, c++ skillset is often perceived as harder than coreJava
Similarly, coreJava skillset is often perceived as harder than jxee
Similarly, c++java skillset is often perceived as harder than scripting
On the supply side, there are fewer hardcore c++ developer than coreJava developers, and a lot more jxee developers. However, there’s also the Curious case of quant dev — tight supply, but dwindling demand.
If you have some brain power (like the 华中理工 compScience friend of Jay Hu), then don’t be put off by hard-core dev, even though it’s dry, boring, tough, unglamorous. See my blogpost on my geek profile.
The modern languages all feature dramatically simplified tool chain. In contrast, c++ tool chain feels much bigger to me, including profilers, static analyzers, binary file dumpers, linkers ..
This is one of the real obstacles to new entrants, young or old. This is also my (slowly growing) competitive advantage. I feel some people (like Kevin of Macq) know more, but most developers have a cursory working knowledge in this field.
I was frustrated for years by the complex and messy build tools in c++. Same for the other new entrants — Rahul spent a month setting up Eclipse CDT…
This learning curve, entry barrier … is a direct consequence to the c++ “sweet spot” as Stroustrup described — inherently complex codebase close to hardware.
I wrote dozens of blogposts about c++ build issues. For example, on windows, my strawberryPerl + git_bash + notepad++ setup is unknown to many. These fellow developers struggle with MSVS or Eclipse !
Due to the bigger ecosystem needed to support c++, new features are added at a slower pace than languages having a central organization.
Am confident that my coding drill will become a “long-term” hobby like java/c++ QQ, better than c#/quant/swing QQ:
- Enjoyable? Yes possible and real if no pressure.
- Not theoretical; more immediate result
I think coding drill may even outlast c++ QQ self-study but crucially my c++ QQ has reached … critical mass !
I would say QQ remains my stronger arm. (I don’t need to care about HFT shops’ assessment of me.)
- QQ benefits from thick->thin (and xRef) … one of the key competitive advantages I could develop through blogging and continuous refresh.
- CIV also benefits from blogging and continuous practice … my competitive advantages. Remember David Okao’s question “what is your secret weapon?”
Note High-end CIV is only needed at top west-coast shops. I think most of the top performers are young but I could stand out among my age group.
Out of the subconscious realm, I hand-picked a couple of personal “qualities”  as the (three or five) pillars of my life , the most important pillars since 2007. 2007 is the /watershed year/.
These are the pillars for my past, present and my future, immigration plan, family housing, retirement plan, … There’s possibly nothing new here, but this blogpost provides another perspective into the “making” of my career and the foundation of my entire life. As such, this is not a worthless reflection. Still, avoid over-thinking as there are other worthwhile reflections.
I think everyone can consider the same question — “Using words that are as specific as you can find, name 2 or more personal survival capabilities, hopefully the most important ones.”
- AA) IV prowess — (since Chartered). Compare CSY’s experience.
- self-renewal to stay relevant — lifelong learning. Am rather successful so far
- my reflective blogging is actually part of the my career way-finding, motivation…
- absorbency — of dry, theoretical, low-level domains. /continuous/ plow-back without exhaustion
- theoretical complexity — aptitude and absorbency
- lower-level — overall, i’m stronger than my peers at low-level
- BB) my capacity to keep a well-paying dev job (not as “unique” as the other 2 capabilities). Even in the three Singapore cases, I was able to hold it for about 2 years, or receive a transfer or severance.
- figure-things-out speed? Not really my strength but my competence
- camp-out, extra hours
attention to details
- getting the big picture?
- [G3] personal burn-rate — important to my feeling of long term security.
- See the Davis chat on old-timers.
- — The following factors are less “unique” but I want to give credit to
- [G3] my healthy lifestyle and bread-earning longevity — in the long run this factor would prove increasingly important. It enables me to
keep working long past retirement age.
- [G5] my bold investment style 
- my education and self-learning capabilities including English skills
- [G3 = a top-3/Group3 factor]
! benchmarking — AA is a single-winner competition, whereas BB is about staying above minimum standard in the team.
! strengthening — I continue to plow back and build my AA/BB 内力, focusing on localSys + coding drill. A huge amount of energy, absorbency, continuous effort and dedication needed (cf. XR,YH, CSY…), though since 2018 I have noticed the ROTI is not as high as before 2012.
 to some extent, my family’s life also rests on these same pillars, but I tend to under-estimate the capabilities of my family members and over-estimate my earning power.
 in this post I don’t want to include my financial assets since I want to focus on personal qualities
I feel the gzStrength category is becoming overcrowded, 鱼龙混杂. Therefore, I now use abovePeers tag to refresh my memory and temporarily highlight specific strengths, more specific than gzStrength
selfEsteem tag is related.
If the research is too easy, then other developers can also do it, often faster.
If the research takes years, then it’s really for a researcher. I’m not a researcher (yet)
The project could have high value!
eg: Barcap proj
eg: bloomberg adapter in GMDS
eg: home-made web server using WCF