Hello Logout
 

Projects

software engineering

 

Steve McConnell’s Ten Most Important Ideas in Software Engineering

The highlight of the Construx’s Executive Seattle Summit was the opening keynote presentation by Steve McConnell, founder of the firm, and author of a number of excellent books on software engineering. Steve’s talk was titled “The Ten Most Important Ideas in Software Engineering”; he emphasized that these are not new ideas, but ideas that are being “rediscovered” from other engineering disciplines, or simply ideas that have been discussed widely but not practiced widely. Here is Steve’s list:
1. Software development is performed by human beings. This notion was first popularized by Gerald Weinberg in 1971, with a book entitled The Psychology of Computer Programming (the silver anniversary edition of the book was republished in 1998). McConnell noted that estimating models like COCOMO-II demonstrate the significant cost/effort multipliers associated with having talented, experienced personnel on a project. He also suggests that we can draw three conclusions from this point: (a) the success of companies like Google, Yahoo, [Bell Labs, IBM] and Microsoft is not accidental, and is partially due to their emphasis on hiring talented people; (b) recruiting talented staff members is easily cost-justified; and (c) spending money on employee retention programs is cost-justified.
2. Incrementalism is essential. Steve distinguishes between “incremental” and “iterative” development; by “incrementalism,” he refers to the idea of developing a little bit at a time, in contrast to the big-bang software development approach. [Instrumentalism is fundamental to agile processes.]
3. Iteration is essential. This is a familiar concept, but Steve warned us to avoid accepting the all-or-nothing extremes of iteration. You don’t have to accept the “keep iterating forever” extreme, nor do you have to accept the “no iterations are allowed” waterfall approach.
4. The cost to increase a defect increases over time, throughout the development life cycle. This is a concept that has been widely accepted for the past 25 years, and McConnell says he has revalidated its truth with data as recent as 2004, including XP/agile projects. I was somewhat surprised by this, because a common argument from the XP/agile enthusiasts is that modern tools have made the old concept irrelevant — i.e., the XP/agile people argue that it doesn’t cost much to fix a requirements defect later in the development process, because modern IDE tools make it easy to redevelop software. McConnell obviously disagrees with this point, and I’ll have to look into it further before I make up my own mind. [Cost of a fix 1:3:10:: development: test teams: field]
5. There is an important kernel of truth in the waterfall model of development. McConnell suggests that the primary activities of software development are discovery (of what the requirements [and specifications] really are), invention [or architecture] (of a solution), and construction (i.e., implementation of that invented solution). And he argues that while these activities can overlap and take place somewhat concurrently, there is an intrinsically sequential nature to the activities.
6. The accuracy of estimates (about the schedule, effort, and cost) for a project increases over time throughout the development of a software system. There is a great deal of uncertainty in the initial estimates that we create at the beginning of a project. The “cone of uncertainty,” as McConnell calls it, does not narrow by itself, it must be actively managed. As a result, McConnell concludes that iteration must be iterative, project planning must be incremental, and that estimates aren’t meaningful unless they contain a description of their uncertainty. [Estimation must be redone at the end of every cycle of the product realization process and after each increment or release.]
7. The most powerful form of reuse is reuse of everything — not just code. We’ve long known that we should be reusing designs, plans, checklists, role, etc; and McConnell reminds us that we should be reusing processes for developing [and building, controlling, configuration management] systems. Indeed, that’s what SEI-CMM level 3 is all about.
8. Risk management provides important insights into software development. McConnell notes that most projects spend more than 50% of their effort on unplanned work, and that the role of risk management is to reduce unplanned work. [Action items come from risk analysis and are aimed at risk mitigation. Risk efforts should not consume more than 5% of project resources to avoid the “paralysis by analysis” syndrome.]
9. Different kinds of software calls for different kinds of software development approaches. The “one size fits all” approach to software development methodologies is just plain silly. [Even within a project each subsystem may require different approaches. A first cut decomposition for most systems is the application subsystem, the administration and configuration subsystem, the error recovery subsystem and the platform or middleware software.]
10. The Software Engineering Body of Knowledge (SWEBOK) is an important asset for software developers. SWEBOK has detailed information about 10 different areas of software development, including the familiar ones of analysis, design, construction, and testing. McConnell notes that it can be used for curriculum development, career development, certification, interviewing, and building a technical skills inventory.
I prefer:
[10. Teaming with a customer rather than contracting for a job doubles productivity.]
[11. Competent, software skilled and experienced managers make the best project managers. Managers should be appointed project managers for small, then medium and only then large projects. Small projects are those with about 10 people and last for about 12 months. Medium sized projects are those with 25 to 50 people and last 9 - 18 months. Large projects are the rest and are very demanding. A software project managers can manage one risky project and makes the engineering trade-offs between cost, schedule, staffing, performance, green computing and the other “iltities.”]



Tags :
3.666665
Your rating: None Average: 3.7 (3 votes)