SANTA CLARA, CALIFORNIA (03/16/2004) - Fears that offshore developers will take jobs away from American counterparts are being overblown, charged a keynote speaker and noted author at the Software Development Conference & Expo West 2004 event here in Santa Clara, California, on Monday.
Responding to an audience member's question, Steve McConnell, chief software engineer at Construx Software Builders Inc. and author of the book, "Code Complete," said the need for software development is still growing. While acknowledging that some may see him as Nero fiddling while Rome burns, McConnell, said, "I'm not all that concerned about offshoring.".
Even if 100 percent of Indian development resources were focused on the U.S. demand, there still is a labor shortage for developer skills, he said.
The years 1999 and 2000 saw a spike in demand related to the Y2K and technology boom periods, he said. Yet while both phenomena went away simultaneously, the result did not produce a 15 percent unemployment rate, McConnell said. This, he said, "is suggestive of just how strong the demand for technical skills really is."
The repercussions of offshore development will be felt more at the executive level 'because a lot of the initiatives I've seen are really very naïve," McConnell said.
"I think the hens will definitely come (home) to roost," he said.
"There are a lot of excellent companies offshore, but there are a lot of bad companies offshore, too," McConnell said. And excellent companies do not always do excellent work, he added.
McConnell said he expects to see higher skill level projects such as software architectural work, requirements development, and critical components development still performed domestically.
In his presentation McConnell covered what he called the 10 realities of modern software construction, advances in development, and the worst software construction ideas of the 1990s and the 2000 decade.
The 10 realities include:
-- Construction is a legitimate topic. Phases, such as problem definition and unit testing, do not need to be done in a linear fashion, however.
-- Individual variations in software will continue to be significant. It is worth it to help the worst or average programmers get on par with the best programmers.
-- Personal discipline continues to matter, in areas such as re-factoring and prototyping.
-- Focusing on simplicity tends to work better than a focusing on complexity.
-- The defect cost increase is alive. Defects are more costly to fix than requirements defects.
-- Design is important. But extremes, in which either all design or no design at all is done up front, are generally unproductive.
-- Technology waves affect construction practices.
-- Incremental approaches work best.
-- The toolbox metaphor continues to be illuminating, with tools such as checklists and templates still in use.
-- Software is characterized by a set of essential tensions, such as making plans rigid or improvising more.
Listing advances of the past decade, McConnell cited the raising of the level of design, doing daily "build and smoke" tests to minimize integration problems, the use of standard libraries and Visual Basic. He also mentioned open source software, the Web, the widespread use of incremental development practices, test-first development, re-factoring as a discipline, and the development of faster computers.
"I see (Visual Basic) as one of the significant advances of the last 10 years," said McConnell. Visual Basic boosted the visual programming metaphor, he said.
"Java, I think unfortunately, carries forward the same switch case break structure that C++ uses," McConnell said. The concept refers to the design of a particular programming structure for case statements.
Open source is a great aid to developers, making available high-quality software and reducing barriers to software availability, he said.
Contemplating the worst ideas in software construction in the 1990s, McConnell listed: Designing for speculative requirements, doing all design up front, the notion that components will solve all problems, and automatic programming to create programmers through the use of tools. Other ideas included uninformed use of the waterfall programming model and calling everything object-oriented.
For the 2000 decade, the worst ideas include: Doing no design up front, planning to re-factor later, using offshore outsourcing to solve problems, uninformed use of "Extreme" programming, and again, automatic programming.