May 28, 2017

Every rule, process, and procedure in your organization was created based on some combination of legal, technical, practical, and arbitrary limits.

Does your company ship everything in just a few standard-sized boxes?  Maybe it is because they fit nicely into a UPS truck, so you get a discount.  Or maybe your first box vendor recommended them, and you have just gotten into the habit of using them.

Are you forced to use 16 digit SKUs for all of your products?  Maybe it is because, years ago, someone arbitrarily set this limit in a database.  Or maybe it is because all of your distribution partners have inventory systems that use 16 digit SKUs, and won’t be able to manage your products if you use longer ones.

Some rules are made because if we do it any other way, it impacts our accounting all the way up to the annual shareholder report.  Some rules are made because someone had to pick a number, so a couple of people got together and guessed.

We get advised all the time to break the rules.  Facebook has (or had) the famous motto of “move fast and break things”.  This approach has the advantage of helping to clear out the rules that were based on assumptions or obsolete technical constraints.  It also tends to create a lot of havoc when the rules encoded important legal or safety constraints. (A supplier of medical devices probably wants to be a little more conservative when changing processes.)

If the consequences of breaking a rule are small, and the opportunity for breaking out of legacy assumptions is high (like for a new social-media company), “move fast and break things” is probably a good rule.  You probably need to supplement that with a team or process that follows-up and fixes any critical issues that result.

If the consequences of breaking a rule are large (people’s health or safety is a risk), you need a more formal change review process.

Most organizations are in the middle of these two extremes, so you need an approach somewhere in the middle.  The key is to unpack the rule and look for legal, technical, and practical influences, and confirm whether they are still relevant.  The rest is probably based on arbitrary decisions that can and should be challenged.

Naming the parts is not enough

March 19, 2017

Some people can name all the parts of a car, and have strong opinions about the various parts.  That doesn’t mean that they know how to build a car that will work, or one that other people will want to drive.  And it definitely doesn’t say anything about their ability to build cars at large scale with a price and features that will attract a large customer base and generate a profit for the company.

The same is true for building software.  We know that many successful software companies today are made from web pages, databases, and maybe some machine-learning.  Knowing this this doesn’t help us know how to build a product people will like, or how to build a successful software company.

First we fear it, then we are mad when it isn’t perfect

September 2, 2015

Self-driving cars seem like they are just around the corner, and one of the benefits they hope to offer is more safety. Depending on who you ask, this might be a huge boon to the world, or an impossible dream, or the beginning of the AI apocalypse. There is almost always fear about new technology, but there is also a predictable path for successful innovations: First we fear it, then we overestimate the benefits, then rich people get it, then everyone gets it, and finally we take it for granted and start complaining that it isn’t better.

Today, autonomous vehicles are in the “fear and overestimate” stage. Another life-saving automobile technology, airbags, were a new thing when I was young, but are now in the “take it for granted” stage. An article in the WSJ (2015-09-02, print edition: “Fewer Air-Bag Replacements Needed”, section B2) had a picture with a caption that caught my eye. “Faulty Takata air-bag inflaters have been linked to eight deaths world-wide.” The article is not completely clear, but it seems like those deaths are from the air-bag failing to inflate when required.

We have some work to do to get there, but soon enough, today’s fears about allowing AI into our cars will be replaced with outrage that some manufacturer’s AI didn’t avoid enough accidents.

Our Competitive Advantage is Ease-of-Use

March 7, 2015

When developing a product, often a desired feature is “easy”. Perhaps this is even the planned differentiation: being easier than the competition. But “easy” doesn’t actually exist. It is like “cold” – physics has no concept of cold, only its opposite, heat. To make something cold, you must find a way to remove the heat. Likewise, if we want to make something easy, we have to find its opposite: hard.

We will find it nearly impossible to specify (or later market) “easy” in our product. Instead, we can work to understand what is hard about existing tasks, and remove those hard things. Now we have something concrete to specify in our product development, and something specific to market to our customers.

Follow the Money

July 23, 2012

GigaOm Pro Blog provides a list of likely trends, mostly in the infrastructure that powers cloud computing.  They don’t have a lot to say about software, which I believe will also be a critical turning point over the next few years for both public and private clouds.

Cloud Platform Wanted

April 28, 2011

Clouds computing is about buying just the amount of data center resources that you need, and having the ability to change your mind about that quickly.  Any IaaS cloud provider worthy of the name will let you spin up a new virtual machine any time you want to add capacity to your data center.  The hard part is getting your application to take advantage of that extra capacity.  (Despite what I wrote here, this applies to private clouds, too.)  Most off-the-shelf applications don’t go twice as fast if you have twice as many servers – in fact, most off-the-shelf applications are designed to run on just one server (or virtual machine).  Even the typical n-tier application is constructed from a handful of special purpose system – e.g. web servers, database servers, application servers, file servers.  Although the web layer in this architecture can often benefit from just adding more servers, the database layer typically doesn’t.  If you are building something more specialized than the typical “web server that displays stuff from a database”, you probably have to invent a way to distribute your work across many machines, and then you have to build admin or automation tools to support adding and removing resources.  Now you are hiring developers that are good at building distributed applications, and spending lots of time (and perhaps a limited supply of start-up capital or project budget) building out a robust platform that your real project will run on.

In Rework, the founders of 37signals suggest that you should not worry about the scalability of your application, because once you start making money, you can always buy a more powerful machine.  I believe that their point was that instead of worrying about a hypothetical scaling problem, you should get some customers and generate some revenue, after which you will have some money to throw at the problem.  I agree wholeheartedly with that point.  But more and more of us are in environments where we know that if we cannot support a large number of users, or a large data set, or provide fast response times, the project will fail.  And we sometimes realize that even if we buy the biggest server that Dell or HP makes, it isn’t going to be enough.

So what we need is a good cloud platform for developing distributed applications that can go faster when we add more hardware, but runs fine with a small amount of hardware.  It should be something that doesn’t require super-human distributed computing development skills, that lets the developer focus on his application rather than the plumbing, and that an administrator can configure for whatever scale the occasion demands (e.g. seasonal load spikes).

Got a solution like this?  I’d love to hear about it.  If not, I might have to go build it – feature requests welcome 😉

How not to fail at cloud

December 11, 2010

Thomas Bittman has a great post on succeeding and failing at cloud scale. Edison faced the same issue, and deliberately built a portfolio of customers with different usage profiles.

How Lieberman Got Amazon To Drop Wikileaks | TPMMuckraker

December 3, 2010

This story suggests that a senator was able to coerce Amazon Web Services into dropping a paying customer (Wikileaks), without any legal due process.

How Lieberman Got Amazon To Drop Wikileaks | TPMMuckraker.

Amazon refutes this, and claims that the decision was their own, because the customer violated the AWS terms of service.

From Amazon’s message, it seems like Wikileaks is in violation of the TOS:

It’s clear that WikiLeaks doesn’t own or otherwise control all the rights to this classified content. Further, it is not credible that the extraordinary volume of 250,000 classified documents that WikiLeaks is publishing could have been carefully redacted in such a way as to ensure that they weren’t putting innocent people in jeopardy. Human rights organizations have in fact written to WikiLeaks asking them to exercise caution and not release the names or identities of human rights defenders who might be persecuted by their governments.

The trouble is, Wikileaks has not actually been charged with or convicted of a crime, and the potential long-term effects of the leak are debatable, so these terms of service are fairly subjective.  The whole idea of Wikileaks is, of course, controversial.  The problem is that Amazon’s action feels like an activist action – like the Wikileaks service was suspended because Amazon doesn’t like them.

For those of us building a business based on the AWS Infrastructure as a Service model, this is very scary.  The one thing that we can count on with our own servers is that they don’t judge our content.  We don’t have to convince our disk drives that our cause is just, and our moral compass is intact.  Whether AWS responded to pressure from Joe Lieberman or acted on their own doesn’t really matter.  The message is that if AWS thinks you are up to something fishy, their policy is to drop your service first, and ask questions later.

When I am looking at a business plan, I worry about technology risk, market risk, and execution risk.  Normally, I would think that building a business on top of a cloud platform like AWS would dramatically reduce the execution risk, but now I have to worry about the risk that Amazon won’t like what I am doing.  Amazon has been leading the cloud computing charge, and has been saying every step of the way “don’t worry, you can trust us”.  I think banning Wikileaks was a giant step backwards in their credibility as a utility partner.



10 Cloud Predictions For 2011

November 17, 2010

10 Cloud Predictions For 2011.

My favorite: “You will build a private cloud, and it will fail”

This one goes to zero

October 6, 2010

“just because you can code something that doesn’t mean it’s a good idea.” Unless you are actually building the infrastructure (and to a large extent, even if you are), cloud computing is mostly about software.  And since this blog is about the business of cloud computing, that makes it about the business of software.  The whole article is a must-read, but Seth Godin provides a great reminder that the price of commodity software wants to be zero, so a cool idea is not enough for a business.