Especialización vs Polivalencía

No hace mucho tiempo, pensaba que la única salida que teníamos los desarrolladores era la de especializarnos en una tecnología determinada para poder asegurar nuestro futuro. Los continuos cambios y las nuevas tecnologías hacen que cada vez sea mas difícil mantenernos «actualizados» para ser competitivos en el mercado que nos rodea. Esta es una pregunta que desde hace tiempo me quita el sueño y de la que no logro obtener una respuesta clara. Esta claro que ser un experto en una determinada tecnología, puede aportarnos muchas ventajas. Para las pequeñas empresas de desarrollo de software obtener personal especializado en una determinada área es prácticamente imposible, ya que, para ello deberíamos contar con medios y con multitud de personas para conformar un equipo de trabajo.

En mi empresa desde hace tiempo observo que cada vez se da mas importancia a la obtención de personas con perfiles polivalentes, que según las necesidades de esta normalmente delimitadas por las situaciones de un mercado cada vez mas dinámico, sean capaz de adaptarse y asumir roles diferentes a los que están habituados con el fin de conseguir que estas, sean mas competitivas, pero los trabajos son, relativamente mas sencillos, en ningún caso, comparables al desarrollo de software.

Un simple desarrollador en asp.net debe ser capaz de conocer diferentes tecnologías, desde xml, ado, html, servicios web, iis, conocimientos de seguridad, etc. Creo que, una de las características mas valiosa de las personas en el área del desarrollo es la «capacidad de adaptación», ser capaz de asumir una tecnología en poco tiempo y sacarla partido es algo cada vez mas importante en nuestro trabajo, para ello no basta con estar preparados, estudiar o realizar diferentes cursos, hay que tener un nivel de predisposición al cambio, y esto es algo que rara vez se encuentra en las personas, es lógico, cualquier cambio, por pequeño que sea, siempre traerá consigo un sinfín de problemas que debemos solucionar. Por otra parte, estas personas tendrán que renunciar a cierta especialización para ser mas polivalentes. En el área del desarrollo de software es cada vez mas difícil obtener perfiles polivalentes ya que llegar a dominar una sola de las tecnologías con las que trabajamos puede suponer años de estudio y experiencia.

Por otra parte, creo que muchas veces, olvidamos el verdadero sentido de nuestro trabajo, este no es el de realizar aplicaciones utilizando las últimas tendencias y tecnologías, sino el de dar una «solución» a un problema especifico. Desde luego la solución debe combinar muchas factores importantes entre los que destaco el «tiempo», en la mayoría de los casos la introducción de una nueva tecnología frente a una solución ya conocida tendrá inicialmente un coste superior que debemos valorar y que muchas veces olvidamos, para dotar a nuestras aplicaciones de una arquitectura mas moderna, versátil y adaptable, pero que requiere mucho mas tiempo de desarrollo. Uno de los mayores problemas que observo en los desarrolladores, y me incluyo, es que normalmente buscamos que nuestra aplicación sea lo mas perfecta posible, esto incluye la adopción de las mas modernas tecnologías.

Especializarnos en un determinado área pueda hacer que en determinados casos seamos mas competitivos además de ser los únicos capaces de solucionar determinados problemas. Hablando con Fernando Guerrero, me comentaba que su empresa se había especializado en ofrecer soluciones muy determinadas, por ejemplo le llamaban para dar solución a un cliente que tenia una pagina web y que recibía mas de un millón de visitas semanales y en puntas de acceso los servidores se colapsaban, desde luego dar una solución adecuada para un problema similar normalmente pasa por disponer dentro de la empresa a personas con perfiles muy especializados, comentaba que ellos se dedicaban a ofrecer soluciones de problemas muy determinados y que estos suponían un porcentaje ridículo dentro del ámbito del desarrollo de software, y me aseguraba que estaban saturados de trabajo. En este caso contar con perfiles especializados hacia que su empresa podía ofrecer soluciones que otras nunca podrían resolver en un corto periodo de tiempo.

Por otra parte, en mi trabajo, la necesidad de obtener perfiles polivalentes es cada vez mas importante, un simple desarrollador debe conocer diferentes tecnologías y llegar a conocer alguna de ellas en detalle puede llevar mucho tiempo. Ser capaz de conocer a fondo una sola de las tecnologías que utilizamos, por ejemplo «Sql Server», nos puede llevar años de trabajo.

El otro día Rodrigo Corral escribía un post hablando de la importancia de aprender a desarrollar en entornos con multiples procesadores para aprovechar las características del nuevo hardware, comentaba que si somos capaces de aprender y dominar estas nuevas tecnologías tendremos un mercado que nos permitirá marcar la diferencia frente a otros desarrolladores. Lo cierto es que incluso, asumir una nueva tecnología como de las que habla en su post, pasa por conocer muchas otras y que el nivel necesario para poder entender aspectos como la multitarea es algo que no todos están capacitados para realizar.

Quizás la decisión mas adecuada pase por escoger lo mejor de ambos mundos, dominar una o dos areas e intentar ser polivalentes estudiando otras tecnologías para ser capaces de asumir cambios con rapidez, aunque todo dependerá de las necesidades de la empresa para la que trabajemos, por otro lado la especialización en un determinada tecnologia podría ayudarnos en la búsqueda de un futuro profesional mejor.

Así que sigo preguntándome que será mejor: Especializarse o ser polivalente y saber un poco de todo. ¿ Son areas diferenciadas o se pueden  complementar ?… Espero con vuestras opiniones poder aproximarme a la solución mas adecuada. Como decía Malder, «La verdad esta ahí fuera…».

9 comentarios sobre “Especialización vs Polivalencía”

  1. Polivalencia tecnológica y cierta especialización en «negocio», en mi opinión se puede resumir en la frase «soluciones fáciles a problemas difíciles».

    La Tecnología debe estar siempre al servicio del «negocio» (cliente). Por lo que es necesario:

    * entender, muy pero que muy bien, al cliente (empatizar con él)-> especialización en «negocio»
    * buscar la solución más sencilla (NO especialización) y que no tiene porqué ser la que está de «moda»

  2. Buen post. En mi opinión, el debate podría llevarse también a la comparación «sabiduría» vs «inteligencia»; entendiendo por sabiduría el disponer de una amplia base de conocimiento en una, dos, o más tecnologías; y por inteligencia la capacidad para enfrentarse a problemas nuevos.

    Generalmente, nadie ha podido llegar a sabio sin ser inteligente. La cuestión radica en la capacidad para renovarse (más en nuestra profesión). Por otra parte, mucha gente inteligente carece de experiencia, con lo cual es muy probable que (además) carezca de una amplia base de conocimiento, pero a la vez dada su capacidad para asimilar, dispondrá de una curva de aprendizaje «rápida» a la hora de enfrentarse a nuevos problemas, cuyas soluciones incorporará automáticamente a su base de conocimiento para el futuro.

    Como casi siempre en la vida, la virtud está en el equilibrio entre ambos extremos, tanto a nivel individual como a nivel colectivo de un equipo.

    Saludos,
    Miguel

  3. Interesante la reflexión que planteas en el post… 

    Yo creo que los perfiles más deseables en todo equipo son los ‘especialistas generalizadores’ (generalizing specialists) tal y como los describe Scott Ambler: http://www.agilemodeling.com/…/generalizingSpecialists.htm

    Escribí sobre este tema hace bastante: geeks.ms/…/Taylor-se-equivoco_2E002E002E00_.aspx

    Yo no creo que sirva un especialista puro ni en casos como el de ‘los servidores se colapsan en puntas de acceso’. Si en una situación como esa, solo sabes de la parte de base de datos por poner un ejemplo, puede que solo puedas proponer una solución parcial o que ni siquiera seas capaz de encontrar una solución.

    Un guru ‘de solo Sql Server’, por ejemplo, podría encontrar una solución mirando solo a Sql Server. Muy probablemente lograse poner la aplicación en margenes aceptables de rendimiento, pero quizás forzando los límites de Sql Server y puede que esto no sea siempre la mejor opción. Quizás sería mejor una solución basada en una mejor politica de cacheo en Asp.Net o usar una cache tipo Velocity o tuner el IIS y no solo la base de datos… Si eres un puro especilista, quizás se te escapen muchas opciones… y quizás caigas en que cuando solo se tiene un martillo, todo parecen clavos.

    Mi experiencia es que si el Debbuging & Optimizacion Team de Plain Concepts funciona, no es por que tengamos gente que es especilista solo en un tema concreto, que lo son. Sino por que además todos ellos tienen amplísimos conocimientos en todo el rango de las tecnologías de Microsoft. Pueden ser especialistas en A o en B, pero son capaces de intuir que el problema puede ser la tecnología C o que la solución pasa por D, y que en ese caso lo mejor es hablar con otro miembro del DOT y plantear una solución fuera del ámbito de su especialización. Los problemas en la aplicaciones modernas a menudo son de arquitectura y de malas prácticas de desarrollo y tocan a más de una tecnología o incluso tienen su raiz en como ciertas tecnologías trabajan juntas.

    ¡Equipos multidisplinares y ‘especialistas generalizadores’ son la clave! o al menos esa es mi opinión.

    ¡Un saludo titán!

  4. Interesante post Juan. Estoy de acuerdo con lo que plantea Rodrigo. Creo que el perfil más valioso es aquel que «sabe o conoce de todo y además es experto en algunas cosas». Leyendo el artículo de Scott Ambler que enlaza Rodrigo, esta frase viene a expresar precisamente eso:

    «A generalizing specialist is more than just a generalist. A generalist is a jack-of-all-trades but a master of none, whereas a generalizing specialist is a jack-of-all-trades and master of a few»

    También creo que perfiles así no abundan demasiado y precisamente eso los hace aún más valiosos.

  5. @Oskarpaz, desde luego la tecnología debe estar siempre al servicio del “negocio” y la clave está en “empatizar con él cliente”, pero, buscar la solución más sencilla, normalmente pasa por conocer y a veces utilizar las últimas tecnologías, que muchas veces nos pueden ayudar mucho en el trabajo, por ejemplo la adopción de tecnologías como Entity FrameWork nos pueden simplicar mucho el trabajo con datos.

    Saludos.

    @Miguel, estoy de acuerdo con lo que dices, aunque difiero en una cosa, para mí la inteligencia es la capacidad innata que tienen algunas personas para resolver problemas, pero es algo con lo que se nace y difícilmente se puede mejorar, creo que se puede llegar a ser sabio sin necesidad de ser inteligente y estoy completamente de acuerdo en que en la virtud esta en el equilibrio entre ambos extremos.

    Gracias por tus comentarios.

    @Rodrigo, como siempre, eres una “referencia”, aunque estoy de acuerdo, creo al final tal y como expones en tu post y transmite Miguel en la mezcla de ambas esta la virtud, por eso lo de “especialista generalizador”, aunque tengo mis dudas, es decir, está llegando el momento, en que convertirte en un especialista generalizador, va a ser algo cada vez más difícil, ya que el número de tecnologías que aparecen va a desbordarnos, de hecho es algo que creo, está pasando a muchos de los que trabajamos en IT. En mi opinión a partir de ahora, quizás, nos veamos obligados a tener personas capacitadas en determinadas aéreas y compartir el conocimiento con otras para complementarlas entre sí, creo que la clave, en poco tiempo, será la distribución del conocimiento entre las personas y la mejora del trabajo en equipo. Tal y como expones vosotros tenéis el Debbuging & Optimization Team, con el tiempo, quizás, estarán más especializados al no poder asumir tantas tecnologías y complementaran a los demás equipos de trabajo como hacen ahora, independientemente de que tengan conocimientos en otras muchas aéreas, cada vez estos serán más limitados y adaptados de acuerdo a sus necesidades.

    Por otra parte estoy de acuerdo en que para dar una solución a un problema no bastara con que la persona sea un experto en Sql Server, pero quizás si logramos disponer de un equipo con  expertos en Sql Server, Asp.Net, IIS, Depuración y Optimización y trabajamos en equipo, podamos llegar a una solución más óptima.

    Saludos y gracias por tus comentarios.

    @PabloNetrix, yo tengo un martillo, pero hay tantos clavos…. Salu2.

    @Jose Fortes, te contesto lo mismo que a Rodrigo. Saludos y gracias por tus comentarios.

  6. Ya lo habéis dicho todos pero quiero refrendarlo: en el equilibrio entre ambas cosas está la solución. Una empresa y un profesional deben encontrar la forma de especializarse lo suficiente como para ser atractivos/competitivos en algún aspecto que atraiga el trabajo y los clientes y a la vez ser suficientemente generalistas como para poder adaptarse a los cambios continuos, como para poder «ver» otras vías de solución u oportunidades de negocio.

    Si sólo te especializas puedes tener un buen nicho de mercado, y este puede durar incluso mucho tiempo, pero siempre tendrás el riesgo de que algún cambio en el mercado te deje fuera de juego de un día para otro.

    Si sólo eres generalista, en el fondo no tendrás suficiente capacidad de resolución de problemas, no aportaras algo «extra» a tu oferta y por tanto será «facilmente» reemplazable.

    Lo dicho: las dos cosas en su justa medida.

    Pero claro, es mucho más fácil decirlo que hacerlo 😉

  7. @Iboisset. Me alegra leer un post como este, es cierto, nos olvidamos de esa chispa, que sola era capaz de realizar proyectos y solucionar problemas casi por arte de magia, lo cierto es que la complejidad de las personas, los procesos, las empresas y sobre todo el entorno tan sumamente competitivo en el que nos movemos, han hecho que muchas veces olvidemos la importancia de disfrutar de nuestro trabajo.

    Te felicito por tu post. Gracias.

Responder a jirigoyen Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *