Mostrando entradas con la etiqueta Opinion. Mostrar todas las entradas
Mostrando entradas con la etiqueta Opinion. Mostrar todas las entradas

miércoles, 21 de noviembre de 2012

MongoDB bajo contexto


Un par de semanas atrás asistí como es de costumbre cuando se da la oportunidad, a una de las charlas del Grupo de Usuarios de Java de Costa Rica (CRJUG). En esta ocasión organizado por los amigos de BodyBuilding.com. En esta ocasión nos dieron una charla introductiva al mundo de MongoDB, un motor no-sql de base de datos que usan en su sitio web. Disfruté mucho el estilo relajado de las presentaciones. Algo así como “Por programadores para programadores”. Nos mostraron las principales diferencias entre este nuevo paradigma en comparación con el tradicional paradigma relacional. Creo que desde un principio fueron bastante transparentes afirmando que no habían venido en una “misión evangelística” de la tecnología. Ellos saben al igual que muchos que el uso de este nuevo paradigma es para determinados propósitos. No es para substituir las bases de datos relacionales con sus características típicas: seguridad, transaccionabilidad, integridad referencial, etc. Como en muchos otros ámbitos en ciencias de la computación donde siempre existe una tensión constante en tratar de balancear todos los elementos claves de un sistema: seguridad, robusticidad, velocidad, confiabilidad, etc,  las bases de datos no escapan de esta batalla y por tanto han comenzado a aparecer nuevos métodos para inclinar la balanza sobre un grupo de características deseables en ciertos contextos, como lo es la escalabilidad.

Estoy enfatizando este punto por algo interesante que observé durante la presentación. Debido al sistema informal de la presentación, siempre hubo apertura para hacer preguntas y comentarios en todo momento y entoces algunos participantes en varias ocasiones insistieron en comparar esta solución con la típica solución de base de datos relacional. Esto en principio está bien para señalar el por qué de las diferencias, pero no obstante lo que encontré interesante fue lo que percibí la manera en que se hacían los aportes. Como con cierta duda y escepticismo, como “no puedo creer que las reglas de toda una vida se estén violando”. Por supuesto que nadie dijo esto de manera literal, pero solo describo mi percepción de la forma defensiva en que se hacía. Por ejemplo un participante comentó que Oracle atacaba un problema de una manera distinta sin abandonar el paradigma relacional. En otra ocasión hubo una breve argumentación de por qué MongoDB no continuó con un lenguaje de consulta similar el tipo SQL, porque después de todo, toda la comunidad de desarrolladores ya está acostumbrada a usar este lenguaje.

Esta reacción de una parte del público es interesante, pero no del todo sorprendente. Las bases de datos relacionales han estado con nosotros por más de 40 años. Son más viejas que muchos de nosotros. Es por ellos que a muchos les cuesta creer que sea necesario reinventar el agua tibia. Es similar a que apareciera un nuevo movimiento defendiendo las virtudes de un lenguaje de programación que abandona la programación orientada a objetos. Sería completamente normal para muchos mirar esto con ojos totalmente escépticos. En mi humilde opinión considero que la experimentación en nuevos paradigmas es completamente necesario para desarrollar innovación en cualquier ámbito científico y tecnológico. Y también creo por otro lado que no debemos conducirnos de una manera “hipsteriana”, intentando probar y hasta siendo promotores de las últimas tecnologías solo por lucir “cool”, llegando al punto inclusive de etiquetar a otros como anticuados por no usar lo más reciente en frameworks, librerías, metodologías, etc. Las bases de datos relacionales están a décadas creo yo de entrar en una fase de retiro, pero igual debemos comenzar a considerar las nuevas opciones que ya están comenzando aparecer en el escenario desde hace algunos años atrás.

En este video bastante gracioso (la verdad cada vez que lo veo me causa risa de nuevo), se señala de manera cómica este último punto que menciono, donde tenemos personas bastante creídas y apresuradas para descartar soluciones sólidas y probadas solo porque hay algo nuevo de moda. Jugando como dije al hipster pero con tecnologías de desarrollo. No creo que este video sea una crítica en específico a MongoDB, sino más bien una crítica a la gente que no entiende el contexto apropiado de ciertas tecnologías y creen que es una zapato que le queda bien a todo mundo. Si uno tiene una aplicación sencilla sin grandes problemas de concurrencia por el momento, uno no debería estar preocupándose muy al principio por escalabilidad. Sí dejar un diseño no acoplado solamente a una base de datos, pero no entrar en pánicos innecesarios. Sobre arquitecturar una aplicación puede causar más problemas de los que puede solucionar. Pero ese es otro tema que comentaré después a su debido tiempo.


lunes, 24 de octubre de 2011

Sin temor a lucir "fuera de onda"


A veces pareciera que el mundo del desarrollo de software se comporta parecido al mundo de la moda. No lo digo porque piense que esté sujeto completamente a condiciones triviales como la influencia de una estrella pop sobre las jóvenes adolecentes, pero en menor escala, los frameworks estrella más populares tienden a monopolizar la atención de los ingenieros de software con recetas, a veces al punto de pensar que cualquier cosas distinta de la receta está fuera de moda.

Frameworks como Struts, Spring o Hibernate son herramientas exelentes para muchos de los desarrollos de software. El problema considero que comienza cuando un desarrollador cría un esquema en su mente, de que todos los proyectos deben implementarse con la receta estandar "para todas la tallas" que él utiliza. Si alguien más sugiere hacer algo diferente, o solamente menciona en alguna conversación amistosa a otro colega que está utilizando una técnica diferente, el chico receta framework podría verlo como el fuera de onda o inclusive hasta molestarlo por ser un dinosaurio a su parecer.

He estado viendo las exposiciones de la reciente conferencia de Java Zone 2011. Dos presentaciones en particular llamaron mi atención por su valentía para cuestionar el “status-quo”. Una expone un acercamiento diferente a la inyección de dependencias:


Dependency injection when you only have one dependency from JavaZone on Vimeo.

Y la otra, particularmente la que disfruté más, es la de esta entusiasta ingeniera, que con buenos argumentos, se para firme ante su negativa de utilizar Hibernate en sus desarrollos con persitencia en bases de datos.


Hibernate should be to programmers what cake mixes are to bakers: beneath their dignity. from JavaZone on Vimeo.

No estoy tomando partido en ninguna de estas dos presentaciones. Debo confesar que me falta experiencia como para tomar una posición informada en los tópicos mencionados, pero realmente admiro a estos dos por mostrar sin ningún titubeo, dos formas alternativas a técnicas actuales del desarrollo de software. La innovación aparece frequentemente en situaciones donde alguien se aparta de los demás.

Creo que como latinoamericanos tenemos mucho que aprender de estos dos ejemplos. Estamos muy acostumbrados a ser consumidores de tecnologías pero no a ser productores de ellas. Debemos tener la mente abierta para experimentar con nuevas alternativas, utilizando un criterio racional y mucha humildad para examinarlo todo, y ejercitar el jucio informático, el cual es clave en nuestro desarrollo profesional.