Este es un dilema en el que he estado pensando durante bastante tiempo.
Soy un estudiante graduado y mis temas de interés son el diseño de lenguaje de programación, análisis de código, compilación, etc. Hasta ahora, este campo ha sido muy interesante y gratificante para mí, así que estaba pensando en encontrar un trabajo en ese campo y continuar para especializarse en ello. Siento que es un campo relativamente sólido que no "pasará de moda" en el corto plazo. Siempre he pensado que en campos tan complejos es mejor ser un verdadero experto que simplemente otro tipo que comprende superficialmente de qué están hablando los expertos.
Por otro lado, siento que al especializarme de esta manera realmente limito mi opción futura. Siempre he creído firmemente en los enfoques multidisciplinarios de los problemas. Tal vez debería buscar un trabajo de programación general en el que pudiera ganar experiencia en otros campos, y aplicar ocasionalmente mi campo favorito para resolver problemas. La especialización en solo uno o dos campos puede impedirme pensar fuera de la caja y provocar un estancamiento.
Realmente me gustaría escuchar más opiniones sobre esta elección. La verdad es que ya me estoy inclinando hacia una de las opciones, por lo que la psicología básica dice que nada cambiará de opinión, pero aún así me encantaría escuchar algunos comentarios.
fuente
Respuestas:
Especialízate si lo disfrutas
Como sabe, si se especializa, incurrirá automáticamente en un costo de oportunidad, ya que no será inmediatamente elegible para otras tecnologías (por ejemplo, los programadores de Java a menudo no son aceptados de inmediato para trabajos de optimización de compiladores). Sin embargo, debe equilibrar esto con su amor por la complejidad inherente a la disciplina elegida.
Dices que quieres ser un experto, así que adelante y tómate el tiempo para aprender la disciplina elegida. Nosotros como comunidad siempre necesitamos nuevos expertos. Sin embargo, mi consejo es seguir la recomendación pragmática del programador de "Aprender un nuevo idioma cada año" . De esa manera, mientras realiza un análisis léxico profundo de la codificación algorítmica, también puede crear una pequeña aplicación para iPhone que le interese. Nunca se sabe, la polinización cruzada de diferentes paradigmas puede causarle una idea que extenderá su especialización a nuevas áreas.
fuente
Creo que depende de lo que quieras de tu carrera ...
A nivel técnico : ser un experto en todos los oficios significa que puede solicitar una variedad más amplia de roles que alguien que es extremadamente especializado. Si desea ser adaptable y moverse y no estar atado a un nicho en particular, esto probablemente no sea tan malo. Sin embargo, la desventaja es que probablemente estará limitado a un nivel relativamente menor / intermedio de roles, a menos que profundice en un área en particular.
Especializarse en un área determinada es más o menos lo contrario de lo anterior. Es probable que pueda obtener un mayor estatus e ingresos (si se encuentra en un buen nicho con alta demanda, por supuesto), pero es probable que se encasille en esa especialidad en gran medida.
Entonces, en un sentido amplio, estas dos son las opciones a nivel técnico.
A nivel político : si estás hablando de "progreso profesional" en términos de ascender a la gerencia y tal, entonces generalmente no importa lo que hagas técnicamente. Prácticamente todos los que conozco que pasaron a la gerencia desde un rol de programador lo hicieron al conocer muy bien a las personas y los procesos comerciales en su organización. Algunos eran especialistas y otros generalistas (en términos de la tecnología con la que trabajaban), pero TODOS estaban muy arraigados en la organización, conocían bien a las personas y los procesos, y básicamente se volvió lógico que comenzaran a asumir esas responsabilidades.
Entonces, en un sentido básico, si desea avanzar en su carrera en términos de ascender en la jerarquía administrativa, se trata de jugar a la política. Ser un generalista frente a un especialista no importa tanto (solo tal vez convertirse en un especialista en los procesos y la tecnología que administrará).
fuente
En primer lugar, las ofertas de trabajo a menudo exageran la cantidad de especialización requerida. Ninguna compañía dice "necesitamos un tipo que sepa un poco sobre Javascript porque no sabemos nada" en una publicación de trabajo; pusieron "experto en Javascript" allí porque, siendo todo lo demás igual, les encantaría conseguir a alguien que fuera realmente un experto. Eso no significa necesariamente que solo los expertos estén calificados para lo que sea que la empresa necesite hacer en Javascript (y se sorprenderá de la frecuencia con la que ni siquiera saben lo que necesitan hacer). Así que no te preocupes demasiado por ser un "experto"; solicite trabajos en los que esté familiarizado con las habilidades anunciadas y vea cómo van las cosas en la entrevista. Ser bueno en un trabajo es mucho más que cuántos años de [insertar idioma] tienes en tu haber. Y si el trabajo es gratificante,
Eso se trata de "conseguir" un trabajo; para "mantener" un trabajo, ser JOAT puede ser maravilloso. Si su empresa comienza a explorar diferentes idiomas y plataformas, estará por delante del juego. Si su empresa basada en MS de repente necesita a un tipo de UNIX para algo, usted será su opción (ya sea ese tipo o manejar la contratación de un "experto"). Mantener un trabajo se trata de ser indispensable pase lo que pase, y JOAT es una buena manera de ser ese tipo.
Además, hace que sea mucho más fácil conseguir un nuevo trabajo cuando su empresa se desploma :)
fuente
Pues sí y no. El problema es que nunca serás una estrella de rock. Nunca serás ese tipo que puede hacer cosas con C que nadie más puede hacer. Su falta de enfoque impide ese tipo de excelencia.
Por otro lado, cuando la administración decide que no pueden permitirse un montón de programadores, no van a disparar que , para mantener a él . La flexibilidad tiene sus beneficios.
Soy un Jack, y mi departamento ha visto una reducción del 80% en los últimos 4 años. Sin embargo, aquí estoy. En parte es porque estoy más desenfocado que la mayoría. Me gusta que me entreguen una tarea de la que no sé nada, ya mis jefes les gusta el hecho de que digo "¡Seguro!" no importa qué mierda de culo raro se les ocurra. Y, cuando comprendes el panorama general, es una especie de estrella de rock que la mayoría de los especialistas nunca alcanzan, y puede ser lucrativo.
Entonces, si buscas ser una estrella de rock, debes concentrarte, porque nadie puede ser mejor que todos en todo. Pero si buscas estabilidad, elige la flexibilidad, porque ser flexible es más comercializable que ser malo.
fuente
Generalist vs. Specialist es un artículo de CIO.com, pero probablemente hay docenas de artículos similares o publicaciones de blog de personas que intentan ver si una es mejor que la otra. Cada uno tiene sus ventajas y desventajas. Cualquiera que quiera decir que uno triunfa totalmente sobre el otro puede ser parcial en cierta medida.
No olvide que existe una posible ilusión en cada lado de su elección. Lo que ves como una especialización puede tener varios sabores. Por ejemplo, ¿consideraría que los desarrolladores web en general son especialistas o generalistas? Algunos podrían ver eso como una especialización y otros aún podrían verlo como bastante amplio, ya que muchas aplicaciones basadas en la web en estos días pueden tener todo tipo de componentes que pueden requerir diferentes conocimientos en algún grado.
Si bien las áreas que enumera me harían pensar que quiere trabajar para una compañía de software, puede haber algunas partes de la Tecnología de la Información que podrían usar habilidades similares de alguna manera. Podrías saber cuánta personalización se realiza en varios softwares disponibles para que funcione y qué tan bien es una inversión para la mayoría de las empresas para dar un ejemplo original.
fuente
Recuerda. Tu futuro se extiende a través de décadas.
La tecnología actual se habrá desvanecido significativamente a medida que surjan nuevas oportunidades.
La especialización no es ningún daño en absoluto.
Comencé especializado en perforar tarjetas de papel para escribir programas COBOL. Ahora escribo Python y no he tocado una tarjeta de papel perforada en décadas.
La tecnología va y viene. Lo que sea que se especialice ahora desaparecerá en una década y se especializará en otra cosa. O te volverás obsoleto.
Preocuparse por la "experiencia en otros campos" es una pérdida de tiempo. Obtendrá esa experiencia si lo desea o no.
fuente
Depende de cuál sea tu carrera. Creo que debería ayudar a su carrera si desea ser un consultor general, comenzar su propio negocio, trabajar para una pequeña empresa o en cualquier otra situación en la que ese tipo de flexibilidad sea un activo reconocido. Estoy en la misma situación, y actualmente trabajo como consultor, aunque estoy buscando especialización en .NET / C # / SQL / ASP.
Sí, creo que podría buscar pequeñas empresas que no puedan contratar a alguien para cada área de especialización, o ser un consultor.
(Tampoco es una mala idea elegir un área en la que se especializará, además de mantener sus habilidades más generales).
fuente
Cuando contrato desarrolladores, soy parcial hacia las personas con fortaleza y experiencia en las habilidades particulares que busco. Los reclutadores van a amplificar en gran medida ese sesgo. Eso significa que incluso si pudiera contratarte (y me gustan las personas con amplias habilidades y buenos conocimientos básicos que pueden aprender), es probable que nunca te hable.
Yo mismo, aunque siempre he sido un gran oficio y he tenido muchos títulos de trabajo diferentes en la misma compañía donde he trabajado la mayor parte de mi carrera. Aún así, temo la posibilidad de tener que buscar un trabajo y no creo que pueda conseguir fácilmente otro trabajo con mi salario actual (que es bastante satisfactorio, pero la gente aquí me conoce).
fuente
como siempre...
Depende
Depende de lo que quieras decir con "carrera". Más concretamente, depende de lo que creas que quieres decir con "carrera".
En estos días trabajo mucho con aplicaciones web. Cuando comencé esta carrera, la red mundial no existía. Entonces, en gran medida, la respuesta de @ Satanicpuppy es correcta.
Hay cuatro ventajas que vienen con el territorio de Jack-of-All-Trades (JOT):
El principal inconveniente es: se necesita mucho, mucho más tiempo para sobresalir , porque está presionando la curva de aprendizaje en múltiples frentes.
¿Soy tan buen DBA como algunos amigos que no han hecho nada más que eso durante 15 años? Por supuesto no. ¿Puedo ver soluciones en un instante que nunca imaginarán en quince días? Sí.
El mejor consejo, creo, es seguir siendo un JOT hasta que encuentres algo tan fascinante, tan convincente que quieras hacerlo y solo hasta el final de los tiempos. Ese "eso" será tu especialidad.
Me gusta resolver problemas nuevos y difíciles, buscar innovaciones para matar lo mundano y aprender continuamente: ese es mi "eso", y es la razón por la que me encanta.
Ser generalista es mi carrera.
fuente
Creo que una de las razones por las que las empresas buscan y valoran más a las personas especializadas se remonta a las abstracciones con fugas . El problema es que en los últimos 30 años más o menos, los ingenieros de software han aumentado exponencialmente el número de capas de abstracción y, por mucho que nos gustaría asegurarnos de que no haya efectos secundarios, siempre surgen. Y son las idiosincrasias indocumentadas las que tienden a atraparte.
Tal vez pueda comenzar a usar la nueva tecnología rápidamente leyendo especificaciones y ejemplos en línea, pero ¿alguna vez notó que cuando comienza algo nuevo pasa el 20% de su tiempo escribiendo código para una función y el 80% de su tiempo buscando el error más extraño? has visto alguna vez? A medida que te conviertes en un experto en un área, esta ración cambia de 20/80 a 95/5 (estoy inventando números, pero en general probablemente estén cerca) específicamente en esa área. Lo que significa que puede entregar el trabajo mucho más rápido y evitar trampas / errores comunes antes de que sucedan. Por ejemplo, hoy, uno de nuestros ingenieros superiores (nuevo en el equipo / producto) pasó más de medio día buscando un problema con la corrupción de la pila que me llevó 5 minutos identificar porque este era mi territorio.
A medida que se convierta en un experto en su campo, será más visible y valioso para la administración. No sé sobre otras compañías, pero en aquellas en las que trabajé, su compensación (al menos en parte) depende de cuán importantes sean sus responsabilidades. JOAT generalmente no tiene responsabilidades permanentes. En cambio, los gerentes los usan como recursos móviles / intercambiables (nuestro VP los llama cuchillos suizos del ejército) que se pueden mover de un equipo a otro según la demanda. De modo que puede permanecer en la empresa durante 10 años, luego mirar hacia atrás y darse cuenta de que nunca ha adquirido una sola responsabilidad. Tengo un muy buen amigo (que también es un excelente desarrollador de C ++ / C #, pero también es un JOAT muy bueno porque él tomará cualquier trabajo) que fue encasillado en ese papel. Sé que no está contento porque, aunque tengo una porción considerable y divertida del producto como mi patio de recreo, es principalmente un invitado temporal en la tierra de otra persona. Pero ahora no puede salir de eso.
Dicho esto, tener las habilidades de JOAT es igualmente importante, por lo que aunque no necesariamente trataría de posicionarme como JOAT, creo que es importante seguir leyendo / estudiando / aprendiendo cosas nuevas porque la tecnología cambia e incluso si usted eres un experto hoy, es posible que tengas que convertirte en un experto en algo completamente diferente mañana.
fuente
Yo diría absolutamente.
Pero va a tener que salir y obtenerlo, no aparecerá en un periódico o en una publicación de trabajo en línea (la probabilidad es pequeña). Por lo tanto, en lugar de buscar trabajos especializados, tal vez debería buscar trabajos que cumplan con sus diversas fortalezas. "Marginalmente bien" es subjetivo, tal vez estás siendo demasiado duro contigo mismo, modesto también, pero eso es algo bueno (-:
Además, si bien sus experiencias y conocimientos son importantes, los empleadores están más interesados en su capacidad de entregar resultados. Pregúntese: ¿Qué puedo hacer con mi variedad de conocimientos y experiencias que mejoran los resultados de esta empresa ? Sin ver su currículum vitae, algunos títulos que se me ocurren son ingeniero de soluciones, arquitecto (red, aplicación, etc.) o incluso un CTO.
Por último, mi consejo es hacer una carrera de lo que disfrutas. Tendrá que hacerlo durante más de 8 horas al día durante muchos años, y también podría gustarle lo que está haciendo a ese ritmo (-;
HTH, y mis mejores deseos,
KM
fuente
Es cierto que la mayoría de las ofertas de empleo están jugando en su contra al ser demasiado específicas o demasiado exigentes. Están escritos como anuncios (probablemente para mostrar a otros cuán poderosos son), pero evita que se apliquen algunos perfiles excelentes debido a las razones que usted indica en su pregunta.
Aquí está la publicación de empleo que uso:
Como puede ver, excepto la experiencia general con .NET, no se requiere ningún otro conocimiento. Sin embargo, lo que se requiere es la capacidad de aprender cosas nuevas.
Como no puede controlar cómo las empresas escriben su descripción de trabajo, debería verlas como oportunidades de aprendizaje.
Cuando veo un puesto de trabajo que es muy exigente, lo veo como una oportunidad para aprender cosas nuevas. Durante la entrevista (si la consigo), explico que dado que mi motivación es aprender y hacer las cosas, no me afectaría demasiado la falta de experiencia en una de las tecnologías más mencionadas.
De hecho, así es como aprendí tan rápido: eligiendo trabajos exigentes .
fuente