Some Problems and Solutions in Software Development

Software development is a difficult task. Trying to develop high-quality software is a complex problem. In this weblog entry, a bunch of aspects – problems as well as solutions and best practices – will be displayed, motivated by several resources.

Five Common Problems in Software Development

In a quite lengthy FAQ there is a list of five common problems in software development:

poor requirements: One problem is interdisciplinary oroientation of key persons.

unrealistic schedule: Who makes the schedule? Could be that not the right (competent?) persons are involved.

inadequate testing: Use unit tests, no one can do integration tests until hell.

featuritis: Easy to follow as today’s technology offers sooo much and one would like to have it all.

Antipatterns

Antipatterns became popular with introduction of several books on this topic. Watch out the resources section to find out more.An antipattern is a structure that can be identified and leads to the conclusion that something went wrong, so to say.Here are some architectural and management antipatterns defined as follows, to make things more concrete:

Spaghetti Code

This Architectural Antipattern should be well known to most developers. The Spaghetti Code Antipattern is defined by the Synopsis “An ad hoc software structure makes it difficult to extend and optimize code.”

Mushroom Management

Mushroom Management is a Management Antipattern. It is defined as: “Mushroom management is when the project manager treats people the way we raise mushrooms — we keep them in the dark and feed them a steady diet of manure. The assumption is, ‘You do your little value-added work and you do yours, and I’ll pull all the strings together.’ What that really says is, ‘I don’t trust you as a group, and I certainly never bothered to develop you as a team.'”.

Golden Hammer

My favorite one besides Mushroom Management. Again a development antipattern. In the Antipattern Wiki defined as:“Problem: You need to choose a technology for your development.Context: You need to develop some new system or piece of software that doesn’t fit very well the technology that the development team are familiar with.Supposed Solution: Use the familiar technology anyway. The technology (or concept) is applied obsessively to many problems.Refactored Solution: Expanding the knowledge of developers through education, training, and book study groups exposes developers to new solutions.”