Charlas de presentación del máster Telefónica en desarrollo avanzado

Como lo prometido es deuda, por fín han anunciado los horarios y la programación de las charlas de promoción del máster que podéis encontrar resumidas a continuación y en detalle en el enlace anterior:

Todas las charlas son en el edificio Oeste 1, sala F11 a las 09:30h. Mi recomendación es que lleguéis con tiempo para gestionar el permiso de entrada.

¡Nos vemos allí!

Master Telefónica en desarrollo de software avanzado en la U-TAD

Los que sigáis este blog sabéis de sobra que soy desarrollador de Firefox OS en Telefonica I+D y profesor de JavaScript en mis ratos libres. Empezando este Octubre también impartiré, junto a compañeros de profesión, parte del Máster en desarrollo de Software Avanzado en la U-TAD.

Podéis leer la información oficial del máster en la página de la U-TAD y la no oficial, a continuación…

Seguir leyendo «Master Telefónica en desarrollo de software avanzado en la U-TAD»

Trabajando en FirefoxOS

Como os prometía, aquí tenéis la traducción al español del artículo que se publicaba ayer sobre cómo era trabajar con Mozilla en Firefox OS:

Escuchando las noticias del MWC 2013 y a la mayor parte de la prensa especializada te das cuenta de casi nada se ha dicho del enorme esfuerzo realizado por Telefónica I+D en materia de desarrollo en FirefoxOS (aunque se puede encontrar una importante mención por parte de Gary Kovacs en la rueda de prensa completa). Quizá Telefónica no tenga la mejor reputación en España pero puedo asegurar que la división de investigación y desarrollo, TID, está llena de personas de gran valor y que la compañía está haciendo lo mejor que puede por reclutar desarrolladores y managers con talento.

Quiero hablar de cómo es trabajar en FirefoxOS. Como probablemente sepas (o no), me trasladaron al proyecto OWD (Open Web Device) de Telefónica I+D en Mayo de 2012. OWD es el nombre de la iniciativa dentro de TID apoyando el desarrollo de FirefoxOS tanto en back-end como en front-end. Esto significa que hay código de los miembros de TID dentro de Gecko y de Gaia. Gecko es el navegador haciendo de sistema operativo mientras que Gaia es la capa de software con la que el usuario interactúa. Puedes ver el video de demostración del MWC 2013 si quieres conocer más sobre la plataforma.

Trabajar con Mozilla está siendo una experiencia muy enriquecedora permitiendo a miembros de ambas compañías abrir sus mentes a otras formas de trabajar, gestionar, culturas comerciales y motivaciones.

Se dice que los desarrolladores de Mozilla se encuentran entre los mejores hackers del mundo y os puedo asegurar que es mayoritariamente cierto no sólo porque cuenten entre sus filas con reconocidos profesionales sino por la dedicación y pasión que ponen en los retos que enfrentan. Y exactamente lo mismo puede decirse de los ingenieros de TID. Nunca estuve en un equipo tan virtuoso lleno de buenos desarrolladores y managers tan volcados. Este trabajo es mi primera aproximación a un proyecto tan grande con equipos diferenciados para desarollo, calidad y experiencia de usuario.

Sin embargo, también existen puntos de confrontación como es natural en cualquier relación.

Seguir leyendo «Trabajando en FirefoxOS»

Working on FirefoxOS

I was thinking about writing in English and expand the scope of the blog as it is widely read around the Spanish-speaking community. So this is my first English post but I’m planning to translate most visited posts as well. Anyway, I promise to publish another post with the translation of this 😉

Listening the news from MWC 2013 and most of the specialized press media, you realize that almost none is said about the big development effort made by Telefónica I+D on FirefoxOS (but can find an important mention from Gary Kovacs in the complete press conference). Maybe Telefónica does not have the best reputation in Spain, but I can ensure the research & development division, TID, is full of valuable people and the company is pushing hard to chase talented developers and managers out there.

I want to talk about how working on FirefoxOS is. As you probably know (or not), I was moved to OWD (Open Web Device) project in Telefónica I+D in May, 2012. OWD is the name of the initiative inside TID supporting FirefoxOS development both in back-end and also in front-end. This means there are code from TID members inside Gecko and Gaia. Gecko is the browser acting like the operating system while Gaia is the software layer the user will interact with. You can see the demo video of the MWC 2013 if you want to know more about the platform.

Working with Mozilla is being a very enriching experience allowing members from both companies to open their minds to other ways of work, management, company cultures and motivations.

Mozilla developers are said to be between the best hackers in the world and I can assure you it is mostly true; not only because they have recognized experts in their ranks but because the passion and dedication each of them put in the challenges they face. And exactly the same can be said about the engineers in TID. I’ve never been in such talented team plenty of good developers and willing managers. This job is my first approach to a big project with differentiated teams for Development, Quality Assurance and User eXperience and I’m proud to say I’m in this awesome team.

Although, there have been some confrontation points too as it is natural in any relationship.

Seguir leyendo «Working on FirefoxOS»

Un año en Telefónica I+D

Pues así de sencillo: un año en Telefónica I+D. Y cumpliendo los 6 años trabajando.

Y ha sido un año bastante intenso, vaya. Comencé programando en Python y he acabado con JavaScript. Pero no me quejo. Al contrario, estoy muy contento con mi proyecto actual: OWD y B2G (sí, sí, con Mozilla y Telefónica I+D. Ya le dedicaré un post sólo a él, lo prometo).

Durante este año he tratado infructiosamente de sacarme un máster (ojo, que aun queda septiembre, x) y me he independizado (dos veces que no es poco). He conocido a gente muy interesante en charlas y eventos y he tenido la oportunidad de trabajar en tareas realmente desafiantes que han mejorado mis conocimientos y expandido mis horizontes.   Me ha ido bien. De hecho, visto cómo está el país, me ha ido de p*t* madre. Pero mal de muchos, consuelo de bobos y más cuando uno de esos muchos también soy yo.

Política aparte. ¡Qué duro es cambiar! Un comentario de una compañera me indujo a la siguiente reflexión. Ella dijo que le daba pereza cambiar de proyecto porque había que demostrar lo que vales de nuevo. Ahora que me he cambiado puedo perfilar que realmente, te tienes que demostrar que vales. He pasado unos días muy intranquilo, porque el proyecto actual es inmenso, las reuniones son en inglés, recibo 30 correos diarios y casi me ahorco más de una vez con Git. Y encima me sentía un lastre para los compañeros que me proporcionaban ayuda preguntando todo el rato y discutiendo lo que no veía del todo claro o lo sobre lo que no estaba del todo de acuerdo

Pero después de superar la tarea entre manos, que ha sido dura y no en una semana especialmente tranquila, me doy cuenta de que sigo valiendo y eso me alegra y renueva mis energías. Luego insisto, estoy muy contento con el curro.

En fin, me permito felicitarme y desearme a mi mismo un mejor nuevo año. Para terminar, decir que además este proyecto está lleno de viajes chulos o al menos, oportunidades. Ahora tendremos una semana desarrollando con la gente de Mozilla codo con codo y para Agosto quizá un viaje a Brasil.

La línea más larga que he visto en mi vida

¿Os acordais de cuándo comentaba se era ético / profesional modificar el código de otros?

Bien, y si me encuentro algo como esto:

                            var newLine = $("<div>").addClass("menuWindow").html('<ul id="topWindowMenu">' + addLi('search' + incidenceId, 'Search', 'opMenuWindow search') + addLi('mine' + incidenceId, 'Assign to me', 'opMenuWindow mine')  +  addLi('delegate' + incidenceId, 'Delegate', 'opMenuWindow delegate') + addLi('transfer' + incidenceId, 'Transfer', 'opMenuWindow transfer') + addLi('task' + incidenceId, 'Task', 'opMenuWindow tasks') + addLi('print_incidence' + incidenceId, 'Print', 'opMenuWindow print') + addLi('save_incidence' + incidenceId, 'Save', 'opMenuWindow save') + addLi('refresh' + incidenceId, 'Refresh', 'opMenuWindow refresh') + '</ul>');

¿Ahora qué hago? Son 664 caracteres. Más de 8 folios, uno al lado del otro.

EDIT: Una apreciación paterna. De 664 caracteres, los 7 primeros son tabuladores destinados a mejorar la claridad del código. Es decir, el 1.05% de la línea está destinada a mejorar la legibilidad.

Del amor propio a la obsesión por lo que es mío

El viernes tuve un día realmente malo en el trabajo pero creo haberlo resuelto correctamente. El caso es que aun hoy sigo dándole vueltas a lo acontecido y reflexiono sobre lo que pasó.

Resulta que el viernes a última hora, un compañero de trabajo y yo modificábamos el mismo archivo pero realizando tareas completamente distintas. Mientra él ajustaba ciertos detalles de apariencia, yo trataba de mejorar algunos aspectos del comportamiento. Mi compañero tiene la costumbre (para mí, arriesgada) de realizar un sólo envío (al finalizar la jornada) al repositorio de versiones mientras que yo suelo subir versiones estables cada menos tiempo (un par de horas o así). El caso que a eso de las 12.00h del viernes mi jefe nos pide mezclar los archivos. Para ello primero subiría los cambios mi compañero y luego yo.

Cual es mi sorpresa cuando mi compañero, abrumado y enfurecido, me pregunta que por qué he subido yo primero y me acusa de haber realizado un montón de cambios. A esto le sigue una sucesión de frases que, sin faltar al respeto en ningún momento, me tachan de soberbio, afirmando que sólo tolero el código que yo creo, que «lo de los demás no vale» y que «por eso tengo encontronazos con todo el mundo» amén de que tengo la mala costumbre de pisar el trabajo de los demás*.

(*) Este asterisco viene de una vez en la que sí metí la pata y me cargué sus cambios al desestimar un conflicto. Volver a una versión anterior y resolver la mezcla me llevó 10 minutos. Es lo bueno de los repositorios de versiones, nada se pierde.

Mi respuesta es invitarlo a comprobar que no he realizado ningún cambio reciente, que el último es de las 10.00h de la mañana y que mi trabajo también incluye la modificación de esos archivos. También le propongo mezclar yo los archivos dado que estimo que no me llevará más de 15 minutos pero él insiste en que ha cambiado demasiado y que la mezcla llevará al menos una hora. Trato de que considere que tales cambios sólo son producto de que mi editor de texto ha reemplazado los tabuladores por espacios y que por eso parece mucho más de lo que hay…

En este momento llegan mis jefes que preguntan que qué pasa. Mi compañero insiste en que he realizado un montón de cambios, que subí los cambios si cerciorame de que nadie estuviera tocando el archivo y que la mezcla durará una hora. De nuevo indico mi intención de asumir la responsabilidad y de mezclar yo dado que reconozco que no pregunté si alguien estaba usando el archivo porque, para mí, el proceso de mezcla es parte del ciclo de desarrollo. Finalmente tomo la siguiente decisión: que se desestimen mis cambios y se reemplace mi versión por la suya. Una vez hecho esto afirmo que podré reconstruir los cambios en unos 15 minutos que es lo que me llevará mezclar el código con mi versión local.

Primeramente indico al visor de diferencias que no tenga en cuenta los espacios en blanco lo que convierte los dos grandes bloques de modificaciones en algunas líneas sueltas. A continuación resuelvo la mezcla en 20 minutos. Ni más ni menos. Compruebo que mis cambios en ese archivo a penas llegan al 10% de los totales. Pero la verdad, esto ya lo sabía.

Seguir leyendo «Del amor propio a la obsesión por lo que es mío»