Several common themes have emerged from discussions with a broad array of enterprise developers. In this post, I’ll share some of what I’ve been hearing. I would love to get your feedback.
1) Cloud Apps are Hard to Get Right – While abstraction of infrastructure has helped agility and application management, it doesn’t make it easier to write sophisticated distributed applications. In fact, as developers lose visibility into the infrastructure, services such as high availability, elasticity and multi-tenancy become the application’s responsibility. Most of the customers I work with have world-class developer talent but very few people in these organizations have experience building these next-generation style applications, and most projects are too strapped for time to build things like multi-tenancy properly..
2) Choice is Great, Choice is Confusing – Now more than ever, developers have a myriad of options when choosing application services and components. Gone are the days when they would simply and by default use the enterprise standard app server, web server and database. This is a good thing. The added flexibility has opened the door to unlock business value that previously would have been too costly or complicated to attain. It can be challenging, however, to map the technical options to use cases in an optimal way and find time to get the right training. For example, if you decide that a traditional relational database isn’t the best fit for your application, navigating the NoSQL database landscape alone can be overwhelming. Within the enterprise, there is the added question of “what am I even allowed to use?”
3) Bureaucracy is Killing Agility – Technology is always easier to change than culture. Developers feel like they are coding with one hand tied behind their back due to a burdensome and ultra-conservative operational model. They are generally pessimistic about being able to adopt new tools and technology to their fullest extent out of fear that the benefits will be watered down or even eliminated by the time the “IT Police” get their hands on it.
4) Sharing is Valuable, Risky and Hard – Whether at the application or infrastructure level, developers like to control their own destiny. It’s undeniable that a more collaborative developer ecosystem within the enterprise would pay huge dividends but that’s a CIO level goal. Individual developers see risk in sharing infrastructure and services because goals across organizations are not always aligned. If they take a dependency on a service within another group, how can they be sure that it will be available, scalable, maintained, remain compatible and survive inevitable re-orgs? The result is lots of duplicated effort and inconsistent experiences for business users.
5) Too Much Firefighting – Developers spend too much of their time isolating, identifying and assigning responsibility to application issues. When something goes wrong, the first question normally asked is “what changed?” and finding the answer is almost always non-trivial despite a multitude of monitoring and auditing tools across networking, storage, application services, platforms etc.
These are big challenges and most are not new. In a world where end users expect “consumer-style” experiences including rapid iteration and anywhere access, enterprises are being driven to come up with innovative and practical solutions both short and long term. For those of us building PaaS solutions, it’s also what gets us so excited about the technology’s game-changing potential.