You’re Not Helping, Not At All
Damnation. This kind of fanatical “activism” is what makes it a pain to own a Mac. Yeah, yeah: you sabotaged a Microsoft ad campaign. Woo. I bet you feel really proud.
Dorks, the lot of ’em.
![]() | You are viewing Log in Create a LiveJournal Account Learn more | Explore LJ: Life Entertainment Music Culture News & Politics Technology |
Damnation. This kind of fanatical “activism” is what makes it a pain to own a Mac. Yeah, yeah: you sabotaged a Microsoft ad campaign. Woo. I bet you feel really proud.
Dorks, the lot of ’em.
Engadget: OpenOfficeMouse isn't free, isn't pretty
Eighteen buttons. Eighteen friggin’ buttons! Good God.
That mouse epitomizes one of the more gratuitous mistakes of the open source movement: overly complicated to the point of being completely unusable. The idea “if X is good, then two of X must be great!” is far too prevalent in the geek consciousness. Complicated messes turn normal people off. Sorry, nerds: my mom loves her single-button Mac mouse, and she’s not alone.
This product should have been aborted in the concept stage. Everyone who greenlighted that monstrosity should be banished to a remote island so that horrors like this are never repeated.
Haven’t kvetched in a while, but then I haven’t had anything to kvetch about. (This will change once I start judging IFComp ’09 next week.)
After doing some accidental research, I’ve come across a set of new anti-patterns that are bothering me:
We’ve all come across systems like this before. The older section follows one convention, and the newer section follows a different and completely incongruous convention.
These architectural chimeras are the result of a lack of systemwide vision: the senior engineer is unwilling (or unable) to enforce a unified vision on the project so his bored subordinates adopt the latest sparkling technology no matter how inapposite. You can tell the age of such a project by cutting through the various layers: this was implemented when Spring was in style, that was written when Rails was the rage.
Almost the exact opposite of the above: sticking to an outdated model because a single incident found that a standard technology was of dubious quality.
Some people prefer to have the compiler catch their errors early; others prefer to have the flexibility of a dynamically typed language. Who can confidently say which is better?
I can. There is no reasonable justification for leaving potential errors to be caught at the time of execution, and a properly designed system will make sure types represent the semantic usage of the variables.
Religious arguments aside, the one thing everyone should agree on is that while they both have their trade-offs, no good can result when the two models are blended in a single system: you get the instability of a dynamically typed language with all the overhead of a statically typed one.
Type-style blending is another unpleasant byproduct of an architectural chimera.
When nobody really understands the code, the oldest sections take on a formidable sacrosanctity: they are so important and so convoluted that no one dare touch them lest the entire system irrevocably collapse. Newer features have to link into the legacy core even if they could be written efficiently with more modern techniques.
I once had to inject code before every call of a core function rather than adding it to the core function itself because the core had been written by developers who were no longer with the company.
This fallout from cargo-cult programming is from misunderstanding overloaded functions. The functions have similar implementation but only differ on the number or types of arguments. Rather than deem the most-specific variant as authoritative, the same code with only minor changes is cut-and-pasted. That’s the fast track to misery right there.
The extreme opposite: simple operations that are wrapped up in opaque methods just because you can. Usually the result of overaggressive refactoring, but can also result from a misguided attempt to make the code more literate. Trust me: x + y is much more readable than addIntegers(x, y).
I sometimes refer to this as Hilfinger’s Syndrome, but usually get blank stares when I say that.
This is when a manager (usually an over-promoted engineer) grafts a development process onto a project that was built without one. The graft is usually one from the XP family, and it is more often than not only tokenisticly followed. It’s an instance of the general problem of cargo-cult management: adopting a development process because of the belief that going through the ritual will somehow magically make development easier.
Untestable requirements lead to unintelligible code which leads to unfulfilling results. Like logical inference, the consequences are disturbing: even horrifically bad code satisfies untestable requirements (noted succinctly by William Wimberly).
You can’t write unit tests for code that was not designed to be tested: code that is tightly coupled, is dependent on external resources, or in general is opaque and intractable. If the code is untestable, safe refactoring is impossible.
These are not unit tests, and calling them such will not magically make them unit tests. A unit test by its very name tests a unit of code: a method, a single path through a module, a simple state transition.
This isn’t really an anti-pattern; more like an annoying trend. I have seen far too many job requirements containing the phrase “rockstar developers only.”
Do you really want rockstars? Do you really want prima donnas that will storm out if you do not have a bowl of green M&Ms on their desk every morning? Rockstar developers have rockstar egos and rockstar demands. When they become irreplaceable, you end up working for them.
I’m cranky and demanding. Does that automatically make me a rockstar developer?
I’m annoyed but not surprised about the multiple geekgasms bubbling through the digerati about Google’s pre-pre-announcement of their new operating system, Chrome OS. As I’ve said before, there is nothing a blogger likes more than a tech company catfight, and pitting Microsoft against Google is a classic.
Still, I’m betting on Microsoft to win this in the long run. Not because I think Google don’t have the technical skill; they do, of course. What they lack is the technical vision to pull it off. The whole premise of Chrome OS is that there is enough functionality on the ol’ Interweb to eliminate the need for local applications. Yeah, right: ask Steve Jobs how well “web apps are a sweet solution” worked out for iPhone 1.0.
Hell, I’d be willing to bet that Chrome will never see the light of day outside of the Googleplex. The powers that be will quietly knife the baby rather than release something that will be a mockery of usability. Just using gOS — supposedly based on Google’s own internal distro — is painful: all the glitz of the Macintosh experience without the ease of use. (The idea of “Spray-on Usability” runs rampant throughout it.) In the second half of 2010, a few blogs will post “Whatever happened to Chrome OS?” but that will be it.
Google’s up to something, all right; but radically redefining the idea of an operating system is not it. Maybe they’re trying to kill the netbook market with something that will leave a bad taste in everyone’s mouth.
Cook is a great manager, a whiz when it comes to managing supply chains and keeping the trains running on time. He is vital to Apple. Jobs cannot do what he does. But neither can Cook do what Jobs does. The fact is, Apple needs both of them. Forgive me for the analogy I am about to make — but if you’ve seen the latest Star Trek movie, then you might understand how Cook and Jobs work together. Cook is Spock: low-key, cerebral, methodical. He’s the Apollonian counterpart to Kirk, the Dionysian hothead. Kirk is impulsive—but nobody would deny that he, not Spock, should be captain of the ship.
(via Daring Fireball)
No advice for the heir to the throne from me: if anything, my suggestions for products are things not to do. I’m a technophile, a nerd: but unlike my fellow geeks, I am sufficiently self-aware of my detachment from mainstream society to realize that anything I do would appeal to a very narrow subset of the population. (That’s a pretty good razor right there: a nerd realizes he is out-of-touch with reality; a geek doesn’t.)
No, I want to look at the article itself.
Lyons pretty much has said what others were scared to admit. What I found odd about his article was that he danced around his thesis without explicitly stating it: Apple is doomed without Jobs at the helm. Granted, he has always been a Cassandra as far as Apple is concerned, but this time he has a valid point. I can think of only four possible scenarios that can happen after Steve Jobs leaves the CEO seat: two good, one iffy, and one disastrous.
Apple hires from within. This is the most plausible: Tim Cook is practically CEO right now in everything but name. It would be the least disruptive choice.
Unfortunately, as Lyons pointed out, Tim Cook is not a visionary. He is, however, the one that the board of directors and institutional stockholders find most comfortable: soft-spoken, hard-working, and rational. That’s the problem with the current suite of CxOs at Apple: they have reached their position by compromise and concession.
Let’s face it: Jobs wouldn’t even be CEO if he hadn’t founded the company. People like him end up bitter and alone at the bottom of the pile — I speak from experience. When you are that arrogant, the only way you get to the top is to start there.
Prognosis: stasis or slow decline.
Apple hires from without. This could happen even if Tim Cook takes the CEO position: one disastrous quarter and the institutional investors start panicking.
This would kill off Apple’s lead the fastest. There are no executives out there with the kind of artistic vision the position requires (sorry, Ellison — apes do read philosophy, they just don’t understand it). Any outsider taking the position would inevitably try to change the company’s style. Any change to the working environment would lead to a mass exodus of talent.
Prognosis: a quick trip back to the quagmire of the ’90s.
Jobs anoints a successor, and it is a creative outsider. This would be the most radical action possible: the one that would cause a panic amongst the prosaic industrial investors, mass defections from the current executive stable, and the one that would be the most likely to keep the company at the forefront of the industry.
The problem is that there really aren’t any creative outsiders out there. Anyone who is notable and talented is stuck to the surface of Bubble 2.0 and shows no indication of leaving.
Prognosis: stormy weather ahead, but ultimately a continuation of Apple’s status as a vanguard of consumer technology.
The CEO position is filled via a “reverse takeover” like what happened with NeXT. This could happen if Apple starts to slip and Cook decides that the only way to regain mindshare is to snap up a hot young company. The problem is that the current collection of hot young companies are led by people with less fiscal sense than a teenager with her father’s stolen credit card at the shopping mall during a fashion blowout. Say what you want, but Jobs has never entered a market without having an idea of how to make a business out of it.
Of course, this could lead to another “dynamic duo” like the relationship of Jobs and Cook as described by Lyons (really, Dan: Star Trek? Of all the “buddy movies” to pick…). But people are funny creatures: when they get kicked down the corporate totem pole, they start looking for other opportunities. Cook (or someone like him) would have to retain the CEO title but be boss in name only.
Prognosis: good, but only if the reverse takeover results in an executive cadre that supports its leader fanatically.
What Lyons is trying to say is that Apple needs to continue its success post-Jobs with another Steve Jobs. Best of luck with that. The problem with trying to find another is that the search requires the kind of radical thinking that only Jobs seems to have.
But hey, you have my résumé. Feel free to call.
Jerry is out. Whoo.
Excuse me for not having an orgasm. This is non-news for two reasons: 1) it was expected; and 2) it will change nothing.
Jerry is the Herbert Hoover of Yahoo: he is not responsible for the collapse, but he did little to prevent it. His policies at the end were pretty much “status quo, only ever so much more so.” The company was psychotic from the Semel years, and will pretty much remain so until the rest of the Semelites ablate.
But before Yahoo can recover, it has to show humility. It has to accept that it is not, and has never been, a technology company. Nor is it a media company. It is a distributor, a syndicate, of content from both users and professional publishers. Semel couldn’t accept the fact that he wasn’t an entertainment mogul; Yang couldn’t accept the fact that he wasn’t an engineering genius.
It’s funny how some companies maintain the original personalities of their founders long after the founders have faded into the background. Google was founded by two computer science students based on a data mining algorithm they developed at Stanford; today, Google still thinks in terms of solving problems via engineering. Yahoo was formed by two students who gathered an inexplicable following for their web page of links to content they neither produced nor owned; today, Yahoo is best at managing content and maintaining a community. Microsoft, well… avarice is what best describes them: claw your way to the top via acquisitions and outright theft.
People fear Google, and rightfully so. They see another Microsoft on the horizon: a company that will so dominate the landscape that innovation will all but cease, as it did in the early ’90s. The thing that bothers me is, why put your faith in a company that has shown time and time again that it is not to be trusted? There are far safer ways to keep Google in check than to give Microsoft a ten-year extension to its monopoly.
(As usual, I do not speak for Yahoo!)
Yahoo! continually optimizes its algorithmic and sponsored search, and we have, in 2008 alone, developed and launched hundreds of improvements all designed to enhance search quality…
“Hundreds of improvements” is always a bad sign: it implies that: a) the original design was poor; or b) each improvement is a rapid response to a corner case, which in turn weakens the overall structure; or both. Painting over cracks does not eliminate the cracks; it only makes it more surprising when everything collapses.
Ultimately, this decision will be the end of Yahoo! as an independent entity. The Justice Department’s tacit anti-trust policy for the last eight years has been one of establishing lopsided duopolies. Internally, the JD assumed (incorrectly) that Microsoft was the only US business that could keep Google in check. As long as Ballmer remains in charge, Microsoft cannot even keep itself in check.
Selling to Microsoft is not the only option open to Jerry Yang et al. If he were really courageous, he could try to greenmail the Justice Department itself: simply state that if the government does not subsidize Yahoo!, Yahoo! will shut down its search operations and tell its users to go to Google. As I have said countless times before: Yahoo! is not in the business of competing with Google; Yahoo! is in the business of making money. Yang has to remind the Justice Department that it is their job, not his, to keep monopolies under control.
I view Daniel Eran Dilger the same way I view Robert Darnton: an excellent historian when reporting facts, but so obsessed with his thesis that he performs ridiculous analyses. Still, Dilger can turn a phrase quite nicely when expressing common sense that everyone else is conveniently ignoring:
Successful platforms are built on profit incentives for third party developers, not interesting technology demos or promises of developer freedom.
(See also Dziuba’s Razor.)
So, you are a small start-up company, or a large corporation, and you want to make sure you have crappy developers? Here’s the secret: don’t enforce any documentation policies. Soon you too can auger into the eternal pit of darkness!
Welcome to mediocrity!
Ted is in rare form:
As a result of this upbringing, programming with the OpenSocial API feels a bit like being bukkaked with tolerance and understanding.
I have found a replacement for the late, lamented Fake Steve Jobs:
Excessive swearing, but charming in its anger; and dead-on, especially describing design problems that could have been fixed years ago had egos not been in the way.
Here we go again. In the Washington Post article Google Ad Deal Is Under Scrutiny, we get the following gem:
“This is a complicated situation, but one of the key questions is very simple,” said David Balto, an antitrust lawyer who was competition policy director at the Federal Trade Commission during the Clinton administration. “What is Yahoo's incentive to continue to compete?”
I said it once, and I’ll say it again: Yahoo! is not in the business of competing with Google. It is in the business of making money.
If the FTC is so damn eager for a Google competitor, either split the company up — oh, wait; you can’t do that because the DoJ refused to split Microsoft — or create an artificial competitor. Neither alternative solves the real problem: the same network forces that keep Windows on your PC keeps Google as the king of search, and nothing short of a radical paradigm shift will change that. (Yahoo! is trying, I’ll give you that.) Microsoft’s traditional business model — wait, copy, then undersell — just doesn’t work for services. Too bad; don’t expect me to weep for Steve Ballmer.
I’m sure Yahoo! would be happy to accept government subsidies to stay in the search game.
I got a list of in-house business classes in my inbox today, one of which was this gem:
RAPID is a decision making framework adopted by Yahoo! in early 2007. "Decide, align and get on with it" is one of the four Yahoo! Behaviors identified as key to Yahoo!'s success. (emphasis mine)
I think that’s a big part of the problem with Yahoo!’s corporate culture and subsequent lack of success: all decisions require a full consensus before execution. It certainly explains why my current project has lapsed into “analysis paralysis.”
Strong leaders are going to offend somebody. It’s inevitable. Believing you can achieve universal alignment is a dangerous fantasy.
Norton Juster once wrote of “the Triple Demons of Compromise”: one demon said to go left, one said to go right, and the third agreed with them both. Achieving consensus is a noble, popular, fruitless, and unnecessary goal. I’ve been there; it’s a mistake I will not make again. Make decisions, make unpleasant choices, demand that your underlings follow them, and then move on.
(Yeah, yeah, I work for Yahoo!; but I am not privy to any business decisions relating to Google. This is in response to the current batch of blatherskite on the web.)
Unless you’ve been in a coma for the last few days, you are aware that Yahoo! is allowing Google to buy ads for a fraction of its search results. And you are probably also aware that the blogosphere hates the idea.
They are morons, and your Uncle Wabe will tell you why.
Somebody at Yahoo! had an epiphany — it might have even been Jerry, but I doubt that — that Google and Yahoo! are not involved in some zero-sum game. That epiphany is right: they aren’t.
Apple had a similar revelation, summed up in a classic Jobsian quote: “We have to let go of the notion that for Apple to win, Microsoft has to lose.” Jobs realized that there was no justifiable business reason to compete for low-value markets in which Microsoft dominated.
The deal with Google is a watershed moment for Yahoo!, and it is no wonder why the pundits don’t like it. The bloggers are nothing more than schoolboys huddled in a circle, chanting “Fight! Fight!” at a pair of unwilling participants, neither of whom wish to batter each other for the entertainment of the mob. In the Valley no successful company is to be unchallenged, the health of the smaller business be damned: otherwise there would be no drama, and no drama means no page views. As the Apple Turns closed up shop after Microsoft and Apple became “frienemies.”
Yahoo! had to get out of the search marketing business, because it was not good at it. Yahoo! is not in the business of being a viable competitor to Google; it is in the business of making a profit. A proper business always focuses on its strengths and quickly excises those business units that constantly underperform. Those who complain that Yahoo! invested billions into Panama and therefore should maintain it are simply subscribing to the Prior Investment Fallacy and should have their blogging licenses revoked. Reading Conned Again, Watson! at least should be mandatory before posting.
If it turns out that Yahoo! can make more money outsourcing its search monetization to Google, than what of it? Loss of confidential information? Yahoo!’s search segment is so small, there are few if any trends that can be extracted from it that cannot be done from Google’s massive data stream. Long-term degradation of the customer base? Only if Yahoo! continues to try to sell keyword-based advertising, and if the test is marginally successful that may not happen. Antitrust concerns? The government cannot force Yahoo! to stay in the search advertising market; if they really have problems, then they should break up Google. Just like they could have broken up Microsoft, but didn’t. If the DoJ blocks this, expect to hear serious screaming.
Coexistence trumps conquest; “Embrace. Extend. Extinguish” succumbs to “Accept. Adapt. Achieve.”
So where does this leave Microsoft? Up the proverbial creek. The problem with Microsoft is that over the last few decades they have amassed a (deserved) reputation for treachery and now they are suffering from it. Any potential partner needs only to read a history book to see what partnering with Microsoft is worth; unfortunately, if Microsoft is serious about competing in the keyword-based advertising space it must have partners. Columnists are fond of Microsoft because its rapaciousness made good press; now that everyone is wary, the headlines are far too tame. Tough time for pundits; don’t expect me to weep.