Here is a brief list of engineering principles that guide my work

  1. Magic is bad: Today, most of the software development stands in libraries shoulders, everything is shifting to write business logic and import A or B library to solve a problem. But there be dragons inside those libraries. It is ok to use a library to solve a specific problem when it is atomic, replaceable and easy to understand. But some libraries treat you as they know you the whole life and take a lot of decisions and uses a lot of conventions you don’t know. They do black magic, black because -often- it is hidden. Magic is bad; magic leads you to crazy bugs and a hard to fix and debug code.

  2. Fix the broken window: It is winter, somebody throws a rock and break your window. You don’t continue as it didn’t happen, you go and fix it, at least with a wood table. But you do something. Broken window principle is an excellent analogy on how software projects lets technical debt take control of their day to day. If you start to solve something and you cross with something fishy, clean the mess.

  3. Duplication is cheaper than the wrong abstraction: Often, abstractions become too complicated and start heading in a wrong direction. It is better to introduce duplication instead of incorrect abstraction, which will save us time and cost. The cost of maintaining a wrong abstraction comes from maintaining the abstraction itself, the workarounds of the code that uses it, and the cognitive barrier that it generates WTF does this function do?.

Edits: 2018-09-25: Added 3. and link to the broken window.