Es muy probable que los que tienen afecto al diseño gráfico estén familiarizados con el minimalismo, esta corriente en esencia está enfocada a quitar las cosas que no son relevantes. Si quieres "ver" minimalismo, puedes visitar www.google.com, o www.apple.com :) son buenos ejemplos. Afortunadamente hay gente muy lista que inventó la wikipedia, y si quieres saber más acerca de esto puedes mirar en
http://es.wikipedia.org/wiki/Minimalismo
A estas alturas ya me siento poco minimalista... lo que he querido hacer es escribir una serie de pensamientos acerca de la Ing. de Soft., quitando el exceso de palabras y la profundización en conceptos.
Ahí voy...
Solo te pido que pienses en todo lo que hay detrás de estas dos palabras: Ingeniaría de Software (no contamos conjunciones :) ), trata de tener una lluvia de ideas acerca de esto, e inclusive trata de dar tu propia definición acerca de este concepto, lo tienes?, ok, podemos seguir.
Ahora pensemos en el proceso involucrado en la construcción del software: diseño?, metodologías?, TDD?, requerimientos?, etc?, estoy seguro que tienes muchas ideas más. En esta primera serie quiero hablar solo del área donde los ingenieros tienen que "empolvarse las manos", buscar la maquinaria pesada que usarán para construir la nueva edificación.
Construir software implica entre otras cosas:
- escribir código,
- compilar ese código,
- implementar un mecanismo de persistencia para los datos, tal vez bases de datos relacionales, XML, bases OO, archivos planos o lo que sea,
- verificar que el código escrito hace lo que se quiere que haga,
- refactorizar el código,
- tal vez mirar la ejecución del código más de cerca (debugging),
- después de terminado el producto se "revisa" la calidad,
- se reportan fallas,
- se intenta corregir las fallas,
- se hace un instalador,
- después de tratar de hacer las correcciones por un tiempo el cliente se pone contento cuando recibe el producto,
- el cliente reporta errores que no se detectaron antes,
- se trata de corregir los errores del cliente tocando el código,
- el cliente tiene nuevos requerimientos,
- se escribe más código para satisfacer los requerimientos,
- y la cadena vuelve a empezar, o parte del proceso vuelve a empezar
La pregunta es... qué maquinaria pesada voy a utilizar para implementar todo ese proceso?, o más aún, voy a utilizar maquinaria para hacer esto?. Harías todas esas cosas que he mencionado solo utilizando tu teclado y mouse (a mano)?
Después de responderte a ti mismo te dejo tarea :)... de seguro ya conoces varias cosas de las que voy a mencionar, tal vez no, como sea ahí van:
CVS, make, Perforce, loggin system, build machine, wix, bugzila, TestTrack, Software Instrumentation
Tal vez puedas "googlear" (que chistosa palabra, si es que lo es) y mirar algo de estas cosas que menciono, luego trata de encontrar un uso para alguna de la "maquinaria" que menciono y utilizarla en el proceso de construcción de software.
Te veo en la próxima publicación para seguir charlando.