Cap V: Atreverse a eliminar lo implementado, El libro negro del programador. 💻
Tags: javascript, webdev, spanish, productivity
Published: 2023-01-13 22:30:11

## **Atreverse a eliminar lo implementado**

* El software es por defecto incremental, siempre hay o habrá mejoras que hacerle o nuevos requerimientos que implementar.

* **La analogía del pintor**: 
Una persona pide a un pintor que le haga un cuadro en base a ciertas características poco claras, entonces el pintor decide hacer un boceto como borrador. Ante el primer borrador el cliente no queda satisfecho y hace correcciones; el pintor hace un nuevo lienzo intentando plasmar la idea del cliente y nuevamente se hacen otras correcciones. A la tercera corrección lo que pide el cliente y lo que entrega el pintor recién se empieza a parecer.
**El primer boceto y el tercero no se parecen en nada**, pero a medida que más correcciones se hacían más cerca del producto que de verdad quería el cliente estamos. 

![ima](https://www.eltiempo.com/files/article_content_new/uploads/2021/09/21/614a855fe9d9f.jpeg)

* Podemos decir entonces que: **Los clientes no saben que es lo que quieren** y con el tiempo y las correcciones nos acercamos más al producto final que desea.

* **Programar casi siempre es un ejercicio de destrucción**, donde buscamos la mejor solución a un problema que también puede cambiar en el tiempo.

* A medida que el software se vuelve más complejo y se introducen nuevas características no podemos dar cuenta que el diseño inicial no encaja con el producto que se quiere construir.

* Por naturaleza el software tiende a **deteriorarse**, esto tiene que ver mucho con la **entropía**, siempre hay nuevas tecnologías mejoradas que pueden dejar desactualizado a un proyecto cuyo mantenimiento no sea el adecuado.

* Una regla fundamental del software profesional es que tiene que permitir dedicar **menos esfuerzo a mantenimiento que a incorporar nuevas y mejores características**.

* Si es cambiar o desechar piezas de código mejoraran el software, debemos hacerlo dejando a un lado las emociones que conllevan tirar algo que nos llevó tiempo y esfuerzo construir. 

* Un programador profesional tiene sumido en su ADN que no se puede desarrollar software sin respaldo de test automatizados. 

* De igual manera que el proyecto crezca, lo deben hacer también las pruebas. 

* Un desarrollador de software profesional no duda en eliminar lo que sea necesario siempre que vaya a ser sustituido por una idea mejor que añada simplicidad, mejor diseño o mayor legibilidad a la solución.

* Destruimos para construir.

* Eliminar código que funciona pero un fin mayor es como dar un paso atrás para dar tres pasos adelante. 

* **El desarrollo de software es una tarea incremental en la que en cada paso vamos añadiendo una funcionalidad adaptando lo que ya tenemos para acomodarlo a los nuevos requerimientos**.

* No basta con crear solamente algo que funcione, debemos encontrar la solución más simple y con el mejor diseño. 

* Modificar significa en ocasiones tirar a la basura piezas de código enteras, quizá porque encontramos una mejor solución, o por que no se entendieron bien los requerimientos iniciales.

* Volver a escribir código desde cero a veces significa ahorrarnos mucho tiempo en el futuro del proyecto.

---

Te dejo el link gratuito de [*El libro negro de programador*](https://underpost.net/ir/pdf/cy3/el-libro-negro-del-programador.pdf) por si te intesa leerlo, o dale click a la imagen:


[![libro](https://www.digitalskillsinstitute.com/assets/media/books/5541eba31b4b42b5bb021dc77c70d658-480.jpg)](https://underpost.net/ir/pdf/cy3/el-libro-negro-del-programador.pdf)