Guest author Tyler Jewell is CEO of Codenvy, a cloud development environment.
Over the past decade, cloud computing has disrupted nearly every facet of IT. Sales, marketing, finance and support - all of these applications are being reengineered to take advantage of cloud's instant access, no download and pay-as-you-go attributes. According to Gartner, the cloud is changing the way applications are designed, tested and deployed, resulting in a significant shift in application development priorities. Cost is a major driver, but so are agility, flexibility and speed to deploy new applications. The firm estimates that 90% of large enterprises and government agencies will use some aspect of cloud computing by 2015.
The cloud has also begun to impact the tools and support solutions that drive IT. This includes performance management (New Relic), backup and recovery (Mozy), configuration management (Service Now), helpdesk (Zendesk), datacenter automation (Puppet Labs) and release management. The agility afforded by on-demand services is further penetrating the developer space.
We've seen cloud versions of middleware in the form of Platform-as-a-Service (PaaS), agile solutions (Rally Software), Code Versioning Systems (CVS) (GitHub), continuous integration (CloudBees) and system testing (Soasta). The more than 100 companies in these segments have cumulatively raised more than $500 million in capital.
Yet despite this transformation, there has been little disruption to the integrated development environment (IDE) world. The world's nearly 15 million developers, teams and organizations continue to use desktop IDEs as their workbench of choice. Why hasn’t the development environment moved to the cloud along with just about every other application?
What's Wrong With Desktop Development?
Desktop development environments are becoming outdated, failing more often and causing productivity issues for developers. Here's why:
Complicated configuration management: The substantial configuration management process for a developer's workspace turns developers into part-time system administrators, responsible for their own mini-data center running entirely on the desktop. This is time consuming, error prone and challenging to automate.
Many developers have multiple computers and are forced to repeat these tasks on each machine. There is no way to synchronize the configurations of components across different machines, and each machine requires similar hardware and operating systems to operate the components identically.
Decreased productivity: Many IDEs are memory and disk hogs, with significant boot times. They are so resource-hungry they can starve other applications, such as the Web browser. The net effect is a less productive developer due to a slower machine.
Limited accessibility: Desktop developer workspaces are not accessible via mobile devices. Developers who need remote access have to resort to complex and slow solutions such as GotoMyPC - if their firewall allows it.
Poor collaboration: These days, most developers work as part of a team, so communication and collaboration are critical. But desktop IDEs must outsource collaboration to communication systems outside the developer's workflow, forcing developers to continuously switch between developing within the IDE and communicating with their team via other means.
The Solution: Cloud Development
To solve these problems requires moving the entire development workspace into the cloud. The developer's environment is a combination of the IDE, the local build system, the local runtime (to test and debug the locally edited code), the connections between these components and the their dependencies with tools such as Continuous Integration or central services such as Web Services, specialized data stores, legacy applications or partner-provided services.
The cloud-based workspace is centralized, making it easy to share. Developers can invite others into their workspace to co-edit, co-build, or co-debug. Developers can communicate with one another in the workspace itself - changing the entire nature of pair programming, code reviews and classroom teaching. The cloud can offer improvements in system efficiency & density, giving each individual workspace a configurable slice of the available memory and compute resources.
Of course there is more work to do, and we are far from tapping into the endless possibilities the cloud computing offers developers. But the benefits are already clear.
Image courtesy of Shutterstock.