¿Por qué los desarrolladores necesitan mantenerse al día con las tecnologías y metodologías? [cerrado]

28

Siempre me dan los consejos que los desarrolladores necesitan para mantenerse al día con lo último en tecnología: cosas como webrtc, actualizaciones en html5 y css3 y nuevas bibliotecas js, metodologías de software como TDD, DDD y BDD.

La pregunta es ¿por qué ? ¿Por qué necesitamos actualizarnos constantemente? ¿No podemos limitarnos a lo que sabemos y mejorar con él?

Wern Ancheta
fuente
16
En el desarrollo de software, hay un impulso para hacer ambas cosas: conocer en profundidad algunas tecnologías y mantenerse al día con las nuevas tecnologías en constante cambio. Esto es en parte por qué es tan difícil encontrar buenos desarrolladores.
joshin4colours
2
Para abordar los votos cerrados hasta ahora, creo que es una pregunta justa, y no puedo encontrar un duplicado exacto en el sitio. Solo intenta vigilar las respuestas deficientes para que podamos limpiarlas.
maple_shaft
44
No entiendo por qué los programadores como clase deben "mantenerse actualizados" con lo último en "tecnología web" para lo que ambos conceptos realmente significan en la práctica. Una mente curiosa y un aprendizaje continuo son ciertamente críticos para el crecimiento personal en cualquier profesión, pero el falso dilema que supone que la "tecnología web" es el único eje para el crecimiento personal hace que esta sea una pregunta demasiado cargada para mis gustos. Mirando críticamente las respuestas altamente votadas, ¿alguna de ellas responde a la pregunta además de ofrecer lugares comunes de aliento y lemas motivacionales para "permanecer en el juego"?
bmike
1
@bmike: Estoy de acuerdo contigo: por supuesto, una mente curiosa querrá aprender cosas nuevas todo el tiempo. En este caso, cosas nuevas significan algo que no sabes, que podría ser un lenguaje de programación interesante que ha existido durante 40 años o más (por ejemplo, Lisp). La industria nos empuja a actualizar y considerar las últimas cosas interesantes, más efectivas por defecto. Mi punto principal: aprender una tecnología que no necesita solo porque es nueva es una pérdida de tiempo.
Giorgio
1
@RobertHarvey No es que la pregunta sea "¿Cómo?" ¿o que?" como eso sería NC. Es preguntar POR QUÉ y personalmente siento que es relevante y responsable.
maple_shaft

Respuestas:

42

Las nuevas tecnologías emergen por una razón. Por lo general, esa razón se debe a que son más eficientes o poderosos para realizar una tarea en particular.

Todavía hay valor en mantener la tecnología antigua por el bien de los sistemas heredados, pero cuando finalmente lleguen al final de su vida, estará detrás del juego.

Dejando a un lado las razones comerciales, aprender constantemente nuevas tecnologías lo mantiene alerta y le abrirá los ojos a diferentes formas de abordar las tareas, incluso en tecnologías antiguas, etc.

Anónimo
fuente
3
+1: el aprendizaje de nuevas tecnologías a menudo es útil, incluso si nunca aplica directamente esa tecnología: las nuevas opiniones y perspectivas que proporciona ciertamente pueden aplicarse utilizando tecnología "antigua".
Joachim Sauer
77
Por otro lado, saltar a cada nueva tecnología también puede ser contraproducente, porque muchas de ellas desaparecen tan rápido como salen a la superficie.
Gordon Bell
@GordonBell - Cierto ... No puedo hablar por nadie más, pero generalmente no pruebo las aguas con nuevas tecnologías hasta que al menos muestran signos o potencial de convertirse en más 'mainstream', lo que trae los beneficios de muchos documentación para ayudar a la educación y una base de usuarios, etc.
Anónimo
A menudo surgen para satisfacer necesidades académicas, pero no en el mundo real. Tienes que escribir tu tesis sobre algo .
dbracey
@dbracey: Correcto, y veinte años después, una gran empresa puede encontrar esta tesis que, mientras tanto, los investigadores han desarrollado en tecnología madura y comienzan a venderla como una nueva tecnología .
Giorgio
27

Aunque ciertamente es posible desarrollar una carrera en una sola pila de tecnología si tienes suerte 1 , es casi seguro que la tecnología va a cambiar más de una vez durante el tiempo en que trabajas de manera remunerada. Puedes (y deberías) mejorar en lo que ya sabes, pero aprender cosas nuevas con anticipación te ayudará a reducir la curva de aprendizaje cuando el próximo cambio tecnológico llegue a tu rincón de la industria.

También tiene un lado menos aparente: aprender cosas nuevas con mucha frecuencia te ayuda a ver las cosas que ya sabes desde una perspectiva diferente, de la misma manera que aprender un nuevo idioma te ayuda a aprender más cosas sobre tu idioma actual 2 .

Finalmente, no debe subestimarse el valor puro del entretenimiento de aprender cosas nuevas: para mí, es mejor mirar la televisión sin dudarlo.


1 Por ejemplo, al elegir COBOL sobre PL / I al comienzo de su carrera en 1965.

2 Esto funciona para lenguajes naturales y de programación por igual.

dasblinkenlight
fuente
1
+1 @dasblinkenlight Me encanta esta afirmación: "... aprender cosas nuevas con anticipación lo ayudará a reducir la curva de aprendizaje cuando el próximo cambio tecnológico llegue a su esquina de la industria". Esto es por lo que estoy aprendiendo Opa ahora
Anthony
12

¿No podemos limitarnos a lo que sabemos y mejorar con él?

Usted puede , pero es muy fácil caer en la trampa de no querer aprender nada nuevo. Sus perspectivas de trabajo disminuyen, sus compañeros de equipo dejan de querer trabajar con usted porque usted es "ese programador que está completamente fuera de contacto".

Principalmente, necesita mantener un equilibrio. Tratar de aprender todo lo nuevo todo el tiempo te va a llevar a ser pobre en muchas cosas, percibido como un manitas volador. Aprenda algunas cosas bien y concéntrese al menos en saber lo que existe, incluso si no puede usarlo de manera efectiva.

Telastyn
fuente
2
Nada me enfurece más en el trabajo que tener que estar atascado en un equipo con un programador que escribe código como lo hizo hace 10 años. Los marcos han evolucionado. Las herramientas han evolucionado. ¿No quieres hacer tu trabajo más fácil? No ves carpinteros que usan taladros y sierras manuales todo el día cuando tienen herramientas eléctricas ahora. Ellos evolucionaron. Y como toda profesión, se inventan nuevas herramientas para resolver necesidades. No usar la nueva herramienta e intentar piratear algo a la antigua usanza suele ser perjudicial para la calidad de lo que se está construyendo. Ya sea en código o en madera.
CaffGeek
2
"Los marcos han evolucionado. Las herramientas han evolucionado. ¿No quieres facilitar tu trabajo?": Existen infinitas formas de resolver ciertos problemas y, a veces, una nueva herramienta o lenguaje no es mejor, sino simplemente equivalente al anterior. Pero tiene mucha más experiencia con el antiguo, por lo que puede ser más productivo con él. Suponemos con demasiada frecuencia que NUEVO == MEJOR. En cambio, siempre debemos desafiar esta afirmación.
Giorgio
2
@Giorgio - Una cosa es tener un escepticismo saludable de 'la próxima gran cosa'. Otra es meter la cabeza en la arena a medida que avanza el progreso real. Lo último es demasiado común.
Telastyn
44
@Telastyn: asignaría el 50% a ambas actitudes: a veces tengo la impresión de que se impulsa una nueva tecnología solo porque es nueva. Y es solo una forma alternativa (no mejor) de hacer las cosas. Por lo tanto, tenemos que pasar meses para dominar la nueva tecnología y, después de eso, volvemos a ser tan productivos como solíamos ser con la anterior. Pero, por supuesto, tiene razón en que meter la cabeza en la arena también está mal y siempre hay que estar atento a las cosas nuevas.
Giorgio
@Giorgio, ¿cómo sabes si la nueva forma es mejor o no si no aprendes o no lo intentas?
CaffGeek
7

Bueno, probablemente se deba al hecho de que usted es un desarrollador web y las tecnologías en ese campo son muy volátiles con idiomas, plataformas, herramientas y metodologías que aumentan y disminuyen en popularidad. Es un campo que es de MUY alto nivel. Si alguna de las capas debajo de ella está alterada, eso cambia la posición en la parte superior. Y, francamente, es nuevo (ish). Los nuevos campos tienen mucho espacio para la innovación.

Personalmente, trabajo en dispositivos integrados, aprendí C y eso me funcionó bastante bien.

Pero todavía estoy aprendiendo cosas nuevas de forma bastante regular. Sockets, bibliotecas SQL, ncurses, objetos en C. Y las metodologías se combinan libremente con las tecnologías. Las pruebas unitarias se enseñaron horriblemente en mi escuela, y ahora estoy pensando en ello. Acabo de enterarme de la inyección de dependencia el otro día, y me di cuenta de que así es exactamente como resolví mi último problema con la unidad probando una función de consola.

La mayoría de los programadores no son trabajadores de fábricas que hacen lo mismo todos los días. Esos trabajos pueden (y deberían) ser automatizados. Nadie paga por otra implementación de tipo burbuja. Se ha hecho.

Philip
fuente
+1: buena respuesta. Uno debe aprender las tecnologías que necesita o encuentra útiles. Las nuevas tecnologías son importantes y uno debe mirar a su alrededor para saber qué está pasando. Pero NUEVO no debería ser el único criterio para elegir lo que aprendemos. Además, si C satisface sus necesidades de programación, estoy de acuerdo en que puede ser un buen lenguaje para trabajar, incluso si ha existido durante mucho tiempo.
Giorgio
Esto también señala que las nuevas tecnologías a menudo son más capas que las tecnologías más antiguas existentes. ¿En qué está implementada su VM? C o C ++.
dbracey
La inyección de dependencia es solo un nuevo nombre para una idea muy antigua.
MarkJ
6

Yo diría que puedes ignorar mucho de lo que hay ahí fuera. Gran parte de esto es exageración y moda y nuevos nombres para la tecnología antigua. Los avances reales pronto serán reemplazados por otros más nuevos que realmente no dependen de los antiguos, a pesar de que los antiguos dicen que debes entender a los viejos para entender lo nuevo. Si dejaste el campo durante 10 años, cuando regresaste solo estarías 2 años atrás.

Dicho esto, detectar la nueva tecnología real puede ser complicado. Me alegro de no haber perdido OOP, pero al principio parecía un puñado de palabras de moda. Y a menudo necesita usar la tecnología actual para hacer un trabajo, incluso si todos lo hubieran olvidado en 3 años.

La exageración y la confusión de la tecnología de software multiplican el cambio que tenemos que enfrentar día a día. Pero la tecnología electrónica en realidad está avanzando rápidamente, y empujando el software junto con él. Hay muchos cambios reales por ahí. Todavía manejamos los autos, volamos los aviones y vamos al espacio con los mismos vehículos que usamos en 1965. Pero el hardware electrónico de 1995 es irremediablemente obsoleto.

Entonces, la respuesta profunda a su pregunta es que los científicos e ingenieros que trabajan con electricidad han estado muy ocupados. El software necesita evolucionar para aprovechar el hardware. Peor (o mejor dicho, ¿mejor?), Creo que el hardware ha dejado atrás el software. Si todas las personas del hardware se retiraran mañana, el software evolucionaría furiosamente durante las próximas dos décadas al menos.

Si necesita la nueva tecnología para hacer un trabajo, necesita aprenderla. Si existe la posibilidad de que sea una nueva tecnología que todavía estará aquí dentro de 20 años, debe vigilarla, y si observa 20 técnicos que mueren por cada uno que vive, lo está haciendo bastante bien. Y en realidad puedes ignorar todo lo demás. Excepto por ese poco de humo obvio que subyacerá a todo el software de la década de 2020.

RalphChapin
fuente
+1: Estoy de acuerdo contigo con respecto al bombo publicitario. Mucha innovación es (desafortunadamente) exagerada y debemos elegir las nuevas tecnologías en las que pasamos el tiempo con mucho cuidado. Una de las exageraciones del momento son las lambdas (que, por cierto, considero un concepto muy útil): todo lenguaje moderno debe tenerlas (¿C #, C ++, Java?) De lo contrario, ¡ya no es genial! Pero las lambdas han existido durante 50 años y a nadie le importaba cuando estos idiomas se diseñaron inicialmente. Ahora se están agregando como una ocurrencia tardía solo para seguir el último bombo. ;-)
Giorgio
@ Jorge: Espero que no sea Java. Las lambdas son un buen ejemplo (aunque más simple y menos problemático que algunos). Los uso en C #, y los amo, pero la única persona que lamentará no saber qué es es la persona a la que se le ha dicho que arregle el código que está lleno de ellos.
RalphChapin
¿Qué quieres decir con "espero que no sea Java"? ¿Que no serán presentados? Me gustan y uso lambdas (en Scheme, Haskell): son un concepto bastante fácil. Pero en C #, C ++ y Java me parecen una adición tardía que de alguna manera no encaja con el resto del lenguaje. Dudo que los inventores no conocieran a Lisp, pero decidieron que las lambdas no pertenecían a estos idiomas. Ahora se han convertido en una necesidad. Por lo tanto, me gustan mucho las lambdas, pero en C #, C ++ y Java parecen solo una exageración que se utiliza para vender nuevos compiladores, libros, etc.
Giorgio
1
@Giorgio: Java es (o era) más bien un lenguaje minimalista. No necesita saber mucho (lambdas, por ejemplo) para comprender lo que alguien más ha escrito. Me gusta eso. C # es un lenguaje maximalista. Cada nueva línea puede introducir tecnología que nunca has visto antes. Es una maravilla escribir, menos leer. Ninguno necesita lambda, aunque sí ayudan más en C # que en Java por razones de sintaxis. Pero son geniales y guardan un par de líneas de código. En otras palabras, tienes razón. Pero eso es C #, no Java. Todavía.
RalphChapin
1
@iconoclast: con 20 años de experiencia como programador, no me considero un principiante. Sin embargo, el hecho de que Java sea (era) un lenguaje relativamente simple y limpio me hace más productivo (puedo desarrollar software más complejo con menos esfuerzo). Creo que es un concepto erróneo que un lenguaje simple es para principiantes: un lenguaje simple permitirá a cualquier programador con algún grado de experiencia centrarse más en ciertos aspectos del desarrollo (por ejemplo, administrar una arquitectura compleja, refactorizar) porque pasan menos tiempo lidiando con otros aspectos (por ejemplo, gestión de memoria, sintaxis críptica, etc.).
Giorgio
3

En mi humilde opinión, necesitas encontrar un equilibrio. Eso requiere habilidad y experiencia.

Debe encontrar uno o dos idiomas en los que se especializa, mantenerse actualizado en los cambios de marco / estilo que evolucionan en este idioma y mantener sus habilidades de primer nivel.

Pero también debe ver cómo evoluciona este lenguaje y comprender la dinámica del desarrollo de software en su conjunto. ¿Habrá Java en 10 años? ¿Phyton está allí para quedarse? ¿PHP será reemplazado por .NET y Mono?

Estas son preguntas estratégicas a gran escala, las respuestas a las cuales le permitirán convertirse en un profesional altamente valorado en su campo, mientras tiene un respaldo sólido (1 o 2 idiomas) y saber cuándo pasar de su plataforma principal.

En mi humilde opinión, seguir todos los idiomas modernos que se desarrollan cada día es uno de los mayores problemas para toda la industria. Tenemos un montón de idiomas sin desarrollo y sin salida con casi ningún profesional en ellos, y las personas que pierden el tiempo en ellos rara vez son profesionales reales, incluso en 1 idioma. Principalmente escriben código que combina todos los idiomas y no hace nada bien. Al mismo tiempo, la cantidad de años-hombre que se desperdicia en estos lenguajes no estándar podría gastarse en mejorar algunos marcos y especificaciones de idiomas centrales.

Descifrador
fuente
2

Como otros han señalado, muchas nuevas tecnologías surgen para abordar nuevas necesidades y, por lo tanto, hacen que sea más fácil resolver ciertos problemas. Por lo tanto, debe mantenerse actualizado y, al menos, saber qué sucede en su campo y comprender qué nuevas tecnologías son relevantes para usted.

Por otro lado, creo que a veces también hay un factor exagerado en ciertas innovaciones: algunas ideas son extremadamente antiguas, pero solo en los últimos años se las está impulsando para convertirse en la corriente principal. A veces tengo la impresión de que se impulsa un nuevo lenguaje de programación (o una nueva versión del mismo) simplemente porque "nuevo es mejor" y una nueva tecnología significa nuevos libros, nuevas herramientas de programación, nuevos compiladores, nuevos cursos de programación o, en otras palabras, ingresos.

Por lo tanto, puede suceder que tenga que aprender una nueva tecnología sin ver ninguna ventaja real sobre la tecnología que había estado utilizando antes, de lo contrario corre el riesgo de estar fuera del mercado porque sus habilidades parecen anticuadas . Depende de usted seguir el desarrollo de nuevas tecnologías e intentar comprender cuáles pueden hacerlo más productivo y cuáles son convenientes para que su CV se vea mejor.

En pocas palabras: creo que deberías intentar aprender lo que realmente encuentras útil, independientemente de si es nuevo o viejo.

Giorgio
fuente
2

Porque "apegarse a lo que sabes" representa un fracaso para "mejorar en eso". No es necesario que adopte todas las prácticas y marcos nuevos que se presentan, pero al menos debe tener una opinión informada sobre los populares. En el desarrollo web, solo hacer la pregunta sería horrible para un entrevistador. El desarrollo web está plagado de cadáveres de personas que querían dejar de aprender cosas nuevas después del 2000 y eso es lo que debería ser porque hacen más trabajo para el resto de nosotros. Manténgase alejado de los desarrolladores si no le interesa. Es una relación pésima de $ / hora si la parte donde aprendes cosas nuevas se siente como trabajo.

Erik Reppen
fuente
Porque "apegarse a lo que sabes" representa un fracaso para "mejorar en eso": una forma de leer esto es que si te quedas con la misma tecnología por más tiempo obtienes un conocimiento más profundo de ella, mientras saltas de una tecnología al siguiente cada dos o tres años solo le permitirá tener un conocimiento superficial, es decir, nunca estará realmente familiarizado con ninguno de ellos.
Giorgio
No entendería JavaScript tan bien como lo haría si no me hubiera diversificado un poco y lo entendiera desde una perspectiva de cómo funcionan realmente otros idiomas o si estuviera al tanto de las nociones actuales de las mejores prácticas y explorado lo que la gente realmente está haciendo bajo el capó de sus marcos y bibliotecas. No creo que sea realmente posible mejorar como desarrollador a un ritmo razonable sin una exposición regular a nuevas ideas.
Erik Reppen
Reppen: Estoy totalmente de acuerdo contigo en esto.
Giorgio