I worked (note past tense) for Oracle... I saw it first hand. I saw the decision process.. I was involved in it. I fought against it too... I tried hard to point out the short term thinking... and was shot down. Oracle is all about this quarter, not next.. just this quarter... and making as much profit in any way possible this quarter. If that means destroying a product-line that is lined up to be very successful and profitable next quarter, then so be it as long as there is profit this quarter. If that means laying off thousands so that the numbers crunch out, then so be it. Layoffs are expensive and unnecessary? Well defer that expense to the next quarter and plan re-hiring next quarter, because Oracle must be ridiculously profitable this quarter.... and so on.
Sure there is an element of "Oracle isn't doing things the way I want", but there is a mountain of truth (it's so far beyond a kernel of truth, it has become a mountain) to the shortsighted comment.
“Provide an overall summary of your performance against your objectives, expectations and the high performance bar.”
I started trying to write my review, not sure what to say, and this is what came out. Some names have been changed to protect the innocent.
My journey begins in August with no objectives or expectations. Some code representing a half dozen discreet but interoperable services is gestured at. "We're building on this. It belongs to Team X. We have branched it for now. It will require only minor changes to support our use case, which is very similar to theirs. Then we will merge back." I am told.
Laughter spills from a far corner of the room. “Don’t listen to him,” I am told.
"Have at it," I am told.
Naively, I have at it. In a small shed underneath my desk I find a hand-trowel and a leaky bucket, and bearing these tools I wade knee deep into the muck of system software gifted to us by Team X. The sludge which soaks through my boots and numbs my feet is, under examination, impenetrable to the human mind, constructed in a perversion of the language sensible only when read with an absurd literalism, a rigidly formal mode of interpretation known only by the compiler. As I attempt to step through the muck, a miasma wafting over me confounds my senses. I grow dizzy, topple over, wretch, stand, and stumble back to my desk dripping a mire of filthy bytecode and coughing up tab-ridden xml configuration files. I begin to wipe myself clean and my coworkers chuckle, and I chuckle, and we commiserate on the sorry state of our copy of System X, and collectively, we have back at it. There is much confusion, wringing of hands, and pulling of hair. Great efforts are undertaken to make minor changes to a system whose fragility and brittleness are matched only by its whorling convolutions of logic and dependencies. Tests which test nothing nevertheless break and fail, are fixed to test nothing successfully, and break again, failing with a ruthlessness beyond reason. A fog of confusion gives rise to sadness and despair, accompanied by gnashing teeth and shaking fists. Velocity is near zero as the effort required to keep from slipping backwards as a continuous stream of changes to merge from System X/mainline pour into our branch is nearly all-consuming.
Meetings are held with Team X: we are doing it wrong. If we wish to share in and enjoy the spoils of System X, we must join the family, roll as Team X rolls. Participate in Team X scrum, have changes reviewed by Team X (at a projected latency of weeks, months even), or else touch naught upon which Team X relies. The claim that our different use cases are "very similar" acquires a cruel, black humor. Since our system is of a differing genus, if not family or even order, than System X, our changes must either drastically intrude on how System X presently operates, or be different entirely. Drastic changes are unfeasible to coordinate with Team X if we wish to make progress at all, and if our changes are to be separate, isolated, then there is no reason to remain shackled to System X. The heavens rip open and a Fork falls, prongs spearing the earth between our cubes and the cubes of Team X and vibrating at a frequency which rings in our ears: abandon System X, fork permanently, never to merge back, consume what exists only as samples and hints, a shadowy outline of a system for us to trace and fill in as we see most fit.
After months, work done to enable the most basic operations of our service, to do Foo and to do Bar, and to do both according to the byzantine rules of System X, is scrapped. The process begins to trace and fill from System X to ourselves, to make Foo and Bar work again. The process begins to dig our own pit of muck. Sisyphus would be proud.
Foo and Bar operations are rewritten; Foo and Bar utilities are rewritten, and Foo and Bar work again. Reaching the end of a five month long trail of tears, we are functionally back at the beginning, but now emancipated, lugging cases and trunks of pieces and parts, fragments and shards of toys to discard or reassemble as we see fit, to fashion our own toys anew, to bind them with our own tape, wire, and string. To throw them into our own pit with confidence that we have Done Things Right and with complete understanding of how Right works, and to gift this to those who will come after us.
To mark the occasion, I have posted at swtch.com/~rsc/regexp/regexp4.html an explanation of how Code Search worked, and at code.google.com/p/codesearch a set of command-line tools to run regular expression searches against large amounts of code, quickly. It's obviously not a complete replacement, but it's the core of what Code Search did, and now you can run it on your own machine.
I want to thank everyone at Google who worked on or supported Code Search over the past five years. There are too many to name individually, but it was truly a team effort and a lot of fun.
P.S. Perhaps the best picture of source code ever published: blog.sfgate.com/techchron/2006/10/04/coders-start-your-search-engines/
I wonder what processors where used in tests. I doubt they have choosen CPU's from different generations and classes, so why such a big sink on AMD.
The Go Programming Language Specification - The Go Programming Language
Introduction. This is a reference manual for the Go programming language. For more information and other documents, see http://golang.org. G
Distributed file system - Wikipedia, the free encyclopedia
Distributed file system. From Wikipedia, the free encyclopedia. Jump to: navigation, search. "Network file system" and "Paral
How spe interacts with file opens (Kool Aid Served Daily)
Blogs.Oracle.Com - Kool Aid Served Daily
Aberdeen LLC Proudly Unveils The Petarack at VMworld : e Yugoslavia
Aberdeen LLC Proudly Unveils The Petarack at VMworld. By Tatjana Oskanjan on Aug 29, 2011 in Featured, Technology News. Aberdeen-LLC Powered