Infojobs usability sucks

The biggest job search engine in Spain is Infojobs. It records for free millions of CVs and any company puts their ads at a very low price.

Until recently you could use it to quickly and easily search for your next job. All you had to do was just throw in a search term and you’d got back a list of inside links to matching ads. Then you could SHIFT+click on any ad you liked and read it and possibly apply for it.

This simple flow has been broken by their new look and (aargh!) feel.

  • They replaced standard urls with javascript urls, thus breaking the SHIFT+click functionality.
  • They made each results page uncacheable, thus breaking the history back functionality.

So now you cannot read just the results you are interested in!!! You only can read the results sequentially by means of basic prev/next buttons.

Matchmind

Voy a contar en detalle la putada que me han hecho.

Pues a mí me hacía mucha ilusión trabajar en Matchmind, más que nada por el sueldo impresionante que se lleva un amigo de Madrid y que tiene un perfil muy parecido al mío.

En ese entonces, ya me habían seleccionado en otra empresa para hacer de programador senior con un sueldo de 28.000 €/año brutos. Pero Matchmind me parecía más sólida, con más futuro, y si bien el sueldo fuese el mismo, el trabajo me parecía mucho más interesante. Así que elegí Matchmind.

Se trataba de un puesto de consultor externo en una unidad de desarrollo en el entorno de mi experiencia, en la IT Factory de una multinacional alemana. Más concretamente, debía coordinar los proyectos entre el jefe del equipo, los 5 desarrolladores, los demás departamentos y filiales localizadas en todo el mundo, a medio camino entre jefe de proyecto, comercial, analista, relaciones públicas. Me habían elegido sobre todo por saber Inglés y por tener más de cinco años de experiencia como analista en ese entorno de desarrollo.

Me hicieron firmar un contrato indefinido con seis meses de prueba. Les dije que me parecía absurdo un período de prueba de seis meses cuando ya llevaba trabajando 10 años! Además en las entrevistas se dejaron escapar que iba a sustituir a un trabajador de otra empresa, que había estado trabajando a penas un mes en ese cliente. De momento se quedaría de baja unos 5 meses más por caerse en la oficina. Les dije que esto me hacía temer que con un periodo de prueba de seis meses el contrato indefinido tenía muchas probabilidades de transformarse en temporal!! Así que por favor me lo redujeran a 3 meses de prueba, que no había porque usar todo el periodo máximo permitido por la ley. Pero no lo conseguí: me dijeron que eso era igual para todos, que todos entraban con seis meses de prueba y que no me preocupara porque el trabajo era a tiempo indefinido en Matchmind.

Otra cuestión que me dejaba perplejo del contrato que me hicieron firmar era la categoría profesional: Consultor. Y porque me dejaba perplejo? Pues porque la señorita de RRHH también tenía la de Consultor. Me parecía una categoría demasiado genérica! Así se lo dije y le pregunté al responsable de la cuenta si le parecía correcta esa categoría, si representaba el tipo de trabajo por el que me estaban contratando. Me dijo que sí, Consultor estaba bien. Finalmente descubrí que en el convenio de consultoras hay tres niveles de Consultor: junior, a secas, y senior. Con abundante holgura la categoría correcta hubiese sido Consultor senior.

Empecé a trabajar en el cliente quince minutos después de firmar con Matchmind. Tras dos horas de presentación del organigrama de la empresa, a cargo del director de la IT Factory, el jefe de equipo (que me había hecho la entrevista de trabajo) me presentó a los programadores, me mostró mi escritorio, mi armario, mi PC, mis contraseñas. Tras dos horas en las que los dos nos fuésemos a comer a un restaurante cercano, a la vuelta me dispuse a trabajar… una media hora. A las 16:25 el jefe de la IT Factory llama al jefe de equipo a su despacho, y cinco minutos después me convoca a mí también.

“Nos hemos enterado de que hace 13 meses tuviste una entrevista de trabajo conmigo y no lo habías dicho”

Es verdad, y qué? Hace más de un año cambié de empresa e hice muchas entrevistas, y una ahí, para un puesto diferente, sería de analista o programador, imagino. Y no, no lo dije. Me pareció irrelevante. Bueno, ES irrelevante. Si lo hubiese dicho hubiese sido incidental. Nadie me ha preguntado y a mi no me gusta hablar más de la cuenta, es mi carácter. Pero la verdad no veo porque me tenga que justificar por una tontería de este tamaño!

“Esto es una falta de transparencia muy, pero que MUY grave. Acabo de hablar con Matchmind y a ellos tampoco se lo habías dicho”

Es verdad… pero no entiendo cuál es el problema. No es que las posibilidades de trabajar en una empresa se agotan tras una entrevista, y además el hecho de que esta vez sí me seleccionasen y antes no, prueba exactamente lo opuesto! Como si los políticos no pudiesen volver a presentarse a las nuevas elecciones. Como si al recibir una negativa de una chica que te gusta no pudieses volver a intentarlo! Es una locura.

“Ya puedes recoger tus cosas”

Me quedé alucinado. Me dispulpé con el jefe de equipo por dejarle en evidencia delante de su jefe, y me fui. Al salir llamé enseguida a Matchmind para saber qué tenía que hacer. Y al cabo de un rato me llama el responsable de la cuenta y me hace una paráfrasis de lo mismo, “Nos has engañado! por lo tanto debemos rescindir el contrato que tenías por no superar el período de prueba” y sólo habían pasado 6 horas desde la firma de aquello, a las 10:30 !!!

Como guinda final, me gustaría que los lectores que hayan tenido el interés suficiente como para llegar hasta aquí, reflexionen sobre el siguiente hecho. Durante la comida, el jefe de equipo, con el que había muy buen rollo, hablando de que los departamentos de la multinacional tienen un control de costes basado en facturarse los servicios unos a otros, me confiesa el coste interno de mi prestación profesional: 80 €/hora. Echando un rápido cálculo, si un año de trabajo tiene 1750 horas, 80 €/hora = 140.000 €/año totales. Ahora, al saber que el salario total se reparte en un 75% al sueldo bruto y en un 25% a los costes sociales, obtenemos 140.000 €/año totales = 105.000 €/año brutos (el sueldo bruto anual de un directivo en el año 2003). Y mi contrato era por 28.000 €/año brutos (el sueldo bruto anual de un especialista con menos de 5 años de experiencia en el año 2003). Los hechos contados se refieren al 1 de junio de 2006.

La pregunta es: ¿Donde hubiese ido a parar el 73% de mi sueldo, o sea 77.000 € cada año?

Refactoring WordPress

I like WordPress because it’s easy to install and use. But I really dislike the way it’s put up.

I’m not going into an exhaustive critic here because I really bend to the dedication coders devote to WordPress. I’ll just say what refactoring WordPress needs.

  1. the architecture must conform to a clean design, with the details hidden in lower layers, but with the mechanics shown in higher ones.
  2. For example, if you open the wordpress/index.php file this is what you find:

    <?php /* Short and sweet */ define('WP_USE_THEMES', true); require('./wp-blog-header.php'); ?>

    which is certainly short and weird for the main code of any software! We shoud see the famous loop here, shouldn’t we?

  3. the documentation must be organized like any other software documentation: A user guide + a developer guide + an API reference + an instant guide.
  4. For example, at this moment in the docs main page there are 114 content links in 8 categories.

  5. any given external name must get an expert approval, before it’s used for the first time. A name is to be considered external if it’s going to be used (or understood) by someone else, be they persons or software, outside the smallest scope where it appears for the first time.
  6. For example, digging in the code I found this function name: maybe_create_table (at wordpress /wp-admin /upgrade-functions.php :332). By its name I’d say that sometimes the function creates a table, and other times it does not. This is true with respect to the chosen implementation, which has been optimized for not creating a table if it already exists. But it’s false with respect to the context, because before executing the function, a table may exist or not, but after executing it, a table will exist for sure. So, maybe_create_table should be renamed as always_create_table, or just create_table. In case of collision with a previous create_table function, it could be named create_table_if_needed. And it’s generally a good idea to sort the words of a multi word name such that in a sorted list of similar objects, similar/related entries will appear near to each other.