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.
[ InfoWorld salutes the dev-olution of 19 generations of computer programmers. | Learn how to work smarter, not harder with InfoWorld's roundup of all the tips and trends programmers need to know in the Developers' Survival Guide. Download the PDF today! | Keep up with the latest developer news with InfoWorld's Developer World newsletter. ]
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."
On the other hand, changing practices for the sake of going mobile doesn't make much sense unless it's backed with sound business strategy. Such is Joel Semeniuk's belief; he has been a project manager for more than 20 years and is now executive vice president of agile project management at Telerik, which creates a broad palette of software testing tools and UI components for .Net.