Una vez tuve la desafortunada suerte de tener que trabajar con un motor de flujo de trabajo / formulario basado en PHP 4.
El software generaría formularios de varios pasos basados en diagramas de flujo que podría editar a través de una interfaz web.
Al principio, esta brillante pieza de ingeniería de software hizo un gran trabajo. Pero, como siempre, los requisitos se hicieron más complejos con el tiempo.
- ¿Por qué DevOps se convirtió en una necesidad importante para las compañías de software?
- ¿Qué tan rápido se vuelve obsoleto el conocimiento en el desarrollo front-end, en comparación con el conocimiento en el desarrollo back-end?
- ¿Quién es el mayor competidor de keen.io?
- ¿En qué consiste realmente la programación orientada a objetos? ¿Cuál es el punto aparte de la reutilización y la encapsulación?
- Como desarrollador, ¿cuáles fueron algunas tareas laboriosas que solía realizar hasta que aprendió a usar una mejor técnica o herramienta?
Una vez que comencé a trabajar con él, se había convertido en un monstruo: las desecaciones de flujo estaban por todo el lugar. Verdadero código de espagueti. Las decisiones de flujo se tomaron de 3 maneras:
- Propiedades en el modelo.
- Código en la aplicación PHP
- Código PHP ingresado en el modelo
La última forma fue el principal problema que tenía el software. El modelo fue almacenado en una base de datos SQL e interpretado por la aplicación PHP. Sin embargo, el modelo también contendría código PHP que se almacenó en la base de datos como un BLOB.
No solo el flujo y el procesamiento fueron decididos por el código PHP en el sistema de archivos, ooh no, sino que también se controlaron a través de pequeños scriptlets de PHP que se extrajeron de la base de datos y se evaluaron.
No había forma de depurar adecuadamente ese desorden e incluso la solicitud más simple de cambio o la corrección de error más pequeña costaría días como mínimo y solo podría ser realizada por aquellos desarrolladores que habían estado presentes el tiempo suficiente para saber en qué se estarían metiendo.
En algún momento lo reemplazamos con una aplicación MVC usando Zend Framework. Esto funcionó mucho mejor.
La parte divertida: un tiempo después de reescribirlo, nuestro cliente nos pidió que le proporcionáramos al ‘nuevo’ proveedor una idea del software, les mostramos la versión anterior del curso. En pocas palabras, el nuevo vendedor nunca se convirtió en el nuevo vendedor.