Toda aplicación informática, desde un simple juego de tres en raya hasta una completa gestión empresarial, conlleva una serie de tareas que pasan desapercibidas pero son necesarias para el correcto funcionamiento del software. El resultado final para el cliente y futuro usuario es fruto de un trabajo que requiere muchísimas horas de reflexión, ensayos, prototipos y cambios. Este artículo sólo trata de reflejar la cantidad de aspectos a tener en cuenta que, aún no siendo percibidos directamente por el usuario final, resultan de vital importancia si queremos acabar con éxito un desarrollo.
El proceso de desarrollo de software
El desarrollo de una aplicación informática aparenta ser, en muchas ocasiones, un proceso más artístico que científico. No entraremos en teoría de computación ni en bibliografía sobre el análisis de software, que lo hay para aburrir, sólo queremos resaltar que no deberíamos de tomar el desarrollo de software como un tema menor ya que posee más complejidad de la que parece. Pero, no nos pongamos trascendentales, tras este «arte» existe una metodología con una base científica suficiente para garantizar el éxito, siempre y cuando tomemos las decisiones acertadas y nos apoyemos en aquellos que ofrecen garantías, confianza y responsabilidad.
Un buen desarrollador debería de pasar más tiempo pensando que tecleando.
El analista y programador de aplicaciones puede ahorrar mucho tiempo (y dinero) evitando desarrollos innecesarios. Para ello basta con sentarse junto a todos los implicados en el proyecto, incluyendo el cliente «pagador» y el usuario final. Todos han de reflexionar sobre aquello que se quiere lograr mediante el uso de la aplicación informática que pretendemos desarrollar. Ni se trata de reinventar la rueda, ni mucho menos «redescubrirla», se trata de ser realistas y abarcar sólo aquello que es asumible y resultará útil para alcanzar la meta propuesta.
¿Habrá fallos? Por supuesto, somos humanos.
Es evidente que, por mucho que pensemos, en algún momento hemos de ponernos manos a la obra y comenzar a teclear código para probar nuestros diseños pero, si sabemos hacia donde queremos dirigirnos, es mucho más probable que no andemos perdidos y sin rumbo. Aunque sea una idea lógica y evidente, no está tan extendida como parece. La programación directa sin una reflexión profunda previa puede ocasionar frustración en un programador que nunca «acierta» con aquello que le han encargado. El proceso de desarrollo ha de estar dirigido, pensado y consensuado para evitar que el trabajo vaya a la basura.
Pero el cliente sabe lo que necesita y sólo quiere que alguien lo programe… o no.
Si alguna vez se ha enfrentado al desarrollo de una aplicación informática, bien como cliente, bien como desarrollador, habrá observado que, cuando los objetivos no están claros y bien definidos el desarrollo de software termina enredándose hasta el punto en que nadie comprende como resulta tan difícil finalizar el proyecto. ¡Si la idea estaba clara! Pues, ¡sorpresa! Si un desarrollo de software no avanza ni tiene pinta de acabar nunca lo más probable es que no esté tan claro aquello que se pretende conseguir, eso suponiendo que no haya cambiado varias veces durante la implantación. ¿Le suena esta situación? Entendemos que esto frustra a cualquiera.
La complejidad en el desarrollo de software a medida
Insistimos en que el objetivo y planteamiento inicial ha de ser cristalino. Tanto cliente como desarrollador han de comprender a la perfección la situación de partida y consensuar el objetivo que se persigue con el proyecto. Un desarrollo a medida no es barato (le recomendamos que huya de aquellos que lo sean) precisamente porque es algo complejo y requiere de experiencia, capacidad reflexiva y mucha seguridad para no «dejarse llevar» por el que paga.
Dejarse aconsejar
Sentimos si el lector está en el lado «de los que paga» pero, sin ánimo de ofender, ha de saber que, el que paga, no siempre lleva la razón, aunque está en todo su derecho a conocer los motivos por los que no la lleva.
La actitud de un buen analista-programador es la de actuar como asesor, pero para ello hay que dejarse asesorar.
Llegados a este punto, donde todo son trabas y problemas, no queremos que nadie se asuste y abandone su idea de contratar a un desarrollador para llevar a cabo su proyecto. Más bien todo lo contrario. El desarrollador es imprescindible y todos los días se abarcan proyectos que acaban en éxito. Nosotros queremos que desarrolle su idea. Sólo hemos de encontrar a un buen analista-programador. Alguien capaz de captar lo que queremos hacer, asesorarnos y, quizá, razonablemente, modificar el modo o enfoque para llevarlo a cabo. La idea original seguirá siendo suya y permanecerá intacta. El desarrollador sólo modifica el modo de llevarla a cabo.
Características de un desarrollo de software
Pero ¿por qué tanto jaleo para un programita? ¿Tan difícil es programar? Bueno, fácil no es, desde luego.
Cuanto más acertado es el desarrollo, menos lo sufre el usuario.
Para comenzar, nunca es un programita… aunque lo parezca. Programar una aplicación conlleva una serie de trabajos que el cliente no aprecia directamente. Al igual que ocurre con la cobertura de nuestro móvil, si no se hicieran estos trabajos, notaríamos su ausencia.
Tengamos en cuenta que, donde el cliente ve «un programa que hace lo que ya se hacía antes pero por ordenador», un analista ha de crear un software que cumpla las siguientes características:
Fiabilidad
La fiabilidad es una característica que se da por supuesta pero cumplirla es importante ya que no podemos estar utilizando una aplicación en la que no confiamos. El cliente no está probando el software desarrollado. ¡Lo está utilizando para su trabajo! No podemos suponer que el cliente avisará cuando «detecte» errores. El software ha de entregarse probado y comprobado, tantas veces como sea necesario, hasta obtener un producto estable y con garantías.
Desatención y automatización
Otra característica fundamental es que una aplicación informática funciona sin necesidad de hacerla funcionar. Parece evidente, ¿verdad? Nadie está vigilando si la aplicación deja de funcionar. El diseño de procesos ha de orientarse hacia la automatización. La idea que debe residir en el desarrollo sería la de convertir en automático todo aquello que sea automatizable. El ser humano ha de intervenir sólo en aquellos aspectos que, por definición, necesiten intervención humana.
Solidez e inquebrantabilidad
Cualquier aplicación informática ha de tener presente que el usuario no tiene porqué conocer su funcionamiento. Además, la aplicación debería contemplar posibles errores humanos que, inconscientemente, todos podríamos cometer. Se ha de tener presente siempre la integridad de los datos almacenados. La introducción y validación de datos es uno de los aspectos más críticos a la hora de desarrollar un interfaz de usuario. La validación de fechas y otros tipos de datos es fundamental para ofrecer un software sólido y estable.
Durabilidad y sostenibilidad
El desarrollo de una aplicación ha de enfocarse como inversión. Ha de garantizarse que el desarrollo acabado permitirá su explotación a largo plazo. Puede existir fecha de caducidad pero hemos de evaluar que ya le habremos sacado el partido suficiente y la inversión ha sido rentable. Un software basado en tecnologías o procesos caducos y obsoletos se convertirá en un coste y un lastre para el negocio. Un buen desarrollador no debería aceptar esta situación al menos que esté completamente justificada.
Responsabilidad, calidad y confianza
Cuando se asume la tarea de poner en marcha una aplicación informática, el desarrollador siempre adquiere una responsabilidad implícita. Al fin y al cabo alguien va a poner en sus manos los datos de su negocio para su tratamiento y gestión diarios. Hemos de ser conscientes que nos están derivando cierta responsabilidad sobre la rentabilidad del negocio y no podemos defraudar. Nos convertimos, parcialmente, en responsables de su funcionamiento. Si el negocio de nuestro cliente gana, el desarrollador también. Si adoptamos esta actitud podremos ofrecer un desarrollo de calidad y un socio tecnológico de confianza.
Adaptabilidad y crecimiento
Los modelos de negocio son dinámicos, ningún negocio se gestiona ahora como se hacía hace unos años, al menos, no debería. La aplicación informática a desarrollar ha de contemplar la posibilidad de modificaciones y cambios en el modelo. Todo aquello que podamos prever será más asumible en el futuro y redundará en mayor comodidad (y menor coste) para el cliente y el desarrollador. No hablamos de adivinar el porvenir, sólo conocer si hay previsiones de cambio y tendencias probables para estar preparados en la medida de lo posible.
Conclusión
Volviendo a la metáfora del iceberg y retomando el título de este artículo, hemos de tener en cuenta que, aunque sólo vemos la punta del mismo, lo que hace flotar a esta poderosa montaña de hielo es, precisamente, la parte que no podemos ver (si tiene tiempo y curiosidad en conocer el motivo, le recomendamos que consulte el Principio de Arquímedes).