Proyecto T: definición de tecnología

Hace un tiempo empecé a trabajar con un conjunto de alumnos de UNQ en su trabajo final de carrera. El mismo consiste en la construcción de una aplicación para gestión de una sala de guardia de un hospital público.

Una de las decisiones que tenemos que tomar  al comienzo del proyecto es la tecnología a utilizar.

Intentando dejar de lado las preferencia personales, hay algunas consideraciones importantes para esta decisión:

  1. Dado que el contexto del proyecto es un institución pública donde el presupuesto es realmente acotado es necesario que la tecnología a utilizar no requiera el pago de licencias.
  2. Dado que se espera que el sistema tenga una vida “más larga” que el tiempo de desarrollo es muy posible que una vez completado el sistema, alguien más debe encargarse del mantenimiento. Sumado a que trabajeremos con alcance variable es posible que en un futuro el product owner deba conseguir más gente para agregar nuevas funcionalidades. Por esto es necesario que sea fácil conseguir programadores con conocimiento de dicha tecnología.
  3. La tecnología elegida debería estar lo suficientemente estable y contar con herramientas que faciliten la resolución de situaciones técnicamente comunes en un proyecto como el planteado y no de larga sesiones de investigación y resoluciones de problemas técnicos.
  4. Dado que seguimos estando en un contexto académico, la tecnología a utilizar debería permitirnos aplicar ciertas buenas prácticas que los alumnos aprenden a lo largo de la carrera.

Con estos puntos de partida ya podemos empezar a eliminar algunas candidatos.

  • En primer lugar podemos descartar tecnología Microsoft  por (1).
  • Al mismo tiempo y pesar de que me causa cierta pena, creo que (2) deja afuera Smalltalk.
  • Creo que (2) y (3) dejan afuera a cosas tales como Erlang

La lista de candidatos es aún bastante larga y al mismo tiempo con sólamente un lenguaje no llegamos a ningún lado. Es necesario considerar lenguaje + frameworks, lo cual nos podría llevar a la siguiente lista de candidatos:

  • Php, tal vez sea por sus orígenes “informales”, creo que las convenciones y herramientas aún no están claramente unificadas, hay varios alternativas (Symphony, Cake, etc) y a mi parecer ninguna se ha establecido. Sumado a que el lenguaje no me gusta.
  • Python + Django, lo usé y no me gustó, creo que Django tiene demasiada magia negra.
  • Java, ¡ja!  ¿cual de sus n variantes? No lo sé, creo que en un punto casi todas cumplen con las premisas iniciales. simplemente descartaría el uso de contenedores pesados (EJB).
  • Hermanitos de Java ya sea Scala o Groovy, que más allá de las particularidades que ofrecen como lenguajes, ambos proveen un conjunto de herramientas muy interesante y que simplifican varias cuestiones cuestiones cotidianas que tal vez en java requieren un esfuerzo de configuración/xml realmente pesado.
  • Ruby, Rails tiene demasiada magia negra, pero creo Padrino definitivamente es un opción válida.
  • JavaScript sin duda está en ascenso y si bien apenas he ido más allá de jquery es algo que me tienta mucho

Algo que me parece inevitable para este contexto de aplicación es el uso de Javascript del lado del cliente manejando toda la lógica de presentación y dejando en el server sólo servicios de negocio, entonces el punto sería con qué construir estos servicios.

Ahora bien, más allá de mis gustos, la realidad es que la aplicación la tienen que construir los alumnos y llegado a este punto son ellos quienes deben tomar la decisión considerando todo lo aquí expresado.

Mi recomendación para los alumnos fue: tomense un rato para googlear las cosas que aquí menciono si es que no las conocen. Si alguna de las alternativas les tienta más que otra y no la conocen, entonces bajense lo que sea necesario e intenten escribir una pruebas unitaria y hacer una página que sume 2 números. Eso debería darles cierta idea de dónde se están metiendo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s