Me considero un desarrollador de software de alto nivel. Disfruto mucho leyendo, y me ayudó en el transcurso de mi carrera. Creo que lo estoy haciendo bien.
En este momento, paso mucho tiempo aprendiendo cosas nuevas. No apesta cuando se trata de escribir código en este momento, pero estoy a punto de comenzar una familia, y regularmente veo a muchas personas mayores con 14-15 años de experiencia que, debido a que reducen el aprendizaje de cosas nuevas, ahora apestan en la programación Eran figuras inspiradoras en algún momento, pero ya no lo son.
Podría argumentar que los conceptos básicos nunca cambian, pero parece hacer una diferencia cuando está codificando en Delphi durante 10 años y de repente todo el mundo está usando el marco .NET. Es cierto que un desarrollador con experiencia tardará menos tiempo en el aprendizaje de un nuevo marco, pero todavía hace tiempo y esfuerzo demanda.
¿Cómo maneja un desarrollador de software las demandas del trabajo sin dejar de concentrarse en cosas que necesariamente lo sacan del trabajo, como comenzar una familia?
Respuestas:
Algo que usted dijo se destacó: "Veo regularmente a muchas personas mayores con una experiencia de 14-15 años ... ahora apestan en la programación". Ese es un trazo de pincel bastante amplio que estás usando para pintar personas con experiencia. Me gustaría señalar un par de cosas a tener en cuenta:
Quizás las personas a las que te refieres nunca fueron buenas. Es posible que te estén mirando pensando, ¿por qué insistes en hacer las cosas de la manera difícil?
Sin embargo, es cierto que cuando comienzas una familia, tienes mucho menos tiempo para mantenerte al día con los juguetes nuevos. En realidad, tiene menos tiempo a medida que sus hijos crecen que cuando son más pequeños. Los juguetes no te hacen un mejor programador. Tampoco las herramientas. Lo que te hace bueno es la capacidad de resolver problemas y crear una solución de trabajo. Lo que te hace grande es la capacidad de enseñar a otros a ser buenos. Ahí es donde la experiencia comienza a brillar.
fuente
Es difícil predecir el futuro. Pero una cosa es la más valiosa, independientemente de la tecnología.
Es la capacidad de un desarrollador para resolver problemas .
Muchos de los desarrolladores de calidad son independientes de la tecnología. Por ejemplo, la capacidad analítica es la cualidad más importante que conozco. Es como aprender matemáticas. Es simplemente atemporal.
fuente
Desearía tener una idea positiva o concreta, pero creo que la forma en que un programador se mantiene actualizado y equilibra el trabajo / la familia varía enormemente de un programador a otro.
Pensamientos aleatorios:
fuente
Primero, Microsoft está en el negocio de vender herramientas y plataformas de desarrollo de software sobre las cuales ejecutar ese software. Esto los incentiva a realizar cambios, sean necesarios o no. Eso no quiere decir que todos sus cambios sean inútiles, solo que hay muchas áreas en nuestra profesión que son mucho más estables. Con experiencia, podrá discernir mejor cuáles son los vagones que vale la pena saltar de inmediato y cuáles puede esperar para madurar.
En segundo lugar, la experiencia solo requiere tiempo. La mayoría de los desarrolladores con 15 años de experiencia que ahora son malos eran malos hace 15 años. No atribuyas a la edad lo que puede explicarse adecuadamente por incompetencia.
Tercero, no confunda tener conocimientos obsoletos con no poder usar lo último y lo mejor cuando surja la necesidad. Por lo general, es suficiente saber qué hay ahí fuera. Por ejemplo, hasta hace poco mi conocimiento de programación web era de finales de los 90, pero cuando quería construir un sitio web para mi hermano, sabía lo suficiente como para comprobar tecnologías "novedosas" como CSS, jQuery y sistemas de gestión de contenido, y era bastante al día en un par de semanas. En otras palabras, si no ha necesitado algo en los últimos 10 años, es poco probable que tenga una emergencia en la que desearía estar al día en este momento.
Finalmente, ser padre es un gran compromiso, pero menos tiempo del que parece pensar mucha gente sin hijos. Los padres todavía se las arreglan para leer libros, mirar televisión, jugar, navegar por la web e incluso tomar clases ocasionalmente. Shocker, lo sé. Simplemente lo haces en porciones más pequeñas y haces prioridades. Casi lo único que he renunciado por completo es ver repeticiones.
fuente
Les puedo asegurar que las personas que exhiben habilidades de programación pobres después de diez a quince años nunca realmente internalizaron el desarrollo de software. Dominar un conjunto de herramientas no es lo mismo que dominar el arte del desarrollo de software.
He estado escribiendo código por más de treinta años. He pasado por varios períodos en los que tuve que poner mi carrera en piloto automático debido a obligaciones y / o intereses externos. Lo que uno tiene que aprender a hacer a medida que uno envejece es evitar subirse a un tren tecnológico temprano. La mayoría de las tecnologías no cumplen con sus expectativas. Como practicante mayor con obligaciones fuera del trabajo, uno tiene que ser tacaño con el tiempo. Un profesional experimentado puede darse el lujo de esperar un par de años para que una nueva tecnología madure porque ya ha dominado el arte del desarrollo de software.
fuente
A lo largo de mis años de experiencia:
flavor of the day
(a veces bueno, a menudo malo).Como se señaló en una discusión sobre patrones, la pandilla de cuatro no inventó patrones. Se les ocurrió terminología y plantillas para soluciones que ya se estaban aplicando.
A diferencia de muchos otros campos, todavía hay muchos que no son una práctica común. He visto muchas cosas de vanguardia ir y venir. Muchos de estos fueron reformulaciones de técnicas que ya están en práctica, y esas generalmente tuvieron éxito hasta cierto punto. Otros se han ido más o menos, y la mayoría ha tenido nuevos enfoques. (¿Alguien ha visto un lenguaje de quinta generación últimamente?)
Los programadores que he visto que son más efectivos pueden seleccionar y ensamblar componentes probados en una solución de trabajo. Esto rara vez implica algo de vanguardia, lo que generalmente aumentaría el riesgo del proyecto. La capacidad de construir sobre el trabajo que ya se ha realizado nos permite aumentar el alcance de lo que es posible.
Los lenguajes de programación tienden a caer en relativamente pocas familias. La familiaridad con un idioma en una familia facilita el trabajo con idiomas similares. Comprender las bibliotecas disponibles en el idioma y aprovecharlas puede aumentar considerablemente la productividad y la confiabilidad. En general, elegiría un idioma más antiguo con las bibliotecas apropiadas en lugar de un idioma más nuevo sin las bibliotecas apropiadas.
Al aplicar nuevas tecnologías es importante evitar el
Because We Can
síndrome. Agregar una nueva tecnología porque es el sabor del año, tiende a causar más problemas de los que resuelve. Saber cuándo la tecnología resolverá un problema real y cuándo agregará complejidad es una habilidad útil.Un programador realmente bueno resolverá los nuevos problemas y utilizará las soluciones existentes para el resto. Pocas empresas necesitan tecnología de punta, todas necesitan soluciones sólidas.
Normalmente lamento deslizarme por la cuchilla de afeitar. No recuerdo haber lamentado haber usado una tecnología probada. Sin embargo, mucho de lo que se describe
new
es el reempaque de algo existente. Por lo general, este reenvasado hace que las cosas sean más fáciles de entender y aplicar adecuadamente.fuente
Nadie puede mantenerse al día con todo. Probablemente haya estado bastante ocupado manteniéndose al día con la oferta de Microsoft. ¿Has mirado a Ruby en RAILS y Python y bases de datos NoSQL y Hadoop y creación de aplicaciones móviles y CSS y HTML5 y jQuery y ExtJS y ...?
He estado en el software bastante tiempo. Intento mantenerme al día con tecnología realmente nueva, como las nuevas ideas para bases de datos paralelas masivas, e ignorar lo feo (por ejemplo, MFC, WinForms, SOAP, XML, EJB) y lo más trivial posible. En su mayoría solo vemos grandes ideas antiguas reempaquetadas y finalmente adoptadas. Programación funcional? Estaba usando INTERLISP en 1977. ¿Aplicaciones para teléfonos móviles? Son los mismos gráficos UI y 2D basados en eventos que hemos estado haciendo durante al menos 30 años. Claro, hay un arte en diseñar una aplicación utilizable para una pantalla táctil pequeña, pero la programación no es nueva en absoluto.
fuente
Estoy de acuerdo con @Amir en que su habilidad es la resolución de problemas, no en su dominio de idioma, pero agradezco su preocupación, así que:
Si tiene la libertad de elegir su idioma actual, elija uno que esté lo más cerca posible de los primeros prinicples (es decir, un idioma tipo C ++) para que cuando su trabajo ingrese a un nuevo dominio la curva de aprendizaje sea menor, ya que es solo abstracciones sobre ti. Si actualmente invierte solo en lenguajes de alto nivel, bajar una abstracción es mucho más difícil (aunque solo sea en percepción).
Si no tiene esa alimentación, simplemente haga un uso completo de sus 8 horas en el trabajo ... si su pasión es alta, no se quedará "atascado", y siempre encontrará problemas interesantes para resolver que, naturalmente, lo llevarán a aprender más. .
fuente
Dependerá de su trabajo y de los trabajos que desee. Hay puestos en los que los desarrolladores todavía usan tecnologías más antiguas. Todavía hay mucho COBOL para continuar (estoy seguro de que algo ha cambiado).
Trabajar en una empresa que realiza un cambio importante como el que usted describió puede dejar a algunas personas sin trabajo. A veces, la empresa realiza una inversión para obtener capacitación en lugar de exigirle que la aprenda en su propio tiempo.
Tener una familia puede limitar sus opciones de trabajo. Puede hacerte menos móvil. ¿Puedes ir a trabajar desde el principio por la mitad de tu salario con la esperanza de un gran día de pago, tal vez no con niños e hipotecas?
Lo nuevo no siempre es mejor y muchos no duran.
fuente
No estoy en el campo de la medicina, pero ¿qué tal una analogía entre un desarrollador y un médico? Ambos campos han visto cambios tremendos en los últimos 20 años y el ritmo de cambio es cada vez más rápido. ¿Todos los médicos siguen el ritmo? No. ¿Todos los desarrolladores siguen el ritmo? No. ¿Puede hacer alguna generalización sobre desarrolladores o médicos con 14-15 años de experiencia? Más experiencia significa que tiene un mayor conjunto de respuestas a problemas similares. ¿La experiencia triunfa sobre el interés? No a largo plazo.
Piensa como un tiburón que tiene que seguir nadando o morir. Sigue aprendiendo o muere (o pasa a la gestión, que es donde la mayoría va a medida que la línea de carrera de desarrollo alcanza un máximo de aproximadamente 10-15 años).
fuente
Tengo las mismas preocupaciones en el fondo de mi mente, pero mi pensamiento reciente sobre esto es dejar de tratar de predecir su propia capacidad de adaptación y simplemente adaptarse. Me parece que si asumo que puedo seguir el ritmo, generalmente lo hago. Si me preocupa quedarme anticuado, eso puede convertirlo en una profecía autocumplida.
Como dijiste, mantente alerta. Y si no puedes seguir el ritmo, no te preocupes demasiado. La tecnología tiene una forma divertida de completar el círculo completo, y es posible que te encuentres de nuevo en la corriente principal con un rendimiento excelente.
fuente