Some top geeks I know are fast at reading code + logs. Few rely on documentation. I’m OK not the fastest.
Some top geeks in “sister” teams of my team are experts with instrumentation tools and techniques. I guess other top geeks seldom need a lot of instrumentation. I feel they lack the experience but make up for it in other skills.
Some top geeks keep gaining depth if they focus on one complex system. I might have potential here.
Background — discussion with an older fellow developer about helping our high-school kids select a major.
Example — Look at Aunt Gennifer. She changed her profession around age 40 to find a less boring job, and paying more.
Example — grandpa has an ever-green interest in his research field, but most researchers in this field are not well-paid (it’s the least commercial field of research). In terms of income, I think grandpa’s medical and pension benefits are in the the top 1%.
Example — me. I entered trading-engine-dev circa 2007.
- It pays well above the average professional salary across all professions. (I was told U.S. family doctors earn about 150k only.)
- Market depth is excellent — look at my post on NBA salary.
- The constant pressure to upgrade and learn is perfectly acceptable to me. In fact, I seek opportunities to maintain my learning pace
- I don’t find it tiring or boring. For a few years before 2007, I told myself “I don’t want to remain a developer for life” but had a U-turn.
For most people, it’s hard to find a profession that’s not boring, not too tiring, and pays well, a
field you could keep plowing till retirement, if you ever retire.
In fact, such a field is likely to be /oversubscribed/ — too many hopeful new entrants but few would get in and fewer would survive 😦
A large number of individuals have a meaningful and rewarding “hobby” but can’t make a decent income from it
- tweaking with computers and gadgets
- visual arts # including photography
- literary arts
- performing arts #including music
- sports, games #including board and electronic
If I take a 强项 job, I kind of sacrifice my muscle building, so I must get good money …
A typical 强项 job would use
- possibly analytics
Look at my HSBC eventBus coding interview. This is one of my top 3 core competences that make me stand out in a crowded field. Other items among top 10:
- 9/10 java knowledge including
- 9/10 algorithm interview
- 8/10 SQL — less relevant to interviews
- complex joins
- table design
- 5/10 professional competence in c++ and c#
- 5/10 python, 8/10 perl
- 6/10 Unix power tools
(x/10 is benchmarking on Wall St, not West Coast.)
–Mac over 18M
C++ compilation/linking? a bit
–OC over 23M
MSVS? But no critical mass yet
Spare time for UChicago
Opening example 1: Quartz — High complexity. Zero market value as the deep insight gained is decidedly local and won’t make you a stronger developer on another team.
Opening example 2: IDE, Maven, git, Unix + shell scripting — modest complexity; Makes me stronger developer in real projects, but no premium on the labor market.
My best experiences on Wall St — tech skills with high market value + complexity high enough that few developers could master it. On a project involving these I get better lifestyle, lower stress… Examples:
- java collections
- SQL complex queries + stored proc. Declining demand in high-end jobs?
- SQL tuning
- MOM-based, high volume system implementation — reasonable complexity and market value, but not mainstream. Mostly used in trading only 😦
- pricing math — high market value but more specialized 😦
- trading algorithms, price distribution, … Specialized 😦
Let’s look at a few other tech skills:
- c++ build automation — modest complexity; low value
- c++ low latency — high value; complexity too high for me — need suitable contexx and instrumentation.
- java reflection, serialization — high complexity high practical value, but market value is questionable.
- .NET — some part can be high complexity, but demand is a bit lower than 2011.
- Java tuning — high complexity; not high value practically
- python — modest complexity, modest market value
- PHP — lower complexity and lower market value than py, IMHO
I have seen both, and tried both.
minority of developers spend the time studying and understanding the important details of threading, generics, templates … before writing code.
Majority of developers don’t have the time, vision or patience, and only learn the minimum to get the (sloppy) job done. They copy-paste sample code and rely on testing, but the test cases are limited to realistic UAT test cases and will not cover edge cases that have yet to occur. For concurrency designs, such tests are not good enough.
AA is often seen as unnecessary except:
* Interviewers often go in-depth
* In a product vendor rather than an in-house application team
* If requirement is unusual (eg: B2BTradingEngine), then BB won’t even pass basic developer self-tests. Sample code may not be available — see my post http://wp.me/p74oew-1oI. So developers must bite the bullet and take AA approach. This is my sweet spot. See
On Wall St projects, I learned to abandon AA and adopt BB.
On Wall St interviews, I still adopt AA.
On West Coast, I think AA is more needed.