Blogia
La cita del día

De nuevo en el camino (aún sin frases)

Han sido casi dos meses duros, mucho trabajo y estudio. Y todo apunta a que este mes de diciembre será igual, y así continuará enero y ... Pero me tomo unos días de respiro (apenas).
Todo comenzó a principios de octubre cuando en el trabajo me cambiaron de proyecto, me asignaron uno en ... Genexus! lo que yo había visto de esa herramienta había sido no más de tres meses en un curso superficial... y me tiraron con el fardo... eramos dos en el proyecto, ninguno con orientación a Genexus.... el proyecto salió, o está saliendo, pero lo primero que saqué en limpio son dos cosas: primero, Genexus apesta, y segundo, no vuelvo a trabajar en eso... prefiero volver a hacer sistemas para ventas de mercadería porno en php que volver a tocar GXS. Seguro que colaboró para esta decisión el poco tiempo que tuvimos para aprender y desarrollar la aplicación (el mismo, es decir, aprendimos y desarrollamos en paralelo), con sesiones de trabajo de hasta 15 horas, 7 días a la semana por 3 semanas... Y cuando más o menos parecía que el proyecto venía encarado, aparecieron los que siempre aparecen: los cambios... y vuelta a revisar todo... para esta parte yo ya pude apartarme un poco pero igual estaba clavado en eso. Por si fuera poco, al mismo tiempo estaba haciendo dos materias en facultad, ambas con entregas obligatorias... en la asignatura Introducción a los Compiladores tengo que agradecer enormemente a la otra persona con la que hice grupo porque se puso los guantes y sacó gran parte, la mayor parte, de la entrega ella sola (y lo peor es que no es la primera vez, gracias!!!), mientras que en la segunda, Métodos Numéricos, de cuatro que formamos el grupo prácticamente sólo dos lo sacamos, y nuevamente, yo en segundo lugar... pero en esta creo que aporté lo suficiente.

Todo lo anterior fue para justificar el no haber aportado nada durante... casi dos meses! Bueno, espero que ahora todo vuelva a la normalidad (espero que estos dos últimos meses no sean la normalidad).

Mi experiencia con genexus
Como sea tengo que sacarme este odio que acumulé durante mes y medio contra Genexus.... cuando comencé el proyecto no estaba en 0, ya había visto algo en un curso superficial... lo suficiente para saber que no era lo que yo quería, sino mas bien lo opuesto. Por eso, cuando me preguntaron si estaba dispuesto a encararlo, quise decir que no... pero claro, no era una pregunta, y por lo tanto no esperaban respuesta. Y así empezó. Al principio, leyendo manuales, buscando en internet y probando (bastante de tire y pegue); también un compañero ya había pasado por el período de aprendizaje (con curso oficial incluido) y aunque estaba hasta las manos con otro proyecto, le rompimos bastante la paciencia preguntándole cosas. Y así continuó. Con el correr de los días fuí aprendiendo a manejar al bicho, no siempre se dejaba, pero aprendí también a dominarlo. Pero dados los tiempos que manejábamos prácticamente fuimos haciendo las pruebas ("a ver si esto funciona...") sobre el sistema real, y obviamente, cuando llegamos a algo que andaba, así quedaba y a otra cosa... con el tiempo fuimos aprendiendo más hasta poder reconocer que cosas que hicimos al principio (y que forman parte del sistema actual) se podrían o deberían hacer de otra manera... pero ya no hay tiempo, ni voluntad, para cambiarlo. Seguro que el sistema resultante no es algo que me enorgullezca, pero como diría un gran filósofo contemporáneo que las cosas de la vida lo llevaron a relatar partidos de fútbol por la radio, "es lo que hay, valors!".

Fueron muchas horas, muchos días, varias semanas... tres semanas que trabajamos un promedio de 12 horas los 7 días... eso da: 12 X 7= 84 horas semanales!, cerca de 300 horas mensuales! se acercó bastante a febrero pasado cuando aún estaba en el otro trabajo y llegué a 315 horas mensuales... (lo normal sería 9 horas diarias, 5 días a la semana, 4 semanas al mes, 9 X 5 X 4 = 180 horas...). Y encima en esta oportunidad no me pagan extras! Bueno, ya lo descontaré en la licencia (supongo).

Volviendo a Genexus. Para comenzar, me parece que es lo más antinatural en cuanto a programación se refiere. Y yo que pensaba que era la programación lógica. Para comenzar, el tema de los conceptos, las transacciones y las tablas de la base de datos.... a quién se le puede ocurrir decir que si dos campos de diferentes tablas se llaman igual entonces deben ser exactamente el mismo (y por lo tanto es join forzado; de hecho, es la única forma de hacer join... llamar a dos campos en tabla diferentes con el mismo nombre; gran lío cuando precisamos en una misma tabla hacer referencia a dos entradas diferentes en otra tabla, por ejemplo país de residencia y país de nacimiento; arranquemos con los subtipos). Siguiendo con el tema de la antinaturalidad: la forma de recorrer una tabla es con FOR EACH!!?? Dentro de un foreach asigno a un campo de una tabla un valor y ya lo sobrescribí?

Obviamente, hay que tratar el tema web. Hoy en día la mayoría de los proyectos que se hacen son web y el nuestro no escapó a eso. Ya sé que trabajar en web no es sencillo para ningún programador por las incompatibilidades de los navegadores... y de cierta manera Genexus evita que hayan problemas de ese tipo: impide todo, o casi. Ejecutar código javascript a gusto? No, imposible (o casi).

Y otras cosas que son casi naturales hay que hacerlas utilizando pases mágicos.... por ejemplo, admito que generar reportes pdf es bastante sencillo porque son tratados como un formulario más, muy poco diferente a uno web, salvo por un detalle: no se pueden dibujar tablas! Nosotros tuvimos que diagramar una tabla a puros trazos horizontales y verticales!!! Pero la cosa no se queda ahí... la verdad que resulta muy natural, además de ser lo que precisábamos, que al final del proceso, cuando se apretara determinado botón para confirmar, se abriera un formulario pdf mostrando un resúmen de la información para imprimir... en una nueva ventana.... vaya sorpresa, Genexus no lo permite, se debe utilizar la misma ventana.... a menos que... si, hay un workaround, pero me resultó demasiado bizarro: incluir en el formulario web una etiqueta sin texto y del mismo color de fondo que el formulario, y marcarla como que su formato es html... bien, al hacer click sobre el botón, no se invoca al formulario... simplemente se asigna a la etiqueta anterior el código javascript que abre una nueva ventana utilizando un link al formulario, y luego se recarga la página; al recargarse la página, el navegador procesa la etiqueta, reconoce que tiene código javascript y lo ejecuta... y se abre el pdf... simple? Y que pasa si yo quiero validar el texto ingresado por un usuario en un cuadro de texto inmediatamente después que dicho campo perdió el foco (el famoso onblur de javascript)? bueno, es imposible (y no hay workaround): la validación se debe hacer necesariamente a página completa... Bueno, no es tan malo? Y qué si yo tengo dos combos, uno de los cuales muestra opciones que dependen de lo que esté seleccionado en el otro (por ejemplo, en uno tengo departamentos y en el otro ciudades del departamento seleccionado), como hago para que al cambiar el valor seleccionado en uno automáticamente cambie el valor del otro (algo que en javascript puede ser tanto como 5 línas)? bueno, nada, guardamos en la sesión el valor seleccionado, recargamos la página, recuperamos lo que está en sesión y cargamos los combos.... seguro que es muy fácil (y además recarga toda la página cada vez que se cambia la selección en un combo de este tipo).

Otro punto muy negativo es que tiene muchos errores para el supuesto grado de evolución que tiene, estando en la versión 9 (el deployer se me colgaba 2 de cada 3 veces! y un par de veces me bloqueó la base de conocimiento...; tres veces Genexus se me cerró de golpe y sin avisar). Pero no queda allí. La documentación existente es, por decirlo de una forma sencilla, horrible. Tiene cierto aire a MSDN (Microsoft Developper Network) sólo que a diferencia de ésta, resulta insuficiente la mayoría de los casos. Peor aún, la ayuda que acompaña la distribución (el formato propio de MS Windows) está incompleto, y encontré muchos links que no funcionan.... al final terminé usando la ayuda online (que es la misma pero en la cual funcionan todos los links). Por supuesto, para desarrollar decentemente en Genexus, digo, en un proyecto en serio, es menester contratar soporte telefónico a la empresa que lo fabrica y vende (Artech). Sin dicho soporte hay muchas cosas que sólo se sacan adivinando; y con dicho soporte, también. La mayoría de las veces se limitan a decir "Eso debería andar", "No sé... dejame ver... si eso debería funcionar".... "mirá, hacé un xpz y mandalo al repositorio que alguien lo va a mirar y si encuentra el problema te avisamos". Fueron tan pocas las veces que obtuve la respuesta de como hacer algo.... Y para terminar, está la página GxTechnical, un intento de repositorio de información sobre Genexus... es verdad que se encuentran algunas cosas útiles (pocas), pero la prsentación es patética. Por ejemplo, usando firefox, algunas secciones sólo se ven con 5 centímetros de alto, con mucho scroll (y el resto de la página en blanco).

Bueno, creo que ya hice catarsis, aunque en realidad el proyecto aún no ha terminado y me seguiré viendo con Genexus. Espero que por poco tiempo más.

Nueva etapa, destino: La Paz
Si no pasa nada, dentro de una semana comienzo una nueva etapa a nivel profesional: dejo por unos días el desarrollo de software y paso a capacitación: soy instructor! Es un curso no muy complicado pero tampoco fácil. Y en La Paz, Bolivia. Esto es, si no pasa nada, digo, por la situación que vive el país del altiplano por estos días. La verdad es que es un reto. Admito que me gusta pararme frente a un montón de gente y dar alguna charla o presentación, pero no por eso estoy menos nervioso. Y además, en esta oportunidad se suma el hecho de salir del país, el viaje en avión (volar no me asusta, me preocupa llegar al suelo demasiado rápido) y el hecho de tener que preparar el curso yo mismo recolectando material de todas partes... en fin, como decía, todo un reto. Ya veremos que pasa. Dentro de dos semanas todo habrá terminado... o recién habrá comenzado?
¿Y esta publicidad? Puedes eliminarla si quieres.

4 comentarios

Frustrado -

Trabajo con GeneXus y la verdad me parece una pérdida de tiempo. Casi todo te produce errores. Me acaba de tirar un error que me obligó a borrar un web panel en el que llevaba horas trabajando. Creo que si estuvieramos utilizando Visual Studio directamente en el proyecto en el que trabajamos ya estuvieramos más adelantados. Cualquier cambio te demora horas. Si me voy a costo/beneficio creo que GeneXus no vale lo que cuesta y si eres un desarrollador (en mi caso no lo soy) puedes hacer un código mucho más eficiente sin GeneXus. Nuestra aplicación (C#) no está terminada y ya mide más de 400 megas.

bunset -

que raro todo, yo uso genexus y estoy muy contento con la herramienta, también uso php con drupal pero con genexus voy de maravilla, claro que la linea de aprendizaje puede llevar un par de años jugando con él pero luego muy bien, paciencia y ánimo
¿Y esta publicidad? Puedes eliminarla si quieres

Pablo -

Hola amigos, al leer lo que escriben me trae a la memoria que debo estudiar un curso de flash, porque traigo esto a colación, bueno porque intentar usar Flash sin haber seguido un curso formal a cualquier persona hace sentirla impotente y es que sin un curso formal es muy difícil aprender y sacar un proyecto a la vez, saben que en mi caso programo con Genexus desde hace algo más de 16 años y todo lo que dicen Uds. no son más que el vía crucis que debe transitar una persona que se entra a un proyecto sin el conocimiento necesario, es como poner a volar un jet a una persona que aprendió a volar en planeador, mi consejo es que la preparación adecuada ahorra mucho tiempo, esfuerzo y canas a las personas que como nosotros debemos siempre entregar proyectos contra reloj.

En todo caso me hago la promesa de estudiar flash para dejar de sentirme como Uds. ahora se sienten con Genexus.
Saludos.

marcelo -

Mi amigo tu historia es muy parecida a la mia, solo que un año despues. Buscando como verificar como validar que en un maestro detalle no ingresen cabeceras sin lineas me tope con este articulo, que dicho sea de paso con genexus es lo que hay (a veces me recuerda lo artesanal de php... que similitud para una herramienta generadora de codigo), y a ver... sigo esperando por ROCHA
¿Y esta publicidad? Puedes eliminarla si quieres