Size (and mobility) matters. As desktop PCs lose ground to tablets and smartphones, and the cloud becomes a more mainstream means for software deployment, desktop applications are being elbowed aside by mobile apps and Web services, resulting in a significant shift in the way software is created.
Software development organizations large and small are moving quickly to adopt new tools and new paradigms, adapting existing tool sets, talent pools, and processes to make the most of new computing environments and emerging opportunities.
Gone are the days of bits being passed from one isolated team to another in service of the one true build. Modern app development requires a nimble, cross-functional approach to rapid deployment.
Here's how several leading-edge development shops are meeting the challenges of this new frontier.
1. Mobile- and service-first development: Tomorrow's wave -- or at least today's
From the outside, the one development trend fast becoming evident to everyone -- end-user, customer, and developer alike -- is the emphasis on mobile-first development, along with all the complexity that entails.
"Apps are huge now," says Matt Powers, CTO of Applico, a developer of mobile and Web apps for a variety of big clients such as Google, Asics, AT&T, National Oceanic and Atmospheric Administration, and the Mayo Clinic. "They used to run locally off the device, so the infrastructure to support them was small. Now you have people bringing their entire brand, and everything they do on the website, if they have one, to mobile."
If that infrastructure is deployed as SaaS (software as a service), it requires development practices that are orders of magnitude more rigorous and complex than those used for deploying stand-alone apps.
Intuit, the creators of QuickBooks and GoPayment, learned this lesson when the company broadened its services to meet an international market of 1.3 million users -- covering 150 countries, 143 currencies, and 46 languages.
"We needed to scale the development from small teams of 10 to 15 engineers to a team of 70-plus engineers," explained Anshu Verma, architect at Intuit for QuickBooks Online. Engineers needed to develop faster overall, and thus adopted what he calls a "safety-first design pattern," which draws inspiration from how circuit breakers work. This design allows old and new workflows to co-exist -- an important feature for a Web service. "In case of exigencies, we fall back to the old [workflow] on-the-fly and cut over to the new [workflow] when we are confident about it. It really helped us move faster without impacting customers."
Intuit's own development cycle for new features is now a mere two to four weeks, which requires them to use Scrum processes and test automation. "We use tools like Jira, Greenhopper, and Rally to facilitate the iterations across all key stakeholders -- product management, development, QA, deployment -- and created testing frameworks using modern tools like WebDriver, PhantomJS, JSUnit, DOH [Dojo Objective Harness], JUnit, and so on."