Monday, June 15, 2009

Enamorándome

Disclaimer: post técnico.

El oráculo siempre me ha parecido la base de datos que, por mucho, aventajaba a sus competidores. Por esas cosas del fanatismo, tenía pocos argumentos porque siempre había trabajado con Oracle, salvo algunas cortas pesadillas donde mi disgusto por la nueva base podía tener que ver más con mis costumbres y hábitos que con la diferencia real entre ellas.

Ahora, trabajando con Sql Server, mi gusto por Oracle se está transformando en enamoramiento. Enamoramiento, claro, como el de un tanguero: llorando por lo perdido. O como canta Serrat, no hay nada más amado que lo que perdí.

Y que perdí?. Esto perdí:
  • En Oracle, de toda la vida, un lector no se bloquea porque otro proceso escriba. Sql Server lo incorpora a partir de 2005. Antes, si queríamos hacer que un lector no se bloqueara por un escritor podíamos leer los bloques sucios (no comiteados).
  • En Oracle, el profiler no agrega carga adicional, tanto que si no fuera por el espacio en disco, uno lo podría tener siempre prendido.
  • En oracle el profiler da datos agregados y también da un listado de los eventos generados por esa sesión: por ejemplo, puedo ver una línea por cada bloque que leyó una consulta, viendo a que tablespace fue. En Sql Server solo tengo valores agregados por consulta. Y que para que quiero ver a donde leyó cada bloque?... por ejemplo para saber si está yendo al rollback (o a la tempdb en Sql Server) para leer consistente. Como me entero en el profiler de Sql Server si el problema es que un stored procedure está recibiendo parámetros innecesariamente largos y la demora está en la transferencia de red? (cosa que me ha pasado en Oracle). Más genéricamente, la comunidad de Sql Server parece que todavía está haciendo análisis de performance por indicadores (tema para otro post, mientras tanto, se puede leer online el primer capítulo del libro de Cary Millsap , particularmente la página 6).
  • En Oracle, existe un paquete, llamado DBMS_STATS (por cierto, si googlean algo de Oracle y caen en oracle-dba.com dba-oracle.com (*), sepan que su autor sabe muy poco de lo que habla), que permite generar estadísticas de las tablas para probar que plan elegiría el motor con otros, hipotéticos, juegos de datos. En Sql Server hay un mecanismo no documentado que permite exportar estadísticas de una tabla que ya existe. El mecanismo de Sql Server genera una larga sucesión de números en hexa que tienen codificados, de alguna manera y claramente inaccesible al resto de los mortales (muy Microsoft's way) las estadísticas. O sea, si querés sacarte una duda sobre una situación hipotética, esperá a que se produzca (sin mencionar lo incómodo que es pedirle al DBA algo cada cinco minutos)
  • Oracle tiene RAC, que no es un mecanismo de snapshots, por más que los admiradores de Sql Server lo intenten comparar con la replicación. RAC no es replicación de snapshots, RAC es un mecanismo por el cual varias instancias de bases de datos pueden acceder a los mismos archivos de datos. Y anda muy pero muy bien.
  • En Oracle puedo correr un debug contra los stored procedures sin necesidad de comprar un producto adicional. En Sql Server necesito una de las versiones de 'gama alta' del Visual Studio.
  • Oracle anda en varios sistemas operativos. Sql Server en uno (concedámosle ese status a Windows)
  • En Oracle, hay un UTL_MATCH, para calcular distancias entre strings que hasta implementa el algoritmo Jaro-Winkler. En Sql Server, claro, lo podés hacer.
  • En Oracle existe una API armada que incluye muchísimas funciones típicamente necesarias, en Sql Server se pueden hacer (con la extensión del CLR en 2005). Un ejemplo?... expresiones regulares (lo que ocurre, emho, es que los programadores windows se enteraron de la existencia de las expresiones regulares hace unos pocos años)
Supongo que habrá más diferencias, que iré disfrutando con el correr de las semanas.

Update: me comenta mi amigo P. que el dominio de la empresa de Burleson está mal, que el correcto es dba-oracle.com. En el link de su nombre hay un artículo de alguien que sí sabe sobre la ignorancia de este tipo. En la página de Jonathan Lewis hay bastante sobre Don Burleson.


Saturday, June 6, 2009

Entidades invisibles

En su última columna en el Scientific American, Michael Shermer se pregunta (y luego responde) cual es el origen de la tendencia a creer que nuestra vida está controlada por agentes misteriosos, invisibles y poderosos. La respuesta es más o menos la misma que se da desde los tiempos de Daniel Kahneman y que ha merecido ríos de tinta de autores muy recomendables como el mismo Shermer, Daniel Dennett, a veces Dawkins, Thomas Kida y seguramente se me pasan algunos (la respuesta corta es que los errores de tipo I son evolutivamente menos peligrosos en el corto plazo que los errores de tipo II, en todo caso, siempre se puede leer el artículo de Shermer completo, que es muy recomendable y explora las causas que nos han llevado no solo a reconocer patrones donde no los hay, sino a pensar que hay intenciones detrás de esos patrones).

El artículo abre con una enumeración de los agentes invisibles más populares:

Se cree normalmente que almas, espíritus, fantasmas, dioses, demonios, ángeles, extraterrestres, diseñadores inteligentes, conspiradores gubernamentales y agentes invisibles de
muchas otras naturalezas, poderosos y guiados por intenciones controlan nuestro entorno y nuestras vidas. Por qué?

Nota al margen para quienes no sigan el debate de la ciencia y el creacionismo en USA (y que se expande al resto del mundo). Copiando del diccionario escéptico, el diseño inteligente es una creencia anti-evolución que sostiene que las explicaciones naturales sobre el origen de ciertas entidades biológicas no son razonables y que el proceso de creación de estas solo puede ser explicado a través de la presencia de un diseñador inteligente (i.e dios)

Y me quedé pensando... no faltan los gerentes, los project managers y los ejecutivos en esa lista?. De los ejecutivos (y particularmente, ejecutivos de finanzas) ya se encargaron antes y mejor que yo muchos otros, así que me voy a detener en los gerentes operativos y de proyecto. Se podría decir que el primer motivo para no incluirlos en la lista es que éstos existen (bueno, los conspiradores gubernamentales también existen y cada tanto se anotan algún que otro éxito, pero ni tantos ni tan espectaculares como se les atribuyen).

Concedido, los gerentes existen, cierto. Pero mi impresión, basada en algo tan poco científico como mi experiencia personal, es que las personas en los grupos de trabajo tienden o bien a despreciar a sus gerentes de proyectos, o bien a sobreestimar el alcance de su capacidad para influir en los acontecimientos.

La primera alternativa (el desprecio a los gerentes) es fácil de explicar, incluso cuando no es justificada. Ahora, me intriga la segunda. Y me intriga más cuanto he sido su víctima, de un lado y del otro: a veces he supuesto que mi gerente o director era un mago que podía mágicamente arreglar cualquier problema con el que me enfrentaba, y otras me tocó ser considerado el Mesías (de más está decir que el tiempo se encargó de juntar evidencia para refutar ambas ilusiones, aunque, como sabemos, las ilusiones suelen ser resistentes a las evidencias). Hoy veo casi con cariño la ingenuidad que mostré al pensar que R. (mi director en esos momentos) podía resolver cualquier cosa y al sentirme halagado cuando se me consideró el Mesías.

Tengo una visión del gerente de proyecto (puesto que ocupo) más parecida a la de alguien que no controla nada, a lo sumo trata con buena fortuna de acomodar su proyecto a un entorno que cambia (más allá de su control), adaptándose a lo que pasa y, muy de vez en cuando, siendo capaz de saber qué va a pasar.

Existe la Economía Comportamental (espero que se perdone esta traducción tan chapucera de Behavioral Economics), que es, según dice la wikipedia, una rama de la economía que aplica el conocimiento científico sobre los factores cognitivos y emocionales para entender mejor las decisiones de consumidores, prestamistas, inversores y otros agentes económicos. Sería un ejercicio de optimismo esperar ver en los próximos años la Gestión de Proyectos Comportamental, que podría ser una serie de técnicas y herramientas para la gestión de proyectos que tengan en cuenta lo que sabemos del funcionamiento de nuestra mente?.

Y una última duda... si tal disciplina existiera... refutaría o apoyaría a las metodologías ágiles de desarrollo de software?. Yo creo que las apoyaría, pero en definitiva me gustaría ver los resultados.