Estoy empezando a darme cuenta de que el desarrollo de software es (entre otros) un proceso de preguntarse constantemente. Preguntas sobre la calidad del código, separación de preocupaciones, minimización de dependencias, ...
Pero la pregunta principal es: ¿hasta dónde puede llegar sin terminar en un hospital psiquiátrico?
Estoy solicitando un nuevo trabajo. Ayer estaba con un posible futuro empleador que quería probar mis capacidades de programación. Uno de los ejercicios fue: explicar qué hace este código. Revisé un código de la aplicación (winforms en vb.net) que desarrollan (es una aplicación administrativa para un hospital). Esto me dio la oportunidad de ver cómo abordan las cosas y fue bastante decepcionante.
Algunos ejemplos:
- Vi en alguna parte: Llamar [insertar el nombre de la subrutina aquí] -> Me llamó la atención: ¿no es algo de VB6?
- Tienen una capa de datos separada, que usa ado.net, pero un método que tuve que examinar devuelve un conjunto de datos a la capa de llamada. Por lo tanto, separe o no la capa de datos, la aplicación está vinculada a ado.net (que tampoco podría ser un problema si nunca cambian a otro enfoque de acceso a datos).
- Ese conjunto de datos se lee tal cual, por lo que sigue siendo un enfoque centrado en los datos (por supuesto, uno puede discutir cuánta lógica / comportamiento puede poner en clases como "Paciente" o "LabAnalysisRequest".
- También creo haber visto la construcción de una consulta sql por concatenación de cadenas.
- Utilizan procedimientos almacenados (lo que, para mí, significa: dispersión de la lógica)
- sin mención de vistas / controladores: todo depende de la forma
- Lo más feo que vi fue:
Si TestEnvironment.IsTesting entonces someVar = [algún valor codificado] más someVar = [algún valor recuperado dinámicamente] terminara si [resto de la función aquí]
Todo es muy diferente de lo que aprendí en la escuela: capa de dominio (agnóstico de persistencia), capa de persistencia, capa de presentación, pruebas unitarias, ...
Entonces reformulo mi pregunta: ¿cuán fundamental o dogmático debería ser uno? ¿Hasta qué punto debe un programador apegarse a sus principios o simplemente escribir código que haga el trabajo?