Archive
A Grain Of Salt
Somehow, I stumbled upon an academic paper that compares programming language performance in the context of computing the results for a well-known, computationally dense, macro-economics problem: “the stochastic neoclassical growth model“. Since the results hoist C++ on top of the other languages, I felt the need to publish the researchers’ findings in this blog post :). As with all benchmarks, take it with a grain of salt because… context is everything.
Qualitative Findings
Quantitative Findings
The irony of this post is that I’m a big fan of Nassim Taleb, whose lofty goal is to destroy the economics profession as we know it. He thinks all the fancy, schmancy mathematical models and metrics used by economists (including famous Nobel laureates) to predict the future are predicated on voodoo science. They cause more harm than good by grossly misrepresenting and underestimating the role of risk in their assumptions and derived equations.
Stacked Ranking
The title of this post sounds like the stodgy name of some inhumane, BS, corpo process under which “supervisors” evaluate their children, I mean, induhvidual contributors. But wait! It’s the Valve way.
You don’t know who Valve is? Valve is a company that creates massive, multi-player, online games. According to “economist-in-residence“, Yanis Varoufakis, Valve rakes in $1B in revenue even though they have a measly 300 employees. Also, according to Yanis (and their employee handbook), they are totally flat chested. There’s not a single boob, oops, I mean “boss“, in the entire community. D’oh!
The employee handbook spells out the details of the “Stacked Ranking” process, but in summary, peers rate each other once a year according to these four, equally-weighted metrics:
Skill Level/Technical Ability
Productivity/Output
Group Contribution
Product Contribution
Notice that there’s no long list of patriarchical, corpo-BS ditties like these in the four simple Valve metrics:
- Takes initiative and is a self-starter
- Knows how to acquire resources when needed
- Manages time well
- Knows how to prioritize tasks
- Yada, yada, yada
As you might guess, the stack rankings are used for salary adjustment:
…stack ranking is done in order to gain insight into who’s providing the most value at the company and to thereby adjust each person’s compensation to be commensurate with his or her actual value. Valve pays people very well compared to industry norms. Our profitability per employee is higher than that of Google or Amazon or Microsoft, and we believe strongly that the right thing to do in that case is to put a maximum amount of money back into each employee’s pocket. Valve does not win if you’re paid less than the value you create. Over time, compensation gets adjusted to fit an employee’s internal peer-driven valuation. – The Valve Employee Handbook
Whenever I serendipitously discover jewels in the rough like Valve, SAS Institute, HCL Technologies, Semco, Zappos.com, etc, I always ask myself why they’re rare exceptions to the herd of standard, cookie-cutter corpricracies that dominate the business world. The best answer I can conjure up is this Ackoff-ism:
The only thing harder than starting something new is stopping something old. – Russ Ackoff
But it’s prolly something more pragmatic than that. Since corpo profits seem to keep rising, there is no burning need to change anything, let alone blow up the org and re-design it from scratch to be both socially and financially successful. That would be like asking the king to willingly give up the keys to his kingdom.
Cpp, Java, Go, Scala Performance
I recently stumbled upon this interesting paper on programming language performance from Google researcher Robert Hundt : Loop Recognition in C++/Java/Go/Scala. You can read the details if you’d like, but here are the abstract, the conclusions, and a couple of the many performance tables in the report.
Abstract
Conclusions
Runtime Memory Footprint And Performance Tables
Of course, whenever you read anything that’s potentially controversial, consider the sources and their agendas. I am a C++ programmer.
A Rigged System
Based on observation and personal experience, here’s my assessment of how the system nominally executes:
- A customer issues a Request For Proposal (RFP) or a Request For Quote (RFQ) for a product that meets a perceived need.
- The competitors respond with a proposal that contains a solution, a price, and a schedule.
- An organization wins (kudos and high-fives all around)!
- A program team is formed in the winning organization.
- The program team inherits the proposal schedule.
- The proposal is communicated to the product development group (PDG).
- The PDG forms a product development process (PDP) team.
- The PDP team analyzes the proposal and constructs a PDP schedule.
- The PDP team executes the PDP.
- The PDP team performance doesn’t *match* its own schedule OR the original proposal schedule – sometimes by a large amount.
- The customer, the organization, the program team, and the PDP team suffer the consequences.
- Go to step one for the next effort.
The figure below illustrates the nominal system operation, where M = Milestone.
Sometimes, but not always, the developer organization “forgets” the original proposal schedule and, via the magic of cognitive dissonance, praises the PDP team at the end of the effort for being on schedule and under budget. Sometimes, even the customer conveniently “forgets” original proposal schedule, but the customer’s financial sponsor usually doesn’t.
Do you agree with the assessment of the system’s nominal operation? If you agree with it, then consider these follow on questions:
For each of the participants in the system, where do you think the suffering starts?
Do all participants suffer equally? If not, which participant do you think suffers the most?
Is anyone at fault, or are the unintended consequences a byproduct of the system’s behavior?
What management techniques can be employed to drive “the measure of underperformance” to zero, or ideally, to a negative value?
Are there some management techniques that, if applied, will cause greater underperformance?
If you don’t agree with the assessment, then please tell me why, and what your experience has been.
Do you think the cognitive dissonance scenario exists?
If so, have you experienced the cognitive dissonance scenario?
In the cognitive dissonance scenario, even though the outcome is falsely deemed a rousing success, do you think there is any suffering by one or more participant groups during execution?