Why is it so hard to develop good software

Software development is a very complex task, building good software requires applied software engineering principles. Some classic examples of not following software engineering principles which leads to bad software.

Classic mentality of a new software developer

Most software developers start coding with competitive programming where they solve a predefined problem with predefined constraints and predefined test cases. But that is not at all similar when they start working on real life project, where there is so much ambiguity, complexity, team work. There along with problem solving, applying software engineer principles are must, which a software developer tend to leave way behind while trying to improve problem solving skills.

Classic mistakes while managing software people

  • Heroic attitude, emphasis on can do attitude, so this idea that one person by herself or himself can do everything and can make difference in whole project, unfortunately this increases risk taking and discourages cooperation, which is plain bad for the project. So it is important to have team work and cooperation among the different team members, without pointing too much on single individuals
  • Not creating the right work environment. We all like to work in nice environments. Poor people management can lead to very unhappy personnel, can reduce productivity and result in people leaving teams.

Classic mistakes while managing software processes

  • Unable to come up with realistic schedule. So to have an overly optimistic schedule, this is because we underestimate the effort involved and overestimate the ability of people involved.
  • Bad schedule can lead a project being delivered late or delivered with very low quality.

Classic mistakes of software products

  • Gold platting of software requirement, it is very common for projects to have more requirements then they actually need.
  • More features lengthen the project schedule in an unnecessary way.
  • Feature creep is another common mistake where features are developed not planned initially and not needed in most cases.

Classic mistakes of software technology

  • Silver bullet mistake, to much reliance on newly advertised technology, for example a new technology, and the problem here is that we can’t expect technology alone to solve our software development issues. So we should not rely too much on technology alone.
  • Another typical mistake is to switch tools in the middle of project.
  • Lack of an automated version control system like git.

Learn more