31.8 C
Colombia
viernes, julio 4, 2025

Brecha entre desarrolladores junior y senior – O’Reilly


Me preocupa la IA.

No me preocupa que me fairly el trabajo. Creo que la IA es una auténtica herramienta de productividad. Con lo que quiero decir, puede hacer que los desarrolladores produzcan más.

Aprende más rápido. Profundiza más. Ver más lejos.

La pregunta es si esos desarrolladores están produciendo algo bueno o no.

La diferencia entre un desarrollador experimentado y un desarrollador junior es que un desarrollador experimentado sabe:

  • Hay más de una buena solución para cada problema.
  • La respuesta a “cuál es la solución” es “depende”.
  • De qué “depende”, o al menos tiene una thought de cómo saber de qué depende.

Por la forma en que formamos a los jóvenes, ya sea en la universidad o en un campo de entrenamiento o si se capacitan ellos mismos con los materiales que ponemos a su disposición (Viva Web), damos a entender desde el principio que hay una respuesta correcta. “Esta es la solución para imprimir la secuencia de Fibonacci mediante recursividad”. Los desarrolladores junior están capacitados para pensar que si el código resuelve el problema, el trabajo está terminado.

Sin embargo, lo que hacemos en el desarrollo de software program generalmente no lo ha hecho se ha hecho antes. Si es así, generalmente está codificado en un lenguaje, marco o biblioteca.

¿Qué tiene esto que ver con la IA? Actualmente, la IA generativa te da la respuesta. A medida que la IA mejore, probablemente incluso le dará una respuesta que funcione. ¡Esto es genial! Ya no necesitamos dedicar mucho tiempo a capacitar a los desarrolladores; podemos capacitarlos para que sean “ingenieros rápidos” (lo que me hace pensar en desarrolladores que llegan a tiempo), le pedirán el código a la IA y éste se lo entregará.

Pero es más complicado que eso. Suponiendo que la primera respuesta que nos da la IA se compila y funciona, es posible que no coincida con nuestro estilo de código; no puede utilizar las bibliotecas y marcos que el equipo tiene a su disposición; puede no tener en cuenta las peculiaridades del ámbito empresarial de nuestra aplicación específica; Es posible que no cumpla con nuestros requisitos de rendimiento. Un desarrollador experimentado detectaría todo esto y le pediría a la IA que le diera la forma correcta a la respuesta o lo haría él mismo. Un desarrollador junior puede verse tentado a introducir este código en la aplicación de la forma que funcione.

Quiero ser muy claro aquí. No culpo a los desarrolladores junior por esto. Esto es parte del aprendizaje. Hemos estado haciendo esto durante décadas. Cuando me gradué en informática, usaba AltaVista (sí, soy así de viejo) para encontrar soluciones a mis problemas y hurgaba en el código hasta que hacía lo que quería, a menudo a pesar de cualquier herramienta, marco o patrón de diseño. estábamos usando. Más tarde, los jóvenes usaban código de Stack Overflow como inspiración, felizmente sin darse cuenta de qué líneas pegadas en el código base no hacían nada y cuáles eran realmente relevantes. Hoy en día, esas líneas de código pegadas serán código creado por IA generativa.

Nuestra responsabilidad como industria siempre ha sido guiar a los desarrolladores recién creados en la dirección correcta. Siempre ha sido importante para los ingenieros experimentados señalar las desventajas de un enfoque y mostrar a los jóvenes formas mejores o más nuevas de hacer las cosas. Todavía recuerdo claramente a un desarrollador, solo dos años mayor que yo, explicándome por qué debería usar ArrayList y no Vector. Crecer como ingeniero no se trata de aprender a escribir más código; se trata de aprender qué preguntas hacer, cuáles son los compromisos y las cuestiones “depende”, y qué soluciones podrían ser las correctas para un problema determinado.

Entonces, volvamos a por qué me preocupa la IA. Me preocupa que los desarrolladores experimentados lo agreguen a su arsenal de herramientas para realizar el trabajo, al igual que la finalización de código IDE, Stack Overflow y Google. Aprenderán cómo (y cuándo) usarlo para darles concepts, indicarles una dirección y hacer el trabajo pesado de crear textos repetitivos o fragmentos de código común. Aprenderán cómo entrenar a la IA para que les proporcione un código “mejor” (para alguna definición de mejor) con el tiempo. Todo este tiempo están entrenando la IA: no están entrenando a desarrolladores junior. De hecho, se anima a los ingenieros experimentados a entrenar la IA generativa de la forma en que lo hacían. nunca Se anima a invertir tiempo en la formación de jóvenes.

Y los jóvenes… bueno, los jóvenes asumirán que el código generado por IA funciona. Los ingenieros experimentados estarán tan ocupados entrenando la IA que no ayudarán a los jóvenes a subir de nivel. Los junior no tendrán las herramientas para mejorar, y los desarrolladores senior podrían dedicar tanto tiempo a corregir errores en el código mal implementado de los junior que la organización podría decidir que los junior no sólo no son necesarios sino que en realidad suponen una pérdida de productividad indeseable.

¿Cuál es el problema? Seguramente, ya sea que estemos entrenando a jóvenes o entrenando a la IA, ¿el resultado remaining es el mismo? Código que funciona para nuestro problema. Claro, y a medida que la IA mejore, tal vez dependamos aún más de ella. Y digamos, a modo de argumento, que la IA mejora lo suficiente como para reemplazar a los desarrolladores junior. ¿Será lo suficientemente bueno como para reemplazar a los desarrolladores experimentados? Tal vez, pero definitivamente aún no hemos llegado a ese punto. Si no es lo suficientemente bueno para reemplazar a los desarrolladores y arquitectos experimentados, y si no invertimos en los juniors de hoy, no tendremos seniors mañana. Necesitaremos desarrolladores experimentados en el futuro previsible, incluso si es “sólo” para entrenar la IA o ayudar a crear la próxima generación de herramientas de IA.

Más allá del problema del oleoducto, quiero abordar algo que creo que a menudo se pasa por alto en nuestra industria. Los desarrolladores no son máquinas de producción de códigos. Nuestro trabajo no es escribir código. No me refiero sólo a desarrolladores experimentados; Incluyo a los jóvenes en esto también. Cuando trabajaba en un equipo que se emparejaba regularmente, cuando period un desarrollador con una sólida experiencia de más de 10 años, las personas que más me desafiaban eran los jóvenes. Sí, aprendí un excelente trato de personas inteligentes y experimentadas como Dave Farley y Martin Thompson. Lo que aprendí de ellos fue a menudo cosas nuevas que no sabía ya, o confirmaron creencias e concepts que ya tenía. Pero los jóvenes fueron los que realmente me ayudaron a comprender lo que me importaba y por qué hacía las cosas que hacía. Los jóvenes realmente te desafían como desarrollador. Los jóvenes hacen grandes preguntas: ¿Por qué lo hiciste de esa manera? ¿Por qué rechazaste esta thought? ¿En qué piensas cuando intentas decidir cuál de estos enfoques adoptar? ¿Por qué es difícil pasar esta prueba?

Estas preguntas nos ayudan a crecer como desarrolladores de nivel medio y superior. Por qué hizo ¿lo hacemos así? ¿Es porque una vez alguien nos mostró cómo hacerlo de esa manera y simplemente hemos seguido ese enfoque ciegamente? ¿O descubrimos, después de una extensa búsqueda en Google y en Stack Overflow, después de muchas pruebas y errores y eventual refinamiento, que esta es la mejor manera de hacerlo? La respuesta nos dirá mucho sobre cuánto entendemos esto y si entendemos las compensaciones que hacemos cuando tomamos esa ruta. También debería hacernos pensar si necesitamos investigar más sobre este enfoque o herramienta. ¿Se ha actualizado desde que aprendimos este enfoque? ¿Existe una forma más nueva, mejor, más rápida o más limpia de hacer lo mismo?

Por supuesto, podríamos simplemente sentarnos a reflexionar sobre estas preguntas en silencio y luego seguir haciendo lo que sea que estemos haciendo (o decidir hacer las cosas de manera diferente). Pero verbalizar la conversación interna, las dudas o certezas que tenemos sobre las respuestas, no sólo le dará al joven una thought de nuestros procesos de pensamiento, sino que también le ayudará a crear su propio proceso para tomar decisiones. Es perfectamente aceptable decir: “La verdad es que no estoy seguro. Siempre lo he hecho de esa manera. ¿Deberíamos investigar un poco para ver si existe una manera mejor? O “Bueno, en mi último trabajo, teníamos un límite en la cantidad de conexiones abiertas, así que siempre las cierro cuando puedo. Eso no se aplica mucho aquí, pero de todos modos parece un buen hábito. ¿Se te ocurre alguna razón para no hacer esto? Es bueno hacer preguntas a los jóvenes para que piensen y es fantástico tener una conversación bidireccional sobre las compensaciones y las decisiones de implementación. Dios sabe que todos hemos estado atrapados pensando en círculos sobre un problema, sólo para resolverlo simplemente haciendo una pregunta. (¡A menudo ni siquiera necesitamos la respuesta!)

Las personas mayores saben que la respuesta a todo es “depende”. Crecer como desarrollador significa descubrir más y más cosas de las que “depende”, ser capaz de detectar esas cosas en el código, la infraestructura o la organización, y hacer preguntas para descubrir incógnitas conocidas. Responder las preguntas de un joven, o guiarlo hacia su propia respuesta, lo ayuda en su propio viaje para descubrir de qué “depende” y dónde lograr el equilibrio en las compensaciones. También nos ayuda a comprender mejor nuestros propios procesos y actualizarlos cuando sea necesario.

Una IA no hace preguntas. Da respuestas. Con confianza. No te desafía. Se inclina ante tu sabiduría cuando expresas una opinión y, sin embargo, también hace lo que le da la gana.

Necesitamos la tensión entre los mayores y los jóvenes. Eso es lo que nos ayuda a todos a crecer. Como jóvenes, podemos hacer preguntas, aprender por nosotros mismos y ayudar a los mayores a cuestionar sus suposiciones. Como personas mayores, tenemos mucha más experiencia con las sutilezas de por qué elegiríamos una solución específica y qué preferencias nosotros, o nuestro equipo, podríamos tener sobre nuestra solución. Pero si bien podemos moldear una IA para que nos dé el tipo de respuesta que nosotros mismos podríamos haber escrito, la IA no nos preguntará: “¿Pero por qué queréis hacerlo de esa manera?”. o “¿Cuáles son los problemas que le preocupan con esta solución?” Estas preguntas son las que necesitamos para crecer como individuos, para crear un mejor código que no solo funciona pero cumple con los requisitos de la empresa, el usuario y el equipo que mantiene el código. Crear un buen software program es un deporte de equipo.

(También hice un vídeo sobre este tema: https://youtu.be/AK9pFlLJwbQ?function=shared.)



Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles