donderdag 20 oktober 2011

Cloud strategie: Zelf bediening

In een serie artikelen over cloud computing wil ik concreter ingaan op strategieën voor cloud computing. Dit keer over zelfbediening.

Een belangrijk onderdeel van cloud computing is het zelfbediening aspect. Dit heeft meerdere kanten. Aan de ene kant betekent dit dat u bijvoorbeeld capaciteit kunt “bijkopen” als er behoefte aan is, of juist de capaciteit terug brengen als dit niet meer nodig is. Dit belicht de kant van uw organisatie als klant bij een cloud dienst. De andere kant gaat over hoe uw organisatie met zelfbediening om gaat. Hierin is uw organisatie de kant van de aanbieder van zelf bediening, mogelijk in de vorm van cloud computing.

Een aantal voorbeelden:

Laatst was ik op een site over psychologie: PsyBlog  (http://goo.gl/IthGr). Daar werd een e-book verkocht voor 6 euro. Dit boek wordt alleen elektronisch verkocht en de schrijver van dit boek gebruikt hiervoor een cloud dienst die de distributie en betaling regelt. Zonder dat de schrijver enige inspanning meer hoeft te leveren kan hij geld verdienen. Het maakt niet uit of hij 100, 1000 of een miljoen exemplaren verkoopt. Er verplaatst geld zonder dat hier achteraf nog arbeid in gestopt hoeft te worden. Dit is in tegenstelling tot de fysieke wereld een enorm krachtig principe. In de VS lopen ze sowieso al voorop als het gaat om ebooks, maar ook hier hebben genoeg mensen een iPad. Juist doordat er geen arbeid meer aan te pas komt is de prijs ook laag, ik heb het gekocht als impuls aankoop. Met PayPal (ook een cloud dienst) heb ik binnen een minuut betaald en mijn boek binnen..

Een ander voorbeeld is euromasters. Zonder tussenkomst van een mens regel ik zelf mijn afspraak wanneer ik mijn banden wil verwisselen.

Vroeger kwam er iemand langs om mijn meters te controleren, nu krijg ik een kaartje, maar binnenkort krijg ik wellicht alleen nog maar een e-mail. Zolang de standen redelijk lijken is er geen fysieke controle nodig. Dit is een enorme besparing.

Voor een klant heb ik een training plan systeem ontwikkeld. Stapje voor stapje gaat ook dat steeds dichter naar zelfbediening toe. Klanten krijgen automatisch een e-mail met een aantal voorgestelde trainingsdata in hun regio waarin een certificaat door middel van een training verlengd kan worden. Inschrijven gaat daarna ook volledig digitaal. Nieuwe klanten kunnen zichzelf registreren en cursisten aanmelden op open inschrijvingen. Vroeger ging er klantcontact vooraf aan het aansluiten van nieuwe klanten, nu melden zich klanten aan waarvoor geen inspanning meer geleverd hoeft te worden.

Een ander voorbeeld is de extractie tool die ik voor een klant gebouwd heb. Voorheen werden bestanden versleuteld en verstuurd of geüpload naar een sftp server. Hier kwam bijna per definitie mensenhanden aan te pas. Met de tool wordt data direct uit een database gehaald en versleuteld verstuurd. Ook werd een map door de tool (in de vorm van een service) gemonitord en werden bepaalde bestanden direct automatisch en veilig naar een centrale server toe gestuurd.

Coaching is hot, vaak gebeurt dit één op één, maar er zijn ook coaches die coachen als seminar dus voor een groep mensen. Maar er zijn coaches die interessante mensen interviewen en een deel van dit interview bieden ze gratis aan, wilt u meer, dan moet er een lidmaatschap afgesloten worden. Dit lid worden en betalen gaat zonder tussenkomst van menselijk contact. De hefboom hiervan is natuurlijk enorm.

Neem de tijd en besef dat er ook mogelijkheden zijn voor uw organisatie om te profiteren van zelfbediening, een aantal voorbeelden heb ik gegeven. Zelfbediening kan leiden tot grote veranderingen in bijvoorbeeld schaalvergroting of enorme kostenbesparing. Het kan letterlijk een organisatie naar een hoger plan tillen.

Ik hoor van steeds meer klanten dat hun klanten en leveranciers steeds meer zaken digitaal willen ontvangen. Het is niet alleen sneller, maar hoeft ook niet eerst ingescand te worden voordat het intern kan worden doorgestuurd.

Een andere aardige oplossing is het gebruik maken van post services. Zo is er bijvoorbeeld BlueMailCentral (http://goo.gl/aKYdg ).  Met hun software krijgt u er een virtuele printer bij op de computer. Als deze gebruikt wordt om te printen, dan wordt het digitale document verstuurd naar een dienst die de brief discreet uitprint en in een (aanpasbare) envelop stopt en vervolgens verstuurd. Dit gebeurt uiteraard volledig geautomatiseerd. De software is zelf zo slim om meestal al de juiste geadresseerde in te stellen. Dit kan overigens ook grote voordelen hebben als post verstuurd wordt naar bijvoorbeeld Australië, deze wordt binnen 2 dagen bezorgd. De software kent ook een Application Programming Interface (API) waardoor eigen software hierop kan worden aangesloten. Bij het versturen van post komt zodoende geen menselijk handelen meer kijken.

Dit is in feite waar cloud computing over gaat. Automatiseren, zelfbediening en schaalbaarheid. Het verplaatsen van bitjes in plaats van atomen kan voor drastisch andere kostenplaatjes zorgen.

Cloud computing biedt enorm veel voordelen en kan leiden tot een hefboom, soms kan een kleine verandering al enorm veel positieve gevolgen hebben.

Uw organisatie heeft ook mogelijkheden op dit vlak, deze inventariseer ik graag voor u.

dinsdag 18 oktober 2011

Stevey's Google Platforms Rant

Steve Yegge (http://goo.gl/KwURQ) is a google engineer who also worked at Amazon. What’s bothering Steve is that Google has a wrong approach to its products. He’s having a rant about it but he posted it to the public instead of to his colleagues at Google. It’s a brilliant read and this is just a mirror since he deleted his post. I can write a lot about the content, but I will not, judge yourself.

____

I was at Amazon for about six and a half years, and now I've been at Google for that long. One thing that struck me immediately about the two companies -- an impression that has been reinforced almost daily -- is that Amazon does everything wrong, and Google does everything right. Sure, it's a sweeping generalization, but a surprisingly accurate one. It's pretty crazy. There are probably a hundred or even two hundred different ways you can compare the two companies, and Google is superior in all but three of them, if I recall correctly. I actually did a spreadsheet at one point but Legal wouldn't let me show it to anyone, even though recruiting loved it.

I mean, just to give you a very brief taste: Amazon's recruiting process is fundamentally flawed by having teams hire for themselves, so their hiring bar is incredibly inconsistent across teams, despite various efforts they've made to level it out. And their operations are a mess; they don't really have SREs and they make engineers pretty much do everything, which leaves almost no time for coding - though again this varies by group, so it's luck of the draw. They don't give a single shit about charity or helping the needy or community contributions or anything like that. Never comes up there, except maybe to laugh about it. Their facilities are dirt-smeared cube farms without a dime spent on decor or common meeting areas. Their pay and benefits suck, although much less so lately due to local competition from Google and Facebook. But they don't have any of our perks or extras -- they just try to match the offer-letter numbers, and that's the end of it. Their code base is a disaster, with no engineering standards whatsoever except what individual teams choose to put in place.

To be fair, they do have a nice versioned-library system that we really ought to emulate, and a nice publish-subscribe system that we also have no equivalent for. But for the most part they just have a bunch of crappy tools that read and write state machine information into relational databases. We wouldn't take most of it even if it were free.

I think the pubsub system and their library-shelf system were two out of the grand total of three things Amazon does better than google.

I guess you could make an argument that their bias for launching early and iterating like mad is also something they do well, but you can argue it either way. They prioritize launching early over everything else, including retention and engineering discipline and a bunch of other stuff that turns out to matter in the long run. So even though it's given them some competitive advantages in the marketplace, it's created enough other problems to make it something less than a slam-dunk.

But there's one thing they do really really well that pretty much makes up for ALL of their political, philosophical and technical screw-ups.

Jeff Bezos is an infamous micro-manager. He micro-manages every single pixel of Amazon's retail site. He hired Larry Tesler, Apple's Chief Scientist and probably the very most famous and respected human-computer interaction expert in the entire world, and then ignored every goddamn thing Larry said for three years until Larry finally -- wisely -- left the company. Larry would do these big usability studies and demonstrate beyond any shred of doubt that nobody can understand that frigging website, but Bezos just couldn't let go of those pixels, all those millions of semantics-packed pixels on the landing page. They were like millions of his own precious children. So they're all still there, and Larry is not.

Micro-managing isn't that third thing that Amazon does better than us, by the way. I mean, yeah, they micro-manage really well, but I wouldn't list it as a strength or anything. I'm just trying to set the context here, to help you understand what happened. We're talking about a guy who in all seriousness has said on many public occasions that people should be paying him to work at Amazon. He hands out little yellow stickies with his name on them, reminding people "who runs the company" when they disagree with him. The guy is a regular... well, Steve Jobs, I guess. Except without the fashion or design sense. Bezos is super smart; don't get me wrong. He just makes ordinary control freaks look like stoned hippies.

So one day Jeff Bezos issued a mandate. He's doing that all the time, of course, and people scramble like ants being pounded with a rubber mallet whenever it happens. But on one occasion -- back around 2002 I think, plus or minus a year -- he issued a mandate that was so out there, so huge and eye-bulgingly ponderous, that it made all of his other mandates look like unsolicited peer bonuses.

His Big Mandate went something along these lines:

1) All teams will henceforth expose their data and functionality through service interfaces.

2) Teams must communicate with each other through these interfaces.

3) There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team's data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.

4) It doesn't matter what technology they use. HTTP, Corba, Pubsub, custom protocols -- doesn't matter. Bezos doesn't care.

5) All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.

6) Anyone who doesn't do this will be fired.

7) Thank you; have a nice day!

Ha, ha! You 150-odd ex-Amazon folks here will of course realize immediately that #7 was a little joke I threw in, because Bezos most definitely does not give a shit about your day.

#6, however, was quite real, so people went to work. Bezos assigned a couple of Chief Bulldogs to oversee the effort and ensure forward progress, headed up by Uber-Chief Bear Bulldog Rick Dalzell. Rick is an ex-Armgy Ranger, West Point Academy graduate, ex-boxer, ex-Chief Torturer slash CIO at Wal*Mart, and is a big genial scary man who used the word "hardened interface" a lot. Rick was a walking, talking hardened interface himself, so needless to say, everyone made LOTS of forward progress and made sure Rick knew about it.

Over the next couple of years, Amazon transformed internally into a service-oriented architecture. They learned a tremendous amount while effecting this transformation. There was lots of existing documentation and lore about SOAs, but at Amazon's vast scale it was about as useful as telling Indiana Jones to look both ways before crossing the street. Amazon's dev staff made a lot of discoveries along the way. A teeny tiny sampling of these discoveries included:

- pager escalation gets way harder, because a ticket might bounce through 20 service calls before the real owner is identified. If each bounce goes through a team with a 15-minute response time, it can be hours before the right team finally finds out, unless you build a lot of scaffolding and metrics and reporting.

- every single one of your peer teams suddenly becomes a potential DOS attacker. Nobody can make any real forward progress until very serious quotas and throttling are put in place in every single service.

- monitoring and QA are the same thing. You'd never think so until you try doing a big SOA. But when your service says "oh yes, I'm fine", it may well be the case that the only thing still functioning in the server is the little component that knows how to say "I'm fine, roger roger, over and out" in a cheery droid voice. In order to tell whether the service is actually responding, you have to make individual calls. The problem continues recursively until your monitoring is doing comprehensive semantics checking of your entire range of services and data, at which point it's indistinguishable from automated QA. So they're a continuum.

- if you have hundreds of services, and your code MUST communicate with other groups' code via these services, then you won't be able to find any of them without a service-discovery mechanism. And you can't have that without a service registration mechanism, which itself is another service. So Amazon has a universal service registry where you can find out reflectively (programmatically) about every service, what its APIs are, and also whether it is currently up, and where.

- debugging problems with someone else's code gets a LOT harder, and is basically impossible unless there is a universal standard way to run every service in a debuggable sandbox.

That's just a very small sample. There are dozens, maybe hundreds of individual learnings like these that Amazon had to discover organically. There were a lot of wacky ones around externalizing services, but not as many as you might think. Organizing into services taught teams not to trust each other in most of the same ways they're not supposed to trust external developers.

This effort was still underway when I left to join Google in mid-2005, but it was pretty far advanced. From the time Bezos issued his edict through the time I left, Amazon had transformed culturally into a company that thinks about everything in a services-first fashion. It is now fundamental to how they approach all designs, including internal designs for stuff that might never see the light of day externally.

At this point they don't even do it out of fear of being fired. I mean, they're still afraid of that; it's pretty much part of daily life there, working for the Dread Pirate Bezos and all. But they do services because they've come to understand that it's the Right Thing. There are without question pros and cons to the SOA approach, and some of the cons are pretty long. But overall it's the right thing because SOA-driven design enables Platforms.

That's what Bezos was up to with his edict, of course. He didn't (and doesn't) care even a tiny bit about the well-being of the teams, nor about what technologies they use, nor in fact any detail whatsoever about how they go about their business unless they happen to be screwing up. But Bezos realized long before the vast majority of Amazonians that Amazon needs to be a platform.

You wouldn't really think that an online bookstore needs to be an extensible, programmable platform. Would you?

Well, the first big thing Bezos realized is that the infrastructure they'd built for selling and shipping books and sundry could be transformed an excellent repurposable computing platform. So now they have the Amazon Elastic Compute Cloud, and the Amazon Elastic MapReduce, and the Amazon Relational Database Service, and a whole passel' o' other services browsable at aws.amazon.com. These services host the backends for some pretty successful companies, reddit being my personal favorite of the bunch.

The other big realization he had was that he can't always build the right thing. I think Larry Tesler might have struck some kind of chord in Bezos when he said his mom couldn't use the goddamn website. It's not even super clear whose mom he was talking about, and doesn't really matter, because nobody's mom can use the goddamn website. In fact I myself find the website disturbingly daunting, and I worked there for over half a decade. I've just learned to kinda defocus my eyes and concentrate on the million or so pixels near the center of the page above the fold.

I'm not really sure how Bezos came to this realization -- the insight that he can't build one product and have it be right for everyone. But it doesn't matter, because he gets it. There's actually a formal name for this phenomenon. It's called Accessibility, and it's the most important thing in the computing world.

The. Most. Important. Thing.

If you're sorta thinking, "huh? You mean like, blind and deaf people Accessibility?" then you're not alone, because I've come to understand that there are lots and LOTS of people just like you: people for whom this idea does not have the right Accessibility, so it hasn't been able to get through to you yet. It's not your fault for not understanding, any more than it would be your fault for being blind or deaf or motion-restricted or living with any other disability. When software -- or idea-ware for that matter -- fails to be accessible to anyone for any reason, it is the fault of the software or of the messaging of the idea. It is an Accessibility failure.

Like anything else big and important in life, Accessibility has an evil twin who, jilted by the unbalanced affection displayed by their parents in their youth, has grown into an equally powerful Arch-Nemesis (yes, there's more than one nemesis to accessibility) named Security. And boy howdy are the two ever at odds.

But I'll argue that Accessibility is actually more important than Security because dialing Accessibility to zero means you have no product at all, whereas dialing Security to zero can still get you a reasonably successful product such as the Playstation Network.

So yeah. In case you hadn't noticed, I could actually write a book on this topic. A fat one, filled with amusing anecdotes about ants and rubber mallets at companies I've worked at. But I will never get this little rant published, and you'll never get it read, unless I start to wrap up.

That one last thing that Google doesn't do well is Platforms. We don't understand platforms. We don't "get" platforms. Some of you do, but you are the minority. This has become painfully clear to me over the past six years. I was kind of hoping that competitive pressure from Microsoft and Amazon and more recently Facebook would make us wake up collectively and start doing universal services. Not in some sort of ad-hoc, half-assed way, but in more or less the same way Amazon did it: all at once, for real, no cheating, and treating it as our top priority from now on.

But no. No, it's like our tenth or eleventh priority. Or fifteenth, I don't know. It's pretty low. There are a few teams who treat the idea very seriously, but most teams either don't think about it all, ever, or only a small percentage of them think about it in a very small way.

It's a big stretch even to get most teams to offer a stubby service to get programmatic access to their data and computations. Most of them think they're building products. And a stubby service is a pretty pathetic service. Go back and look at that partial list of learnings from Amazon, and tell me which ones Stubby gives you out of the box. As far as I'm concerned, it's none of them. Stubby's great, but it's like parts when you need a car.

A product is useless without a platform, or more precisely and accurately, a platform-less product will always be replaced by an equivalent platform-ized product.

Google+ is a prime example of our complete failure to understand platforms from the very highest levels of executive leadership (hi Larry, Sergey, Eric, Vic, howdy howdy) down to the very lowest leaf workers (hey yo). We all don't get it. The Golden Rule of platforms is that you Eat Your Own Dogfood. The Google+ platform is a pathetic afterthought. We had no API at all at launch, and last I checked, we had one measly API call. One of the team members marched in and told me about it when they launched, and I asked: "So is it the Stalker API?" She got all glum and said "Yeah." I mean, I was joking, but no... the only API call we offer is to get someone's stream. So I guess the joke was on me.

Microsoft has known about the Dogfood rule for at least twenty years. It's been part of their culture for a whole generation now. You don't eat People Food and give your developers Dog Food. Doing that is simply robbing your long-term platform value for short-term successes. Platforms are all about long-term thinking.

Google+ is a knee-jerk reaction, a study in short-term thinking, predicated on the incorrect notion that Facebook is successful because they built a great product. But that's not why they are successful. Facebook is successful because they built an entire constellation of products by allowing other people to do the work. So Facebook is different for everyone. Some people spend all their time on Mafia Wars. Some spend all their time on Farmville. There are hundreds or maybe thousands of different high-quality time sinks available, so there's something there for everyone.

Our Google+ team took a look at the aftermarket and said: "Gosh, it looks like we need some games. Let's go contract someone to, um, write some games for us." Do you begin to see how incredibly wrong that thinking is now? The problem is that we are trying to predict what people want and deliver it for them.

You can't do that. Not really. Not reliably. There have been precious few people in the world, over the entire history of computing, who have been able to do it reliably. Steve Jobs was one of them. We don't have a Steve Jobs here. I'm sorry, but we don't.

Larry Tesler may have convinced Bezos that he was no Steve Jobs, but Bezos realized that he didn't need to be a Steve Jobs in order to provide everyone with the right products: interfaces and workflows that they liked and felt at ease with. He just needed to enable third-party developers to do it, and it would happen automatically.

I apologize to those (many) of you for whom all this stuff I'm saying is incredibly obvious, because yeah. It's incredibly frigging obvious. Except we're not doing it. We don't get Platforms, and we don't get Accessibility. The two are basically the same thing, because platforms solve accessibility. A platform is accessibility.

So yeah, Microsoft gets it. And you know as well as I do how surprising that is, because they don't "get" much of anything, really. But they understand platforms as a purely accidental outgrowth of having started life in the business of providing platforms. So they have thirty-plus years of learning in this space. And if you go to msdn.com, and spend some time browsing, and you've never seen it before, prepare to be amazed. Because it's staggeringly huge. They have thousands, and thousands, and THOUSANDS of API calls. They have a HUGE platform. Too big in fact, because they can't design for squat, but at least they're doing it.

Amazon gets it. Amazon's AWS (aws.amazon.com) is incredible. Just go look at it. Click around. It's embarrassing. We don't have any of that stuff.

Apple gets it, obviously. They've made some fundamentally non-open choices, particularly around their mobile platform. But they understand accessibility and they understand the power of third-party development and they eat their dogfood. And you know what? They make pretty good dogfood. Their APIs are a hell of a lot cleaner than Microsoft's, and have been since time immemorial.

Facebook gets it. That's what really worries me. That's what got me off my lazy butt to write this thing. I hate blogging. I hate... plussing, or whatever it's called when you do a massive rant in Google+ even though it's a terrible venue for it but you do it anyway because in the end you really do want Google to be successful. And I do! I mean, Facebook wants me there, and it'd be pretty easy to just go. But Google is home, so I'm insisting that we have this little family intervention, uncomfortable as it might be.

After you've marveled at the platform offerings of Microsoft and Amazon, and Facebook I guess (I didn't look because I didn't want to get too depressed), head over to developers.google.com and browse a little. Pretty big difference, eh? It's like what your fifth-grade nephew might mock up if he were doing an assignment to demonstrate what a big powerful platform company might be building if all they had, resource-wise, was one fifth grader.

Please don't get me wrong here -- I know for a fact that the dev-rel team has had to FIGHT to get even this much available externally. They're kicking ass as far as I'm concerned, because they DO get platforms, and they are struggling heroically to try to create one in an environment that is at best platform-apathetic, and at worst often openly hostile to the idea.

I'm just frankly describing what developers.google.com looks like to an outsider. It looks childish. Where's the Maps APIs in there for Christ's sake? Some of the things in there are labs projects. And the APIs for everything I clicked were... they were paltry. They were obviously dog food. Not even good organic stuff. Compared to our internal APIs it's all snouts and horse hooves.

And also don't get me wrong about Google+. They're far from the only offenders. This is a cultural thing. What we have going on internally is basically a war, with the underdog minority Platformers fighting a more or less losing battle against the Mighty Funded Confident Producters.

Any teams that have successfully internalized the notion that they should be externally programmable platforms from the ground up are underdogs -- Maps and Docs come to mind, and I know GMail is making overtures in that direction. But it's hard for them to get funding for it because it's not part of our culture. Maestro's funding is a feeble thing compared to the gargantuan Microsoft Office programming platform: it's a fluffy rabbit versus a T-Rex. The Docs team knows they'll never be competitive with Office until they can match its scripting facilities, but they're not getting any resource love. I mean, I assume they're not, given that Apps Script only works in Spreadsheet right now, and it doesn't even have keyboard shortcuts as part of its API. That team looks pretty unloved to me.

Ironically enough, Wave was a great platform, may they rest in peace. But making something a platform is not going to make you an instant success. A platform needs a killer app. Facebook -- that is, the stock service they offer with walls and friends and such -- is the killer app for the Facebook Platform. And it is a very serious mistake to conclude that the Facebook App could have been anywhere near as successful without the Facebook Platform.

You know how people are always saying Google is arrogant? I'm a Googler, so I get as irritated as you do when people say that. We're not arrogant, by and large. We're, like, 99% Arrogance-Free. I did start this post -- if you'll reach back into distant memory -- by describing Google as "doing everything right". We do mean well, and for the most part when people say we're arrogant it's because we didn't hire them, or they're unhappy with our policies, or something along those lines. They're inferring arrogance because it makes them feel better.

But when we take the stance that we know how to design the perfect product for everyone, and believe you me, I hear that a lot, then we're being fools. You can attribute it to arrogance, or naivete, or whatever -- it doesn't matter in the end, because it's foolishness. There IS no perfect product for everyone.

And so we wind up with a browser that doesn't let you set the default font size. Talk about an affront to Accessibility. I mean, as I get older I'm actually going blind. For real. I've been nearsighted all my life, and once you hit 40 years old you stop being able to see things up close. So font selection becomes this life-or-death thing: it can lock you out of the product completely. But the Chrome team is flat-out arrogant here: they want to build a zero-configuration product, and they're quite brazen about it, and Fuck You if you're blind or deaf or whatever. Hit Ctrl-+ on every single page visit for the rest of your life.

It's not just them. It's everyone. The problem is that we're a Product Company through and through. We built a successful product with broad appeal -- our search, that is -- and that wild success has biased us.

Amazon was a product company too, so it took an out-of-band force to make Bezos understand the need for a platform. That force was their evaporating margins; he was cornered and had to think of a way out. But all he had was a bunch of engineers and all these computers... if only they could be monetized somehow... you can see how he arrived at AWS, in hindsight.

Microsoft started out as a platform, so they've just had lots of practice at it.

Facebook, though: they worry me. I'm no expert, but I'm pretty sure they started off as a Product and they rode that success pretty far. So I'm not sure exactly how they made the transition to a platform. It was a relatively long time ago, since they had to be a platform before (now very old) things like Mafia Wars could come along.

Maybe they just looked at us and asked: "How can we beat Google? What are they missing?"

The problem we face is pretty huge, because it will take a dramatic cultural change in order for us to start catching up. We don't do internal service-oriented platforms, and we just as equally don't do external ones. This means that the "not getting it" is endemic across the company: the PMs don't get it, the engineers don't get it, the product teams don't get it, nobody gets it. Even if individuals do, even if YOU do, it doesn't matter one bit unless we're treating it as an all-hands-on-deck emergency. We can't keep launching products and pretending we'll turn them into magical beautiful extensible platforms later. We've tried that and it's not working.

The Golden Rule of Platforms, "Eat Your Own Dogfood", can be rephrased as "Start with a Platform, and Then Use it for Everything." You can't just bolt it on later. Certainly not easily at any rate -- ask anyone who worked on platformizing MS Office. Or anyone who worked on platformizing Amazon. If you delay it, it'll be ten times as much work as just doing it correctly up front. You can't cheat. You can't have secret back doors for internal apps to get special priority access, not for ANY reason. You need to solve the hard problems up front.

I'm not saying it's too late for us, but the longer we wait, the closer we get to being Too Late.

I honestly don't know how to wrap this up. I've said pretty much everything I came here to say today. This post has been six years in the making. I'm sorry if I wasn't gentle enough, or if I misrepresented some product or team or person, or if we're actually doing LOTS of platform stuff and it just so happens that I and everyone I ever talk to has just never heard about it. I'm sorry.

But we've gotta start doing this right.

vrijdag 7 oktober 2011

Banken hebben de sleutel

Normaal schrijf ik artikelen over de toekomst van de automatisering. Vandaag wil ik schrijven over de toekomst van ons land en hoe deze ten goede veranderd kan worden. Het is een oproep en een vraag. De oproep is om dit te delen zodat de vraag beantwoord kan worden: Wat kan er aangevuld worden op onderstaande redenering?

We zitten in een vicieuze cirkel die ons allemaal raakt. De economie hapert en niet alleen die van Nederland. In 2008 zijn we geraakt door een financiële crisis waarin banken de hoofdrol speelden. Vandaag worden we ook geraakt alleen niet door een directe oorzaak in het nu, maar als een gevolg. Een nasleep van de crisis die in 2008 begon. Deze crisis kan worden opgelost en dit is hoe.

Er moeten meer huizen verkocht worden.

Als je de tijd neemt om de redenering te volgen kun je in mijn ogen geen andere conclusie trekken. En als mijn conclusie niet goed is, vul hem alsjeblieft aan zodat hij wel kloppend is en deze cirkel doorbroken kan worden ten goede van ons allen.

Dit is wat er gebeurt als er huizen worden verkocht: Mensen kopen nieuwe keukens en gaan naar bouwmarkten. Keukens bevatten aanrechtbladen die ook in Nederland geproduceerd worden. Vorig jaar zijn er 120.000 minder keukens verkocht en dit raakt de hele branche hard. Maar ook makelaars, hypotheek adviseurs en notarissen worden geraakt. Ook verhuizers beginnen het nu echt te voelen en in de gehele keten gaan er mensen uit. Dit zijn ook huizenbezitters die mogelijk in de problemen zitten of potentiële huizenkopers die dit voorlopig niet zullen doen.

Minder huizen verkopen leidt ook tot minder huizen bouwen, veel ZZP’ers in de bouw hebben zo geen werk, en er worden zelfs minder kilometers gemaakt zodat de pompstations een teruggang voelen.

De hele keten voelt de malaise en als ondernemer wordt je echt niet gelukkig van deze situatie. Mensen in de keten zullen zuinig zijn en dat raakt ook weer de horeca. Alles is met deze keten verbonden.

Doordat er minder huizen worden verkocht daalt de prijs en de kans dus op een restschuld waardoor er alleen maar meer problemen ontstaan.

Momenteel worden veel hypotheek aanvragen niet gehonoreerd. Enerzijds omdat mensen teveel willen lenen, anderzijds omdat er meer gekeken wordt naar de risico’s. Er zijn in het verleden veel hypotheken verkocht met een hoog percentage aflossingsvrij. Dit levert toekomstige risico’s op, ik ben daar niet blind voor. Maar om de deur dicht te houden schaadt de economie op zeer veel vlakken.

Door gewoon weer hypotheken af te sluiten en daarin wat soepeler te zijn zullen er meer huizen verkocht worden en zal de huizenprijs weer stijgen. Er vloeit weer geld en daardoor hoeven minder mensen ontslagen te worden. Mensen die nu een hypotheek probleem hebben, krijgen zo meer kans om dit probleem op te lossen als de economie weer draait. En als je nu als bank een hypotheek afsluit met wat meer risico, bijvoorbeeld 100% aflossingsvrij, dan kun je dit ook wel weer aan voorwaarden verbinden. Bijvoorbeeld maximaal tien jaar. Mijn hypotheeklast is momenteel ongeveer 1000 euro bruto. Dat is deze over vijftien jaar nog steeds. 1000 euro is over vijftien jaar is echter een stuk minder waard geworden door onder andere inflatie.

Banken en aanverwante bedrijven stonden aan de wieg van de kredietcrisis. Ze hebben ook nu de sleutel in handen voor verbetering.

Laten zijn de vicieuze cirkel doorbreken en de spiraal omhoog terugvinden.

Niets doen maakt de crisis alleen maar slepend. En wat de regering ook voor extra’s doet, het zal in veelvoud bij ze terugkomen. Op alle genoemde zaken zit belasting, dus als de keten een boost krijgt zullen de belastinginkomsten groeien.

Ik zie het voor me en hoor graag waar mijn beredenering niet klopt.

Banken worden soepeler, mensen krijgen sneller een hypotheek en kunnen eindelijk huizen kopen. Verkopers zijn van een probleem af en kunnen nu zelf ook verhuizen of hoeven nu geen dubbele hypotheeklasten meer op te brengen. Tussenpersonen, notarissen, makelaars verdienen weer meer geld en hoeven geen mensen meer te ontslaan. Bouwmarkten krijgen het drukken, keukenwinkels verkopen weer keukens. Transport sector mag meer gaan rijden, huizenprijzen zullen weer stijgen zodat mensen die niet aan de verplichtingen kunnen voldoen met minder restschuld blijven zitten.

En als het allemaal weer goed gaat kunnen we ook naar Griekenland op vakantie.

In 2008 was er een hele duidelijke oorzaak waarom alles instortte. Nu is het vooral de angst en sentiment wat ons tegenhoudt. Hier kunnen we pas uit stappen als we gaan investeren in plaats van alleen maar bezuinigen. Hogere kosten zijn beter te dragen als je groeit.

Wat is nu feitelijk het risico? Dat banken leningen verstrekken aan mensen die het niet terug kunnen betalen? En is dat risico niet beter te dragen als er meer binnenkomt? Geld moet rollen en momenteel hebben we gewoon een adrenaline boost nodig om dit in werking te stellen.

YES WE CAN!

maandag 3 oktober 2011

Rationalisatie op weg naar de cloud

Eerder schreef ik al over de veranderingen die cloud computing ons gaat brengen en dat het nu de tijd is dat bedrijven een cloud strategie ontwikkelen. De cloud bied niet alleen mogelijkheden voor bedrijven om verder te automatiseren, flexibel te zijn en kosten te besparen, maar het verandert ook de markt voor consumenten, de manier waarop de jeugd werkt en leert en wellicht dus het hele ecosysteem van een branche.

Daarnaast zijn de kosten voor het huidige landschap hoger dan de optelsom van hardware, licenties en arbeid van de IT afdeling om het in de lucht te houden. Hoe hoger de gemiddelde leeftijd van applicaties hoe meer verborgen kosten er zijn. Verborgen kosten zijn wachttijden van medewerkers bij uitval, extra handelingen die nodig zijn omdat een systeem niet optimaal (meer) is, extra tijd die nodig is bij het uitvoeren van handelingen omdat het landschap complex is.

Tijdens een presentatie van Martien Ouwens van Oracle op een Computerworld event gaf Martien aan dat bedrijven die goed zijn in het rationaliseren van het applicatielandschap, goed zijn in het adopteren van cloud computing.

Toevallig schreef Ron Tolido van Capgemini ( http://goo.gl/CBlGQ ) onlangs ook over het rationaliseren van het applicatielandschap in de Automatiseringsgids, en dat dit één van de grootste kopzorgen van CIO’s geworden is.

Nu is dus een goed moment om hier wat handen en voeten aan te geven.

Saillant detail is dat het lastig is om een definitie van applicatielandschap te vinden terwijl de term al qua beeld scheppend is. Mijn definitie is de gebruikte applicaties binnen een organisatie inclusief de onderliggende samenhang.

Met rationaliseren wordt het praktisch maken of economisch inrichten bedoeld. Dat huidige legacy applicaties een groot obstakel vormen voor het bewegen richting cloud computing lijkt mij een no-brainer. De applicatie heeft al een hoop meegemaakt en is vergroeid met de organisatie waardoor onderlinge afhankelijkheden in de regel alleen maar zijn toegenomen. Het gat tussen cloud en deze applicaties is dus ook het grootst. 

Een belangrijk inzicht dat de slagingskans van rationaliseren vergroot is dat de projecten die voortvloeien uit rationalisatie wel betrekking hebben op de IT maar zeker niet allemaal IT projecten zijn. Het zijn veelal ook organisatorische veranderingen. Rationaliseren is dus een symbiose van organisatie en techniek.

Een voorbeeld: Door een opdrachtgever werd me gevraagd structurele management rapportages te genereren om productiviteit inzichtelijk te maken. Snel ontdekte ik dat afdelingen onderling een iets andere methode hadden voor het registreren van uren. Dit maakte berekeningen arbeidsintensiever en moeilijker. Door hier eerst uniformiteit in aan te brengen (organisatorisch, aansturen van chefs), hoefde er minder aanpassingen gedaan worden om de rapportages structureel te kunnen genereren. Vaak wordt de applicatie aangegrepen om een organisatorisch probleem te kunnen omzeilen.

Overstap naar virtueel
Bij veel MKB bedrijven draaien applicaties (en database) nog op fysieke servers. Als een moederbord het begeeft faalt de server en de applicatie. Hoewel het verplaatsen van software van een vaste server naar een gevirtualiseerde server zeker niet altijd een appeltje-eitje is (http://goo.gl/jRynh) , maakt het wel de weg vrij om de applicatie te zijner tijd te verplaatsen naar een datacenter. Kijk in hoeverre de servers zijn afgeschreven, of wellicht dat de servers ook te gebruiken zijn voor virtualisering.

Toen applicaties werden aangeschaft en ingezet, waren er wellicht minder mogelijkheden om deze applicaties te verbinden met andere applicaties. Vaak zie je dat bij het volwassen worden van applicaties er ook veel gedaan wordt aan integratie mogelijkheden. Omdat deze er in het begin niet waren zijn deze waarschijnlijk nooit ingezet en is hier omheen gewerkt of is er maatwerk voor gemaakt. Het gebruiken van Application Programming Interfaces (API), bijvoorbeeld in de vorm van (platform onafhankelijke) webservices, kan het rationalisatie proces enorm versnellen en eenvoudiger maken. Er kan toegewerkt worden om de oorspronkelijke software meer als standaard te gebruiken. Ik zie vaak dat bedrijven maatwerk laten bouwen op standaard software. Dit heeft drie grote nadelen:

1)    Er wordt betaald voor de licenties en er wordt betaald voor het maatwerk inclusief onderhoud.
2)    Door het maatwerk is het upgrade proces van de standaard software duur en moeizaam geworden waardoor er slechts traag van nieuwe functionaliteit gebruik gemaakt kan worden terwijl er in feite wel voor die ontwikkeling wordt betaald
3)    Standaard software wordt doorontwikkeld. Dit zit het maatwerk steeds meer in de weg en de architectuur van de software sluit steeds slechter aan op het maatwerk

Standaardisatie is bijna een vereiste voor cloud computing. Om te kunnen profiteren van drastische kostenverlagingen lijkt rationaliseren dus onvermijdelijk.

Rationalisatie is strategie. Strategie werkt alleen als het op het hoogste niveau gedragen wordt en tot op het laagste niveau wordt uitgevoerd. Rationalisatie zal dus pas effectief uitgevoerd kunnen worden als de directie erachter staat en niet alleen in naam, maar ook in daad. Rationaliseren leidt tot pittige trajecten welke doorzettingskracht en focus vragen, tel hierbij de weerstand tegen verandering op en de financiën die nodig zijn en dan is de rol van sterk leiderschap noodzakelijk.

Rationaliseren is niet alleen een IT aangelegenheid
Zoals ik eerder in dit artikel aangaf leidt rationaliseren van applicaties ook tot rationaliseren van processen. Hoeveel procent van de processen wordt standaard uitgevoerd, en hoeveel procent heeft uitzonderingen? Een goede indicatie van standaard werk is de hoeveelheid parate kennis die een medewerker nodig heeft om zijn werk te kunnen doen. Hoe meer opgebouwde parate kennis iemand nodig heeft, hoe minder standaard het proces blijkbaar is. Dit leidt tot langere inwerktijden, meer afhankelijkheden en daardoor hogere salarissen. Door te sturen op de standaard, zoveel mogelijk afscheid te nemen van uitzonderingen en het bevorderen van uniformiteit (mensen nemen dezelfde beslissingen op gelijke situaties) worden processen gerationaliseerd wat leidt tot betere aansluiting op de cloud.

Om inzicht te krijgen in de latente rationaliseringsbehoefte van de organisatie stel ik voor om antwoord te vinden op een aantal vragen:

- Hoeveel parate kennis is nodig om het primaire productieproces uit te voeren? (standaardisatie)
- Worden processen door verschillende mensen met gelijke functies hetzelfde uitgevoerd? (uniformiteit)
- Versterkt aanwezige software en automatisering de productiviteit?
- Wordt het standaard proces en de uitzonderingen door dezelfde mensen uitgevoerd?
- Is integratie van IT en hoe werk wordt uitgevoerd met de beschikbare applicaties vaak een onderwerp op de agenda van vergaderingen?

Als de vragen leiden tot lange antwoorden is dit een serieuze indicatie dat rationaliseren van het applicatie landschap en processen zinvol is en geld kan opleveren. Deze vragen zijn minder interessant als het primaire productieproces per definitie ad hoc is of uit veel R&D bestaat.

De business case van applicatie rationalisatie
Volgens mij is het moeilijk om een directie te overtuigen rationalisatie prioriteit te geven. De business case is namelijk niet heel gemakkelijk te maken. Je moet immers geld uitgeven zonder dat je er iets voor koopt. Omdat ik eerder al schreef over verborgen kosten kun je dus ook niet snel een ROI berekenen. Daarnaast vereist rationalisatie denkwerk en inspanning van de organisatie. Het niet rationaliseren van het applicatie landschap en het bijkomende verzuim op applicatielandschap governance kan gezien worden als een technologie schuld (Technical debt, aardige blog op http://goo.gl/IKFpH ). Kosten van veranderingen, onderhoud en integratie worden steeds hoger door eerder gemaakte keuzes. Om dit tastbaar te maken heb ik hier een kleine anekdote die het principe duidelijk maakt. Op mijn afdeling staat een vaatwasser. Mensen worden geacht zelf hun vaat in de vaatwasser te doen. Een aantal keer heb ik expres mijn kopje niet in maar op de vaatwasser gezet. Zonder uitzondering zorgde dit ervoor dat voor het eind van de middag de vaatwasser vol stond met kopjes en borden. Hiermee bedoel ik dat als je uitzonderingen toelaat dit alleen maar meer uitzonderingen aantrekt. Bij de vaatwasser is dit nog wel te overzien, maar bij organisaties kunnen deze kosten enorm zijn. Beginnen met rationalisatie is in het begin dus vooral inlossen op een opgebouwde technologie schuld en dat maakt een business case minder aantrekkelijk om mee te beginnen. Vergelijk het met hoe overheid met de pensioenproblemen omgaat. Die worden steeds maar vooruit geschoven.

Conclusie
De kracht uit de cloud en daarmee de drastische kosten besparing, schaalbaarheid, elasticiteit en mogelijkheid van het nieuwe werken ontstaan dus als er goede aansluiting is op de mogelijkheden van cloud computing en die worden dus bereikt met rationaliseren van applicaties en processen.

De cloud lost niet de IT problemen en hoge kosten op. Pas als er een rationaliseringsgraad bereikt is ontstaat er aansluiting op drastische besparingen en andere voordelen van cloud computing. Voorbeelden hiervan beschrijf ik in een vervolg artikel.