¿Cómo afrontas la naturaleza dinámica del desarrollo de software de alto nivel? [cerrado]

25

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?

Hemant
fuente
1
¿Qué, no crees que puedas manejar una Singularidad? Cualquier buen desarrollador puede! - bromeando, no me escuches ...
Klaim

Respuestas:

30

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:

  • A los practicantes más jóvenes / menos experimentados les encanta señalar cómo sus mayores no pueden hacer X o Y, cuando no comprenden que esa experiencia ha demostrado que esas eran malas ideas. Sin embargo, cada nueva generación de practicantes parece querer repetir esos errores. Ese fenómeno es común a todas las profesiones, no solo a la programación.
  • No todas las personas que han trabajado varios años tienen experiencia, son maduras o buenas. Se necesita esfuerzo para mejorar. Un gran esfuerzo puesto cuando eres más joven construye un buen cuerpo de experiencia del que puedes aprovechar más adelante.

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.

Berin Loritsch
fuente
1
¿Te gustaría elaborar sobre el voto negativo? Puede que no te guste lo que dije, pero es cierto.
Berin Loritsch
44
La percepción que tiene es una gran parte de su enigma. Todo lo que hice fue lidiar con esa percepción directamente. En resumen, estoy más preocupado por la búsqueda de herramientas que su capacidad de convertirme en un buen desarrollador experimentado . Incluso puede llegar a ser genial . Eso no va a suceder si toda su experiencia le dice que los desarrolladores más viejos apestan. Es un terrible desmotivador para poner el esfuerzo de llegar a donde quiere estar.
Berin Loritsch
1
@Berin Loritsch: Ese es un punto justo. Tu intento fue bueno. // En los Estados Unidos, demasiadas personas se tropiezan para regañar a otros por hacer una generalización. Tomé una excepción a tu respuesta porque parecía que estabas haciendo esto.
Jim G.
1
Con suerte, lo que aprenderá con el tiempo es cuándo invertir tiempo en aprender nuevas tecnologías y cuándo ignorarlas. La conclusión es que el tiempo es un recurso precioso. Cuando SOAP / XML RPC salió por primera vez, era demasiado pronto para decir lo que realmente haría. Ahora, con algunos años en nuestros cinturones, hemos aprendido algunas lecciones dolorosas y hemos modificado el enfoque con los servicios basados ​​en REST. Además, los viejos necesitamos a los jóvenes con energía ilimitada para descubrir qué vale la pena dedicar tiempo al aprendizaje. Puede que seamos un poco más lentos para apretar el gatillo, pero no nos lleva mucho tiempo ponernos al día.
Berin Loritsch
2
@Berin Loritsch: Quizás lo entiendo ahora. De hecho, he visto a algunas personas mayores (incluido mi jefe actual) que simplemente se mueven cuando se trata de resolver problemas. No salta de alegría cuando digo que puedes hacer X fácilmente usando este marco, pero no tiene miedo de usarlo cuando ve que es realmente útil. Entonces, quizás otras personas mayores que no son buenas, no lo son porque nunca lo fueron. No porque estén fuera de contacto debido a las nuevas tecnologías. Me siento mucho mejor ahora. (Espero que lo que he escrito tenga sentido)
Hemant
20

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.

Amir Rezaei
fuente
1
Sí, más la capacidad / honestidad de saber cuándo sus herramientas / habilidades disponibles no resuelven el problema. Entonces vas a aprender algunas cosas nuevas y luego vuelves a "capacidad para resolver el problema".
Peter Rowell
1
eh ... Esto es un poco vago, y tbh, es un poco copout. Si un desarrollador sigue siendo perfectamente feliz "resolviendo problemas" en vb6 ... bueno, realmente no quiero trabajar con su código. Mantenerse actual no es predecir el futuro, requiere tiempo / trabajo, y hay menos oportunidades cuando tienes una familia.
Steven Evers
5

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:

  • No todos los proyectos de software o empresas necesitan la última tecnología absoluta, incluso en software. El cambio es más dramático: las compañías que corren un poco por detrás suelen tener muchas oportunidades de crecimiento y cambio, pero no la demanda urgente generalizada de un cambio constante de inmediato.
  • Cuanto más experiencia tenga un programador, más podrá aprovechar la experiencia en lugar de la última / mejor palabra de moda. Me he dado cuenta de que las personas que más admiro con más de 20 años en la industria tienen toneladas de metáforas sobre cómo la última cosa de C # es la respuesta perfecta al problema que tuvieron a fines de los años 80 con C. Al aprovechar los problemas y soluciones anteriores, Trae más comprensión a la mesa con menos investigación.
  • Cada vez que he tenido que calificar a los programadores en el equipo, la capacidad de hacer las cosas y jugar bien con otros ha superado la gama de tecnologías con las que el programador llegó al trabajo. Si bien la industria evolucionará en muchos idiomas, API y herramientas nuevos y competitivos, es muy probable que el proyecto solo use competidores a la vez. Pero hacer las cosas y ayudar a otros a hacer lo mismo nunca pasa de moda y la forma en que se hace evoluciona mucho más lentamente, no es que la mensajería instantánea, las redes sociales, los teléfonos inteligentes y todo lo demás en la era digital no cambie ese aspecto de la programación. , también.
bethlakshmi
fuente
También puede ser interesante trabajar en una empresa que funciona un poco más allá de la vanguardia, digamos 3-4 años. Puede ver más claramente los errores que otros han cometido y tener la ventaja de contar con herramientas e implementaciones más maduras.
Michael K
Estoy de acuerdo. Realmente trabajo un poco detrás de mí mismo, y me gusta saber que otros han golpeado sus cabezas contra él por un momento antes de que tenga que intentarlo. :)
bethlakshmi
5

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.

Karl Bielefeldt
fuente
3

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.

bit-twiddler
fuente
¿Entonces no le resulta difícil mantenerse actualizado con las nuevas tecnologías cuando maduren?
Hemant
1
Esta industria es cíclica. La mayoría de las nuevas tecnologías son poco más que viejas ideas reempaquetadas. Si los fundamentos de uno son fuertes, uno no tendrá problemas para mantenerse al día. Recuerde, uno no tiene que estar a la vanguardia de la tecnología para ganarse la vida como ingeniero de software.
bit-twiddler
2

A lo largo de mis años de experiencia:

  • Los idiomas han cambiado (generalmente relativamente lento).
  • La gama de problemas que pueden resolverse prácticamente ha crecido (algo más rápido);
  • El tamaño y la complejidad de las soluciones ha aumentado (relativamente rápido);
  • Ha habido algo que es 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 Cansí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 newes el reempaque de algo existente. Por lo general, este reenvasado hace que las cosas sean más fáciles de entender y aplicar adecuadamente.

BillThor
fuente
2

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.

Kevin Cline
fuente
1

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. .

Stephen Bailey
fuente
1

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.

JeffO
fuente
1

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).

SnoopDougieDoug
fuente
No estoy seguro de la situación en la que vive, pero en Australia existe el requisito de que los profesionales médicos participen en la educación y el examen continuos para mantener su registro (y, por lo tanto, la capacidad de practicar la medicina).
Sedate Alien
0

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.

Kevin Hsu
fuente