Fascinating though it is, I’m happy to observe prison life from the outside through shows like Oz or Orange is the New Black. It’s the strange way prison mirrors the outside world that’s so compelling. They have police (gangs) and wars (gangs) and commerce (smuggling) and currency (cigarettes, stamps, etc.) just the same as the free world.
Desperate for a taste of home or the finer life in prison? You’ll have to smuggle it in or make it yourself. Unless you’re lucky enough to be a mafia don, you’re not going to have an entire restaurant in the prison for yourself. (Is anyone else hungry for pasta now?) You’ll have to manage it yourself by hook or by crook.
The Enterprise of Yesteryear
OK, now bear with me, because I’m going to claim enterprise software is like a prison. It hasn’t always been this way! In fact one would argue that enterprise software was once much more like, say, Downton Abbey. With access to the huge profits in large companies, enterprise programmers had the luxury to build products that no one else had, indeed that no one else could build. Long before ORMs were mainstream, enterprise software companies were building them into their products simply because they had to! At one of our clients, they once built entire UI libraries (buttons! windows!) because there were so few commercial options. In some ways, enterprise software programmers were living in the gilded house on the hill. Maybe a bit unwise to the ways of the world, but clearly living in a life of luxury most of us couldn’t afford.
Oh, how times have changed. Just as poor Ms. Patmore the cook has to learn to live in peace with an electric blender, and the village station won’t hold the train anymore for Lord Grantham, enterprise software programmers have to live in a new world that is moving faster than their enterprises are. There are lots of reasons — some quite sensible, some less so — that enterprises adopt technology more slowly than the outside world.
One of the best reasons, but also the greatest hindrance, is the Great Enterprise Firewall. Not just a network firewall, but the notion that all enterprise data must be held internally on enterprise-provisioned servers. Lists of users, financial models, geologic hypotheses, business plans, everything. There are damned good reasons companies insist on this. Corporate espionage and international hacking are real threats, posing not just financial but reputational and even existential risks to companies. But it’s worth looking for a few moments at this policy not as a Downton-like estate and butler, protecting you from the cruel everyday world, but instead like prison walls, keeping you from the finer things in life.
In prison if you want a weapon, you have to make it yourself with marbles and a sock, or a pen and a razor blade. In the free world, you can just order it online. Well, it goes the same way with core services needed by all developers: continuous integration, authentication, log analysis, source control, and any number of other things. In the enterprise of yore, you’d build your own, or painstakingly get a local copy provisioned on a server and run and maintain it yourself. You might have a couple of full time people just doing that!
But in the free world, if you want easy authentication and custom user data managing both proprietary username/password lists and social logins, you just dial up auth0, swipe a credit card, and never think about it again. They give you a pre-programmed HTML widget that logs on users, integrates with Google, LinkedIn, and everyone else you can think of. Their workflow implements e-mail verification, password resets, and account merging. Their admin site gives you reports on user locations, failed logins, usage patterns and much more to boot. You can even store custom user data as JSON inside their database via their API. They’ve got user support, redundant servers and are happy to take on as much load as you can give them. The cost for a typical enterprise app with a few hundred or thousand users? A rounding error. Less than it would cost the enterprise to pay you to think about which provider or open source package you should use, never mind build everything they’ve already got.
But in the free world, if you want error reporting that automatically alerts programmers when shit hits the fan, you just dial up raygun, swipe a credit card, and never think about it again. Throw a few lines of code inside your web, mobile, or desktop app, whether it’s written in .NET, Ruby, NodeJS, ObjectiveC or even (speaking of the 20th Century) Perl, and exceptions are automatically sent to the raygun servers, categorized, sliced, diced and preserved. Get enough of the same exception, raygun will figure out they’re related and let you resolve or pause the notifications your’e getting. You can get texted, emailed, tweeted, or (speaking of the 20th Century) paged. You get detailed analytics right out of the box. They’ve got user support, redundant server and are happy to to take on as much load as you give them. The cost for a typical enterprise app with a few hundred or thousand users? Sorry, yes, I’m repeating myself. Suffice to say, less than the monthly cost of team-building lunches to repair your programming team’s morale when they discover what’s available outside their prison walls.
Would the inmates take over the penitentiary if they discovered continuous build and integration services like AppVeyor? I imagine they might, especially if they’d been eating prison food using TFS. For a Windows enterprise programmer, AppVeyor is like magic. You just give them your repository (via GitHub, natch, if you can) and they compile it, run all the tests, and even deploy it. It shocked me the first time I tried it — they just figured it out and Did the Right Thing. How long does your enterprise build guy spending futzing with scripts and reports? How much more could she get done if the basic patterns just worked out of the box and she could work on the more complicated things your product attempts? Scott Hanselman is a believer.
Applications that start in the cloud have immediate access to these amazing products for mere pennies. Applications that start in the enterprise don’t. It’s a crippling productivity penalty and one I hope enterprises start figuring out. The usual objection is security.
Back to the prison metaphor: these service-as-a-service companies have started to smuggle their goods into the enterprise. Many of them offer a service whereby you install a demon inside the firewall that spirits just the right data out into the SaaS provider’s app to make it work. For instance auth0 can sync your Active Directory records into their cloud and authenticate users that way, letting you use their login widget and wonderful reports again. Some offer a product that your admins can install internally, like GitHub. This is not quite optimal, as then you still have provisioning, maintenance and support to deal with, but it’s better than nothing.
The world is changing. The gilded house of enterprise software is quickly becoming a prison. If you’re an enterprise software developer, think about how you might stage a prison break, or at the least,