- j4: I’m good at coding. We want to work with what we are good at. I have worked 20 years so by now I kinda know what I’m good at.
- j4: given my mental power, use it or lose it.
- j4: real world problem-solving, not hypothetical problems, not personal problems.
- j4: responsibility/ownership — over some module
- teaching also works
- volunteering also works
- j4: interaction with young people
- teaching also works
- j4: respect — from coworkers and users. I want to be a
shining exampleof an old but respectable hands-on techie but not an expert.
- teaching also works
- j4: service — provide a useful service to other people. Who are these other people? LG2
- teaching also works
- j4: meaningful work? vague
- j4: be relevant to the new economy? vague
Kyle pointed out that your change could be a 10-minute job with big impact, but only because there was already an infrastructure. You leverage the infrastructure to create the impact. For a story to be compelling, it has to show complexity and personal contributions
- NYSE integrated feed. Most of the financial data websites get nyse data from us
- Baml muni trade execution — rewrite from scratch
- billing/commission calc at PWM.
- eg: mortgage commissions from scratch
- eg: special investment (hedge funds) commission rewrite
- Citi muni re-offer engine. Biggest muni house in the U.S. Lots of retail investors buy muni bonds through their investment advisors. My changes are actually incremental.
My friend Davis revealed to me that many non-VPs earn below the $115k salary offered to a fresh Master’s grad.
- Davis said employer won’t give you more than 3% annual increment, so quite often it can’t reach $115k.
- Anthony also said the big hike happens only when you change job .
- Jack Zhang said over 10 years the total increment could add up to below 20k.
Q3: what’s the market rate for your skill as an old timer?
A: probably higher than the grads.
Q3b: so why the old-timers don’t get a better job elsewhere?
A: they don’t feel they can.
A (Davis): these old timers have value-add only because of their localSys knowledge. In a sense, some new-age employers have a prejudice against people of loyalty. They probably associate Loyalty with stagnation and obsoleteness.
Therefore, one-long-job resume can be bad when you change career. I always felt my job-hopper resume is a liability, but some west coast shops don’t care.
I feel these old-timers are afraid of failure  at the new job, perhaps after a long, stressful
adjustment. I think people do notice that adjustment to a new environment can be very tough and often unsuccessful.
adjusting.. stronger, more adaptable, more confident than those loyal old-timers.
Q6: why is employer willing to pay grads so much more?
A: Employers don’t want to but that’s the market rate set by supply-demand. Ibanks want to bring in fresh talents and must pay the market rate.
 A.Gambino discussion .
“Unqualified” is yet another incorrect, irrational perception:
Macq — proven qualified for most parts of my job, and received bonus and transfer offer as evidence. The other part — the leadership job function was beyond me, but that’s hiring manager’s mistake.
Qz — received Meet/Meet. London manager actually liked my work a lot.
Q: As of 2016 to 2019, I didn’t need high salary so badly, so what’s the real reasons why I sacrifice so much to re-enter U.S.?
A#1: foundation — rebuild confidence about career/financial foundation for next 20->25-30Y, since my passive-income/asset/burn-rate profile was (still is) far from comfortable
* age discrimination
* green card
* lower calibre requirement on a typical job .. “semi-retirement job”
A#2: self-esteem rebuild — after multiple blows (三人成虎 , three-strikes) .. stigma
A#3: far bigger job market, providing much better sense of career safety
Rahul used the word “satisfaction”. (Sometimes I call it “intrinsic motivation” or “joy”.) The satisfaction factor is crucial to absorbency. It enables Rahul to put in so many hours.
Q: What are my satisfactions i.e. intrinsic motivation?
A: discover my own solutions that are reasonably efficient even if not optimal. Almost never elegant and simple.
I don’t mind reading a classic solution in a Real (possibly online) publication but I hate to read solutions in
forums as XR does. Those forum posts leads to wipe-out
- completely wipe out that precious satisfaction.
- positive feedback loop broken
- self-esteem destroyed
- self-mastery destroyed
- sense of progress wiped out
- sense of self-improvement wiped out
- absorbency wiped out
- I feel /diminished/ and worth-less.
- i feel hopeless giving up
It’s possible that the forum posters also learned the solutions from publications. But I basically assume they are just so brainy.
(tagline: the most churn-resistant specializations.)
Socket IV questions have remained unchanged for 20Y — Unmatched stability and churn-resistance, but not necessarily accumulating
- Preservation of t-investment
- Preservation of accumulation
- Preservation of deep learning? Socket programming has modest depth.
Q: Beside the specialization of socket programming, are there other specializations that are dominated by the same old QQ questions 20 years on?
- [S] classic data structures
- [S] classic sort/search algorithms on int-array, char-array, list ..
- [S] classic traversal algorithms on trees, general graphs
- [s] classic recursive, DP, greedy algorithms beyond graphs
- [S] pre-c++0x core-C++ (a specialization!) questions are largely unchanged. C++11 questions are rooted in the old knowledge base.. BUT most of the c++11 QQ topics will likely fall out of interview fashion
- [s] cross-language concurrency primitives.
- unix file/process/string/signal manipulation
- unix shell scripting — low market value
- [S] SQL — including join, index design … but seldom quizzed in depth nowadays
- [S] regex — seldom quizzed, but often needed in coding
- [S=classic, well-defined specialization]
- [s=slightly less well-defined specialization]
Now the disqualified skills
- JGC + jvm tuning — high churn over 20Y
- TMP — new features introduced in c++11
Over my 20Y career, I showed _some_ talent professionally.
In contrast, I showed significantly more talent in school. My massive study effort increased my abilities  to the extent that people don’t notice the difference between my talent vs abilities. Even my IQ score improved due to my intellectual curiosity and absorbency. If these efforts are considered a talent, then yes I have the talent of diligence.
 eg — Chinese composition, English grammar/vocabulary, many knowledge-intensive subjects
Q1: what if I had put in just an average amount of effort in school and at work? Some people (mostly guys I really don’t know well) seem to put in sporadic efforts that average out to be “just average” but still got into similar professional level like I did, or higher.
A: For my academic excellence, persistent effort was necessary.
A: I guess sporadic effort could be enough to reach my level of professional “success” for very bright and lucky people. I doubt any professional programmer got higher than mine without consistent effort for many years.
Professional success also depends on opportunity, on positioning and timing, on inter-personal skills and relationship skills, on judgment 判断力. None of these depends directly on consistent effort.
An example of positioning — my break into Wall St java market vs my peers who didn’t.
To analyze this question, I need to single out an under-appreciated talent — absorbency capacity i.e. 耐得住寂寞, where I score in the 97th percentile.
Q2: if my son only puts in sporadic and average efforts, could he end up losing the competitions?
I have found core java and core c++ outstanding domains for my personality. I feel there are not too many similar domains with
- feature: standardized knowledge highly portable across teams
- feature: requires more than such (simple) knowledge that anyone can pick up in a crash course
- feature: low churn high stability
… so we can hope to accumulate. Here are some comparable domains:
- pure algo 🙂 yes standardized, non-trivial questions. I can accumulate. Better than brain teasers
- socket and sys programming:) Yes standardized questions, including malloc, sharedMem
- SQL 🙂 good despite shrinking demand.
- Can we say the same (“shrinking”) about ANSI-C? Well, lots of c++ questions are C.
- bond math 🙂 not so deep but good
- JGC + jvm tuning? 😦 churn
- python ? 😦 Deep questions are rare and non-standardized, like concurrency, meta-programming..
- quant-dev domain 😦 questions are standard, but too few jobs
- algo trading? 😦 i don’t think they ask any standard question
Don’t spend too much time about this unless considering to take up c#.
In 2012/13 I invested my time into c# just in case c# would become more widespread and high-paying. However, after 2013, I have not noticed this trend strengthening. If I have to guess why, here some personal glimpses:
- Linux — Maturity and further performance improvement of Linux machines compared to windows machines. For large server side apps, or cloud apps, I see more and more adoption of Linux.
- Java@server-side — (in financial sector) Strengthening of java as the technology of choice on the server side. c# made a valiant but unsuccessful attempt to dethrone java in this game. Java may have limitations (do we know any?), but somehow the decision makers are not worried about them.
- C++@windows — (My personal speculation) I feel c# offers higher performance than java on windows machines, but vc++ is even faster.
Among ibanks, the main reasons for the current c# situation are 1) Linux 2) web-GUI
— Some update based on Wallace chat.
I think 1) microsoft stack, 2) jvm stack and 3) web 2.0 stack all have vast ecosystems, but at enterprise level, only microsoft^jvm
How about server side c++ or python? much smaller mind-share.
Wallace said on Wall St (where he worked for 5+ years) he knows no ibank using c# on the back-end. Wallace believed Unix/Linux is the main reason.
How about outside ibanks? Wallace said c# back-end is not so rare.
My (growing) Passive income does reduce cash flow pressure… but it has no effect so far on my work GTD pressure.
Q: Anything more effective more practical?
- take more frequent unpaid leaves, to exercise, blog or visit family
- expensive gym membership
How about a lower salary job (key: low caliber team)? No I still want some challenge some engagement, some uphill, some positive stress.
Background — survival skills not tested in IV are usually  localSys and  portable GTD
- — dev-tool knowledge
- my posts on c++ build errors
- Many posts on gdb
- most posts on eclipse and MSVS
- posts on git/cvs
- posts on bash
- posts on vi, less, find
- — beyond tool knowledge
- correlate logs, config, source code, data store…
- script automation and shell customization skills
- techniques and familiarity with jira
Q: given the limited spare time we working fathers have, what specific (learning?) pet projects can enhance our salary?
A: invariably poor ROI, mostly a mirage. Moving up is the most common success story.
- xp: MSFM?
- xp: c++
- xp: low latency engineering knowledge, including sockets, kernel, pthread …
- prepare for west coast high-end interviews
- coding practice
- data science
It pays to specialize in a domain that helps you break into similar domains. (
Unsuccessful with my quant adventure so far.)
Note “wrappers” API are never upstream. Very common in big banks including Qz.
- #1 eg: [L] socket —- C++ is the alpha wolf, leader of the wolf pack
- [D] market data —- Nyse/Nasdaq (binary) feed parer seems to be the leader, over the slower FIX feeds
- [D] execution algo —- sell side equities desk seems to be the leader in terms of volume and variety of algos
- data analytics language —- python looks like the leader
- eg: [D] alpha —- equities trading is the leader
- eg: threading —- java is the leader of the pack. In c++ threading is too hard, so once I master some important details in java threading, it helps me build zbs in c/c#, but only to some extent
- eg: regex/string —- Perl is the leader
- eg: [D] consolidated firm-wide risk —- SecDB is the leader. Applicable to buy-side? I think so.
- lambda —- C# is the leader. Scripting languages follow a different pattern!
- list/stream —- Linq is the leader
- drv pricing theory —- Black-Scholes —- feels like a leader or upstream, but not /convincing/
- [L] heap/stack —- C++ is the leader. Java and c# are cleaner, simpler and hides the complexities.
- defensive coding —- (and crash management) C++ is the leader, because c++ hits more errors, like Japan on earthquake management.
- eg: collections —- C++ is the leader of the pack. There’s a lot of low level details you gain in STL that help you understand the java/c#/python collections
- eg: [L] latency —- C++ is the leader of the pack in low-level optimizations .. In-line, cache-efficiency, footprint..
- eg: [L] pbref^val —- C++ is the leader. C# has limited complexity and java has no complxity
- [L = lowLevel]
- [D= well-defined application domain]
- ? automated pricing —- no upstream
- ? Fixed income trading systems —- no upstream. IRS^Treasury^credit bonds (trading platforms) have limited features in common.
- [D] VaR/risk analytics —- FI derivatives in big banks seem to be the leader, but I feel one trading desk in one firm may not respect another system
Background — expert test-takers and Math Olympians don’t create value. Grandpa is more than an expert in his domain — he created ground-breaking original research.
Generally, developers make more lasting impact than other roles. Developers are seen as value-creators. Here are my original contributions as a Wall St techie:
- 95G — I created the stored proc as the basis of concurrency control
- 95G — I created the wait/notify framework in B2B
- Barc — emulating the functional programming spreadsheet in java
- —-Below are less “original”
- RTS — nyse integrated feed XDP parser. Huge impact to billions of downstream users.
I will not list generic and vague items like cash asset or health.
- #1 factor — sense of security that I can always get a job. Ashish Singh is the first one to point it out
- engaging, challenging job, learning something meaningful, not like java/SQL again.
- some complexity
- [$$] reasonable commute
- [$$] not so much time spent on home maintenance
- enough time to spend with kids
- enough time for exercise
- [$] yoga classes + other classes
- [$] healthy and convenient diet
- grand parents frequent visits? Very hard
- kids not falling behind in school
- passive income? LG2 but the more the better
- appreciating property?
- parks nearby, not necessarily upscale waterfront
- [$$] clean street
- [$$] car-freedom
- freedom to blog everywhere .. /therapeutic/
- life chances
- [$ = money can “buy”, to some extent]
Perhaps it pays just as well, or 5% lower than the specialty dev jobs in trading systems?
C++ has survived more than one wave of technology churn. It has lost market share time and time again, but hasn’t /bowed out/. I feel SQL, Unix and shell-scripting are similar survivors.
C++ is by far the most difficult languages to use and learn. (You can learn it in 6 months but likely very superficial.) Yet many companies still pick it instead of java, python, ruby — sign of strength.
C is low-level. C++ usage can be equally low-level, but c++ is more complicated than C.
Based on your observations, when I reach 55, do you think it’s safer as a manager or a hands-on developer? “Safer” in the presence of
- competition from younger generation
- competition from same age group or older
- new, disruptive technologies
- technology obsolescence (what I call technology “churn”).
Among these threats, my concern is primarily #1 but what about you?
My neighbor Julius (of Indonesia) said
* younger employees mean lower cost
* more energy
* can map out a 10Y career plan for him
–Below are my own observations and reading.
The younger guys often have more spare time available. Granted, many choose to spend it outside work, but a small percentage (30%?) of the ambitious, dedicated or hard-working individuals would *regularly* and voluntarily spend some of that at work.
For managerial roles, I feel a 30-something can be very effective. The relative short experience may not mean a lot.
For technical roles, the long experience of a 40-something is even less valuable. My own experience is most convincing. At 25 I was more formidable than many of my older colleagues. I was sharp, fast-learning, self-driven, knowledgeable, possibly more experienced than them in a given technology.
In my early 30’s, my capabilities were seen as more formidable more outstanding , like 90 marks.
As I grow older, even if I don’t grow weaker, there are many younger guys at 90 marks. Even if we ask the same salary, 90 marks is no longer so outstanding. Given two 90-mark candidates at 35 vs 45, I think most employers would prefer the younger since he is seen as “more promising” and rising star.
See also ## lasting achievements as a techie
I need lots of technical details to substantiate my answers.
- NYSE integrated feed with up to 400k x 8 msg/sec.
- List the techniques in How we achieved 400 to 700 kmps.
- Full order book replication.
- retransmission, recovery and resilience support
- Barclays vol fitter with half a million B/S equation solver per minute
- Black Scholes
- biggest eq drv house in the world as of 2012.
- fast refitting
- server farm
There’s a high risk of under-performing. In a perm job, that invites warning, perf improvement, bonus fear — all forms of stigma-phobias.
With contract jobs, I can operate without the fear of stigma!
Here, “under-performing” mostly refers to “figure-things-out slower than team peers”, which (usually but) doesn’t always attracts those stigmas. Ultimately it’s the manager’s assessment.
Stirt/Quartz – For example, my figure-things-out speed was not slower than my peers and not slower than Barcap 2nd half, but still i got the stigma.
Citi — for an opposite example, my figure-things-out speed was rather slow but I didn’t get the stigma. I got renewed once.
Take a long, hard look back at my past career decisions.
When I next return to SG, Perhaps it’s time to stop tryingSomethingNew and stop paying the costs. (In the U.S. I still can afford to try…)
Note the ROTI yardstick I’m using to measure the effort are harsh and arguably unfair. See ##in hind sight: trySomethingNew
See posts on time allocation. Those things I overspent time on tend to be what defined me.
Income alone is never an item. Instead, “Earning capacity due to …..” is often one of the defining features.
In This list I prefer one-word items.
- till high school, what defined me was nothing but
- simple focus and
dedication, driven by academic ambition
- NUS ( grades became mediocre even though I worked very hard towards Dean’s list )
- academic ambition -> commercial ambition
- 1999 – 2002
- wizard — salary (due to my wizardry) was high but gradually became just about average
- 2002 SCS – …
- 2007 – 2012
- IV — in java, c++, swing, dnlg … became my killer skill
- billing rate
- tech zbs — (“GTD”? No) zbs was my focus even though i was not really outstanding
- IV — in java, c++, swing, dnlg … became my killer skill
- Aug 2012 – Apr 2017. Focus was
finally lost. I became “interested in” many other things
- wealth preservation, income maintenance — became the #1 undercurrent
- MSFM was part of “income maintenance” effort
- properties became the main part of wealth preservation and retirement planning
- (alternative income source (rental, per investment, trading) — became a temporary focus and never get big)
- I also defined myself as a dedicated and serious father to Yixin, not really hoping to produce a prodigy, but to shape his character and habits, and help him find his motivation.
- wealth preservation, income maintenance — became the #1 undercurrent
- IV and tech learning
- continuous push to go deeper, further and increase zbs
- low burn rate, conserver lifestyle
Hope to regain motivation and
sharpen focus on c++, exchange conn and grow another “wing”
- how does this compare to board game?
- how does this compare to jigsaw puzzles
- how does this compare to small mobile app development as a hobby?
- small mobile game development
- how does this compare to photography as a hobby?
- how does this compare to blogging as a hobby
- how does this compare with DIY home improvement
- how does this compare to auto tuning and bike building
- how does this compare with hi-fi tuning
Every one of them is better than TV, gaming, sight-seeing or drinking. Each one requires consistent effort, sustained focus. Each one will become more frustrating less exciting before you reach the next level.
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 — 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
Q: what kinda systems can you be an architect or lead developer? See also ##a few projects technically too tough4me
A: In an optimistic mood …
|domain||firm||tech used||cfd||personal advantage|
|trade execution||b2b||sql, tibrv||4|
|blotter + backend #essential to any||citi||sql||3|
|mkt data parser||ICE||socket||3|
|bond repricing/risk engine||reo||sql, async||4||bond math, curve-based pricer|
|billing, commission||PWM||SQL, batch||5|
|STP||none||sql, batch, MOM||3||SQL|
|java web …||PWM||sql, batch||5||many|
I can get these systems to work, although
- I’m not the fastest
- i may not use latest, most efficient technology
- reliability and stability ?
- Look at GMDS .. MMF is an unstable base technology
- LOok at Gauardian ssh? not a mature , well adopted base technology
Q: Look at my current per-hour value-add to the team. How many percent of that value-add is portable to next two jobs?
%%A: I feel it’s usually rather low. My value-add is mostly about local system knowledge.
Current value-add/hour to the current employer does increase over the years and grows with relationship.
According to German, in the big banks, many team managers badly need an owner-developer, a system expert to remain with the system for 3-6 years. However, on Wall St and London, there’s a long tradition of hiring (proven) high-caliber contractors as the “big guns” to get through a tough project. eg: Song Jun
eg: Rob in the Stirt tech team
Also, from budgeting point of view, a system needs a long-term owner (like BAU), whereas a project needs temporary manpower. So that’s one difference between a lead developer vs a big-gun contractor.
The owner-developer often earns more than the regular contractor but not sure about “big guns”.
Promotion to owner-developer is not guaranteed simply by staying for x years because
- there may be other old-timers
- even after 4 years some parts of the system may still be unfamiliar to you
- even after 10Y on the system, you have below 50/50 chance to build credibility and position to convince everyone to follow your suggestions. Look at Kevin’s influence after just a few years on the system.
For me, it doesn’t make sense to get very familiar with a local system and become efficient and a “powerful” local system expert. Yes the manager would appreciate my value but
- it often takes 2+ years and a lot of learning effort (Does it cause aging? Only if excessive stress.)
- Still, for many years the existing experts may remain more powerful than you, so manager may not appreciate your value as much as you expected.
- the learning effort takes away from my “body-building”
- Depending on context, it offers only 50% protection from job loss. Sadly, due to lack of body-building, you may become weaker on the new job market.
- the appreciation seldom translate to meaningful compensation
– performance, efficiency. Compare — C statements translate to brief machine codes.
– threading – GIL, no precise control
– industrial strength commercial support. Only c++/java/c# has big tech powerhouses. Linux is widely adopted by enterprises, but is an exception that proves the rule.
– ? commercial auxiliary software to support the ecosystem, including IDE, debuggers, jars, code generators, profilers, … I feel python has these.
-? most enterprise apps are now in java or c# as these are proven, in terms of performance, resource scalability, commercial support etc.
Backdrop: Technological innovation is fast (less so in commercial banking, i was told) so “lasting” means … maybe 5 to 10 years (rarely longer)?? Few achievements meet this criteria.
– open source — software have real lasting values. I guess you can learn to Read their source code — usually in C.
– [L] contributions to foundation modules such as VM/CLR, compilers, threading library, GC, STL — real lasting values
What skills contribute to lasting value-add to an organization?
– tuning – DB — needed in many big and small systems
– tuning – low latency systems — more rare
– [L] instrumentation i.e. refactor/design a given (complex) system to make it easy to trace and follow
– [L] ? introspection – tend to be rather powerful in many new languages
– ? interpreting bytecode; decompilers
– ? system security; white hat hacker
[L = I feel most of these skills are low-level]
In theory almost everything can be learned by a young guy in a few years provided they get full (rare!) access to all source code and manage to make sense of it all. However, look at how many bright young people become kernel developers even though so much open source operations systems exist.
I asked a few friends —
Q: finance IT pays 2 to 3 times the salary compared to other sectors. Initially i thought the person requirement must be much higher, i.e. the average non-finance developer probably can’t easily handle the job. To my dismay, just about any java developer can handle the job. You can learn multi-threading, MOM, … on the job. So why do they keep paying such high salaries?
A: profit margin is much higher in finance. Having qualified developers means faster time to market and more profit. Qualified means track record.
A: trading systems prefer a elite team of experienced guys, not large army of rookies. Average salary is therefore higher. Root cause is time-to-market. Tiny team of elites deliver faster.
A: At the senior developer level, trading system experience (track record) is very rare, partly because of the low head count in a lot of successful desks.
A: manager must spend the budget or get a reduced budget next year.
A: employer must pay high enough to keep the talent
A: Will (recruiter) said trading sys architect talent is scarce in S’pore. Globally, Battle tested architects are rare. Battle tested on trading system is ..rarer. Trading systems have additional characteristics such as (but not limited to) extreme time-to-market, extreme quick-and-dirty, instrumentation, manual override, “explain what happened”….
A: Y. Lin feels many of those high-end jobs are very specialized, with very few qualified local candidates
A: MS commodity trading interviewer said most local candidates don’t have the design experience — they only assist London or NY
A: Raymond feels some sectors (like web, or php) are over-supplied due to inflow of
immigrants. System requirement is fairly simple compared to …. say Oracle or SAP — mostly used by large, well-funded enterprises. System is expensive and mission critical.
A: Raymond T also feels an IT service provider is bound by the price clients are willing to pay. Raymond gave examples of construction industry. These clients have a budget and won’t pay extraordinary prices, so the IT guys serving that industry get an average salary. Raymond said finance industry is unique IT serves internal business units and business unit decides how much (possibly huge) budget to allocate to IT. I would add that headcount is much smaller than a team in other industry. So finance IT budget is probably higher, and head count is probably much lower, therefore salary is so high.
A: Raymond T feels in other industries, IT salary is kept “reasonable” by specialized outsourcing suppliers who specialize in certain high-value sectors. In trading, I only know IBM and Sapient have such “practices” and they probably cost a bank more than hiring directly.
What's so good about OO? Why are the 3 most “relevant” enterprise app dev languages all happen to be OO – java, c# and c++?
Why is google choosing java, c++ and python?
(Though this is not really a typical “enterprise app”) Why is apple choosing to promote a compiled OO language — objective C?
Why is microsoft choosing to promote a compiled OO language more vigorously than VB.net?
But why is facebook (and yahoo?) choosing php?
Before c++ came along, most enterprise apps were developed in c, cobol, fortran…. Experience in the field show that c++ and java require more learning but do offer real benefits. I guess it all boils down to the 3 base OO features of encapsulation, inheritance and polymorphism.
Employee hiring is a longer process. HR and entire firm probably perceives employees as a more “permanent” addition to the team. Employees are allowed to transfer internally, so once an employee is
brought in, she tends to stay for a long time. Due to the permanent nature, employee head count needs more approvals. It’s like buying a home vs renting a house.
Consultants are sometimes hired for a test-drive. If he’s good, then offer him a perm role. If he’s not suitable, then let him go painlessly.
Companies invest in employees. Employees receive training and development, reviews. Employees are potential leaders of the company.
Leadership is a critical element at every level of the organization.
Consultants can’t help – not allowed.
Last but not least, employee layoff is much harder than for contractors. Companies often prefer employees to resign than a forceful termination.
… because they want someone 1) used to the pace and work culture, 2) knowledgeable in the domain. As an (unintended) consequence of this hiring criteria, South Asians (India…) candidates outnumber East Asians (Chinese, Korean…).
I notice adjustment problems in some (perhaps 1 out of 3) newcomers into financial IT. Some of them simply quit financial and joined telecom, google, Time.com, universities, hospitals…
It took me a few years — and counting — to get used to the culture. Quick and dirty — occasionally even code cloning; eliminate purely theoretical scenarios and focus on realistic scenarios; tolerate minor bugs and ship faster; no documentation…. ultimately, focus on business value, that we are paid to deliver.
Financial Knowledge helps too. Last month I sent you a list of some 30 financial terms — take months to grasp. But even if you know none of the jargon, ibanks still consider you if they think this candidate is battle tested on wall street.
As a concrete illustration of domain knowledge, remember the question you and I discussed repeatedly 2 years ago — how a brokerage house matches a buy order and a sell order and executes it profitably? I now understand it. Besides the jargon, this is example of another type of domain knowledge. Does it help a finance app developer? Valuable but not a must-have knowledge. However for an architect, a Business Analyst, or any manager (project manager, team lead, lead developer), such knowledge could be make-or-break.
To discuss percentages, first allow me to focus on a tiny group of male techies in Singapore — the only group i know.
Note: Manager roles can cover team size of 2 to 20.
— top n
40% Job: some job outside IT. These folks get out of IT before 55.
10% Job: company owner, CEO, country manager — #1 guy in an office.
5% Job: manager in “infrastructure support” (defined below ). These roles are similar and sometimes indistinguishable. Large systems need a support “team”.
5% Job: manager in app development AND app support. A standard combination.
2% Job: manager in app development, architect, PrjMgr, but without support responsibility. These roles are often combined. Compared to support jobs, such a dev role is rather tiring at age 55.
2% Job: pre-sales + professional service + trainer. Manager or foot soldier. These roles are often combined.
Job: sales, marketing (manager) in a tech firm
Job: government officer, excluding infrastructure support
Job: full time teaching (IT) in private/public instutitions + some R&D.
Job: Business Analyst
Job: senior DBA, system admin or network admin, but not a manager. at age 55?.
Job: manager in product support. Only large product vendors need a support organization.
Job: full time R&D in public/private (large) labs + some teaching. R&D is always an “elite” activity.
Job: full time trainer
Job: writer + trainer
Job: recruiter. Some IT professionals are suitable for this role.
— Job descriptions above usually combine these job functions below, most of them project functions. Multiple project functions are frequently carried out by the same individual, since someone strong in one function can take up another function.
* function: pre-sales consulting
* function: business anlysis
* function: development + design + architect
* function: project management, implemetation rollout management
* function: professional service consulting
* function: engagement manager, account manager, onsite or offsite
* functino: testing
Functions below are not project roles, though the individuals in these functions also take part in projects.
*  function: infrastructure support serving internal users rather than external customers
** app support, after application development and rollout
** operations support
** web master,
** windows application support, such as email or Excel support
** network admin
** Unix/Windows system admin,
** email server support — Exchange, Lotus Notes…
** storage support
** ERM system admin
** CRM system admin
** mobile and remote access support — Citrix, Blackberry
** IT security admin
* function: product support serving external customers, often loosely known as tech support
* function: customer service, often loosely known as tech support
* function: sales support (not pre-sales consulting)
* function: marketing support
* function: training
* function: teaching
* function: research
* function: writer, editor, reporter, reviewer
* function: IT auditing
Most of the age 55 jobs are likely to *combine* these job functions.
Update — In a 2018 MS interview answer this same question:
Q: stored procedure vs regular query
%%A: input validation esp. for insert/update
%%A: stored proc can reduce 5,000,000 rows to 2,000 before sending them out over the wire. Contrast a join query (in a proc) vs join-emulation in application
%%A: regular query can’t create temp tables easily
%%A: data-related business logic can go into the database.
%%A: Say my proc uses first query result in a 2nd query. Clumsy with inline queries.
AA: server-side transformation can benefit from cache hits inside the (DB) server.
There are many advantages to using stored procedures (unfortunately in Sybase they do not handle the text/image types):
- 1) Modularity (%% #1 object-oriented design principle: isolate changes => reduce impact, reduce regression test, unit test && dependency injection %%) – during application development, the application designer can concentrate on the front-end and the DB designer can concentrate on the ASE.
- 1b) If query changes often, we hate to recompile and redeploy entire app every time — high risk. Consider extracting the inline queries into a command file, but proc is better.
- 1c) proc can be unit-tested.
- 1d) Independent version control.
- 2) Security (%% consider views %%) – you can revoke access to the base tables and only allow users to access and manipulate the data via the stored procedures. Ensures all writes go through validation.
- 4) Minimise blocks and deadlocks – it is a lot easier to handle a deadlock if the entire transaction is performed in one database request, also locks will be held for a shorter time, improving concurrency and potentially reducing the number of deadlocks. Further, it is easier to ensure that all tables are accessed in a consistent order (%% 1 of 4 deadlock conditions %%) if code is stored centrally rather than dispersed among a number of apps.
- 4b) %% In zed I used to do mass delete and mass update, which held the lock forever. Cursor is more “nice” (unix jargon), locking and releasing a subset of rows (or just 1) at a time. Less contention and less deadlocking. %%
- 3) Performance – stored procedures are parsed and a query plan is compiled. This information is stored in the system tables and it only has to be done once.
- 3b) Network – if you have users who are on a WAN (slow connection) having stored procedures will improve throughput because less bytes (%% ? %%) need to flow down the wire from the client to ASE.