¿El desarrollo de software es realmente un trabajo sin salida después de los 35-40 años?

Un desarrollador de software que conozco recientemente recibió una llamada de un reclutador en Google, preguntándole qué se necesitaría para que él viniera a trabajar para ellos.

Este desarrollador ya había trabajado para Google, pero se fue hace unos cinco años para perseguir otros proyectos, y no quería vivir en una de las ciudades que tienen una oficina de Google. A pesar de que no tenía un título en ciencias de la computación y nunca tomó un curso universitario en OOP, debe haberlos impresionado lo suficiente como para mantenerlo en la lista de reclutamiento estos años más tarde. El reclutador sugirió que tal vez podría estar interesado en entrevistarse con el equipo del Proyecto Loon en Singapur.

Le lanzó una risita al reclutador por teléfono, y su primera pregunta fue: ¿Sabes cuántos años tengo? El reclutador confirmó que sí, que su fecha de nacimiento estaba archivada y que Google no tenía en cuenta la edad en sus políticas de reclutamiento. El desarrollador acordó pensar en el prospecto y acordaron volver a tocar la base en una semana.

Ese desarrollador de 66 años es mi padre. Está cobrando seguridad social mientras lo corteja Google. Tuvo una carrera satisfactoria dirigiendo su propia empresa, asesorando y siendo empleado. Hizo contribuciones durante las primeras etapas de numerosas tecnologías, como redes TCP, protocolos USB, implementación 802.11b y GPS militar. Luego fue contratado por Google en 2008, cuando tenía 58 años.

Mientras estaba en Google, escribió software en Java, un lenguaje que ni siquiera se inventó hasta los 45 años. Y fue un colaborador individual, sin que ningún otro ingeniero le informara.

Una de las mejores cosas del desarrollo de software es que se trata de su pasión por aprender y su capacidad de desempeño, lo que se demuestra con la carrera de mi padre y las carreras de miles de personas. Si no tiene esos ingredientes requeridos, entonces seguro, el desarrollo de software es un trabajo sin salida a cualquier edad. Pero si tiene la pasión y la habilidad, entonces no es un trabajo sin salida después de los 40, 50 o incluso 60.

Creo que está haciendo 3 preguntas diferentes y tal vez debería volver a escribir la pregunta. Vamos a desglosarlo así:

  1. ¿Es Agism un problema en las carreras de contribuyentes individuales de Desarrollo de Software?
  2. ¿Debería dirigir su carrera hacia roles gerenciales en lugar de roles profesionales individuales?
  3. ¿La carrera de colaborador individual de desarrollo de software es un trabajo sin salida?

Cada uno de estos se responde a fondo aquí en Quora en otras preguntas con detalles desglosados ​​como se describe anteriormente, por lo que voy a discutir brevemente cada punto.

Sobre el agismo, no creo que nadie pueda negar que hay una cierta cantidad de agismo en la industria. Puede ver la edad promedio de los nuevos empleados de casi todas las empresas de Silicon Valley. Sospecho que muchos, si no la mayoría, tienen una mediana de edad de contratación muy inferior a 30. Sin embargo, eso no significa necesariamente que haya políticas corporativas oficiales para no contratar candidatos por encima de cierta edad, raza, sexo, preferencia sexual u otras características.

Las razones por las cuales el agismo existe en la industria tecnológica son múltiples y no requieren cierta complicidad para no contratar empleados mayores. Por un lado, a muchas compañías les resulta más fácil utilizar nuevos graduados universitarios de las mejores escuelas (MIT y Stanfords, etc.) como grupo principal para el reclutamiento. Los nuevos graduados son baratos. Tienen una calidad constante. No se ven limitados por las experiencias en otras empresas. Son una pizarra limpia, por lo que es algo más fácil enseñarles cultura corporativa, metodología de software, mejores prácticas y encajar con otras contrataciones de graduados predominantemente nuevos en una startup.

Sin embargo, no creo que nadie en Silicon Valley argumentara que si tiene un candidato con 3 años de sólida experiencia en programación en una tecnología relevante, además de graduarse con un título de prestigio, no es un buen candidato, posiblemente Un mejor candidato. De hecho, iría tan lejos como para decir que no hay un número N, donde un candidato con N años de experiencia relevante es mejor que un candidato con N + 1 años de experiencia, todos los demás factores son iguales y las habilidades y experiencia siendo relevante y dirigida al negocio que la empresa está haciendo.

El mito de que la tecnología cambia demasiado rápido para que los ingenieros sigan siendo relevantes puede haber sido cierto en algún momento, pero las tecnologías centrales en las que se basa la web han existido durante muchas décadas. El lenguaje de programación C surgió a fines de la década de 1970, hace más de 40 años. El lenguaje Javascript, tal como es, surgió por primera vez en 1997, hace unos 20 años. Eso significa que tenemos ingenieros caminando, cerca de la edad de jubilación, cuya carrera se ha centrado en C y en ejecutar servidores Unix, durante décadas y décadas. Sin embargo, hay muy pocos ingenieros de esa calidad, con tanta experiencia, y dudo que alguien intente afirmar que a los 22 años que se acaba de graduar es necesariamente mejor que a los 60 años, que ha pasado más de 40 años trabajando en estos tecnologías Esos tipos de ingenieros son pocos y distantes entre sí, por supuesto.

En consecuencia, en el otro punto de la pregunta, no creo que la ingeniería de software sea una carrera sin salida. Diría que tiende a estabilizarse después de un cierto número de años en términos de crecimiento salarial. Parte de la razón de esto es simplemente que los ingenieros son esencialmente una mercancía humana. A menos que sea un ingeniero muy especial, siempre puede ser reemplazado por otra persona. Creo que eso ayuda a mantener los salarios de ingeniería de software algo bajos en comparación con otras industrias competitivas. Sin embargo, casi puedo garantizarle que la demanda de ingenieros de software superará la oferta de nuevos graduados u otros en el grupo de candidatos, por lo que siempre tendrá un trabajo. Sin embargo, es posible que no reciba esos aumentos exponenciales del 10% cada año, como lo hace durante sus primeros 2 o 3 años.

Finalmente, a su punto sobre si la administración es una mejor opción, le preguntaría ¿por qué considerar solo esa opción? Ciertamente, hay muchas carreras que puedes tomar. Puede realizar la transición a otra área de ingeniería. Por ejemplo, muchos ingenieros de software que no disfrutan de la creación de productos se trasladan a otros roles, a veces en la misma empresa, como Operaciones, Gestión de productos, Gestión de proyectos, Control de calidad o algo aún menos técnico como Ventas o puestos ejecutivos. También tengo amigos que han cambiado de carrera por completo, como estudiar a tiempo completo.

Permítanme concluir diciendo que, por mi parte, lo aprecio cuando estoy trabajando con gerentes que tienen una sólida formación en ingeniería, preferiblemente ingeniería de software con tecnologías relevantes para la empresa, así que no se apresuren a la gestión de ingeniería como trayectoria profesional. Para aquellos de nosotros que tendremos que tratar con usted en el futuro, obtenga 5 o 6 años de buena ingeniería sólida como contribuyente individual en su haber. Aprenda cómo funciona la industria como contribuyente. Solo entonces, considere mover su carrera en una dirección administrativa. No contratarías a un florista para construir el Puente de Brooklyn. No contrates a ningún gerente de ingeniería que no haya pagado sus cuotas como ingeniero.

Tengo 30 años y aún no tengo 40, pero diría que esta es una de esas preguntas que tiene un sí y un no. Quizás, sin embargo, no por las razones que podría esperar.

Lo creas o no, hay muchos desarrolladores muy exitosos después de los 40 años. Algunos de ellos están haciendo el mejor trabajo de sus carreras.

Por ejemplo, Rob Pike y Ken Thompson tienen más de 60 años y crearon el lenguaje de programación Go. Son ingenieros muy experimentados en Google y estoy seguro de que están bastante bien compensados ​​por lo que hacen.

Hay otros ejemplos como Robert Martin, Kent Beck, Steve Wozniak y otros que continúan teniendo un impacto significativo en la industria.

Realmente, siempre que tenga un cerebro funcional y la capacidad de escribir código, puede continuar con su carrera en software hasta el día de su muerte.

Sin embargo, hay una historia que vale la pena contar que apunta a un tipo de fecha de vencimiento que solo está relacionada tangencialmente con la edad.

No hace mucho, millones de personas estaban empleadas en trabajos industriales relacionados con la construcción de automóviles, piezas para automóviles, etc. La industria del automóvil estaba en auge y había miles de fábricas en todo el país llenas de personas que realizaban trabajos de línea de montaje relativamente simples.

Ya sabes, como recoger una batería e instalarla en el automóvil a medida que pasa. No es demasiado técnico, pero es lo suficientemente valioso como para recibir un pago de $ 25 por hora y obtener una buena pensión. Estos fueron buenos trabajos y muchas personas se beneficiaron mucho de ellos.

Luego, con el tiempo, sucedieron dos cosas que el trabajador automotriz promedio no pudo hacer mucho.

Primero, la robótica y la automatización se volvieron lo suficientemente baratas como para que incluso un robot muy costoso que costara $ 100,000 valiera la inversión porque el costo incremental para ejecutar el robot 24/7 era mantenimiento y electricidad. Ambos son mucho más bajos que $ 25 / hora.

En segundo lugar, cuando el costo de la mano de obra era lo suficientemente alto y el costo de transportar piezas e incluso vehículos completos desde el extranjero era lo suficientemente bajo, se cerraron fábricas enteras y las operaciones se trasladaron a China, México y otros países.

Esas dos fuerzas continúan haciendo que millones de empleos en los Estados Unidos no existan. No hay trabajos de reemplazo para ellos. Si su habilidad era coser una funda de asiento o atornillar un juego de llantas, esos trabajos de $ 25 / hora ya no existen.

Probablemente nunca volverán a existir.

Muchos trabajos en computadoras en este momento probablemente no existirán en una década o dos.

Hay muchas personas que diseñan y crean sitios web para ganarse la vida. Con las plantillas y los creadores de sitios web de bricolaje, quizás solo exista una pequeña fracción de esos trabajos.

Solía ​​haber personas que introducían tarjetas perforadas en un mainframe o que traducían programas escritos a mano en tarjetas perforadas y ninguno de esos trabajos existe. Heck, solía haber operadores de centralita telefónica y esos trabajos no existen.

Con el tiempo, la mayoría de los trabajos de alto valor serán reemplazados por alguna forma de automatización o mano de obra más barata si el costo de la automatización, el transporte y la comunicación cae por debajo del costo operativo de ese trabajo.

Si en algún momento el desarrollo de software se puede automatizar y eliminar trabajos, le garantizo que las corporaciones invertirán en eso si es rentable.

Por lo tanto, la visión a largo plazo no es que su trabajo desaparecerá a cierta edad, sino más bien cuando haya una forma más rentable de crear software. Cuando eso sucede, muchos trabajos cambiarán o desaparecerán por completo.

La manera de evitar el mismo destino que los trabajadores industriales de la generación anterior es continuar aprendiendo, creciendo y ganando habilidades que son valiosas más allá de la habilidad muy particular que tiene ahora.

Eso puede significar aprender nuevas tecnologías, pero también significa aprender habilidades de las personas, administración, hablar en público, ventas, operaciones, contabilidad, finanzas o cualquier otra cosa que lo haga más valioso para cualquier empresa.

Todos trabajamos en el mercado laboral y al mercado no le importan las habilidades que tenemos, sino las habilidades que se demandan. Mientras su habilidad esté en demanda, puede encontrar trabajo.

-Brian

PD: También podrías disfrutar de mi otro escrito …

No es cierto que el desarrollo de software sea un trabajo sin salida después de 35-40. Aquí, sin embargo, hay algunas cosas que son ciertas:

  1. El ageismo existe en la industria del software (junto con el sexismo, el racismo, la xenofobia, la cultura de los programadores y todos esos otros beneficios sociales). No en todas partes, pero está disponible en suficientes lugares para impactar en conseguir un trabajo.
  2. En 35-40, puede esperar una mayor compensación y mejores condiciones de trabajo que alguien con habilidades igualmente aplicables que tenga entre 25 y 30 años.
  3. Entre 35 y 40 años, las habilidades y la tecnología más avanzadas que aprendió en la escuela tienen ahora entre 10 y 20 años; Si no lo ha hecho, corre el riesgo de quedar obsoleto.
  4. En muchas empresas, no existe una “escala técnica” viable para los desarrolladores de software: un título como “ingeniero sénior” es el más alto disponible para los desarrolladores de software, y después de que este nivel de pago alcance el límite, los desarrolladores de software tienen que asumir roles de gestión, ya sea que ” se adaptan a ellos o no, para avanzar.
  5. La “gestión” no se trata solo de gestionar personas. En una empresa con futuro, alguien debe administrar la tecnología, por ejemplo, el CTO. Muchos CTO todavía codifican, y pocos llamarían a CTO un trabajo sin salida.
  6. Algunas compañías contratan deliberadamente a desarrolladores de software más maduros, especialmente para sus sitios remotos, para que sean “crecidos en la plataforma”.

Aquí hay algunas cosas que puede hacer, mucho después de 35-40, para seguir siendo desarrollador de software:

  • Trabajar para una gran empresa que tiene una escalera técnica o una escalera de carrera dual
  • Conviértete en un contratista a tiempo completo
  • Hazte consultor
  • Comience su propia empresa
  • Tome un trabajo fácil y haga trabajos de desarrollo de software por contrato.
  • Mantenga sus habilidades actualizadas, aprenda de su experiencia, tenga buenas personas y habilidades de comunicación, y sea realmente bueno en su trabajo

A2A.

No creo que no puedas ser técnico después de cierta edad. Tengo 55 años y soy muy buscado por mis habilidades técnicas. Agregaré, sin embargo, que las personas mayores necesitan mantenerse al día con la salud y el estado físico. Además, como los jóvenes ambiciosos, estudio mucho para mantenerme al día. He completado unos 80 cursos universitarios, 1500 cursos de Pluralsight, y puedo ayudar fácilmente a mis dos hijos universitarios con cualquier materia en su universidad.

En muchos casos, las personas mayores que ocupan puestos técnicos o administrativos superiores son muy técnicos, pero no se jactan de ello con las personas más jóvenes. Si un hombre de 25 años quiere desafiarme sobre una habilidad que dominé antes de que él naciera, normalmente preferiría no pelear por eso. No te compra nada. Puedo decirles que mientras estoy sentado escuchando a desarrolladores realmente jóvenes, a veces pienso que la persona no entiende la web. … o, a veces, Ciencias de la Computación … o, a veces, matemáticas y física. Ahora me quedo callado en momentos que no tendría hace 20 años, pero es porque tengo más madurez en lugar de menos inteligencia.

En resumen, todos declinamos un poco con la edad, pero con la medicina moderna, un poco de buena fortuna y algo de sentido común, ese tiempo es probablemente entre 65 y 70 para la mayoría de nosotros.

El año pasado, cuando cumplí 45 años, después de dejar Facebook y luego tomar un descanso, terminé realizando varias entrevistas y haciéndolo realmente horrible, hasta que encontré la disciplina adecuada para el conjunto ecléctico de habilidades que he desarrollado durante estos años.

El límite varía, dependiendo de su tiempo en la industria. Como me salteé la universidad y me metí directamente en el negocio, realmente comenzó alrededor de 40 para mí. El trabajo está ahí, las oportunidades están ahí, pero las entrevistas y expectativas sobre ti cambian.

La gente querrá más experiencia y conocimiento de usted que presionar teclas. Van a esperar un arquitecto, un ingeniero, un diseñador de soluciones, un instructor, un analizador de riesgos, un evaluador de riesgos …

“Me gusta ensuciar mi Hans” deja de implicar al jugador del equipo y comienza a sugerir “microgerente” o subdesarrollo de sus habilidades de ingeniería ( este candidato no construirá nuestra nueva arquitectura de microservicio, en su lugar, escribirá manualmente archivos html a las 10 palabras por minuto mientras nos cuenta todo sobre el nuevo calor en apache de hace 6 años ).

El ángulo de muchas de sus entrevistas va a cambiar. Su adaptabilidad, entusiasmo por aprender, son obstáculos a medida que pasa de hablar con gerentes junior a contratar gerentes y ejecutivos y CTO.

También será cada vez más probable que te entrevisten como un partido de equipo por personas que (tal vez no saben que van a ser) menores para ti.

Tuve varias entrevistas de Google durante todo el día el año pasado, que fueron algunas de las mejores / peores que he experimentado.

Al pasar por las entrevistas generales, luché amargamente en las pruebas de entrevistas de palabras clave disfrazadas de codificación:

El entrevistador presenta un problema bastante trivial sin contexto. ([editar] Y cuando dicen ‘imagina que estás trabajando con un compañero de trabajo’ en esto: ¿Lo tolerarías de un compañero de trabajo? ¿Qué soy yo, encarnado de desbordamiento de pila?) O presentan un resumen bastante específico pero abstracto problema y proponer un enfoque esqueleto: “Oh, no tomaría este enfoque porque REALMENTE BUENAS RAZONES”. El entrevistador siente la parte superior de su cabeza: ¿era estático o un avión que volaba muy bajo? “Podríamos volver a eso, pero comencemos con esto”.

Genial: escribí un sistema operativo multitarea en ensamblador a la edad de 14 años y quieres que revise este problema 101 y diga “lista enlazada” en el momento adecuado para que puedas preguntarme “cuándo sería mala una lista enlazada”. “, Puedo tratar de no decir” cuando te tiene usándolo “y luego puedes decir” qué pasaría si tuviéramos miles de millones de entradas “.

En estas entrevistas trato de recordar a los consultores con los que he tenido que trabajar. Conocía toda la jerga de alto nivel, pero no podía decirte cómo funciona un puntero. Eso no lo hace menos incómodo sabiendo que vamos a perder 45 minutos obteniendo cosas del nivel de la pantalla del teléfono por alguien que lo involucra como si las Listas Vinculadas fueran magia especial.

Como entrevistado, esto es increíblemente difícil porque estoy solicitando un puesto de alto nivel, y ahora me paso 45 minutos de mi ventana discutiendo las listas enlazadas 101.

Lo que hace que esta rejilla sea tan mala es esa sensación de estar en un riel.

Le pregunté a un entrevistador: ¿Habría usado una lista vinculada para resolver el primer problema? Oh no, obviamente no escalaría . ¿Sabes que estoy entrevistando para un puesto superior? Estoy reemplazando a otro entrevistador, no estoy exactamente seguro de para qué puesto lo estamos entrevistando, no hubiera esperado que un senior luche tanto con el problema inicial de la lista vinculada .

No habría usado una lista vinculada para resolver su propio problema de lista vinculada. ..

Si se tratara de un compañero de trabajo, los sentaría y los guiaría a través de aplicaciones y preocupaciones con doble frente a solo, circular, intrusivo frente a no intrusivo, averiguaría qué faceta de su requisito he omitido o no expresado, o cuál es la brecha en su conocimiento.

En algunas de estas 101 preguntas, he podido hacer esto, salir de la vía, por así decirlo, y eso ha sido realmente genial. Pero, de nuevo: todo se reduce al temor de que estés perdiendo 45 minutos de tu ventana por el guión de alguien.

De nuevo: es el riel. Es como que te pidan pintar con los dedos mientras esperas a un verdadero entrevistador. Ciertamente, tendría mis dudas sobre la contratación de alguien a quien le fue bien en una de esas entrevistas. ¿Seriamente? ¿Elegiste un algoritmo X para resolver ese problema? ¿Y tenía que tener un intercambio con el entrevistador para finalmente decidir usar un algoritmoY para resolverlo en la etapa 2 y el algoritmoZ para resolverlo en la etapa 3? Yeesh

Un desafío mayor, cuanto más grande es la compañía, son los entrevistadores que reconocen que te están entrevistando porque destacas en algún campo; para que puedas ser un compañero

Durante mi última ronda con Google, no me fue tan bien. Un ingeniero me pidió que escribiera una aplicación muy específica, rechazó continuamente las solicitudes para aclarar en qué parte de la aplicación podría querer que me concentrara, se quejó de mi descripción del alcance de lo que acababa de presentarme y luego me dejó caer en un “Bueno, esta parte es la trampa más compleja, así que voy allí”.

En última instancia, quería explícitamente discutir una sola función de una parte mundana de la aplicación. Después de que la entrevista terminó oficialmente, indicó que había trabajado en la implementación de referencia de esta parte y que recientemente la había reescrito con el “algoritmo XYZ”. Espere: ¡mencioné eso durante los primeros 5 minutos de la entrevista! “No, dijiste XZY”.

Una segunda faceta de esto se manifiesta en el tipo de aspecto de capa y daga de las personas que usan ejemplos históricos. Puede ser un desafío lograr que reconozcan “Estoy entrevistando aquí precisamente porque sé sobre este tipo de cosas”.

En otros dos casos, los ingenieros se desanimaron al reconocer el problema y asumieron que había “tenido este antes”. ¿Seriamente? Has leído mi currículum, y elegiste una pregunta basada en mi experiencia, y luego estás * sorprendido * de que te diga “¿oh esto?”

El primero entró y esbozó un problema de depuración multiproceso distribuido, y en tono de broma dije “como, ¿cazar el proceso de Java?” Parecía ofendido. Pero seguí adelante y me dio una explicación de 5 minutos del sistema. Resumí “¿Entonces es un mercado publicitario con un front-end basado en la web?” Pasé unos segundos comprobando que no acababa de decir algo horrible sobre su madre.

Me tomé un minuto para hacerle saber que estábamos en la misma página porque la experiencia, y él respondió muy bien a eso. Me pidió que lo acompañara a través de mi pensamiento. Pero, tbh, estaba frustrado en este punto, así que jugué en lugar de mostrarle un enfoque totalmente diferente que construiría o trabajaría con productores / gerentes para lograr que los ingenieros se incorporen ellos mismos. Quería alejarme de la sospecha de “has leído esto en el desbordamiento de pila”.

En lugar de tratar esto como un problema único, lo identifiqué como un problema recurrente, argumentó, pero señalé: * ambos * lo hemos hecho varias veces. Sabemos cuál es la causa, lo que nos importa es el lugar y la restauración del servicio. Ok, él compró eso.

Al final, confió que esto no era completamente lo que estaban buscando en esta pregunta en particular, sino que nunca había tenido un candidato que presentara el enfoque que tenía y que en realidad estaría repensando la pregunta por completo.

Fue una sesión de entrevista difícil, en gran parte porque el entrevistador parecía muy reacio a considerar que alguien que aún no había trabajado en Google podría haber experimentado un escenario como este.

El segundo caso … me presentó un buen problema sólido y práctico. Una variación de algo con lo que tuve que lidiar en varios escenarios, pero de nuevo parecía no darse cuenta de eso. Esto me desconcierta, porque traducir soluciones a metáforas para que puedan volver a aplicarse es un aspecto básico de la ingeniería.

En retrospectiva, se puso cada vez más molesto cuando me moví hacia un camino sutilmente diferente al que él parecía estar presionando, conmigo, en ese momento, malinterpretando los empujes como cebo de discusión. Finalmente, llegué cerca de su solución con algunas mejoras que él atribuyó a su orientación.

Su buen humor final se desvaneció durante la entrevista posterior, cuando le señalé que esas mejoras eran específicamente este punto que había hecho y ese punto que había hecho, y que había estado apuntando hacia este conjunto particular de enfoques desde el desplazamiento (señalando a uno de ellos todavía en el tablero). Indicó específicamente que, dado que ese no era el sistema que había implementado hace 10 años, no podríamos saber si hubiera sido mejor.

[editar] Describo mal lo anterior, había pedido comentarios específicamente, y estaba describiendo como si hubiera estado tratando de llevarme a un objetivo en particular.

En última instancia, este fue un problema resuelto para los dos, pero este entrevistador no estaba listo para ser desafiado. Su solución fue elegante y simple; la mía fue similar con un giro en lugar de un incremento en la complejidad. También implicó una apuesta informada que le dio más longevidad que la suya.

-Editar: Este entrevistador abrió diciendo que quería que tratamos esto como un problema activo que estábamos tratando de resolver, trabajando junto a mí mismo como líder para evaluar el nivel de antigüedad para el que era adecuado. A cada paso reconocía las instrucciones.

El problema es la falta de voluntad de un ingeniero para ver que otra persona ya haya resuelto su problema (un concepto común entre las grandes compañías tecnológicas) o no creían en mi currículum y esperaban un ingeniero mucho menos experimentado que demostrarían ser un fraude al no conocer la palabra “lista vinculada”.

En cualquier caso, es muy doloroso, [editar] y algo por lo que vale la pena encontrar una manera de practicar y prepararse. Asistir a convenciones es una buena manera de encontrar compañeros para desafiarte a ti mismo.

Le dije a un entrevistador: ¿Cuánto sabes sobre la arquitectura moderna de la CPU? Porque si lo que le importa es si tengo una implementación de lista vinculada en caché L1 en lugar de RAM llena de años de experiencia práctica, conocimiento de las diferentes implementaciones diferentes, más advertencias intrusivas frente a no intrusivas, implicaciones de coherencia de caché, etc., etc. Podemos parar aquí.

He descubierto que en muchos de estos escenarios, el entrevistador posiblemente se siente abrumado o incómodo con su nivel de experiencia en la medida en que luchan por encontrar un terreno común, y la entrevista es en gran parte un intento de tratar de descubrir de alguna manera puede refutar sus reclamos o asignar su experiencia a la de ellos.

Tiene un par de problemas interesantes bajo la manga. Si te sientas y trabajas en un proyecto significativo, harías mucho mejor juntos que tratar de descubrir aleatoriamente un algoritmo o estructura de datos que puedas sentarte y discutir como una conversación más fría.

Para mí, la clave del éxito fue encontrar empresas que pudieran ser entrevistadas * ed *.

Cuando entrevisté en Facebook en 2014, ese todavía era el caso, y las entrevistas de Facebook, aunque morderse las uñas, también fueron muy atractivas. Google, LinkedIn y algunas de las otras compañías de gran tecnología, todo el proceso parece suponer que eres un error bajo el microscopio. La más mínima indicación de que podrías estar mirando hacia atrás y asustarlos o enojarlos.

Probablemente pueda esperar más abandono, necesitará más persistencia y paciencia, pero no es porque el trabajo ya no esté allí.

Creo que la gente se obsesiona demasiado con el desarrollo de software como un trabajo sin salida. ¿Por qué el desarrollo de software específicamente? Supongo, debido a toda la popularidad reciente.

La definición de trabajo sin salida es un trabajo sin avance posible a una posición mejor remunerada y sin habilidades transferibles .

El desarrollador siempre tiene la posibilidad de avanzar . Piense globalmente, no solo en el alcance de algún equipo en el que esté trabajando actualmente. ¿No es posible avanzar al siguiente puesto dentro de un equipo? Muévete a otro equipo con tal posibilidad. No hay tal equipo? Mudarse a otra empresa. No hay tal empresa? Mudarse a otro país. Hay empresas en los Estados Unidos con una posición técnica muy alta. Por ejemplo, CTO. Eso es cierto: en algunas empresas tienen más funciones de gestión, pero no en todas partes. Por ejemplo, la escalera de ingeniería de Google es bastante alta. Como Amazon, Facebook, etc. Y sí, en niveles más altos tienes que tener habilidades de liderazgo y tal vez administrar personas. Pero si quería trabajar solo junto a su computadora y obtener avances en su carrera, lo siento, no va a suceder. Los desarrolladores se miden por su impacto y si pasas todo el tiempo con la computadora, incluso siendo el mejor desarrollador, por definición tienes un impacto limitado en el producto y las personas que te rodean.

A continuación, habilidades transferibles . Lo siento, ¡pero somos desarrolladores! Tenemos el mejor conjunto de habilidades abstractas: capacidad de aprender rápido, capacidad de pensar rápido, capacidad de analizar datos, pensamiento abstracto, capacidad de automatizar, resolución de problemas, etc. Personalmente, creo que el desarrollo en sí mismo se trata de resolver problemas. Con la resolución de problemas, eres bueno para muchos otros trabajos: de secretario a CEO. Básicamente, tache todas las profesiones que necesitan conocimientos o habilidades muy específicas, como médicos, abogados, mecánicos de automóviles, etc. y el resto está disponible. Un poco de ejercicio: ¿cuáles crees que son las habilidades transferibles del médico? Abogado? ¿Qué tal el avance profesional? ¿Por qué obsesionarse con los desarrolladores de software?

La verdad es que el desarrollo profesional de desarrollo de software se realiza a escala logarítmica. También es cierto para casi cualquier otra carrera o incluso MMORPG (no es una coincidencia). Cada vez es más largo y difícil llegar al siguiente nivel. Cada vez hay menos personas en el siguiente nivel. La competencia es cada vez más grande en el siguiente nivel. Si ya estás enfermo de este juego, comienza otro. No importa si tienes 25 o 45 años. Siempre tienes una opción. Siempre es difícil levantarse e irse, incluso si siente que está atrapado. Simplemente hazlo.

Voy a responder esto, pero tengan paciencia conmigo todo el tiempo, el fondo es importante.

Todavía no tengo 35 años, pero estaré allí en un par de años. Me gustaría pensar que hasta ahora he tenido bastante éxito en mi carrera. Comencé como desarrollador y ahora estoy trabajando como arquitecto de software.

Tengo experiencia trabajando como desarrollador, arquitecto, scrum master, líder de equipo, gestión de proyectos, etc. Incluso construí equipos desde cero, contratando a los candidatos adecuados, capacitándolos en sus puntos débiles, etc.

En resumen, tengo habilidades en TODAS las áreas del desarrollo de software, nunca pierdo de vista ningún aspecto de SDLC y honestamente puedo llevar a un equipo hacia adelante, tanto técnicamente como en términos de administrar equipos y crear los procesos de desarrollo correctos y el entorno de simulación intelectual para desarrolladores .

¿Eso me hace un buen candidato para cualquier trabajo? Pensarías que sí, ¿por qué no, tengo todas las habilidades? Yo también pensé lo mismo.

Cuando estaba buscando trabajo recientemente, no recibí una llamada de entrevista para la mayoría de las empresas que solicité. Fue agotador ir a través de reclutadores que intentaban hacer coincidir las palabras clave en las especificaciones de trabajo con mi currículum. No entendieron que yo era más valioso que solo las habilidades técnicas enumeradas en las especificaciones del trabajo.

Entre el puñado de compañías para las que recibí una llamada, buscaban a alguien que hiciera “solo la codificación” por un sueldo miserable.

También hubo un par de empresas que me asignaron pruebas de codificación donde me pidieron que “imprima una escalera” y “encuentre números repetidos”. Rechacé esas pruebas, no por arrogancia sino porque mis habilidades estaban más allá de lo que pensaban del papel.

El resto de las compañías estaban demasiado lejos para viajar, necesitando que pasara 5 horas en el tren todos los días. También rechacé las llamadas para entrevistas, ya que mudar mi casa no era una opción con mi familia establecida en mi ciudad actual.

Rechacé el 99% de las empresas. Entre el resto del 1%, encontré razones para rechazar más.


Ahora retrocedamos 10–12 años, cuando tenía poco más de 20 años. Yo era un desarrollador junior entonces. Soltero y tenía la libertad de mudarse a cualquier parte del mundo. Podría haber elegido cualquier trabajo en el mundo. También estaba feliz de trabajar en “desarrollo justo” por un salario más bajo.


Entonces, ¿qué te dice esta historia? ¿Era un mejor ingeniero de software en mis primeros 20 años? Demonios, no!

Ahora que tengo 30 años, soy exigente con mi trabajo. Me importa más el impacto que traigo a la empresa. También me importa pasar tiempo de calidad con mi familia.

Pero desafortunadamente, las compañías no entienden eso. También quieren personas con habilidades específicas, no una con una amplia gama de experiencia en muchas áreas.

Creo que la razón de esto es porque la mayoría de las veces, lo contratan para reemplazar a alguien que dejó la empresa. Solo se espera que hagas lo que hizo la persona anterior, nada más. La mayoría de sus habilidades “adicionales” resultan inútiles para el papel que está solicitando.

Entonces, sí, en cierto modo, esta profesión es difícil para las personas que tienen más de 30 años, no solo porque carecemos de habilidades, sino porque tenemos más cosas que considerar antes de hacer cada movimiento.


PD: Encontrará otra información interesante sobre desarrollo de software en SoftwareYoga

Esta pregunta despertó mi interés ya que soy programador y cumpliré 34 este año. He tenido una carrera muy variada, trabajando como Gerente de Proyecto, Programador, Analista de Negocios, además de dirigir mi propia consultoría.

Actualmente estoy bastante contento de trabajar como ingeniero, y desde que me incliné por primera vez para codificar alrededor de 22 en la universidad, casi siempre he codificado algo (cualquiera que haya sido mi función oficial).

Sobre el $$

Actualmente estoy trabajando en Banca en Australia, y hace 2 semanas estábamos hablando de por qué hay muy pocos desarrolladores de software mayores de 40 años en cualquier sector de la industria. Surgió una historia sobre un programador de COBOL recientemente retirado (alrededor de 65 años) que era tan valioso que el Banco literalmente le escribió un cheque en blanco para regresar y ayudar con un proyecto.

Varias personas que he conocido a lo largo de mi carrera que tienen más de 40 años pueden nombrar su precio por la consulta (en realidad, esta es una base de $ 170 AUD + bonos para un puesto de FT, y aproximadamente $ 1200–1500 por día como contratista). Cuando administraba mi negocio y consultaba, mi tasa de cobro era típicamente de $ 250 por hora.

Mi cuñado tiene unos 60 años y es ingeniero de SQL. Estaría en el rango de $ 1200–1500 por día, pero actualmente solo trabaja 3 días a la semana porque valora su tiempo más que el dinero.

Hasta ahora he descrito a 4 personas que conozco, 2 de las cuales han tenido largas carreras de programación desarrollando profundidad en una especialidad tecnológica particular, 2 de las cuales han estado constantemente aprendiendo y manteniéndose a la vanguardia en términos de pilas de tecnología, habilidades y arquitectura.

Entonces, la respuesta corta en este caso es WRT para obtener altos ingresos, la ingeniería de software no es en absoluto una carrera sin salida después de los 35.

Es más que $$

La respuesta un poco más larga es que los dos tipos que mencioné que están en sus 40 años actualmente están divididos entre comenzar sus propios negocios y trabajar hacia roles más altos como jefe de front-end o jefe de tecnología.

Lo que se vuelve difícil a medida que avanza en su carrera es mantener el equilibrio entre la gestión técnica y la codificación práctica. IME, si desea mantener un rol práctico, debe seleccionar una tecnología compleja específica y conducir hacia una especialidad en esta área. De lo contrario, debe avanzar hacia un rol más basado en la consultoría, donde tenga control sobre la cantidad de manos en la codificación que realiza.

Todas las personas que he mencionado son muy articuladas, aprenden constantemente y son buenas con las personas. Como he consultado un poco, diría que el grupo con el que se relaciona su pregunta es lo que coloquialmente llamaríamos “salvavidas”. Definitivamente hay un grupo de desarrolladores que he observado en muchas compañías, que generalmente trabajan en un marco como .NET o Java, y generalmente están muy contentos de seguir adelante y hacer su trabajo de 9 a 5.

He visto a este tipo de empleados tener dificultades para progresar en la vía administrativa cuando desean realizar la transición.

Conocete a ti mismo

No hay nada intrínseco en la carrera de programación o desarrollo que lo convierta en un trabajo sin salida después de los 35 (o cualquier otra disciplina de ingeniería). La industria está avanzando rápidamente y siempre hay algo nuevo que aprender. Si tiene la aptitud, el impulso y la visión, podrá ganarse la vida como programador a lo largo de su carrera. Si tienes estos rasgos y eres bueno con las personas, hay puestos de administración o consultorías en abundancia.

Todos los grandes programadores de carrera que he conocido son BRILLANTES para lidiar con la ambigüedad, y sintonizar esto con la respuesta “correcta”

Dicho esto, sé que soy excelente para venderme a mí mismo pero malo para vender productos, excelente para resolver problemas pero malo para el aprendizaje escrito, soy excelente para comunicar información técnica en términos simples, pero a veces me molesto con otros desarrolladores por el camino equivocado porque cuestiono sus decisiones y elecciones. En resumen, tengo muy claras mis fortalezas y debilidades y siempre miro hacia donde quiero estar en el futuro para ayudarme a aprovechar mis habilidades actuales y trabajar en cualquier debilidad perjudicial que pueda afectar cómo podría ser este futuro.

Definitivamente hay un lugar para los programadores de carrera, pero en mi experiencia tienen que ser grandes ingenieros, y generalmente se inclinan hacia algún tipo de rol de arquitectura. Si está en el medio de la manada, es mejor alejarse del desarrollo y dirigirse a la administración, pero recuerde

También se podría argumentar que la gerencia media es un trabajo sin salida …

No, no lo creo. Vayamos con lo básico de Ingeniería de Software.

¿Qué es exactamente la ingeniería de software?

La ingeniería de software es un campo de ingeniería para diseñar y escribir programas para computadoras u otros dispositivos electrónicos. Un ingeniero de software, o programador, escribe software (o cambia el software existente) y compila software utilizando métodos que lo mejoran. El software de mejor calidad es más fácil de usar. Una mejor documentación ayuda a otras personas a comprenderla, mantenerla y agregar nuevas funciones. Convertirse en un ingeniero de software requiere experiencia y práctica en la escritura de código. La ingeniería de software puede ser un trabajo muy difícil.

Puede repetirse durante el ciclo de vida de la versión de software.

Por lo tanto, según la definición, puede ver que no es solo la codificación. Básicamente, la codificación es la parte de nicho de la ingeniería de software al diseñar un software o producto.

Ahora sigamos los pasos cuando diseñe un producto: –

Paso 1: – Necesidad de analizar los requisitos comerciales.

Paso 2: necesita comprender a los clientes que utilizarán el producto.

Paso 3: – Diseñe cada componente para el producto.

Paso 4: – Diseñe el flujo de cómo estos componentes interactuarán entre sí.

Paso 4: – Comprende a los competidores que ya tienen este producto similar.

Paso 5: – Analice qué tipo de tecnología utilizan sus competidores.

Paso 6: – Comprender el ecosistema de los desarrolladores en la organización.

Paso 7: – Diseñe los diagramas de flujo detallados de todos los componentes que ha diseñado.

Paso 8: descubra todas las tecnologías que desea utilizar manteniéndolas alineadas con los requisitos del usuario que ya ha analizado junto con el ecosistema de desarrolladores. Como tenemos que construir el producto amigable para el desarrollador también.

Paso 9: – Propuso las tecnologías para todo el diseño de nivel de componentes junto con sus ventajas con sus tecnologías de contador que básicamente se ajustan a sus requisitos actuales, ya que ninguno de los componentes tecnológicos nunca está en perfecto estado. Realmente necesitamos moldearlo a nuestra manera.

Paso 10: – Integra todos los componentes que hemos diseñado en un diagrama detallado.

Paso 11: – Comprenda la sólida infraestructura actual en el mercado que se adapta a su producto.

Paso 12: – Elija el apropiado con respecto a sus necesidades, por ejemplo, si está en la nube, lo que le convenga IAAS o SAAS.

Paso 13: – Diseñe la infraestructura y vuelva a alinearla con el ecosistema del desarrollador. Al final, solo los desarrolladores serán los dueños y los construirán.

Paso 14: – Diseñe las estrategias de prueba para decidir cuánto será automatizado o manual.

Paso 15: – Descubra el proceso de planificación de lanzamiento y las herramientas.

Paso 16: – Documente todo y preséntelo al CTO o la organización interesada.

Paso 17: configurar el equipo y proporcionarles todos los planos y documentos.

Paso 18: – Team Lead comprenderá los planos y diseñará las estrategias y estándares de codificación nuevamente alineados con la organización.

Paso 19: – El desarrollador analizará el requisito y comenzará a codificar con patrones de diseño relevantes o prácticas de codificación según lo definido por la organización.

Paso 20: – El equipo entregará el producto.

Por lo tanto, puede ver cuánta tarea implica diseñar para entregar un solo producto y todo esto tendrá experiencia. La ingeniería de software no tiene nada que ver con la codificación. Implicará todos los pasos definidos y podemos decir que con más experiencia habrá más responsabilidades y madurez en su trabajo también.

Espero que sea algo que responda a tu pregunta.

Cumpliré 46 este año, y aún no he visto esto. ¿Quizás cuando tenga 50 años? Quizás. Pero por el momento, no paso mucho tiempo preocupándome por eso. Me gusta resolver problemas y (posiblemente lo más importante) me gusta encontrar nuevas formas de resolver problemas. Por eso, parece que tengo habilidades que siempre están en demanda.


1) Me mantengo relativamente actualizado: recientemente escribí un proyecto en Node.JS, trabajé con Hadoop, escribí y publiqué aplicaciones de Android, trabajé con NoSQL, escribí código en Go y me familiaricé con varias características de JQuery y Bootstrap.

2) Si bien Java no era el lenguaje que usaba directamente de la universidad, lo aprendí poco después de la universidad, y lo he mantenido. Y en este punto, tener más de 15 años de experiencia en Java todavía se considera bastante valioso para fines de consultoría. También me he mantenido razonablemente actualizado con Java: he adquirido Spring, JMS, REST, JSON y JPA y otras tecnologías relacionadas a medida que avanzo.

3) Me mantengo razonablemente actualizado con el resto del ecosistema: he usado IntelliJ y Eclipse y Sublime y Emacs y Vi a lo largo de los años, y me siento cómodo con todos ellos para resolver diferentes problemas. Comencé con CVS, aprendí Subversion y más recientemente trabajé con git. También he trabajado con AWS. He sido ScrumMaster certificado, propietario de un producto y desarrollador. He escrito muchas pruebas unitarias automatizadas (el desarrollo de prueba primero es uno de mis desafíos intelectuales favoritos cuando estoy diseñando y construyendo un sistema)

4) No tengo miedo de recoger algo, aprenderlo y guardarlo: he escrito aplicaciones web en Ruby on Rails y Grails, y he resuelto problemas de negocios con aplicaciones escritas en Perl, PHP y Python. He trabajado con SOAP y AOP. Cuando alguien me pregunta cuáles son las fortalezas y debilidades de los diferentes enfoques o plataformas tecnológicas, generalmente puedo dar una respuesta bien pensada.

5) Intento ser un desarrollador de pila completa: entiendo bien Unix y escribo regularmente scripts de shell. Me siento cómodo con la implementación de aplicaciones, servidores y herramientas, tanto para fines de desarrollo como de producción. Sé SQL y NoSQL y entiendo cuándo cada uno es mejor. Me siento cómodo con TCP / IP: conozco los conceptos básicos de enrutamiento y DHCP y varios tipos de servidores proxy. He creado aplicaciones MVC, aplicaciones basadas en mensajes y servicios EJB y Spring. He trabajado con Javascript y CSS en el front-end. Nunca voy a ser un desarrollador de UX galardonado, pero al menos puedo hacer lo básico.

Estoy planeando trabajar por otros 21 años. Tengo la esperanza de que mi experiencia expansiva, mi disposición a adquirir nuevas tecnologías y mi experiencia general con el desarrollo basado en la web continuarán proporcionándome un trabajo significativo durante las próximas 2 décadas. Si nos alejamos del desarrollo basado en la web para construir todo con servidores D-wave, me dejaré atrás. Si la programación funcional finalmente se hace cargo, puedo quedarme atrás. Pero hasta entonces, voy a seguir teniendo esperanzas.


Los ingresos máximos ajustados a la inflación de la persona promedio se producen cuando tienen 40 1/2 años de edad. En este momento, han alcanzado el máximo potencial de ingresos de su profesión y deben reinventarse a sí mismos o aceptar que su salario ya no aumentará en términos ajustados a la inflación, porque ya están ganando tanto como valen.

Ahora, los ingenieros civiles, los maestros y los contadores tienen aproximadamente el mismo número de empleados que tienen 65 años que 25, por lo que este conocimiento está integrado en las expectativas de estas profesiones. Pero la gran mayoría de los ingenieros de software tiene menos de 45 años, por lo que el conocimiento de que las ganancias se estabilizarán aún no se ha filtrado. Es una sorpresa para la primera gran cohorte de desarrolladores que ingresaron al campo a fines de la década de 1990.

El desarrollo de software todavía es un campo joven, por lo que las herramientas y técnicas siguen cambiando muy rápidamente. Un desarrollador de software que no aprende continuamente nuevas habilidades se vuelve obsoleto en mucho menos de 20 años, por lo que un desarrollador de 40 años puede quedar fácilmente sin trabajo y con perspectivas limitadas.

El desarrollo de software es un campo orientado a proyectos, por lo que todas las personas de software están sujetas a intervalos de desempleo entre proyectos. Compare esto con, digamos, contabilidad, que tiene un ciclo mensual interminable de libros para cerrar. Esto significa que es muy probable que un desarrollador de software que no se mantiene al día con las últimas cosas sea expulsado de su profesión o tenga que volver a capacitarse ampliamente mientras está desempleado.

El ageism es una fuerza significativa en el empleo de software. La edad promedio de los desarrolladores es de aproximadamente 30 años, no 40 como en las industrias maduras. Un desarrollador de más de 40 años habrá tenido una carrera muy diferente a la de un joven de 30 años. Los trabajadores y gerentes más jóvenes tienden a no reconocer las habilidades del ingeniero mayor como relevantes. La cultura go-go, work-all-night también es más fácil de soportar para los jóvenes y solteros.

La demanda de talento económico (puede leerse como “joven”) está aumentando los salarios iniciales, pero ha tenido poco efecto en la parte superior de la escala salarial. De esta manera, el desarrollo de software es muy similar al de enfermería. Es una gran habilidad al salir de la universidad, pero no paga mucho más después de 20 años. Puede hablar sobre el “rango dinámico” de los salarios. Cuando comencé (en 1980) el rango dinámico era 2.5: 1. En este momento es como 1.8: 1 y sigue cayendo.

Los mejores desarrolladores seguirán aprendiendo y logrando hasta que alcancen la edad de jubilación; tus Ken Thompsons y tus Bjarne Stroustrups. Pero la mayoría de nosotros finalmente nos daremos cuenta (generalmente alrededor de los 40 años) de que no somos esos gigantes famosos de la industria.

Los gerentes ganan algo más que los desarrolladores, pero hay un problema. Solo hay un puesto de gerente por cada media docena de programadores. La competencia es correspondientemente más pronunciada. Aún más raros son los roles de ingeniero jefe de software. Lo que hay son los mismos roles que tenía cuando tenía 30 años, pagando la misma cantidad. Los desarrolladores mayores tienden a caer en estos roles si pierden su asiento después de los 40.

¿Significa todo esto que no hay “futuro” en el desarrollo de software? Eso depende del desarrollador individual. Significa que tal vez los desarrolladores deberían restringir su estilo de vida y enterrar algunas nueces para el invierno que es de mediana edad.

Como un chico de 40 años que trabaja en TI durante 22 años, podría decir NO en mayúsculas a esa pregunta. De hecho, debido a las nuevas tecnologías, el cambio de paradigmas, el nuevo hardware (desde teléfonos móviles hasta nuevos dispositivos de automatización) el campo es enorme, más grande que nunca en la historia. Y es imposible seguir atrayendo a más personas a esta industria al menos al ritmo que requiere.

A pesar de que las tecnologías en las que comencé a trabajar ahora están casi desaparecidas o están limitadas a pequeños nichos y aplicaciones heredadas, la base es la misma. Para los viejos como yo también es una gran ventaja, ahora, por ejemplo, estoy resolviendo problemas de ajuste extremadamente complejos que requieren mucha experiencia que no podría tener si comencé a trabajar en esto hace 5 años. Los fundamentos no han cambiado, los principios de los 80 todavía están aquí (OOP, Unit Testing), simplemente evolucionaron en diferentes implementaciones.

Al mismo tiempo, aprendí tantas cosas que ahora estoy trabajando principalmente como Arquitecto de soluciones, incluso cuando sigo codificando. Utilizo mi experiencia de cientos de proyectos en mi vida para avanzar y crear mejores soluciones y aprender de nuevo en un círculo virtuoso que amo. ¿Es difícil trabajar a los 40? Sí, más difícil que en mis 20 años. Tengo hijos, una vida más ocupada, un poco menos de energía, pero las personas mayores con responsabilidades se enfocan mejor y terminan produciendo lo mismo.

No puedo verme trabajando en algo diferente porque amo lo que hago y también este es el mundo con el que soñé cuando tenía 8 años y vi por primera vez un código que me hizo descubrir un mundo completamente nuevo.

Según mi experiencia, también sé que esta es una profesión que podría ser una pesadilla si solo ingresas por el dinero y no te apasiona. Seguramente lo odiarás porque nunca podrás dejar de aprender y luchar con nuevos problemas. Pero si amas eso, seguramente habrá un trabajo para ti en tus 40, 50 y 60 años.

Cualquier trabajo se convierte en un callejón sin salida tarde o temprano, es por eso que las personas se jubilan. Soy un programador de 55 años y cuando tenía 40 años parecía que disfrutaría la programación para siempre, era solo un pasatiempo bien pagado. El problema es que este trabajo no solo requiere cerebro, sino también dedos, muñecas, ojos, médula espinal, cuello, etc. que funcionan bien, y todas estas cosas no mejoran con la edad. Agregue a esta reducción gradual de energía, posible insomnio, etc., y un día se dará cuenta de que podría vivir mejor simplemente cultivando un huerto, mirando a los niños, caminando mucho, tal vez nadando en un océano cálido.

Estoy de acuerdo en que trabajar en algo creativo y único (o extremadamente bien pagado) podría mantener el interés por más tiempo, pero la mayoría de nosotros no tenemos tanta suerte. En cuanto a mí, trabajé como un contratista bien pagado durante 20 años con todas estas cosas “de vanguardia” que se vuelven obsoletas en 3 años, luego cambié a un trabajo permanente estable para apoyar y desarrollar una lógica muy compleja escrita en FoxPro para MS-DOS . Me resistí a volver a una de mis primeras habilidades, pero me ofrecieron una buena compensación. Diez años más tarde, el sistema que apoyé inicialmente con 2 colegas y luego solo fue completamente reemplazado por un sistema de IBM que hace un poco más que un software antiguo y emplea todo el piso de analistas trabajadores, básicamente preparan los requisitos para IBM pero no escriben cualquier código 🙂 No quería unirme a este equipo y volví a las aplicaciones web, escribir código todavía me despierta … el problema es que ahora escribir código se convirtió en el 10% del trabajo, el resto son comunicaciones interminables con las personas quienes son responsables del despliegue, la seguridad, las pruebas, etc. Lo que se hizo en 10 minutos hace 10 años ahora lleva 2 semanas … tanta burocracia … esto ya no es un pasatiempo bien pagado, me retiraría mañana si pudiera …

67.5 aquí. Trabajar para la organización del gobierno estatal. Perdí todo y comencé una nueva carrera cuando tenía 50 años. El título en Ciencias Sociales que nunca usé regresó a Community College y tomé varios cursos. Conseguí un trabajo con el Estado de Oregon haciendo MS Access, VB, PHP, SQL Server y cualquier otra cosa que se necesitara. A cargo de una aplicación web C # MVC, una gran aplicación VB (sí, aún en funcionamiento), todo tipo de procedimientos almacenados de SQL Server, etc. Cualquier elemento web nuevo está utilizando BootStrap.js receptivo. Puedo aprender cualquier idioma que necesite bastante rápido. Voy a casa y trabajo en el código en el que me gusta trabajar con varios sitios web de inicio en proceso. Uno para bailar, otro para traslados al aire libre, uno para surfear fotos. Mucha manipulación de imágenes. Va a jubilarse a los 70 (máxima seguridad social). Mi retiro no será un retiro de Champaña, sino un buen retiro de cerveza alemana. No soy el que más gana donde trabajo, pero soy el mejor en trazar una línea entre 2 puntos. Trabajo con muchas chapadoras de oro que quieren esconderse y tejer sus canastas que serán imposibles de escalar o solucionar problemas dentro de 5 años. Parece que tengo 45 años, así que eso podría ayudar un poco. Tengo muchos conocidos que tomaron la ruta que hice al final de la vida y todos están muy bien. Principalmente gobierno, hospital, esas cosas. No es un sueldo tan bueno como el sector privado, pero muy buenos beneficios. Ahora tengo 14 horas al mes de vacaciones y siempre 8 horas al mes de baja por enfermedad. Me gusta bromear acerca de cómo si estuviera en el sector privado ya me habrían arrojado por un precipicio. Soy responsable de toneladas de diseños que están siendo utilizados por el programa de agua potable y los programas de licencias, pero no obtengo mucho crédito, excepto por los clents que me pasan en el pasillo y dicen “Ojalá estuvieras trabajando en esto”. Mi lugar es una carrera de ratas de administrata tratando de parecer ocupada. Más trabajo ocupado que negocios. Siempre he creído que mi dieta y mi programa de ejercicios y especialmente las vitaminas del complejo B me ayudan con la memoria y la concentración.

Pensé en esta respuesta de la noche a la mañana y regresé para agregar un poco más. Los fines de semana estoy a la luz de la luna con 3 organizaciones que me pagan un estipendio mensual para construir mantener sus sitios web desde los que pueden administrar cosas. Uno es PHP / MySQL con el que no tengo ningún problema, los otros 2 son C # .NET (no MVC).

Tengo cero karisma y no gano muchas discusiones sobre TI, pero a la larga estoy casi reafirmado en que tomé el camino correcto, hice lo correcto:
Creé un sitio web de registro de líderes de excursionistas que es muy utilizado por uno de los clubes de escalada más grandes de los EE. UU., Quizás del mundo. Lo hice de forma gratuita, pero después de un tiempo dije que podrían tenerlo o pagarme $ 90 al mes para mantenerlo funcionando día y noche (nunca se rompe, pero necesita actualizaciones ocasionalmente). Utilicé PHP y MySQL y después de impuestos asciende a $ 60 al mes woo hoo. Sin embargo, los poderes que se desean incorporar mi sitio web en el sitio web del club principal (léase: ventanilla única para escalada, senderismo, salidas, gestión de registros de voluntarios). Tenían una enorme donación para pagar este nuevo “avance de TI”. Bueno, ya han pasado 2 años, no quieren ningún consejo o ayuda de mi parte (el viaje del súper ego para ser propietarios de sitios web sucede mucho), y han gastado más de $ 60,000 en mi pieza y todavía no pueden obtenerlo. derecho. Incluso mencioné “oye, sé que mis $ 90 van a desaparecer y no te preocupes, primero soy miembro del club y estoy feliz por este nuevo proyecto de TI”. Solo mencioné eso y recibí varios correos electrónicos “¡Oh, no! Todavía estamos usando su sitio web. Parece que no pueden obtener todas las funciones que el suyo ha incorporado al gran proyecto ”. Sé por qué están teniendo problemas. A veces tienes que violar las reglas de integridad relacional y usar la magia para obtener los resultados que necesitas (así que ayúdame, Codd). ah, se siente bien. Puedo gastar el dinero para mi viaje bianual a Costa Rica para aprender a surfear y bailar el Tico Swing (no hay baile latino como este).

Otro elogio de quemado lento que recibí fue cuando construí un programa de gestión de licencias simuladas en C # MVC como prueba de concepto para reemplazar los 3 programas de licencias que el departamento de Sistemas de Agua Potable estaba usando. Pagaban $ 100ka al año por uno de ellos, yo había construido los otros 2 en MS Access (backends de SQL Server).
Así que me sacaron del agua potable y esta maqueta se la mostré a todos, pero estaban ocupados escribiendo planes de negocios, haciendo análisis de negocios, organizando y aprovechando tantas horas como pudieron para esta simple necesidad del cliente. Horas y horas de revisión de COTS existentes, ideas y lo que sea. Nadie entendió que era más simple de lo que pensaban. Me di cuenta de que toda la información de licencia necesaria para una persona estaba en la fila única que se creaba anualmente al enviar por correo la carta de renovación de licencia. ¡Todo de las más de 200 mesas estaba allí en una fila! Ahora, un par de columnas tendrían que dividirse en tablas de uno a muchos, ¡pero solo 3 o 4, no más de 200! Mi forma de crear una aplicación es crearla en una tabla, una fila larga. Luego separe las columnas de una a varias en CUADROS CUANDO SE NECESITEN, no antes. Demasiadas bocas de incendios junto a la piscina por aquí. Y grifos de cerveza en los Cadillacs. Así que seguí mi camino sintiéndome lástima por mí mismo (¿dije que esta maqueta en MVC también incluía la capacidad de respuesta para caber en cualquier puerto de visualización del dispositivo (bootstrap.js)? Ok, simplemente lo hizo) y un día el equipo responsable para esta nueva aplicación de licencias contrató a un analista de negocios y en realidad era un tipo bastante inteligente y maduro (raro). Le dije, oye, tengo esta maqueta que realmente funciona y todavía la tengo ¿estás interesado en verla? Le di todo lo que tenía, lo seguí para asegurarme y seguí avanzando por el camino. Aproximadamente 6 meses después, estoy bajando el elevador con el jefe de la división de licencias de agua potable y él se volvió hacia mí y me dijo: “¡John, te amo!”. Bueno, él lo siguió “como un hermano, por supuesto” LOL, así que bajé a la planta baja con él y lo seguí fuera del edificio y dijo que varias personas en el proyecto habían dicho que mi idea era la base del nuevo aplicación de licencia que estaban construyendo. Por supuesto, se lo dieron a un tipo que es un super genio / goldplater y terminará siendo víctima de clases que llaman a clases que llaman a clases y manejan errores manejando manejadores de errores yada yada. Sé esto con seguridad porque soy responsable de una aplicación MVC que creó. No hay línea recta entre 2 puntos. A veces, si haces lo correcto, volverá con buenos sentimientos. . . .a veces.

Ahora que no soy ingeniero, informático o arquitecto, sigo haciendo el trabajo. Hay muchas oportunidades que no requieren el nivel de matemáticas que requiere un título de CS. Y aún no he visto a un arquitecto donde trabajo que haya construido algo que quisiera mantener dentro de 5 años. La mayoría del código por aquí es como conducir por un vecindario malo. Solo quieres agacharte.

Siento que debe tener una curiosidad natural por TI y la programación y divertirse aprendiendo las nuevas formas que se avecinan. Y debe (REPETIR TIENE QUE) seguir enviando su currículum todos los días y también solicitar entrevistas informativas con posibles contrataciones. Estaba listo para dejar de intentarlo e ir de excursión al PCT porque podía empapelar mis paredes con cartas de rechazo y luego, en la última entrevista que hice, me contrataron al día siguiente. Nunca miré hacia atrás.

Solo para ahorrar tiempo al tratar de racionalizar mi mente curiosa, digo “bueno, soy un geek por eso”. Pero, en realidad, no soy un geek. Soy un hombre de negocios enamorado de la mejor manera de resolver un problema. Pero no digo eso porque la palabra “geek” te libera más fácilmente. No pueden entender que realmente quieras crear una solución efectiva. Las personas que usan mis aplicaciones, lo saben. Todos los días me cuentan lo agradecidos que están con lo que hice o hice.

Estaba sentado en una reunión de “Equipo” el otro día y al final de la reunión, hubo un momento de silencio y salí a borbotones: “¡node.js y MongoDB!”
El líder del equipo pareció enfadarse y decir “¿qué tiene eso que ver con algo?”, Repuse, “solo digo que se avecina y podría ser una solución ligera o pesada para algo que nuestros clientes necesitan” (Codd nos ayuda van a usar MS Access, tiene tan poco respeto de TI. Sin embargo, una gran navaja suiza). Y luego nuestro arquitecto en residencia (al menos eso es lo que dice su título) salió en mi defensa y dijo que en realidad durante la nueva sesión de preguntas de RFP para la nueva aplicación de VIH (proyecto muy grande con mucho dinero) se hicieron varias preguntas si podrían usar Node.js y MongoDB. Un poco se sintió bien. ¿Mencioné ASP clásico? Oh, bien tuve que usar eso antes de que apareciera .NET. Abandonó la clase de Java, ojalá no lo hubiera hecho.

Creo que una pregunta como esta sufrirá un sesgo de respuesta de Quora. Es decir:

  • Quora tiene un porcentaje extremadamente alto de programadores en relación con el público en general. Un alto porcentaje de ellos tienen éxito.
  • Los desarrolladores exitosos (especialmente en una carrera posterior) tienen más probabilidades de responder con entusiasmo que aquellos que terminaron con depresión.

Ciertamente, uno debería considerar avanzar en su carrera a través de un cambio vertical hacia la administración; esto no se aplica únicamente a los desarrolladores de software. Sin embargo, administrar personas no es para todos, y el conjunto de habilidades de administración requeridas para esto es diferente de administrar los registros de software. Esto es especialmente cierto en negocios no enfocados en la tecnología, donde los conjuntos de habilidades de los desarrolladores tienden a ser más variados en términos de habilidad técnica y conocimiento de la industria, y el gerente necesita arbitrar entre los respectivos equipos de negocios y tecnología.

Otro enfoque que puede funcionar para las personas que no quieren ser gerentes pero que desean avanzar es adquirir conocimiento del dominio comercial y elegir un nicho comercial. Por mi parte, mientras rebotaba en las industrias al comienzo de mi carrera, encontré un interés en las finanzas cuantitativas y luego estudié para mi MBA para mejorar el conocimiento en matemáticas y finanzas, así como un puñado de otras habilidades relacionadas con los negocios.

Si bien mi posición actual requiere una sólida formación en desarrollo de software en varios idiomas (actualmente: Java, C #, C ++, R, python, Excel / VBA), también requiere elementos de modelado estadístico, productos financieros, redacción técnica y gestión de proyectos. No tengo ningún informe directo completo, pero cuando se me pide que dirija un proyecto, puedo elegir un par de analistas o pasantes junior adecuados de un grupo para que me ayuden.

En resumen, estoy parcialmente de acuerdo en que para 35-40 un desarrollador de software debería intentar adquirir más habilidades que simplemente escribir código. Adquirir habilidades de gestión de personas es simplemente una ruta, pero también hay otras opciones.

Puede ser un trabajo sin salida si no eres un “especialista” . De hecho, esto es cierto para la mayoría de las profesiones y no solo para el desarrollo de software. Es posible que haya leído varias respuestas a esta pregunta que indican cómo las personas de 50 o 60 años de edad están contentas con el desarrollo de software. Bueno, la poca atención al detalle es que les gusta mucho su trabajo y se destacan en lo que hacen. Incluso después de ser despedidos encuentran otro en pocas semanas. Esto se debe a que son buenos en el desarrollo de software. No están obligados a convertirse en desarrolladores de software. No eligieron el desarrollo de software como una carrera porque su amigo / pariente / primo lo estaba haciendo.

En una de mis publicaciones de blog, Fase de su carrera antes de que se desvanezca, escribí exactamente cómo la gente se atasca en diferentes fases de sus carreras y por qué es tan común en países como India, donde miles de los llamados desarrolladores de software se gradúan cada año. Para resumir la larga historia. No hay un callejón sin salida si eres un especialista, pero si no lo eres, definitivamente debes eliminarlo sabiamente.

Tengo 40 años y soy un desarrollador orgulloso. Comencé mi carrera a los 23 años como desarrollador. Continué durante los próximos siete años. A los 30 años me enfrenté a la misma pregunta: ¿es sostenible mi carrera? ¿Me dirijo a un callejón sin salida? etc .. ”Por miedo y para sobrevivir, trabajé duro y cambié a un rol de gerente de proyecto.

Completé con éxito un par de proyectos, sin embargo no estaba contento por dentro. Luego me mudé a un papel de arquitecto que jugó durante 2/3 años. Luego pasó a un rol estratégico y trabajó como incubadora de tecnología y analista de mapas de ruta durante un par de años.

En todos esos roles, las cosas eran todas abstractas y se esperaba que hablara de cosas de las que no sabía lo suficiente. Aunque tuve bastante éxito en la mayoría de los casos, me costó la felicidad mental y el equilibrio entre el trabajo y la vida. No pude dar lo mejor de mí. Me di cuenta de que si no estoy dando lo mejor y contento con mi trabajo, no puedo sobrevivir en los próximos 20 años.

Eso me obligó a pensar seriamente en lo que soy bueno y lo que más me gustó. Me di cuenta de que me gusta hacer cosas en lugar de hablar. Quiero hablar sobre cosas que sé lo suficiente. Me gusta codificar Me gusta jugar con la tecnología y construir algo propio y nutrirlo como mi bebé y hacerlo perfecto.

A los 37 volví como desarrollador. Aunque la gente me llama arquitecto, arquitecto senior, etc. en el fondo soy desarrollador. Han pasado casi tres años y vuelvo a jugar mi rol de desarrollador. Estoy reviviendo mi vida. Estoy bastante feliz No trabajo duro Dentro de las 8 horas designadas puedo completar mi trabajo. Mi empleador y mi cliente me aprecian. También estoy compitiendo con éxito con personas jóvenes. De hecho, hacerlo mejor que ellos. Recuperé mi fuerza.

Creo que me retiraré como desarrollador.

Estoy publicando esto como anónimo para evitar que mi empleador lo sepa. Nunca se sabe 🙂

Mi esposo ha encontrado lo mismo que otros reportan. Si te mantienes al día con los idiomas, siempre puedes encontrar trabajo. A los 60 años, con una licenciatura y una maestría en música y un certificado en programación de computadoras del Control Data Institute, un certificado en C ++ de Red Wing Technical College en el programa en línea de Minnesota, y recientemente, un certificado en ciencia de datos de otro lugar en línea, él ha llevado una carrera interesante aquí en el área de Detroit. Tenía 6 meses sin trabajo durante la Depresión de 2009, después de tomar una compra de Chrysler y casi tuvimos que mudarnos fuera del estado para encontrar trabajo, pero el trabajo se materializó a tiempo.

Conoce muchos, muchos lenguajes, desde el marco principal básico hasta Python recientemente iniciado. Raramente programa más, ya que se supone que su puesto actual es como Data Scientist. Eso significa poca programación, pero la compañía tampoco está utilizando mucho sus habilidades de Data Science.

Hasta hace poco, el campo de la ciencia de datos ha sido poblado principalmente por personas con doctorados, dice, y espera que las personas sin doctorado realicen más trabajo a nivel corporativo. Los tres campos de los que Data Science atrae a las personas son Matemáticas, Estática y Programación. Con las compañías que buscan hacer más trabajo interno en Data Science, debería haber más trabajos disponibles. Los programadores que buscan un campo diferente, pero relacionado, para una maestría o doctorado deben considerarlo. Bill encontró el curso bastante interesante. Si tiene miedo de que la programación no sea para el trabajador de mediana edad o mayor, es un camino a seguir.

Hace un par de años recibí una llamada de un cazatalentos que buscaba ocupar el puesto de jefe de administración de cartera de ingresos fijos en Blackrock (un administrador de activos muy grande). No es para nada mi bolso, pero sabía que lo habían estado buscando durante un tiempo y tenía curiosidad sobre por qué: es un trabajo que probablemente paga muchos millones y tiene un alto estatus y tendrá recursos para construir cosas. Ella dijo que quieren a alguien que entienda los mercados y sea cuantitativo. De acuerdo, no mucha gente realmente entiende los mercados, pero ambos conocemos a muchas personas que podrían hacer bien ese trabajo y aprovecharían la oportunidad. Dijo que lo sentía, quería decir que querían a alguien que pudiera entender los mercados y el programa.

Casi me caigo de la silla, porque uno piensa en ese tipo de trabajo como un trabajo de administración donde las cosas importantes son las relaciones internas y con los clientes y no tienes tanto tiempo para hacer un trabajo directo. Pero si miras su sitio web, verás por qué el nuevo enfoque. Comencé a programar en 1983, y aunque utilicé esa habilidad en finanzas para resolver problemas en mi tiempo libre (la programación realmente puede ser como una superpotencia cuando tu alternativa a hacerlo tú mismo es que es imposible lograr lo que quieres hacer en todos), nunca lo jugué, porque existe esta imagen persistente de la programación y las personas no asociaron las cualidades necesarias para ser un buen programador con las necesarias para ganar dinero en los mercados.

Y personalmente me he beneficiado en los últimos años de un momento de reconocimiento que tuve en mi fondo de inicio de que la tecnología era bastante crítica, y que si bien la ventaja comparativa y la división del trabajo son principios excelentes, no siempre se traducen simplemente en las operaciones de una empresa de inversión debido a la naturaleza del conocimiento tácito (ver Hayek y Polanyi) y el proceso creativo en sí.

Así que hablo de finanzas, porque eso es lo que sé bien, y porque estoy respaldando mi punto de vista con mi propia asignación de recursos y tiempo.

Pero creo que, en general, hay una idea que puede ser útil para algunas personas.

Creo que es cierto que disminuyes un poco con la edad. La inteligencia fluida disminuye, lentamente al principio, y luego es precipitada; pero la inteligencia cristalizada (‘experiencia’) significa que aún se puede ser productivo, tal vez mucho más productivo que antes, pero tal vez sea necesario cambiar la forma en que se trabaja. Algunas cosas son definitivamente un juego de hombres o mujeres jóvenes; Por otro lado, otras cosas van mucho mejor con la experiencia.

Hasta cierto punto, es cierto que es una cuestión de actitud. Aún se pueden aprender cosas con la edad, siempre que se pueda volver a experimentar el proceso no acostumbrado de sentirse con precisión temporalmente incompetente. (En muchos otros campos profesionales, puede llegar a la cima de su profesión y aprovecharla durante bastante tiempo, no así en la programación). No me he sentido tan estúpidamente repetidamente como en los últimos 2.5 años cuando aprendí primero python, luego cython y D después de no haber hecho tanta programación antes de eso. Tengo 43 años, por cierto. Pero tal vez tenga un poco más de miedo y un poco menos de entusiasmo por las cosas nuevas y brillantes, y probablemente esto se vuelva más notable en otras dos décadas.

Mi punto real es que los programadores de primer nivel no crecen en los árboles, pero lo que hoy es más escaso y especialmente valioso son las personas que son técnicas y entienden el negocio. Si eres un técnico y los requisitos son solo una lista de cosas con números, es muy difícil desarrollar un sentimiento de lo que los usuarios realmente quieren y necesitan, y las compensaciones adecuadas para hacer. Hasta cierto punto, las personas desarrollan flexibilidad y extensibilidad a partir de lo que para ellos es una sensación justificada de paranoia, porque parece muy difícil anticipar lo que necesitará el negocio, ya que sus necesidades no existen en usted como seres vivos, pero llegan como misiles entrantes. Ciertamente, lo que dicen que querían y lo que realmente necesitan no es siempre lo mismo.

Y, por otro lado, el negocio en sí no suele comprender la tecnología: qué nuevas posibilidades ha creado o creará en un par de años dadas las tendencias actuales; cómo va a cambiar su propio negocio y el de sus clientes y competidores. Y tal vez esa sea parte de la razón de la moda que la tecnología empresarial ocasionalmente ha sido propensa. Las personas están buscando una respuesta y se aprovechan de quienes les venden la promesa de una.

Un amigo mío desde el principio de mi carrera fue nombrado recientemente Tesorero de un banco privado de tamaño decente. Pasó sus primeros meses escribiendo un sistema de gestión de efectivo en VBA. McKinsey le habría dicho que estaba loco: solo mira el costo de oportunidad de los programadores y mira tu propio costo de oportunidad: si se necesitan 20 hombres para escribir lo mismo que puedes hacer tú mismo, aún no tiene sentido hacerlo.

Pero McKinsey se habría equivocado, y tenía razón, porque al hacerlo comprendió la naturaleza del problema, cómo funcionaban los sistemas de la empresa y qué se requería cuando compraban un producto empresarial adecuado, gastando unos pocos millones en él. .

La investigación de Boston Consulting Group dice que las implicaciones del aprendizaje automático son que las personas y los equipos con múltiples habilidades serán muy valiosos.

En resumen, aproveche los años hasta entonces para comprender muy bien una parte del negocio e intente crear o pasar a un rol en el que pueda combinar la comprensión empresarial con la tecnología. Es posible que eso no sea posible en una gran empresa que se mueve lentamente, pero las empresas más pequeñas tienen el lujo de no poder contratar siempre a una persona para cada trabajo, lo que también crea una oportunidad.