Opinari

Up to now, building custom enterprise applications for
in-house use was much the same as building packaged applications that were sold
to enterprises. Whether a developer worked for an insurance company or an
independent software vendor (ISV), her skills could be similar. Moving
between the two often didn’t require much retraining.

Increasingly, though, that’s no longer true. Developers who
work for ISVs now need different skills than developers who create custom
applications for enterprise users. And the change is caused by cloud computing.

In the pre-cloud era, applications built by both enterprises
and ISVs were designed to serve users at a single organization, either the
enterprise itself or a customer of the ISV. Accordingly, those applications
were built to be moderately scalable and to run on servers inside
the organization’s datacenter.

For enterprise developers, the rise of the public cloud doesn’t fundamentally change
this. True, custom applications used by the organization's employees might run their server
logic on a public cloud platform, such as Windows Azure or Amazon Web Services,
but the target user population remains the same. Because of this, the
application’s scalability and reliability requirements are also the same.

For ISVs, however, cloud computing has given rise to
Software as a Service (SaaS). A SaaS application serves users at many customer organizations
from a centralized instance of the software, which means it must be much more
scalable than a traditional enterprise application. Since it serves so many users, the
application must also be more reliable—a failure affects everybody, not just
the users at a single customer. And handling many customers means that the
application must be multi-tenant, able to separate data and more for all of the
organizations that use it.

Building this kind of scalable, reliable, multi-tenant
application is significantly more challenging than building traditional
single-tenant software. As a result, enterprise
software developers won’t typically create applications like this. Why waste
the effort? But the ISV world is shifting rapidly to SaaS, which means that ISV
developers do need to face this challenge. The result is that enterprise developers
and ISV developers need different skill sets today because they need to build different
kinds of applications.

As technologies get more diverse, the people who work with
those technologies must get more specialized. The split
between enterprise and ISV developers, rooted in the rise of SaaS, is just one
more example of this general principle.

David, I have a question for you. In this post you assumed that SaaS has to be multi-tenent, why? Additionally, I think the skills gap can be bridged until true cloud PaaS standard is established, thru the use of IaaS+ Application Server with Application VM? What do you think? Really appreciate your insight.

You're right: SaaS doesn't necessarily have to be multi-tenant. It usually is, though, which is why I see this as a common distinction between ISV and enterprise apps going forward.

To me, an app server in a VM isn't enough to paper over the differences between a SaaS app and an enterprise app. The differences are just too great. And the arrival of a true cloud PaaS standard is at best years away. A more likely outcome is that no such standard every really takes hold, leaving a fragmented world where a few PaaS platforms from different vendors each have some degree of success.