The image of today's programmer is of a solitary developer, a code cowboy, toiling away at odd hours with only a can of Jolt Cola and a cold, half-eaten pizza to keep him company.
But that picture is largely outdated--and not only because hardly anyone really drinks Jolt. Projecting software-development trends out three, five, or even more years, it's easy to see how the lone software developer will be an anachronism. Software systems are getting bigger, more complex, and more distributed--and so are the teams of programmers that build them. Assembling the programs of tomorrow will require more automated development tools and processes. And programmers disbursed around the world will increasingly rely on collaboration tools and techniques to get the job done.
"It used to be a developer could work alone. If developers worked on a team for a bigger project, they would meet. What you see is development becoming a team sport. That's where the productivity gains are going to be made in the next five years," says Bill Pataky, senior director of product operations at software-tools developer Borland Software Corp.
The next generation of software-development technology will be automated by necessity--business applications have become too complex to deal with any other way. The increasing automation of software development and the resulting boost in productivity are necessary to coordinate dispersed development teams and keep complicated IT projects on track, Pataky says.
Automation and visualization are a necessity for mainstream companies that aren't necessarily sophisticated users of IT, says Michael Blechar, research director in the app-development group at market researcher Gartner. "Although they're able to do simple kinds of Java and .Net things well, when it comes to the most complex stuff, they're failing miserably," he says. "Those companies are finding that the only way they can use less-sophisticated developers to build more-sophisticated Java and .Net applications is through the use of visualization and code automation."
All major vendors--IBM, Microsoft, Oracle, and Sun Microsystems--are moving in this direction, he says, working on next-generation visualization and automated code-generation tools to help less technically savvy customers.
At some point in the next three to five years, there may be a direct connection between a desired change in a business process and a tool's ability to produce that change in code. Major tool makers are thinking about how to provide developers with integrated tools that can model a business process and hand off the model for converting the process into code. IBM would like to go a step further and let a business user conceive of a business change, then have a software-modeling tool capture requirements out of the conceptual model and translate them into a design for a new system. Such a system is still years off, says Alan Brown, an IBM distinguished engineer.
Some say that when it comes to software development, automation is synonymous with ease of use. "Automation is sort of a loaded term," says Prashant Sridharan, senior product manager for enterprise tools in Microsoft's developer division. "It makes me think of factory floors and robots. We realized that software development is about a lot more than writing code. These days, it's very much about getting your teams to work better together and collaborate more efficiently. So we're building tools that are a reflection of that customer need."