Absence of Specialists
Software project teams still seem to be made up of programmers and managers. Occasionally the lucky project will have an architect, maybe a database administrator, some analysts, and testers. Often the programmers are the ones doing the heavy lifting and the project manager organizes meetings and schedules. Wow, is that a lousy setup. Good programmers like to write code. This is always a full time job, so every thing else that doesn't have someone owning that piece is going to get short changed.
There are several jobs that need a lot of attention. Regression, Q&A, and unit testing need full time attention. Someone has to doggedly make sure manual tests and automated tests are actually created. Someone has to make sure that architectural specifications, comments (in code), requirements, use cases, and help documentation is created, updated, and maintained. It helps if an expert is designing your database-not programmers. Sure programmers are smart, sure programmers can do a pretty good job, but would you let a person who pumps gas work on your Ferrari engine? What about a Hyundai mechanic? Well, most software projects cost many times what a Ferrari costs, but we have programming specialists doing other things besides programming. Inn short, most projects are programmer heavy and specialist light. This might explain why many projects fail or don't deliver on customer expectations.
Progress on this front is being made too slowly. We need more specialists on a team rather than distracting code writers by making them do things in which they are rudimentally competent but not expert.What do you cherish? Suppose it breaks and needs repair? Would you hire a geenralist or a specialist? Which do you think will do the job more competently?

