Tinselcity

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
old:ay_ay_ay_agile [2020/06/28 02:41]
flynn
old:ay_ay_ay_agile [2020/10/10 12:58] (actual)
flynn
Línea 421: Línea 421:
 ---- ----
  
-Está Avelino a mi lado con el Arquitecto.+Está Matthew a mi lado con el Arquitecto.
  
 > Pues gracias; ya sé por dónde tirar - dice > Pues gracias; ya sé por dónde tirar - dice
Línea 980: Línea 980:
 Pierdo la paciencia con Montgomery. Monty, que se supone((porque así lo dice su perfil en la web de la empresa y así lo dice también su perfil de LinkedIn)) que es //senior software engineer//, no solo pregunta las cosas más básicas, sino que luego necesita múltiples explicaciones, porque //cree que lo ha pillado//, pero luego resulta que no. Montgomery no solo ignora los consejos sino que alegremente llama "lo que a ti te gusta" a cualquier argumento que le pueda dar. Pierdo la paciencia con Montgomery. Monty, que se supone((porque así lo dice su perfil en la web de la empresa y así lo dice también su perfil de LinkedIn)) que es //senior software engineer//, no solo pregunta las cosas más básicas, sino que luego necesita múltiples explicaciones, porque //cree que lo ha pillado//, pero luego resulta que no. Montgomery no solo ignora los consejos sino que alegremente llama "lo que a ti te gusta" a cualquier argumento que le pueda dar.
  
-Ha pasado unos 3 días poniendo una imagen en una página. Me dijo que, ya que tenía que poner la imagen, quería limpiar la página porque era //un follón//. Y lo era, sí. Poner la imagen llega aproximadamente 10 minutos, pero me pareció bien lo de limpiar esa página. Además Montgomery no sabe CSS pero quiere aprender, así que era una buena manera de hacer ejercicio. Pensé que sería bueno darle algunas indicaciones y le  hice una lista de 5 o 6 puntos o pautas a seguir. Cosas que había que eliminar y formas de hacer las cosas bien para no volver a liarlo. Como otras veces que le digo algo así, la idea es que //primero// limpie y luego sitúe la imagen donde debe ir. Como otras veces que le he dicho algo así, Monty ha ignorado esto. Primero ha metido la imagen, ha pasado 3 días intentando conseguir ponerla donde debía ir, y luego se ha dado cuenta de que si se ponía a limpiar la página ahora, tendría que volver a colocar bien la imagen, que llevaba ya 3 días con eso y que ya no tenía ganas de rehacer el trabajo. Así que ha subido lo que tenía y todas esas ganas de limpiar la página, de aprender, de dejarlo bien, nos olvidamos de ellas. Me siento culpable, pero no creo que siga ayudándole.+Ha pasado unos 3 días poniendo una imagen en una página. Me dijo que, ya que tenía que poner la imagen, quería limpiar la página porque era //un follón//. Y lo era, sí. Poner la imagen lleva aproximadamente 10 minutos, pero me pareció bien lo de limpiar esa página. Además Montgomery no sabe CSS pero quiere aprender, así que era una buena manera de hacer ejercicio. Pensé que sería bueno darle algunas indicaciones y le  hice una lista de 5 o 6 puntos o pautas a seguir. Cosas que había que eliminar y formas de hacer las cosas bien para no volver a liarlo. Como otras veces que le digo algo así, la idea es que //primero// limpie y luego sitúe la imagen donde debe ir. Como otras veces que le he dicho algo así, Monty ha ignorado esto. Primero ha metido la imagen, ha pasado 3 días intentando conseguir ponerla donde debía ir, y luego se ha dado cuenta de que si se ponía a limpiar la página ahora, tendría que volver a colocar bien la imagen, que llevaba ya 3 días con eso y que ya no tenía ganas de rehacer el trabajo. Así que ha subido lo que tenía y todas esas ganas de limpiar la página, de aprender, de dejarlo bien, nos olvidamos de ellas. Me siento culpable, pero no creo que siga ayudándole.
  
 También pierdo la paciencia con otros temas. Las interrupciones injustificadas. Estaba hablando con Montgomery. Explicándole que lo que había hecho para situar la imagen donde debía ir era añadir más follón a la página y que solo necesitaba 4 propiedades de CSS en un elemento. He tenido que explicarlo varias veces porque él no es mucho de prestar atención cuando parece que presta atención. Y según lo estoy repitiendo una vez más porque de nuevo se había distraído la vez anterior, pasa Johnny. También pierdo la paciencia con otros temas. Las interrupciones injustificadas. Estaba hablando con Montgomery. Explicándole que lo que había hecho para situar la imagen donde debía ir era añadir más follón a la página y que solo necesitaba 4 propiedades de CSS en un elemento. He tenido que explicarlo varias veces porque él no es mucho de prestar atención cuando parece que presta atención. Y según lo estoy repitiendo una vez más porque de nuevo se había distraído la vez anterior, pasa Johnny.
Línea 1036: Línea 1036:
  
 Eso sí, hay algo en lo que sí somos Agiles, muy Agiles. Cada vez que surge cualquier situación en la que hay que ejercer algo de responsabilidad o tomar alguna decisión no-técnica, quien debería hacerlo se lava las manos y dice aquello de "Organizáoslo vosotros, que para algo sois un equipo Agile". Eso sí, hay algo en lo que sí somos Agiles, muy Agiles. Cada vez que surge cualquier situación en la que hay que ejercer algo de responsabilidad o tomar alguna decisión no-técnica, quien debería hacerlo se lava las manos y dice aquello de "Organizáoslo vosotros, que para algo sois un equipo Agile".
 +
 +----
 +
 +Hoy era la //última// subida de esta versión.
 +
 +A mi me da un poco igual, la verdad, pero creo que si hay unos compromisos de dos versiones anuales, con unas fechas cerradas, pues esas cosas se deberían respetar. Pero no. La última subida será dentro de dos días porque... //ya que estamos, vamos a meter un par de cositas más, cositas pequeñas//.
 +
 +Lo que no parecen entender es que "cositas pequeñas" hay todas las que quieras y podríamos estar metiendo cositas pequeñas hasta el año que viene. Y si haces eso, entonces no hay una fecha de entrega de una versión, lo que hay es meter parches continuamente. Porque, claro, se podría pensar que esto no está mal, que podría ser una especie de "entrega continua" con subidas constantes a producción y eso podría tener sus ventajas. Pero no, tampoco es eso porque la fecha sigue estando ahí. Todo esto que se hace de subir parches se hace deprisa y corriendo en las semanas alrededor de la fecha de entrega.
 +
 +Desde unas semanas antes hasta mes y medio o dos después, todo es "ya que estamos, si da tiempo a hacer esto aunque sea así deprisa, pues lo metemos".
 +
 +En fin, no hay planificación alguna. No sé por qué me sorprendo aún.
 +
 +----
 +
 +Monty me pregunta. No sabe preguntar, pero bueno, intenta mejorar en eso. Lo que pasa es que me pregunta algo que no se puede hacer. Es comunmente sabido que no se pueden cambiar varios de los estilos de un elemento ''<select>'', pero eso es justo lo que quiere hacer. Monty es, según su perfil, "desarrollador senior", aunque pregunta cosas mucho más básicas que esto, como usar un bucle o cosas así.
 +
 +Le digo que lo del ''<select>'' no se puede, que es un tema conocido y no se puede cambiar a no ser que dejes de usar el elemento ''<select>'' nativo y te construyas uno tú. Que es una opción porque tenemos también de esos en la aplicación. Pero este es un ''<select>'' y Monty quiere cambiarlo pero seguir usando un ''<select>'' nativo. Insisto: No es posible. Y sin poder hacer nada, lo dejamos ahí.
 +
 +Los tres días siguientes Monty los pasa intentando hacer lo que no se puede hacer. Al cabo de esos días le veo que lo está intentando y le pregunto por qué sigue aún con eso. Lo habló con el Arquitecto y este, como no sabía que no se puede hacer, le dijo que lo intentara. Y como Monty no se fía de lo que yo diga, pues tres días perdidos.
 +
 +Y como no se fía, le paso un trozo de texto sacado de [[https://developer.mozilla.org/|MDN]]. Y como aún no se fía, sigue intentándolo un día más. Al final, desiste. Y me dice que va a cerrar la incidencia y que si le paso el enlace de MDN para ponerlo.
 +
 +Yo ya he llegado a mi límite, lo confieso, y le digo que creo que debería ser capaz de buscar una página en MDN. //Oh, sí, la buscaré.// - dice. Al rato, veo la incidencia cerrada y veo que no ha puesto el enlace. No sé si no lo ha encontrado o si ni siquiera lo ha buscado, pero me da igual.
 +
 +----
 +
 +> Pero, ¿Esas columnas están indexadas?
 +>> Sí, sí, claro que sí... bueno... indexado no sé lo que significa.
 +
 +----
 +
 +Tenemos un problema de exceso con los tipos de columnas. Las tablas que usamos permiten definir el tipo de dato que tiene una columna y nosotros tenemos //demasiados//. Es el resultado de que nadie se preocupara durante años por mantener un cierto orden. Así, se han ido añadiendo tipos de columnas que son prácticamente iguales solo que las hicieron diferentes personas y no se hablaban entre ellas((O, en algún caso, las hizo la misma persona pero no sabía como parametrizar un detalle)).
 +
 +Hay algunos tipos básicos, como ''txt'' para texto, ''n'' para números, o ''date'' para fechas. También hay algunas variantes, con los prefijos ''ro'' (solo lectura) y ''ed'' (editable), que producen por ejemplo ''rotxt'' un texto de solo lectura o ''edn'' un número editable.
 +
 +En un intento de poner un poco de orden, pasé unos días catalogando todos los tipos en el wiki del proyecto en una tabla horrible y triste que más que explicar, reflejaba el jaleo que había montado. Al principio de la página, en rojo y negrita una petición casi desesperada para que, por favor, nadie añada más tipos de columna y que si alguien siente la necesidad de hacerlo lo hable conmigo antes. Como mínimo para añadir el nuevo tipo a la tabla, pero idealmente para que //no// se añadan nuevos tipos que no son necesarios. Más que nada porque tenemos, por ejemplo, 16 tipos de columna que son exactamente lo mismo, un ''icono'' que al pulsar llama a a una función.
 +
 +Hace unas semanas, por supuesto sin decir nada, Martin añade un nuevo tipo de columna. Lo encuentro hace unos días por casualidad mientras reviso //commits//. Obviamente no lo ha añadido al wiki ni ha dicho nada a nadie porque eso es mucho esfuerzo. Pero además, al buscar la nueva columna veo que se llama... ''edrotxt'', y que como dice el comentario que lleva delante es //"texto de solo lectura pero editable"//. Signifique eso lo que signifique en la cabeza de Martin.
 +
 +En fin, me tocará hablarlo con él y él no escuchará porque no escucha nunca. Pero bueno, habrá que intentarlo.
 +
 +----
 +
 +Llevo ya un tiempo viendo uno de esos errores básicos de concepto que están ahí en el proyecto desde el principio, desde hace más de doce años.
 +
 +En Java se pueden sobrecargar métodos. Un método, dos -o más- juegos de parámetros diferentes. En JavaScript no se puede, no hay sobrecarga en la definición de funciones. Si redefines una función con otra forma, pues la nueva definición aplasta la antigua y ya está.
 +
 +Hace 12 años, alguien no sabía esto y en varios lugares del proyecto me encuentro de vez en cuando funciones escritas //como si JavaScript tuviera sobrecarga//.
 +
 +No me sorprende ya mucho, pero me pregunto por qué ni el autor de ese código ni nadie durante 12 años se ha dado cuenta nunca de que eso no funcionaba. Oh, bueno, la respuesta no es tan difícil, claro. Es una mezcla de no saber y no querer.
 +
 +En fin... Otra tarea de limpieza más.
 +
 +----
 +
 +La aplicación es //tan de los noventa// que tiene un relojito siempre visible con la fecha de hoy y la hora. Es un reloj minúsculo y en gris sobre blanco así que es muy probable que llegue a ser útil a quizá un usuario o menos.
 +
 +El reloj se actualiza cada segundo. Una vez por segundo se busca el ''<div id="tiempoHora">'' en el DOM y se actualiza su valor pintando la nueva hora. Solo se pintan, eso sí, horas y minutos. Desde hace 13 años y medio. 59 actualizaciones inútiles y una que vale.
 +
 +Ya, no es un gran problema. Solo es estúpido. Como todo aquí.
 +
 +----
 +
 +Aisha es otro nivel de desagrado. Aisha habla //siempre// como si el resto de las personas del universo fueran cretinos. Que, en el fondo, no está muy desencaminado, no. Pero claro, cuando una está incluida en ese grupo, es particularmente ridículo despreciar a los demás.
 +
 +Aisha en realidad no habla. Lo que hace es protestar. Siempre. No dice "Pasa esto". Dice "¿Cómo es //posible// que pase esto??!". Y tampoco habla en el sentido de que lo que hace es gritar. Alguna vez se le escapa una o dos palabras a un tono normal, pero es la excepción, porque lo que hace normalmente es gritar. Tiene también una forma de gritar en la que va elevando el volumen de cada palabra haciéndola más agresiva que la anterior. Tengo la teoría de que tiene un tono de voz especial, una especie de //Tono Shepard// de esos que parece que siempre aumentan indefinidamente.
 +
 +Aisha se acerca a Karen con firmeza en su mirada y protesta:
 +
 +> ¡Tenemos un agujero! ¿Cómo puede ser?!
 +
 +Casi me dan ganas de explicarle que los humanos tenemos más de un agujero, pero me guardo mi ocurrencia para mi porque intuyo que lo que viene ya tendrá su propia gracia. Y así es, durante los siguientes 20 minutos, Aisha le //explica//((grita)) a Karen que hay un problema en la aplicación. No pillo todos los detalles pero así en líneas generales parece algo ciertamente grave. Es algo como que, metiendo unos datos muy simples en una pantalla, se puede saltar una validación de la cantidad de artículos haciendo que se descuadren los //stocks//. Algo que de ser cierto, es muy básico y fundamental y rompería la consistencia de una aplicación de logística, claro.
 +
 +> ¿Cómo es posible que esto pase?! ¡Tiene que haber habido algún cambio porque esto antes no pasaba!
 +
 +Aisha, obviamente, no contempla siquiera la posibilidad de que algo así se le haya escapado en las pruebas. "//Tiene que// haber sido algún programador que ha cambiado algo y lo ha hecho mal" - insiste. Sea como sea, una vez convencida Karen de la gravedad del asunto, se ponen a probarlo, a intentar reproducirlo en la aplicación. Son otros 35 minutos de gritos. //"¡No! ¡Pon ese campo a cero!"//, //"¡No!! ¡El otro campo!"// y así. Al final, tras esa media hora larga, tiene que desistir. No consiguen reproducirlo; la aplicación funciona como debe.
 +
 +Pero Aisha no está derrotada. Se va a su puesto amenazando que lo seguirá probando en su sitio porque ella //desde luego// que lo ha hecho antes.
 +
 +Diez minutos después vuelve...
 +
 +> Karen... ¡Que no lo puedo reproducir! ¡Alguien ha hecho algo!
 +
 +Y Karen no la creería... salvo que "cosas más raras se han visto". Así que simplemente asiente y le dice que por lo menos eso significa que la aplicación funciona como debe, ¿no? Aisha se va, no convencida por ese argumento, seguramente a buscar otro motivo por el que gritar a alguien.
 +
 +----
 +
 +Hace tiempo, en una reunión en la que el Arquitecto proclamó que él hacía todo bien, comenté que algo que había encontrado por el código era un buen puñado de sitios en los que alguien había decidido usar ''eval'' de forma totalmente innecesaria. El Arquitecto no solo mostró sorpresa sino que comentó algo que dejara clara la evidente obviedad de que eso debía haberlo escrito alguno de los seres inferiores (cualquiera del equipo salvo él mismo).
 +
 +Hoy mientras hacía algunas tareas de limpieza he encontrado un cierto fragmento y, aburrido y triste por otros asuntos que había traído la mañana, he decidido buscar en el historial del repositorio. El fragmento era este:
 +
 +<sxh javascript>
 +/**
 + recibiendo el id de un campo select y un valor, busca este ultimo entre los valores
 + del select y si lo encuentra lo marca
 +*/
 +function setSelectValue(selectId, value) {
 +  eval('selectObject = document.getElementById("'
 +    selectId + '");');
 +  if (selectObject) {  
 +  for(index = 0; 
 +    index < selectObject.length; 
 +    index++) {
 +    if(selectObject[index].value == value)
 +    selectObject.selectedIndex = index;
 +    }
 +   }
 +}
 +</sxh>
 +
 +Así, con esa misma indentación... Que es otra de las cosas que el Arquitecto atacó fácilmente con un "Es que no se debería dejar nunca que se metiera código en el repositorio que no tuviera un mínimo de orden y estuviera bien //identado//"((El Arquitecto no dice "indentar", dice "identar"; probablemente porque, como la mitad de las cosas que dice, no sabe bien del todo lo que significa)). Pero sobre todo me llamó la atención el comentario. Porque es el tipo de comentario que escribe el Arquitecto; encaja con su forma de hablar.
 +
 +Y efectivamente ahí estaba. Abril de hace 12 años. Escrito y subido al repositorio por el propio Arquitecto. Así con ese horriblemente innecesario y ridículo...
 +
 +<sxh javascript>
 +  eval('selectObject = document.getElementById("' + selectId + '");');
 +</sxh>
 +
 +Y en mi aburrimiento he seguido tirando del hilo y han aparecido toda una serie de usos similares de ''eval'' y todos y cada uno de ellos son... sí, del Arquitecto.
 +
 +----
 +
 +Creo que lo de [[old:ay_ay_ay_agile:hasta10000|hasta10000]] lo voy a escribir en su propia página porque ya no sé muy bien si todo esto está ocurriendo realmente o si de repente se abrirá una puerta y saldrán gritando que todo era broma y tirando confetti y qué sé yo.
 +
 +----
 +
 +Llevo tiempo sin mencionar la palabra //Agile//. Es porque ya se han olvidado de eso. El modelo de gestión y organización del proyecto desde principio de año aproximadamente es una especie de //metodología post-apocalíptica//. Es como aquellas pelis de los ochenta y noventa de dibujos animados donde todo es desierto y abandono y ruinas y hay a lo mejor 3 humanos, un perro y algunos robots. Y cada uno va a lo suyo y nadie habla con nadie y hay algún rico tirano que observa desde su fortaleza de acero y cristal y se ríe pero nunca interviene porque no se atreve a mezclarse con el mundo exterior. Y los humanos vagan por las ruinas sin saber bien por qué pero haciendo tareas comunes como para aparentar normalidad en sus vidas pero sus vidas son cualquier cosa menos normales. Y hay un tipo que intenta hacer cosas con trastos viejos como si fuera a reconstruir algo (ese es Gunther el experto en BBDD que aún tiene esperanzas). Y hay otra que cree firmemente que todo es normal y que todo va bien y sigue a lo suyo sin hacer caso a nadie ni a nada. La mayoría simplemente vaga sin ningún interés ya, haciendo su rutina de almorzar, de ocuparse de sus cosas, de cuchichear sobre el tirano, etc.
 +
 +Pues así, pero en una sala, fichando al entrar y al salir, discutiendo por el aire acondicionado, y con el Arquitecto en su casa desde hace 6 meses porque es la única //"persona de importancia para el proyecto"//((Palabras del Traje)).
 +
 +----
 +
 +Hay una tabla que, en el entorno de desarrollo, tiene 3,512,282 registros. Es la tabla en la que se guardan los errores de la aplicación. Los 3.5 millones de errores son solo de los últimos cuatro años que parece que es cuando dejaron de hacerle caso.
 +
 +Creo que es la única tabla que hace la paginación en BBDD y acaba de tardar unos 40 minutos en traerme una página.
 +
 +----
 +
 +Monty vuelve a preguntarme.
 +
 +Sinceramente, cada vez que me pregunta Monty siento que pierdo yo. Si, lo reconozco. Pierdo la paciencia, pierdo las ganas, las de vivir incluso.
 +
 +En el perfil de LinkedIn de Monty se ha puesto como "Programador Senior". De hecho, su perfil muestra varias experiencias como "programador senior" desde 2006 y con montones y montones de conocimientos. "NodeJS, Express y MongoDB", "Programación Funcional", Gulp, Sass, PHP5, Underscore, JSF, SQL Server, Angular, Ionic, PL/SQL... y la foto en blanco y negro, que da más categoría.
 +
 +Monty no tiene ni puñetera idea de ninguna de esas cosas. Pero el problema de Monty no es ese. Su problema es que pregunta, pero no hace caso. Y así nunca aprende.
 +
 +Hoy me pregunta, por un tema de un listado que está haciendo y quiere actualizar una cosa y no se puede. Bueno, //"no se puede"//. Poderse se podría, con mucho trabajo, con más chapuza, y deshaciendo un montón de lo que ya ha hecho. Y todo eso para conseguir, además, que esa actualización funcione diferente de todas las demás que ya ha hecho en ese mismo listado, que es algo que al cliente //seguro// que no le hace gracia.
 +
 +Así que se lo digo. Bueno, nos retorcemos y apretamos intentando llegar a este punto en el que consigue decirme qué es lo que está intentando hacer y yo consigo entender qué es lo que realmente debería hacer. Pero eso son detalles. Llegamos a este punto y se lo explico. //No, no vayas por ese camino. Haz esto otro.// Que además, "esto otro" es muchísimo más simple y ya se lo doy mascado.
 +
 +> Mira, aquí, en este punto del código donde ya tienes estos datos, coges estos otros datos que los sacas con esta función y luego haces una llamada AJAX con todo eso. Y cuando te responda, actualizas esto de aquí con esta otra función.
 +
 +//Vale// - me dice convencido. Ha apuntado lo que he dicho en un editor y parece que lo tiene claro. Yo reconozco que ya me cansa bastante Monty. Podría preguntar más, asegurarme mejor de que lo ha entendido, pero sé que eso no importa. Sé lo que va a pasar.
 +
 +Le dejo mientras vuelvo a hacer mis cosas. Al rato noto que ha llamado a Fred para que le ayude. No quiero meterme, así que les dejo hacer, esperando que quizá con Fred se entienda mejor.
 +
 +Unas tres horas después, Monty, que sigue con Fred al lado los dos trabajando juntos, se levanta y viene de nuevo a preguntarme... Y me pregunta //exactamente lo mismo que me preguntó inicialmente//. Podría pensar que es una broma. Monty tiene un humor poco convencional. Pero no, no es una broma.
 +
 +> ¿Me estás preguntando para hacer lo que hemos dicho hace tres horas que **no** ibas a intentar hacer? ¿Lo que te dije que no hicieras?
 +>> Sí...
 +> ¿Por qué?
 +>> ...
 +> Te acuerdas que te dije hace tres horas que lo hicieras de la otra forma, ¿verdad? Me dijiste que vale. ¿Qué ha pasado con eso? ¿Ha cambiado algo en estas tres horas?
 +
 +No me contesta. Seguramente mi tono no es muy amigable y lo sé. Me contengo todo lo que puedo pero sé que no es suficiente. Le digo que vaya y que lo hagan como le había dicho.
 +
 +Tardan 8 minutos en hacerlo.
 +
 +> Ya funciona - me dice.
 +
 +No sé qué decirle. No es la primera vez que hace esto. Ni la segunda ni la tercera. Ha llegado a perder un par de semanas enteras después de haberme preguntado y haberle dado la solución, solo porque ha querido seguir haciéndolo de la otra forma. Una vez llegué a decirle que como no hacía ni caso de lo que le decía, que no volviera a preguntarme nada. Algo que luego, evidentemente, ninguno de los dos mantuvimos. Pero no creo que podamos seguir así. Tendré que hablar con él, otra vez más. O realmente dejar de contestar sus preguntas. O algo. No sé el qué, pero algo.
 +
 +----
 +
 +Hay una funcionalidad de planificación y control del tiempo. No es genérica, sino que está centrada en las tareas que gestiona la aplicación, en particular tareas de mantenimiento.
 +
 +Se organiza todo alrededor de una tabla en la que se guardan "actividades realizadas", con su fecha, el tiempo empleado y //el concepto//.
 +
 +El concepto es un código. Hasta hace poco había 2 valores posibles: ''1'' y ''2''. El ''2'' significa que es un tiempo invertido en una tarea de mantenimiento. El ''1''... bueno, el ''1'' significa que es //otra cosa//. No es que no lo quiera explicar, es que es eso: O es mantenimiento o es otra cosa.
 +
 +Ahora añadimos el valor ''3'' para tareas de transporte. Esto, en sí mismo es poco importante, pero es el desencadenante para que me encuentre yo con este jaleo entre manos. Jaleo, sí, porque cuando tienes un código con dos valores posibles y uno significa "pues lo demás", está claro que no tienes las ideas muy claras de qué es eso. Y eso se traduce en que no se sabe qué nombre dar a las cosas y el proceso almacenado que saca esta información termina llamándose ''consultarConcepto''. Y peor, cuando los //"conceptos"// se agrupan y ordenan para pintarlos en un calendario, los conceptos se acaban agrupando en dos, obviamente, y uno de los grupos es "otras cosas". Pero no vas a llamarlo "otras cosas" porque sería muy evidente que no sabes lo que estás haciendo, así que el grupo de otras cosas se llama simplemente "concepto" y el otro "tareas" porque se sabe que es tiempo trabajado en mantenimiento y está más claro.
 +
 +Pero no podía ser tan simple. Según la BBDD tenemos ''1'' -> otras cosas -> "concepto" y ''2'' -> mantenimiento -> "tareas". Pero a mitad de camino hacia que esto se pinte en un calendario en la pantalla del usuario, se hace //el twist//. Si es ''1'' se marca como ''tareas'' y si es ''2'' se marca como ''concepto''. Se manda a la página y luego en la página se vuelve a cambiar: ''tareas'' es "no tareas", o sea "otras cosas" y ''concepto'' es "tareas".
 +
 +Cuando le pregunto a Analise, la analista, ya por segunda vez que por favor me confirme que ese ''1'' y ese ''2'' significan lo que tienen que significar, me siento obligado a enseñarle el código que hace el twist para que no piense que es que soy yo el idiota y no me creo lo que dice. Pero sí, el twist lleva ahí unos 8 años. Le enseño el código.
 +
 +> Uh... sí, es confuso, sí... Vaya. No sé por qué estará así... - me dice.
 +
 +Está así porque nadie tiene ni idea de lo que hace, obviamente. No es la primera vez que me encuentro con un //twist// de estos.
 +
 +En fin, sigo con lo mío. Rocky, el tipejo que me ha soltado este marrón porque a él no le apetece hacerlo, es el mismo que me dijo que él no pensaba cambiar nada en absoluto de cómo hacía las cosas y le daba igual todo lo que le pudiera decir. Como es natural, lo que me ha dejado es un montón de mierda copiada y pegada desde otro sitio que es "parecido pero distinto". Me reuní con él y con Analise para que me contara cómo estaban las cosas y cómo me lo iba a dejar Rocky.
 +
 +> Había puesto ya todo lo de las horas extra pero resulta que no hay que ponerlo. Así que ahora lo quito antes de salir, que mañana y pasado yo no voy a estar.
 +
 +Como es "normal", hoy me encuentro que lo de las horas extra sigue ahí puesto. Pero es que es mejor aún. Hay que seguir trayendo los datos de las horas extra de todos modos, aunque no se vayan a sacar, porque Rocky ha decidido meter en esa consulta un dato que no tiene nada que ver y ese sí que hace falta.
 +
 +No voy a discutir con Rocky... sobretodo porque no está, porque cuando suelta una de estas se toma un par de días libres para no estar y que nadie le diga nada. Tampoco es la primera vez que me cae una mierda de estas de Rocky.
 +
 +Y en algún momento de la mañana ha venido el Coronel a agradecernos el esfuerzo de //estar ahí//((que supongo que significa que de trabajar en remoto ni hablamos)) y a decirnos la gran confianza que tiene en la labor técnica del equipo. Supongo que es lo que llaman //confianza ciega//, porque si vieras cómo es de verdad la labor técnica de este equipo no confiarías ni un ápice.
 +
 +----
 +
 +<sxh javascript>
 +total = parseFloat(24);
 +</sxh>
 +
 +----
 +
 +Reconozco que me empieza a costar bastante tratar con Monty...
 +
 +Hace unos seis meses, Monty, Edward y yo aceptamos hacernos cargo (por lo menos temporalmente) de una serie de tareas mayormente de maquetación y algunas cosas más. Son tareas bastante aburridas, la verdad. Ninguno de los tres quería tener que cargar con todo y tampoco el Traje quería tener que dedicar a una única persona de forma exclusiva. Así que entre todos acrodamos que se haría así, conjuntamente.
 +
 +Se creó un usuario genérico en Jira al que se asignarían todas esas tareas y Monty, Edward y yo las iríamos cogiendo sin mucha ceremonia, simplemente según fueramos viéndolas llegar.
 +
 +Seis meses después yo no estaba demasiado contento con algún detalle. Les digo a Edward y Monty que me gustaría que lo habláramos. Les explico que no busco un confrontamiento pero que en seis meses yo he cogido 138 tareas de estas, Edward 78 y Monty ha cogido... //25//.
 +
 +Lo primero que hace Monty es dudar de los números. Los verifica. Luego sugiere que a lo mejor sus 25 tareas son mucho más complejas... pero rápidamente abandona esa idea. Me imagino que intuye que si sigue por ese camino le voy a tener que recordar todas esas veces en que ha perdido horas, días, e incluso semanas haciendo algo que después, cuando ha aceptado hacer como le decía, ha tardado 30 minutos como mucho.
 +
 +Luego Monty confiesa, con toda normalidad, que bueno, que es que él no mira esas tareas desde hace meses. En fin, como digo no busco el confrontamiento, así que para no tener que decirle nada desagradable, le ofrezco que sugiera alguna idea sobre qué podemos hacer y cómo podemos mejorar esto.
 +
 +Monty dice que... vaya, Monty dice que a él le parecería bien que siguiéramos así como lo hemos estado haciendo hasta ahora.
 +
 +Ni siquiera se le ocurre tratar de vestirlo un poco bonito. No se le ocurre decir que sigamos así pero que va a hacer un esfuerzo por coger más tareas ni nada similar. Solo que sigamos así, que a él eso le parece lo mejor.
 +
 +A veces tengo dudas sobre Monty. No sé si es simplemente idiota, si es que no es capaz de entender lo que le están diciendo, o si realmente tiene esta actitud intencionadamente y se hace el idiota.
 +
 +----
 +
 +He encontrado //otro// invento del Arquitecto basado en usar ''eval''.
 +
 +Resulta que hay una media docena de sitios en la aplicación donde hay una pequeña lista de cosas -normalmente enlaces-. Y en un momento dado a alguien por algún motivo se le ocurrió que sería interesante poder ordenar esas listas de varias formas.
 +
 +Estas listas se pintaban desde JavaScript, a base de pasar un //array// con los enlaces y sus textos. La solución parece fácil. Se hace un...
 +
 +<sxh javascript>
 +arrayDeEnlaces.sort(ordenacion);
 +</sxh>
 +
 +...y se le pasa la función ''ordenacion'' como parámetro. El problema es que el Arquitecto no debía saber que se pueden pasar funciones de aquí para allá. Supongo, no sé. Porque la solución del Arquitecto es pasar //el nombre de la función// como una cadena. Y luego, hacer esto otro:
 +
 +<sxh javascript>
 +arrayDeEnlaces.sort(eval(ordenacion));
 +</sxh>
 +
 +Esto además es simpático porque luego resulta que salvo en 1 caso, nunca se pasa nada en ''ordenacion''. //Shrug//