solid software header

What Works

What Works

Swiss engineering precision

Proven techniques in software development:

  • Requirements with Use Cases and Domain Modeling
  • Iterative development
  • Object-oriented analysis, design, and implementation, plus design patterns
  • Architecture and design with a strong focus on structure, i.e. low coupling, separation of concerns, layering.
  • High flow of communication within the development team (co-location)
  • Visualizing software structure (UML)
  • Daily builds
  • Unit tests
  • Static code analysis
  • Design and code reviews
  • Hire the best. Software engineers' performances vary immensly.
  • Usability testing makes happy customers

Actually we know quite well which software engineering techniques work and which ones don't. The problem is - surprisingly - that often programmers and project leads do not use the established techniques, even when they know them. It is like a surgeon not washing his/her hands before surgery. Why is this so?

Sometimes people do know a technique, but do not know when to use it. So they do not use the technique at all or they use it within a non-applicable context.

Often the time pressure is very high in software development projects. Under pressure people tend to a) stay within the comfort zone, i.e. do not try a new technique, and b) do some 'creative load shedding', e.g. they do not write enough unit tests anymore.