En Amazon hay muchos ebooks gratuitos muy buenos. Uno de ellos es Historias de Developers, que aún hasta hoy sigue siendo gratis si lo descargas para Kindle. Este libro no es para un público general, sino más bien para desarrolladores de software, especialistas en redes, y profesionistas similares. Sin embargo, un capítulo me ha llamado la atención.

En dicho capítulo se habla de la sobreingeniería, sobre la cual quiere hablarte el día de hoy. Se trata de un concepto muy recurrido en el mundo de los developers, pero no es exclusivo de ellos, y de hecho puede aplicarse a cualquier aspecto de la ingeniería. ¿De qué va este concepto de la sobreingeniería? Y mejor aún, ¿en qué afecta?

Pues bien, la sobreingeniería, a grandes rasgos es el hecho de agregar diversas opciones o funcionalidades a un producto, con la finalidad de que se utilicen en un futuro. En el mundo de la programación la sobreingeniería implica tener un montón de código, que solo hace más pesado el programa, y que además enreda a los desarrolladores, pero que está ahí porque quizá en algún momento se llegue a utilizar, cosa que rara vez pasa.

Si nos alejamos de cuestiones de programación, la sobreingeniería se suele expresar en diversos prototipos de productos, y cuando esto ocurre por lo general se llega rápidamente al fracaso. Cualquier producto debe hacer algo de forma concisa y eficiente. Incluso hay productos que cumplen más de una función, pero como lo hacen bien entonces los consumidores los aceptan.

Es muy difícil que un producto con sobreingeniería triunfe, porque eso de agregar algo con la idea de utilizarlo más adelante, no resulta nada bueno. Por esta razón las empresas que manufacturan algún producto evitan la sobreingeniería, y en caso de que algo más se les ocurra, pues entonces sacan una nueva versión del producto, que en algunos casos también llega a ser un poco exagerado el proceso (te suena eso de las versiones 2016 cuando apenas vamos a mitad de 2015).