sábado, 15 de agosto de 2015

6 Profesiones para un informático que no son la de programador

Cuando comencé las clases de la Universidad, el primer día de clase, suelen preguntar lo siguiente: “cuándo terminéis la carrera, ¿a qué queréis dedicaros? Porque el área del software hoy es muy amplia y engloba muchas profesiones” Vamos, un “de mayor qué quieres ser”.
Curiosamente, la repuesta mayoritaria suele ser un “no lo he pensado”. Las otras respuestas, las de aquellos que si lo han pensado, suelen ser dos: “dedicarme a la seguridad” (que parece estar de moda) o “programar”.
Ni que decir tiene que la respuesta “programar”, en si misma, puede englobar fácilmente decenas de dedicaciones, que pueden venir de combinar las respuestas a las siguientes: ¿Programar en algún, o varios, lenguaje especifico (Java, C#, Ruby, C++… en el ABAP de Mordor, etc.)? ¿Especializarte en programar para algún entorno específico (sistemas empotrados, críticos, web, tiempo real, movilidad, BBDD… no sé, ¿Big Data?, videojuegos –bueno lo de los videojuegos alguno siempre lo dice- etc.)? ¿Algún paradigma específico (funcional, imperativa)?
Así que pregunto… “Pero concretamente ¿en qué tipo de programación te quieres especializar?” Y no suelo sacar más de dos tipos de respuestas: “programar para Web” o “Programar para dispositivos móviles (Android, mayoritariamente)”.
Así que, resumiendo, en mi encuesta, para aquellos que están estudiando una carrera informática, salvando excepciones puntuales, parece haber sólo 4 dedicaciones posibles en el futuro: “la ni idea, lo que toque”, “la seguridad”, “la programación web (sin más concreciones)” o “programar dispositivos móviles”.

Saber programar es imprescindible para ejercer correctamente otras profesiones dentro de la informática… pero programar no es la única profesión

Pasando por alto que con exactitud casi nadie tiene claro exactamente, yo soy de la opinión de que si no has estado un tiempo programando… difícilmente vas a entender por qué de muchas cosas en un proyecto software, y difícilmente podrás desarrollar eficientemente otras dedicaciones dentro de la informática.
Podemos dejar para otro debate si hace falta haber estado muchos años programado, pocos, seguir haciéndolo siempre o basta con haber sido aplicado cuando estudiaste y haber comprendido muy bien la programación. Como digo, este debate para otra, pero por ahora, mi opinión es que es imprescindible saber programar para dedicarte correctamente a otras profesiones.
Dicho esto, también hay que decir una obviedad: hay otras dedicaciones más allá de la programación. Sí, aunque alguno no lo quiera creer… así es.
Profesiones a las que te puedes dedicar si te gustan más, a las que te puedes acabar dedicando con el tiempo, la experiencia y la preparación. Si quieres, o sino no, también te puedes dedicar a programar toda tu vida, que es algo apasionante y bonito (y de paso ayudemos todos a desterrar esa visión casposa de que un programador veterano, con años, ya no es bueno, cuando la realidad, si ha cuidado su carrera, es al revés).
Pero si quieres ver otras opciones, aquí te dejo unas cuantas….

6 profesiones para un informático que no son la de programador

1 – Tester técnico. Figura con muchos, pero muchos, conocimientos técnicos, que no se dedica específicamente a programar, aunque en su día a día tenga que hacerlo (para automatizar pruebas, crear scripts, etc.) Ayer mismamente, salió este tema en el blog, mira los comentarios del post de ayer si quieres conocer más este rol. Figura muy necesaria, con demanda creciente y difícil de encontrar (te lo aseguro, que día sí y día no alguien me dice “no conoceras a un tester…”). El señor Lobo de las pruebas, el que soluciona problemas y le da velocidad al asunto.
2 – Tester de carga, rendimiento y relacionados. Como se deduce del nombre, y sin perdernos en detalles, es el rol que se dedica a comprobar los tiempos de respuesta de las aplicaciones, la carga que aguantan (por ejemplo cuantos usuarios concurrentes), detectar los cuellos de botella, recomendar soluciones, etc. ElSherlock Holmes que te sabe decir por qué una aplicación va lenta, o no pasa de x usuarios, y dónde se encuentra el problema.
3 – Perito informático. Normalmente, su tarea principal es asesorar aun juez (o actores relacionados) en un tema informático. Son los que proporciona datos, evidencias, pruebas en juicios. No te quiero contar los conocimientos técnicos que debe tener un perito informático, más los propios de esta profesión, más algunos conocimientos legales. El Perry Mason de la informática.
4 – Devops Engineer. Lo pongo en inglés porque es cómo se le conoce, y la traducción queda muy rara. Como te decía con el Tester Técnico, otra figura con muchos, pero muchos, conocimientos técnicos, en este caso más cercana a operaciones (producción, sistemas). Es una dedicación, en los tiempos que corren (que nadie quiere demorar los pasos a producción) muy necesaria, con demanda creciente y difícil de encontrar. DevOps, continuous delivery, continuous deployment, etc.,  son temas esenciales de conocer aquí. Aquel con la responsabilidad de romper el muro entre desarrollo y operaciones, la Kitty Pryde de un proyecto.
5 – Auditor. Realmente esta profesión son decenas, ya que en tecnología hay auditores para decenas de temas, desde datos, procesos, calidad software, etc. Pero como tal es una dedicación más. Resumidamente, sacan “una foto” independiente de la situación en la cual se encuentra un equipo o sistema software, proporcionan esas pruebas, o evidencias, sobre la situación actual. El CSI Grissom que saca pruebas sobre cómo está la situación.
6 – Arquitecto software. Haciendo ahora mismo una breve búsqueda en el portal de empleo indeed, en los USA me salen más de 26500 ofertas sobre el término arquitecto software. Aunque aquí la he puesto como una profesión, realmente son decenas, hay muchas especializaciones diferentes para un arquitecto software. Sin entrar en decisiones de mucho detalle, el arquitecto software es el que toma las decisiones de alto nivel de cómo debe construirse un sistema: qué framework, qué módulos, qué arquitectura software, qué arquitectura hardware, cómo hacer que el sistema escale, qué tecnología, qué balanceador, respaldos, etc.

Concluyendo…

Claro que el agudo lector, más aún si está estudiando una carrera informática y ha caído en este post, estará pensando “todo lo anterior no me lo enseñan en la Universidad”. Lógico, porque en la Universidad te enseñan la base para que posteriormente tú te especialices.
Así que, salvo que quieras quedarte mal programando sistemas mal programados a los que solo se le añaden los parches necesarios para que no se hundan (que hasta cierto punto puede ser una vida cómoda), tanto si quieres dedicarte a alguna de las anteriores ,sus derivadas o si quieres ser un buen programador dedicado a cosas interesantes… desde ya hay que ir poniéndose las pilas, preparándose constantemente y especializándote. Sin conformarse solo con lo que te cuentan en la Universidad.

miércoles, 5 de agosto de 2015

La técnica Pomodoro para gestionar el estudio y/o el trabajo día a día

Cuenta la leyenda que cuando el italiano Francesco Cirillo comenzó sus estudios universitarios busco desesperadamente una técnica de concentración que le ayudase a ser más productivo. Y la encontró. Y la inspiración para encontrarla vino de esos típicos “pomodoros”, tomate en italiano, que hay en muchas cocinas y que se usan para medir el tiempo que se cocinan los alimentos.
La técnica pomodoro consistía en poner el reloj del pomodoro a cero y ponerse a trabajar en una tarea ininterrumpidamente, hasta que transcurrían 25 minutos., intervalo de tiempo al que llamamos pomodoro. Terminado el pomodoro corresponden 5 min. de descanso. Terminado el descanso, comienza otro pomodoro, y después otro descanso de 5 min. Así sucesivamente, hasta el cuarto pomodoro, al que le corresponde una pausa de 15 min., transcurridos los cuales comienza otra vez la serie.
Personalmente, llevo utilizando dicha técnica pomodoro desde hace ya bastante tiempo. Y nunca se me había ocurrido hablar de ella en un post, pero visto el interés que ha despertado cuando la he mencionado en cursos de agilidad o twitter me ha parecido interesante resumirla de manera general en este post. Os resumo más específicamente cómo yo la uso.
Para utilizarla, en mi caso, y puede haber, por supuesto, variaciones según cada uno, mantengo una lista de tareas en la que hay principalmente dos grupos: las urgentes (las del día a día, trabajos prácticos, informes, etc.) y las importantes (las que te pueden resolver el futuro). Quizás dedique un futuro post a hablaros sobre la división de tareas, que para mi es crítico y da para hablar un rato.
Cada día preparo una lista de tareas a completar, en la que debiera haber, obligatoriamente, tanto tareas urgentes como importantes (te aviso que lo difícil es meter cada día las importantes y luchar para no dejarse llevar sólo por las urgentes). La priorizo y comienzo los pomodoros. Los descansos de 5 min. los dedico a quitarme algún correo, y así adelanto, salvo que tenga demasiados trabajos prácticos, entonces dedicaría un pomodoro entero a la tarea “quitarse trabajos prácticos”.
Dedicar un pomodoro a una tarea no significa que tengas que terminar la tarea en un único pomodoro. Hay tareas que requieren, obviamente, mucho más de 25 min. Pero, eso sí, y esto es lo verdaderamente importante, dedicar un pomodoro a una tarea significa estar esos  25 min. solo y exclusivamente dedicado a esa tarea. Y a nada más. Nada. Ni correo, ni twitter, ni llamadas. A nada. Durante el pomodoro apágalo todo. Aquí debes ser muy auto-disciplinado.
Obvio decir, que, por desgracia, el número de pomodoros por día varía mucho. Hay días con muchos pomodoros, en los que terminas sintiéndote muy realizado, y hay días de reuniones, llamadas, actos, etc., en los que no hay pomodoros. Pero los días que si puedas utilizar los pomodoros utilízalos, porque vas a notar la diferencia y el incremento de productividad.
Antes de terminar, te dejo 3 características que, para mi, hacen tan importante trabajar por pomodoros:
1 – Te crea un hábito, una métrica de productividad. Antes de conocer la técnica pomodoro, mantenía una lista de tareas a las que asignaba un tiempo variable. Por ejemplo, empezaba la tarea 1 y decidía dedicarle 50 min, luego a la 2 30 min. Pero mantener tiempos fijos me ha ayudado a lograr un mayor habito y ha disponer de una métrica, piensas en términos como… “¿cuántos pomodoros dura esto?”
2 – Realización y consciencia del trabajo realizado. Te hace ir más rápido, ya que eres realmente consciente del tiempo que le dedicas a cada cosa, y empiezas a pensar cosas como… “a esta tarea no debo dedicarle mas de 2 pomodoros”, “ya llevo 3 pomodoros con esto… tengo que terminar ya”, etc.
3 – Te ordena el día y te baja a la realidad, a la realidad de lo productivo que realmente has sido. Sí, puedes estar cansado al final del día, con sensación de haber estado muy liado, pero… ¿cuántos pomodoros has hecho? Muchas veces se nos pasa el día (mes, año, etc.) liados en tareas no productivas y no somos conscientes de ello (este tema lo dejaré para un futuro, cuando comente mi división de tareas entre urgentes e importantes).
Saludos y nos vemos en otro post.