While working at REDACTED, I reported the following issue.
Any engineer is a world apart at REDACTED, so given that programmers work alone on a big chunk of functionality during a few weeks in a row, they produce lots of code which is never harmonized with the rest of existing functionalities.
There are many reasons. Clearly there is little to no interest in improving code quality at a management level, because they think that technical debt can always be fixed later by adding more cheap laborers, when it’s probably the exact opposite of that, i.e. you can always add more cheap laborers to produce more code if the technical debt is kept at bay along time.
Another reason (in Front end) is that the size and number of code changes in a single merge request makes it nearly impossible to perform meaningful code reviews, and in fact seasoned programmers skim through them very fast and accept true atrocities.
For example, in the same API
- they allowed the same properties to have different names, having to use one name or the other depending on the state of the object, like
activeGroup.name
pendingGroup.groupName
- they allowed the same concepts to have different values, having to use one value or the other depending on the endpoint you use, like
operations = ['CREATE', 'UPDATE', 'DELETE'];
operations = ['C', 'U', 'D']
- they allowed the same operations to have different results’ structures, like
- `POST {name: ‘John’, age: 32}
- success response: {name: ‘John’, age: 32, created: …}
- error response: {error: ‘Age should be less than 30’}`
- `POST {city: ‘Barcelona’, temperature: ’18 C’}
- success response: ‘OK’
- error response: {msg: ‘Italian cities only, please.’}`
- `POST {name: ‘John’, age: 32}
Of course there are many more typologies of incoherences in our code base.
It could seem that they are just little inconveniences but they contribute lots of lines of code to the app. For example, a thing so simple like comparing two instances of the same document in different states, becomes a mess (i.e. more intricacies and bugs) when the names of the properties change according to the state.