The 'it works' mentality
The 'it works' mentality

What does it means when someone within the software development community tells you that something “it works”?

For me, whenever someone say such sentences, what it means is that the bar is set at it's lowest standard possible. It is working, nothing else matters. Only the now of the software project is relevant. I have seen so many projects that are walking at the edge of a cliff, being pushed closer and closer to that edge with each task that is done with “it works” mentality.
It's actually easy to most things work. It's harder to make them work always, to make them maintainable, to make them upgradable, to make them reliable, to make them any good. Unfortunately the “it works” mentality is one of the biggest (in my humble opinion) shadows within the software development community.

Some of the things that are usually done with this kind of mentality:

  • the project build system: it's usually where more hacks exists within a project. From copying thing around to using deprecated components, to being an almost completely manual procedure...
  • the testing of the project builds: the framework to do the tests.
  • invention of new methodologies of software development: every week a new methodology will be invented. A new spreadsheet will need to be filled, more meeting will be attended...
  • the reinvention of software components: programmers just want things "to work" and never looks around in the code base and used software frameworks
  • software architectures: that are never truly though in depth
  • the numerous short-cuts taken: editing generated code instead of extending it, not cleaning up the code of parts that are no longer in use, etc.

The effect of this mentality is that is cancerous. One software developer that tries to raise the bar will be seen by managers as someone that is causing trouble and tacking more time for implementation. His (or her) colleagues will also become hostile as the constant attempts to improve the state of the project will be seen as accusations and attempts at being a "smart ass".

If this optimistic developers is actually good enough to push things then he will be endanger of being the sole person that actually does anything as other will rely more and more on him to suggest, implement and build every improvement and new features.