enfrdeitptrues

  Application Development Sucks

 

 

 

 

Application developers work as part of development teams at corporations or form the backbone of independent software vendors (ISVs) – whether established firms or new start-ups. Each developer group will have its own challenges. However, some of the challenges they will face are the same.

This whitepaper will explore:

    • What challenges do application developers face – or, why does application development suck?
    • How does PaaS help application developers – or, how does PaaS make application development suck a lot less?

Introduction

The tech world abounds with tales of innovative applications that have become multi-billion-dollar success stories: those applications have enhanced our lives, enraptured audiences, or made genuine contributions to improving communications and/ or business operations.

But for every success story there are vast numbers of failures: the ‘nearly made its’, the ‘failed because we didn’t get the investors’, the unfinished labours of love. One reason for failure is ‘technology risk’ – simply, the ability to complete the product and have it shipped.

Application developers need both skills and entrepreneurial talent. Whether a startup ISV, an existing software vendor, or an established business creating an internal solution to a business problem, there is a great deal of risk and upfront cost involved in application development. The application needs to deliver the features agreed, within the determined budget, to the targeted marketplace, with a high level of quality and on time.

Once the application has been successfully launched, the developers must then maintain a team of experts able to support and maintain the application and the platform it runs on, to undertake further development for customers, including fixing bugs in production, improving the product, staying abreast of new technologies and incorporating them into the product where appropriate.

 

giphy

 

What is it about application development that sucks?

So what is it exactly about application development that presents the biggest challenge to application developers, whether start-up ISVs, established ISVs or in-house teams?

In 2010, Mike Gilpin at Forrester Research argued that the ‘new success imperatives’ for application development are:

1. Manage projects, programs, applications, and portfolios to meet delivery commitments

2.   Choose and deliver applications, technology, and architecture to support the business strategy

3.   Bring a product- or service-centric focus to software development and delivery

4.   Improve the quality (including user experience, security, and performance) of application services

5.   Manage people, skills, sourcing, and organization to sustain an innovative global workforce

6.   Drive innovation in application delivery practices and business outcomes.

At the heart of the problem is the contradictory forces of building a great application that answers a real business need and the pressures to optimize delivery times and ensure a fast time to market.

As Gilpin states: “Delivery focus is the yin to the yang of product centricity. That’s not to say that product-centric teams don’t care about delivery, but delivering on-time, on budget, with a competitive value/cost profile, is what keeps the app dev leaders who deliver non-core applications ‘up at night’.”

Over the years, application development has tried to answer these contradictory pulls with various approaches, for example:

    • SDLC
    • ‘Critical Chain’ project management
    • Agile
    • Waterfall
    • DevOps
    • Lean

These methodologies propose various tools and philosophies about how to manage the contradictory forces of product quality vs. speed of delivery. However, in the real world, whatever approach they favor, application developers still feel the pressure of having to decide which to compromise – product quality or delivery times.

Since 2010, the IT landscape has changed dramatically with the rapid evolution in mobile and cloud technologies. This has brought an even greater pressure on application developers to rapidly develop solutions which address the requirements of the changing platforms and infrastructure and evolving customer demands.

In his 2014 report, ‘Application Delivery in the Modern Age’, Forrester’s Kurt Bittner argues that:

“Rapid evolution in cloud and mobile applications and the permeation of social media throughout the developer community have led to a new approach in the way that organizations deliver business value through software. Consumer demands for innovative solutions, new digital business models, and a changing developer demographic combine to change the way that firms build, deploy, and maintain applications.”

This greater pressure means that, sooner or later, the application developers’ concerns will typically spawn the type of complaints illustrated in the figure below.

 

The challenges can broadly be characterized thus:

    • Risk
    • Repetitive work
    • Pressure to optimize development time and time to market.
    • Requirement for a multi-disciplinary team of specialists
    • Fluctuating demands of the development lifecycle
    • Support for collaboration and team working
    • Policing clean coding
    • Ensuring application quality; optimizing results.
    • Rapidly fixing bugs and issues
    • Upgrading customers without high overhead
    • Staying current with new technologies

 

How does PaaS address these challenges?

In our earlier whitepaper we referred to Gartner’s definition of a PaaS system: “a broad collection of application infrastructure (middleware) services (including application platform, integration, and business process management and database services).” We also noted that, traditionally, many PaaS solutions have been focused mainly on application PaaS (something Gartner dubs ‘aPaaS’). In this context, PaaS is a set of services aimed at developers that helps them develop and test apps without having to worry about the underlying infrastructure.

By providing a secure, reliable and highly-functional platform on which developers can build, test and even run their applications, a good PaaS should help application developers address all of the key challenges we have identified above.

The PaaS’s most important contribution, however, is to relieve the tension between rapid time to market and product quality.

How does a PaaS system balance time and quality?

PaaS systems try to alleviate the tension between ensuring a rapid time to market and not compromising on the quality of work of the application.

PaaS features

Does it speed development/ time to market?

Does it improve application quality?

‘pay as you go’ pricing model

 

Speed and ease of deployment

 

Minimal involvement with underlying infrastructure

 

Collaboration tools

Interoperability

Reduction of environment-related bugs

Built-in user security and authentication

Preconfigured components

Preconfigured tools

Database integration

Responsibility for ongoing maintenance and security of platform transferred to PaaS provider

Large chunks of code already tested and in production

Fewer code defects

Consistency of platform between testing and production environments is guaranteed

Simplification of fixes – fix once, improve for all customers

Customer upgrades easily achieved

Scalability and elasticity

Easier to manage the fluctuating demand of the development lifecycle

Access to otherwise-unaffordable technologies

 

Simple to incorporate new technologies across the entire App

Automates routine tasks – freeing up time for developers to spend on developing the application

Figure: Features of PaaS solutions and impact on development time and quality

Let’s explore each one of these features in more detail.

  1. Pricing Model

Application development is a risky business, particularly for start-up ISVs, where there is no guarantee of financial reward and, possibly, minimal investment funds. With no large up-front costs, and a ‘pay as you go’ approach, PaaS removes much of the financial risk from application development.

This cloud model is most attractive for businesses with fluctuating demand or where capex investment is difficult. It offers a model which supports entrepreneurial adventure and business start-ups.

  1. Speed and ease of deployment

One of the key advantages of the cloud model is the speed and ease of deployment. This is of particular advantage to start-up ISVs where resources, capital and suitable premises might be in short supply because PaaS removes the need to purchase, install and configure hardware and middleware, or secure suitable premises for hosting it.

The ability to commission compute resources on-demand offers significant savings (in both terms of effort and costs) for any application developer, while also offering greater flexibility.

It is ideal for proof of concept work – enabling teams to rapidly deploy, test and prove a concept in order to secure funding for further or large-scale development work.

  1. Minimal involvement with underlying infrastructure

PaaS offers an environment in which to create, host and deploy applications without having to setup, configure or manage infrastructure elements such as servers and databases. This takes away a whole host of mundane tasks and frees developers to concentrate on their core work of application development rather than underlying infrastructure.

  1. Collaboration tools

Cloud solutions enable users to ‘work anywhere’. As a result, building applications in a cloud environment offers improved opportunities for collaboration and this offers significant advantages for global development teams. Teams gain access to commoditized, sharable, standard services. Improving flexible collaborative working across sites and users is equally useful for both multi-national organisations wishing to share knowledge throughout the organisation and build global teams, and small start-up ISVs who want to utilize cost-effective resources in a global supply market but would otherwise would not have the means to do so effectively and securely.

  1. Interoperability

The PaaS system will already be tested and compatible with:

    • Most browsers
    • Most mobile devices
    • Most form factors

Good PaaS systems also incorporate an Application Program Interface (API) that can interact with other applications for access, authentication, data exchange and process execution.

Excellent PaaS systems may even provide pre-built connectivity to existing applications. These can include authenticating mechanisms such as LDAP, Active Directory, OAUTH, etc, but they can also include business applications such as existing Accounting and CRM systems in the marketplace.

This interoperability has the additional benefit of expanding the market for the application being built.

  1. Reduction of environment-related bugs

Having already been tested for a variety of environments, developers can be assured of a smoother transition into production when environment-related bugs are often identified. Because the PaaS system will already have been tested and operational with a wide variety of environments, developers won’t experience the same spike in bug reporting and fixing following a go-live or the launch of additional functionality.

  1. Built-in user security and authentication

PaaS tends to have user-security built in, as well as authentication. Application developers can select pre-configured administrative tools which provide core security functions such as single sign on, user authentication, and role-based security without the need to program complex security code.

  1. Preconfigured components

PaaS will usually offer some preconfigured components considered useful in building the application. For example, necessary tables and code segments might exist for countries, zip codes, currency codes, and even major data objects like customers or products. Preconfigured components such as these reduce repetitive work and mean developers fix once rather than thousands of times.

  1. Application development tools

The PaaS system will offer tools for key application development tasks. These will typically include report designer, workflow and dashboard tools, as shown in the list below.

These tools allow the application to be bundled into far more robust offering. It could potentially provide competitive advantage, increase the market opportunities and increase unit pricing/revenue.

  1. Database integration

PaaS removes many mundane core tasks, thereby reducing the time and cost of development and testing, while also improving the quality of the final output. Database integration is another example of this. The pressure to maintain a team of multi-disciplinary specialists is also reduced. To produce a comparable application you may need DBAs, mobile experts, integration experts for various systems, API experts, security expertise, etc.

  1. Responsibility for ongoing maintenance and security of platform transferred to PaaS developer

Not only are mundane tasks taken away from the development team, freeing them to concentrate on developing core functionality and UI, the platform is provided with guaranteed levels of service. Furthermore, by choosing to host the application on PaaS, the development team can ensure high availability for its customers with minimal effort, without the need for a standing team of experts to support the platform, and with minimal financial outlay.

  1. Large chunks of code already tested and in production

PaaS reduces the time and resources required for testing since large chunks of critical code are already tested and in production. Not only does this offer advantages in terms of reducing development lead times, and ensuring product quality, it offers real cost savings. First in terms of development resource, second in terms of testing resource, third in terms of infrastructure. This is good news for all application developers, of course, but especially start-up ISVs for whom the requirement for large multi-disciplinary teams can be particularly onerous.

  1. Fewer code defects

We can already see the impact in terms of product quality. In 1997, Steve McConnell estimated that a typical application has a ‘defect density’ of 7 bugs per 1,000 lines of code. In its annual report on code defects, Coverity set the average at less than 1 bug per 1,000 lines of code in 2012.

Modern testing tools, project management and coding principles have played their part in this improvement, of course, but PaaS offers powerful opportunities to reduce code defect rates still further.

  1. Consistency of platform between testing and production environments is guaranteed

Maintaining consistency between testing and production environments (and paying for standing testing resources even when they are not being used) can be an unnecessary headache and expense for development teams. With PaaS, testing and development teams are using the same platform, maintained by the PaaS provider.

Plus, as we’ve seen, the need for testing is already reduced.

  1. Simplification of fixes – fix once, improve for all customers

Application maintenance is also improved. By hosting the application on the PaaS and selling it as SaaS, the developers can streamline bug fixing. If a fix is required, a PaaS solution enables developers to push it out to all application users. This is done simply and quickly and benefits the developer and the customer through improved product quality and customer experience and by improved maintenance of version control.

  1. Customer upgrades easily achieved

In the same way, PaaS facilitates customer upgrades, by enabling them to be easily achieved in a single process, pushing out the new version to customers. This removes the need to manage licences and upgrades across a wide variety of customers and their various clients, chase the relevant payments and manage version control, thereby enabling the application developer to devote less time and resources for customer-facing responsibilities and to streamline sales, customer service and finance processes.

  1. Scalability and elasticity

A much vaunted benefit of the cloud, the scalability and the flexibility offered by rapid provisioning (elasticity) is ideal for application development teams. Whether responding to fluctuations in funding or the development lifecycle, resources can be aligned to requirements without financial penalty.

  1. Easier to manage the fluctuating demand of the development lifecycle

As we’ve already seen, the elasticity of PaaS makes it perfect for managing the peaks and troughs of the development lifecycle. It’s far easier to ramp up capacity during peaks in the development lifecycle and minimizes overheads during the lulls.

  1. Access to otherwise-unaffordable technologies

Not only does cloud computing enable the rapid deployment of IT infrastructure, middleware and applications, because users are not shouldering the capex costs they have far greater freedom to select the tools they would like to work with – even those which would otherwise be subject to operational or budgetary constraints.

We’ve seen this with SaaS, where small and medium sized businesses have suddenly gained access to the same applications used in large corporate organisations. PaaS and IaaS offer a similar opportunity to level for playing field for application developers.

Rapid provisioning and less financial tie-in free developers to experiment and try out different platforms and tools and, in this way, support innovation.

  1. Simple to incorporate new technologies

PaaS also aids innovation by making it easier to incorporate new technologies across the application. The PaaS supplier may provide preconfigured and pretested tools and components in order to incorporate these new and emerging technologies. This speeds development and can be a source of competitive advantage for the application developer.

Importantly, the developers also have access to the expertise within the PaaS supplier’s organisation, which will be able to offer new ideas and advice about emerging technologies. This expertise may well feed into the development team’s own application roadmap.

  1. Automates routine tasks – freeing up time for developers to spend on developing the application

We know PaaS effectively ‘black boxes’ the runtime, middleware, OS, virtualization, servers, storage and networking. Developers can thus focus on the business requirements of a project – speeding up delivery times and improving software quality through the use of proven tools and components. This is a huge opportunity for innovation which can only improve application quality.

Or as Jérémy Hérault, an early PaaS adopter puts it: with PaaS, developers can spend “100% of the time on development.”

The benefits of PaaS for application developers

The advantages of PaaS for the application developer, then, are numerous. And certainly, we can see that it offers relief from the constant tension between development time and application quality by offering the potential to improve both.

At least, until PaaS-powered development times and application quality become the ‘new normal’.

The real headline, however, is the fact that PaaS helps developers to reduce development times and underwrites application quality AT THE SAME TIME as reducing the cost of development and financial risk.

These four benefits make PaaS something of a holy grail for application developers:

    • Reduced risk
    • Reduced cost
    • A better quality product

 

Which PaaS?

There are, of course, multiple types of developers, whether an internal team, an established ISV or a start-up ISV, all working with different languages and frameworks. A ‘one size fits all’ attitude to platform selection won’t work.

 

 

The challenge for CIOs and ISVs is to select a PaaS supplier that best meets the needs of its developers: a platform that delivers all these tools and benefits.

Author:

Gopi Mattel. Founder & CEO, MaxBlox, Inc. CellarStone, Inc. www.maxblox.com , www.cellarstone.com, www.easy-commission.com.

References:

“Gauging Software Readiness With Defect Tracking”, Steve McConnell, IEEE Software, IEEE Best Practices Vol. 14, No. 3, May/June 1997

http://www.stevemcconnell.com/ieeesoftware/bp09.htm

http://venturebeat.com/2013/05/09/450-million-lines-of-code-say-large-open-source-and-small-closed-source-software-projects-are-worst-quality/