Finally, I believe I understand what’s good about “enterprise software.”
Until now, I thought “enterprise” was a conventional justification for inferior, bloated, and massively costly software that hardly did what it was supposed to, and certainly in a way that took neither users nor best practices into account.
To me, “enterprise” meant the opposite of agile, high-quality, user-friendly, high-performance, innovative, and capable of being iteratively improved after launch. And I simply could not fathom why anyone with an ounce of common sense, animated by the desire to do good (as opposed to being Mordak or the BOFH), and equipped with a bit of relevant technical knowledge, would ever choose such solutions over the better alternatives.
Those better alternatives being SaaS, software built to order by actual human beings that happen to be good developers using agile and other modern approaches, or open-source packages brought together in a meaningful combination.
This all remains kind of true. (I want to assuage any concerns I might have become a convert, we’re not quite there yet.)
But such a choice does have some advantages (and that’s what I didn’t have an instinctive understanding of): scalability, long-term stability, and risk management.
Scalable isn’t so much in terms of numbers of people using the product simultaneously, nor quantity of data or transactions being handled (this may or may not be part of the package), but in terms of quantity (large) and quality (can be low) of resources that can be brought on board to the project, and how systematic that onboarding can be.
The enterprise approach relies heavily on planning and structures because the contributors aren’t asked to shoulder the overall purpose and understand all stakeholders, nor to commit to an elusive definition of abstract quality. On the contrary, the definition of quality for any member of a project, regardless of their role, can be fairly well understood by anyone, because it is defined, in simple terms, as part of the specifications.
This doesn’t sound very appealing to me, but in the practice, it means that the client or recipient of the product can trust the project structure to come to life in a rather short period of time, in many different places at the same time, independently of fundamentally unreliable factors such as buy-in, enthusiasm, or conceptual understanding and alignment.
The alternative is organic project growth, which is perhaps more satisfying, and definitely feels more cost-effective, but is slower and depends so much more on recruiting, retaining and maintaining the motivation of high-skill individuals.
Long-term stability comes from the fact that little if any knowledge is held exclusively in people’s heads. The emphasis on explicit documentation and measurable targets (unit tests, SLAs) ensures that various stakeholders can come in and out of the project without upsetting the overall structure.
With much of the “better” software, bit rot (the decay of functionality due to technical advances breaking compatibility, random infrastructure failures, and human mistakes, around systems that aren’t under active development) requires specific provisions, which are often considered onerous.
The enterprise approach has ready-made, well-known arrangements to handle long-term stability. For example, the concept of “legacy platforms” isn’t really about the old code itself, but the practices that have to be developed to keep it running in a changing environment.
Risk management is an interesting question. In the startup world, taking risks is part of the lore, and a daily occupation. However, risk-taking is a fairly specialized business, and larger corporate organizations have a limited taste for it, usually concentrated around the organization’s core business.
Functional development projects that fall outside of the organization’s core mission are very likely to get nixed, one way or another. Not conceived is the first level: nobody will think of them. Not formalized is next: for whatever reason, a person who had an idea doesn’t bother to actually capture it and shop it around for execution. The enterprise model can’t really do anything about either barrier.
But the next barrier is that a project will not get approved. The enterprise model contains very strong tools for describing (and actually increasing, at least on paper) the feasibility of an idea, which can ensure the idea is accepted by the organization. Project plans are very actionable for management, in that they only require a binary approval.
Then comes the possibility that a project will fail. In my opinion, failure isn’t necessarily a big problem — what’s most important to me is for the organization (and the individuals inside it) to learn from the process, and therefore get better at carrying out its purpose. However, project failure in large organizations curtails the ability of teams and individuals to pursue further projects (as failure is usually considered negatively…), and the enterprise approach, when done properly, all but removes the risk of failure. (The risk that a project was irrelevant in the first place — a huge cause of failure — isn’t really taken away, though.)
And finally another risk is the inability of an organization to sustain a project — the previous point about long-term stability is a strength of the enterprise model.
In summary, I still hate the enterprise approach, even if it works. It goes against my instincts, it perpetuates a dependency on swindle-as-software (SaS, as opposed to SaaS), and I remain unconvinced that the tradeoffs (much more expensive, and perhaps less satisfying for some of its practitioners, in exchange for the key benefits outlined above) are actually worth it in the bigger picture. But I now see how, in many instances that are common and legitimate in larger organizations, it can be a better choice, and often the only option actually available.
I still would like everyone (inside and outside IT organizations) to be enough of a software engineer to be able to tackle data, computing, and business-process problems in a leaner, more knowledgeable way, and I believe a higher tolerance for the more likely failure of smaller individual projects can actually lead to a stronger company — but that’s probably an unattainable ideal at the moment. To its credit, the enterprise approach lives in the reality of business.
Coca Cola’s Georgia coffee nasty “ambush” pop-up stunt
The other day, a colleague got back to the office with a flyer advertising a pop-up coffee store around the corner from our office, in a gentrified-fashionable part of Tokyo. It advertised free coffee. We needed to have a business conversation and headed over.
The requirement was made clear to us when we arrived that a post on Facebook or a tweet with the pop-up’s hashtag would be appreciated. Here, my limited knowledge of Japanese limited my understanding of the pitch, but it seemed to me we were asked to refer to the taste of the coffee (an interesting attempt at priming us to notice the great flavor waiting for us in the cup). I was a good boy and tweeted:
Now, to be honest, “sweet” was the nicest word I could come up with — I was actually disappointed and not very impressed with the coffee, but I was afraid of being the philistine and also didn’t want to sound ungrateful when the staff had been so nice and, after all, had given me free coffee.
Also, the environment was really, really nice: wood and bright lights, airy and sophisticated, in a fresh back street of Omote-Sando.
But neither of us really drank that fast, the coffee was just not very good.
When we left, we drained our cups and the staff then pointed out the words printed at the bottom, which informed us that we’d in fact been drinking canned coffee — this wasn’t brewed fresh, and was in fact Coca Cola’s Georgia brand coffee.
Don’t get me wrong: canned coffee can be pretty nice: I’m a huge fan of Kirin’s Fire brand, which feels reinforced with extra caffeine and will get my heart racing on the first couple of gulps.
However, this was pretty poor. The taste wasn’t very pleasant, and there was no bite to it.
Now, what to make of it?
This didn’t make me feel great. The slightly overwhelming service was beyond friendly, and they were very successful at ensuring that I spread the word on social channels. However, priming and context can’t fix a poor product, and I won’t either recommend it, or buy it myself.
Also, I feel I’ve been used a bit. The “gotcha” at the bottom of the cup (if I’d been able to read it myself, and explained to me verbally instead) was somewhat annoying and didn’t make me feel very good about the experience.
Overall, while I enjoy “ambush” marketing if another brand is the target of the ambush, I do not enjoy being tripped up myself.