¿Qué hace que una solución software esté bien hecha?
Permítame que le cuente una historia de cuando estudiaba ingeniería de software en la universidad. Uno de mis primeros profesores de programación Java nos hizo la siguiente pregunta:
“¿Qué hace que un programa sea bueno? ¿Es un producto software que funciona¿ ¿Es código eficiente? ¿O es un programa fácil de modificar?”
La respuesta fue prácticamente unánime: “¡Un programa que funcione!” – clamaron los alumnos.
“Lo más probable es que haya algo aún más importante que si el programa funciona o no.” – fue la respuesta de mi profesor.
Sí, el código eficiente tiene sus ventajas. Los primeros ordenadores que realizaban cálculos para previsiones meteorológicas tardaban dos días en sacar el resultado de la predicción de mañana, lo que echaba por tierra su propósito original.
I sí, resulta un tanto obvio que el programa tiene que funcionar para ser bueno. Pero, ¿cómo se define que un programa funciona? ¿Y si los requisitos de los usuarios se malinterpretaron? ¿Y si sus necesidades cambian en el futuro?
Por ello, que el código sea fácil de modificar es el factor más importante. Si el código fuera imposible de modificar, sería también imposible mejorar su eficiencia. E incluso un programa que a día de hoy se considere que funciona, puede dejar de funcionar el día de mañana, con lo que si fuera irreparable, también acabaría siendo inútil.
En cambio, si su programa fuera fácil de modificar, una aplicación que no pasase todas las pruebas podría ajustarse para que funcionase de la forma esperada. O una aplicación que tardase mucho en ejecutar podría ser modificada para que funcionase tan rápido como fuera necesario.
Mi experiencia con Java
Java es uno de mis lenguajes de programación preferidos, desde que empecé a utilizarlo hace ya más de 15 años. Fuertemente tipado, orientado a objetos y con un compilador exigente, en combinación con un enfoque de bajo acoplamiento, hace que los programas acaben estando bien estructurados, y que sean bien legibles y fáciles de modificar.
Si sobre esto se añade un entorno de Modelo Vista y Controlador (personalmente he trabajado con Spring y JSF, pero sobre todo con Struts, combinado con Hibernate y EJB,) y las cosas se pondrán aún mejores. Y cuando se está programando soluciones software de una cierta envergadura, como parte de un equipo, disponer de esa estructura organizada no tiene precio, porque el código necesita evolucionar. Y aunque cualquiera puede escribir código que la máquina pueda entender, sólo los buenos programadores (en general, apoyados por el entorno de programación adecuado) pueden escribir código que otros seres humanos entiendan con facilidad.
Soy un Programador Java Certificado que ha trabajado sobre todo con Java en soluciones web basadas en JEE. He utilizado Java para programar portales online, aplicaciones con requisitos de eficiencia estrictos, y aplicaciones independientes de proceso de datos.
¿Necesita un programador Java en su equipo? Si este es el caso, no dude en ponerse en contacto conmigo.