Software development is one of the most complex areas of modern business, in which IT vendors, their partners and individual businesses make significant financial and resource investments. Being able to manufacture the tools that support successful software development requires a thorough understanding
of development teams’ needs and wishes. As manager of desktop products at IBM’s Rational Software unit, I spend much of my time meeting with developers, gathering information about their needs and learning what they need to help their businesses operate and compete effectively. Here are the top three things they wish for:
Wish No. 1: Reusable assets that reduce the “”reinvention of the wheel”” syndrome.
The concept of reuse – which provides architects and developers with a head start because they don’t have to create every aspect of a project from scratch – has been around for quite some time. And while software professionals have long endorsed the concept, in the past they had few tools that actually helped them apply it.
But today many players in the industry have begun designing software tools and systems that support this. These tools leverage patterns that teams repeat throughout the development process, which can then be used to increase a development team’s productivity. Architects and developers are the able to adapt these patterns for similar – but not necessarily identical – scenarios.
Reuse not only allows developers to work more quickly, it also decreases risk. Because a certain design has already been tested and used with other projects, there is far less concern that it will not work during testing and implementation. Companies can also save time in testing, documentation and support.
Wish No. 2: A better way to manage technology changes in an increasingly complex development environment.
Because of growing technical complexity, product proliferation and constant demands for application updates, software developers look for ways to simplify their work. Many are hoping that the big players in the software world will commit to driving standards in order to create a common way for developing software. To remain successful, businesses need to integrate the IT system they have today with the software and hardware they’ll build in the future. Without standards that support doing this, integration is next to impossible.
Many of the world’s largest software organizations, along with major industry consumers, are working together to define standards that will simplify software development. This includes standards efforts within organizations like the Object Management Group for Unified Modeling Language and Model Driven Architectures and W3C for XML, Web services and more, Eclipse for development tools and the Java Community Process for J2EE.
One of the most significant benefits from adopting standards is that they allow developers to put their energy and innovation skills toward projects that actually solve a business problem, as opposed to spending time tediously developing a project’s “plumbing”. The knowledge needed to create plumbing components, like application servers, is rarely part of the company’s core business and standard tooling allows developers to save time and avoid having to implement this type of infrastructure.
For example, in the early days of the Internet, many companies built their own Web application servers; now developers simplify development by using ready-made, standards-based solutions for everything from application serving to data access and security.
Standards also make it easier to integrate new members into development teams. If a company is developing software using standards it is much easier to find new IT staff that have already been trained on that company’s technology platform. Since new developers do not require extensive training to get up to speed, they’re able to contribute to a project as soon as they’re added to the development team.
Wish No. 3: Requirements that don’t change throughout the project life cycle.
Many developers say their biggest challenge is the lack of clarity regarding software system requirements. They wish they could collect requirements once at the beginning of a project, freeze them and proceed with coding. Should those requirements change, they wish they could be warned well in advance.
The problem is in the real world most people don’t know what they want until they have something to examine. Developers never know whether they have all the necessary requirements for the systems they’re about to build so they’re forced to make assumptions about what their clients, both internally or externally, want. The best way to address the problem of ever-changing requirements is to follow an iterative development process. This allows project managers to show clients a working product and validate features as the project proceeds. It helps ensure software quality even before real coding begins.
Iterative development also saves hassles and complications should the budget on a specific project change. Most organizations have many software projects underway at the same time and there is often competition for resources and skills. If other projects are assessed and found to be behind schedule, or priorities change (as a result of a merger for example), the resources that can be dedicated to a specific project may change. If the team has followed an iterative development process it is in a much better position to rescope the project to match the new budget and the new timeline.
Making Software Development Manageable
Even though development tool suppliers can’t fulfill every developer’s every wish, most software developers know that they can achieve project success by making the most of existing technologies. The most successful development teams operate in an integrated way, with each role on the team well understood and supported by a collaborative process. The more they take advantage of reusable assets to speed results and reduce risks, use standards to facilitate change, and use best practices to keep their projects in line with requirements, the more manageable their work will be.
Karen Hunt is with IBM’s Rational Software division.