• facebook
  • flickr
  • google
  • instagram
  • lastfm
  • linkedin
  • spotify
  • twitter
  • Goodreads
  • GitHub
  • juanignaciosl.github.io
  • Medium
T-Shaped professionals

T-Shaped professionals

Hace unos días he echado la vista atrás para repasar el currículum -a veces lo hago con intención de ponerle un lacito y pulsar “enviar”, a veces no-, y en esta ocasión me preocupa la especialización y el concepto de t-shaped skills. Es habitual decir que lo interesante son los profesionales especialistas en algo y con habilidad (aptitud y experiencia) para abarcar otros campos, pero con el bolígrafo en la mano es más difícil decir cuán alta debe ser la T y cuán musculados los brazos. Y, sobre todo, una T no es un camino.

En mi caso, el cuerpo de la T, a la vista de mi trayectoria, claramente sería desarrollo web con Java/JEE. Al final, son cerca de 10 años ya trabajando a diario con Java, HTML, Javascript y CSS como herramienta básica, engordada, empanada o acompañada por otras como Spring, Seam, JSF, JSP, RichFaces, Hibernate

Los “brazos” son, en mi opinión, más difíciles de evaluar. Al final, todo es relativo. A lo largo de los años he tocado muchísimos palos, desde tontear con Android a C o tratamiento de imágenes con Java. Más recientemente  llevo más de un año de trabajo casi a diario con iOS, primero llegando desde el diseño de producto a producción con inCitee y ahora con otros proyectos para terceros. Pero también me aproximo al año con ScalaPlay, con un par de fantásticos cursos de Coursera pero también poniendo en producción Mis Ofertas de Viaje y Nemesis Energy. Con AngularJS, tres cuartos de lo mismo.

¿Dónde cabría la inversión en metodologías ágiles? Durante varios años estuve formándome en metodologías ágiles e implantándolas con un fantástico equipo -que echo de menos-. ¿Da eso pie a un segundo cuerpo? ¿Un tercer brazo? ¿Dónde cabe la lectura y práctica de clean codes, testing y demás?

Y, lo que es más importante, ¿ahora qué? Mi tiempo fuera de mi actual trabajo estable da para lo que da, no debo ejercitar estos brazos de forma anárquica…

a) Aumentar el brazo iOS. A pesar de haber hecho un producto funcional y en producción de cabo a rabo puedo no resultar suficientemente especializado. Pero es que, IMHO, una vez comprendido lo fundamental de una tecnología así, el resto es tirar de SDK… ¿Hasta cuándo seguir empollando el API de Apple? ¿Es interesante hacerte a ti mismo un vendor lock-in?

b) Aumentar la especialización en Scala. Quizá participar en algún proyecto open source. Relacionado con este tipo de lenguajes, me llama lo relacionado con Big Data, pero, claro… ¿Abrir nuevos frentes es lo que necesito?

c) Aumentar la especialización en front-end web. Llevo 10 años haciendo web. A veces recubierto (JSF, AngularJS, Sass…), a veces no, son 10 años trabajando con HTML, CSS, Javascript… ¿Soy un frontender?

Mi intención es, ya sea para terceros o para mi, haga lo que haga, que sea seguir poniendo proyectos reales en producción. Pero ¿qué proyectos? ¿Con qué tecnologías? Cualquier sugerencia será bienvenida.

T-Shaped jump

7 Comentarios

  1. Franchu · mayo 3, 2014

    En mi opinion en nuestro campo T-shaped esta bien pero es una utopia. La razon es simple: las tecnologias avanzan mucho mas rapido de lo que somos capaces de abarcar y una especializacion muy profunda en un campo puede hacer que te quedes obsoleto en un futuro no muy lejano.

    Mi propuesta, y lo que estoy haciendo yo mismo, es intentar tener una especializacion en un determinado campo que va variando en funcion de lo que necesita mi curro en ese momento, y tocar muchos otros palos. Va a haber gente que sepa mucho mas de ese tema en concreto en ese momento en concreto, pero si se lo suficiente como para hacer mi trabajo de forma eficiente, esta bien. Pero sabre un poco de muchas otras cosas para poder evaluar cuando puede tener sentido probar con otra cosa.

    Visto todo lo que has hecho, yo te recomendaria jugar un poco con las siguientes tecnologias que tengo en mi lista de cosas que estoy haciendo o pendientes:
    – go: es un lenguaje muy interesante y lo esta empezando a utiilizar mucha gente. Te podra gustar mas o menos, pero ayuda a adquirir otra perspectiva mas.
    – devops: monitoring, deployment en AWS, Google Compute Engine, … cambia mucho la forma de desarrollar y pensar en sistemas cuando puedes lanzar maquinas a voluntad y estas maquinas pueden desaparecer en cualquier momento.
    – docker: un poco a caballo entre las dos anteriores. Mas info en docker.io
    – graph databases: neo4j
    – streaming data processing: storm, spark, scalding, … y los algoritmos que se usan en esos casos (eg. bloom filters, hyperloglog y count-min sketches, …)

    Si quieres mas info o hablar de alguno de ellos, let me know :)

    PS: Hace 5 años que no escribia tanto en castellano y se me hace muy raro :/

  2. juanignaciosl · mayo 3, 2014

    Opino como tú en el primer párrafo. Otra solución al problema de la obsolescencia podría ser intentar dominar, en la medida de lo posible, dos áreas, de forma que pudieses pivotar si una deja de ser interesante, pero no deja de ser un parche. Lo mejor es ir evolucionando.

    Como profesionalmente tiendo al picaflorismo me he puesto dos barreras que no debo pasar para evitar dispersarme demasiado. La primera es el hardware, no me da la vida ni para jugar con arduinos. La segunda, y eso descarta tus primeras sugerencias, es el Devops. Interesante, pero prefiero centrarme en desarrollo. De lo que me sugieres me quedo con los dos últimos. En el Codemotion asistí a una charla sobre Neo4J porque me tienta mucho, y está en el TODO. Lo segundo, también. De hecho leí sobre Storm hace tiempo, aunque al final en caso de ponerme a hacer computación distribuida seguramente tire por Akka, a lo que estoy yendo sin proponérmelo por la pila de Typesafe que estoy usando en proyectos personales.

  3. Alvaro García Loaisa · mayo 4, 2014

    Muy buena retrospectiva personal!

    Creo que más o menos todos podemos andar por el estilo al echo de preguntarnos hacia que palo le damos a continuación. En mi experiencia creo que he pasado por varias etapas, desde lo primero que me llamase la atención, seguir tendencias modernas, mirar el mercado o coger algo que me gusta más que lo demás.

    Mi consejo es que elijas con el corazón! jajaja y no es broma. Me refiero a eso que ansías coger y probar, construir y aprender como funciona. Seguramente tengas varias cosas en mente, pero una que sobresale. Elige esa. No hay otra que vayas a coger con más ganas y de la que vayas a empaparte mejor su conocimiento.
    Si coincide con que es la que ya tenías algo de experiencia, pues bien. Que es la que está de moda, pues bien. Realmente desde mi opinión da igual! Cualquier cosa de la que vayas a aprender y te entusiasme hacerlo, es la indicada.

    Por muy rara que sea la herramienta, seguro que aprendes cosas que te servirán en tu trabajo, si no es ahora, en el futuro. Especializarse o generalizar es la pregunta supongo. Bien, pues creo que este tema daría para una sesión de debate en @agilecyl muy buena ;P

    Desde mi punto de vista, si lo que te pide el corazón es profundizar y profundizar en un tema concreto, profundiza y aprende! Si lo que te pide es ir de flor en flor, hazlo.
    Si lo que te importa en este caso es el mercado de trabajo, creo que desde hace tiempo llevo viendo una tendencia de crecimiento de los dos tipos de perfiles, con lo que supongo no te irá mal en ninguna de las dos elecciones :P

    Creo que en las siguientes cañas seguimos con el tema ;)

  4. nhpatt · julio 5, 2014

    TL;DR: No se.

    Me he planteado lo mismo varias veces y creo (aunque más cómo decisión inconsciente) que al final he optado por el consejo de álvaro, lo que más me motive en cada momento. Aunque supone picotear en tecnologías nada cohesionadas (o no de moda) sin ser especialista real de nada…

    Creo que hay muchas empresas que buscan un perfil generalista (y muchas que no saben que es lo que deberían buscar). También creo que es experiencia difícil de plasmar en un CV (oye, me dedico a picar de flor en flor…). Pero encuentro complicado convencer a mí mismo de aprender algo que no me motive (venga, aprende node que es cool).

    Entiendo también que pensando en carrera profesional (y puestos de trabajo) no es el mejor consejo. Si hay que elegir entre a, b y c, descartaría totalmente a) (no estoy condicionado por mi odio a Apple :P) si no por lo que ya hablamos en vivo, desarrollo móvil me parece un mal complemento profesional, creo que una empresa o bien busca un desarrollador Android/iOS full time u otra cosa y puestos intermedios en los que se utilicen dos pilas (web|móvil) hay muy pocos. Ser desarrollador móvil suele ser un trabajo a tiempo completo en una empresa de tamaño razonable.

    b) me parece un camino totalmente válido más centrado en otro país o trabajo remoto, Scala es un greenfield en el que hay mucho que hacer y mejorar pero no hay mucho trabajo local relacionado. c) tirando a AngularJS y resto de pila es probablemente lo que está pegando más en ofertas de trabajo locales. Ambas opciones me parecen igual de atractivas, cada una por sus razones.

    Y el problema sigue siendo el mismo, que hay decenas de cosas que molan cómo han mencionado por ahí arriba…

    PD: yo haría una sesión debate en @agilecyl

  5. Juan Ignacio Sánchez Lara · julio 13, 2014

    +1 a lo de agilecyl

    Y gracias por todos los comentarios. Postproceso y comento ASAP.

  6. Juan Ignacio Sánchez Lara · septiembre 14, 2014

    Definitivamente, y sin hacer spoilers, las decisiones tomadas últimamente han ido en la línea de descartar a) y, en buena medida, c). Es decir, alejarme al menos parcialmente del frontend. Si se me permite generalizar, ambas acaban siendo una espiral infinita de aprender el SDK/API/Framework de turno, y acabo con la sensación de que no me aporta nada, me parece menos enriquecedor. Además, según empiezas en esas vías comienza una cuenta atrás hacia la caducidad de lo que sabes, tras la cual ese conocimiento no tiene valor ninguno.

    De todas las alternativas abiertas, la más atractiva es desarrollo de backend. Aunque suene pedante, al programar en el lado del servidor tengo la sensación de estar abordando “problemas universales”. Aunque uses plataformas o frameworks creo que la libertad es mayor (eligiendo bien las herramientas, claro). Lidiar con bases de datos (tanto relacionales como NoSQL), definición de APIs, testing… Todo es más genérico cuando eliminas el navegador o el SDK móvil de la ecuación.

    Al hilo de estos “problemas universales”, voy a intentar seguir varios cursos de Coursera de algoritmia para refrescar conocimientos y ejercitar la mente tras tanta carga de trabajo repetitivo.

    Y tecnología… la que toque. Aunque tengo mis preferencias, elegir la herramienta aquí no es algo que me preocupe. Hoy en día hay multitud de plataformas (Scala, Java 8, Ruby, Python…) con las que hacer productos interesantes.

    Stay tuned ;-)

  7. 10º aniversario | juanignaciosl · septiembre 21, 2014

    […] aniversario no es mal momento para publicitar un giro radical. El que leyese mi preocupación sobre el perfil profesional y viese que en los dos últimos años he arrancado una startup,  formado en conferencias y […]

¿Me dejas una respuesta?