32.3 C
Colombia
lunes, julio 7, 2025

Seniors y juniors – O’Reilly


Casi suena peyorativo, ¿no? Pero la distinción entre desarrolladores de software program senior y junior está integrada en nuestros trabajos y títulos de trabajo. Ya sea que lo llamemos de nivel de entrada o algo más, distinguimos entre las personas que recién comienzan sus carreras y las que han estado cerca por un tiempo. Todos todavía estamos aprendiendo (una esperanza), pero las personas de nivel de entrada todavía están aprendiendo lo básico, y las personas mayores tienen una mayor responsabilidad, junto con el potencial de cometer errores más grandes. Los desarrolladores de nivel de entrada pueden hacer una programación básica, pero su conocimiento no es necesariamente profundo o amplio. A medida que avanzan hacia la fuerza laboral, necesitan profundizar su conocimiento y convertirse en parte de un equipo que escribe un sistema de software program para un cliente que paga. Ese nuevo rol requiere desarrollar un nuevo conjunto de habilidades.

Las habilidades para los desarrolladores de software program junior y senior varían enormemente, pero hay algunos temas comunes. Para un desarrollador junior, esperamos:

Aprender más rápido. Cavar más profundo. Ver más lejos.

  • Familiaridad con uno o dos lenguajes de programación y sus bibliotecas más importantes
  • Familiaridad con un pequeño número de algoritmos básicos
  • Familiaridad con un sistema operativo del lado del servidor
  • Familiaridad con herramientas comunes, como git
  • Experiencia limitada trabajando con equipos, en el contexto de proyectos de grupos pequeños

Por supuesto, los individuos también varían enormemente, desde programadores autodidactos que han hecho contribuciones sustanciales a proyectos de código abierto hasta aprendices de botas de inicio que pueden no entender la diferencia entre JavaScript y React. Sin embargo, si somos honestos sobre las habilidades que esperamos de un desarrollador junior, esta lista muestra aproximadamente lo que esperaríamos, no cinco años de experiencia en la escritura SQL.

Para los desarrolladores superiores esperamos:

  • Familiaridad con los idiomas en uso en sus empresas y un profundo conocimiento de al menos uno
  • La capacidad de comenzar con un nuevo lenguaje de programación en días
  • Experiencia trabajando con equipos, grandes proyectos y software program heredado
  • Experimentar la comprensión de los requisitos empresariales
  • La capacidad de mentor de los empleados más nuevos
  • Conocimiento exhaustivo del entorno de herramientas
  • Habilidades de depuración serias
  • La capacidad de tomar responsabilidad Para decisiones importantes

Los idiomas realmente no son el núcleo de la informática. Pero son una necesidad. Son una forma de decirle a una computadora qué hacer. Dentro de los límites, los lenguajes de programación son todos similares. Sí, escucho gritos, especialmente de los defensores de la programación funcional, y otorgaré que hay dos o tres clases principales de lenguajes de programación, y que cada lenguaje expresa ciertas concepts importantes sobre el software program de escritura. Sin embargo, para un desarrollador senior, nos importa menos una larga lista de idiomas que la familiaridad con las concepts. Vemos lo mismo con los idiomas humanos: una vez que hayas aprendido un idioma extranjero, aprender un segundo es más fácil, y una tercera o cuarta es aún más fácil. Llegas a entender cómo funcionan los idiomas. El idioma en sí no es tan importante como aprender a aprender rápidamente. Los programadores senior también conocen el profundo secreto de los lenguajes de programación: se trata tanto de comunicarse con los humanos como de comunicarse con máquinas. La computadora no conoce C ++ y no le importa si el software program fue escrito en Java, Haskell o Fundamental; No importa cómo se escriba el software program, ejecutará el código de la máquina binaria. Los humanos necesitan comprender lo que sus programas están diciendo a una computadora que haga porque lo que sea que escriba ahora necesitará ser mantenido por alguien más tarde.

¿Qué pasa con los algoritmos? ¿Es importante aprender sobre los diferentes algoritmos de clasificación, por ejemplo? La clasificación es importante, pero no por las razones que un desarrollador junior podría pensar; Casi nadie necesitará implementar un algoritmo de clasificación, excepto como ejercicio. La clasificación es importante porque es fácil de describir y tiene muchas soluciones diferentes, y cada solución tiene propiedades diferentes. Las soluciones representan diferentes enfoques para la resolución de problemas. Es posible que los programadores no necesiten saber cómo clasificar, pero cada programador necesita comprender cómo resolver problemas con “dividir y conquistar”, cómo usar la recursión, cómo estimar el rendimiento, cómo operar en una estructura de datos sin crear una nueva copia, hay todo tipo de técnicas e concepts incrustadas para clasificar que un programador realmente tiene que saber. Pensar que ese tipo es innecesario solo porque una función de clasificación () está en las bibliotecas de cada idioma es, bueno, un signo de un programador junior que nunca se convertirá en nada más.

Los idiomas y los algoritmos son apuestas de mesa; No son las marcas distintivas de un desarrollador senior. Esperamos que un desarrollador senior tenga un conocimiento más amplio y más profundo, pero lo que hace que un desarrollador senior sea todo lo demás en la lista: trabajo en equipo, la capacidad de trabajar en grandes proyectos, comprender los requisitos empresariales, la tutoría y mucho más que no hemos enumerado. Podemos resumir diciendo “experiencia”, pero eso no es realmente útil. ¿Qué enseña la experiencia? La experiencia comienza con el reconocimiento de que la programación no se trata fundamentalmente de los lenguajes de programación. Los lenguajes de programación son necesarios, pero las personas mayores saben que la esencia de la programación es la resolución de problemas: comprender los problemas y descubrir cómo resolverlos de manera estructurada y repetible. Como dijo el profesor de informática de Stanford, Mehran Sahami conversación con Andrew Ng,1 “Te enseñamos Python, pero realmente estábamos tratando de que entiendas cómo tomar problemas y pensar en ellos sistemáticamente”.

Las personas mayores también reconocen que la comprensión de los problemas no solo se les ocurre un algoritmo. Es comprender quién quiere que se resuelva el problema, por qué quieren que se resuelva, quién está pagando por el problema que se resuelve, qué partes del problema ya se han resuelto, qué diferentes tipos de soluciones son posibles, ya sea que esas soluciones puedan escalar o extender, y mucho más. Los proyectos de software program siempre tienen un pasado y un futuro, y casi siempre tienen un componente político. Un desarrollador senior entiende que el proyecto precise tiene que comprometerse con las soluciones del pasado y prepararse para los problemas y soluciones del futuro. Esperamos que un desarrollador junior haga un trabajo útil en una pequeña parte de un proyecto grande; Esperamos que un senior entienda esos problemas más grandes: luchar con la historia del proyecto y asegurarse de que sea mantenible en el futuro.

Los desarrolladores superiores también ejercen liderazgo, aunque no necesita ser formal. Además de liderar formalmente un grupo, el liderazgo incluye la tutoría, trabajar bien con los equipos, ser la voz de la razón cuando las cosas se calientan, tomando las decisiones difíciles y ser ampliamente informado sobre el entorno de la organización: ¿cuáles son las herramientas? ¿Qué recursos están disponibles? ¿Cuáles son la política organizacional? Un líder es alguien a quien los miembros del equipo acuden con preguntas.

Los desarrolladores senior tienen habilidades técnicas ganadas con esfuerzo que van más allá de la capacidad de recoger nuevos lenguajes de programación rápidamente. Tal vez sea un mito, pero los desarrolladores experimentados parecen tener la capacidad de mirar un código de buggy y decir: “Eso parece sospechoso”. Debido a que han visto mucho, saben lo que se ve bien y qué no. Saben dónde es possible que se esconden los errores. Han resuelto muchos problemas y saben qué soluciones probablemente funcionen, y saben cómo probar diferentes enfoques.

Un desarrollador junior se convierte en un desarrollador senior a través del tiempo, la experiencia y la orientación. Se necesita crecer más allá de las tareas del aula y los proyectos de grupos pequeños para trabajar en software program que ha estado en desarrollo durante años y aún estará en desarrollo cuando se haya ido. El desarrollo de software program profesional casi siempre implica código heredado; La gran mayor parte del desarrollo de software program no está construyendo algo nuevo, pero mantiene algo que ya existe. Debe pensar en cómo se ajusta cualquier código que escriba con lo que ya hay y también con lo que podría estar allí en el futuro; Tienes que pensar en diseños y arquitecturas más grandes. Y esto lleva a otra distinción importante: mientras que los desarrolladores junior a menudo están fascinados por la última tendencia y el marco más nuevo, las personas mayores saben el valor de “tecnología aburrida. “

Es importante pensar en los juniors y las personas mayores ahora, ya que los asistentes de codificación impulsados ​​por la IA hacen que sea aún más fácil generar código. Los asistentes de codificación son valiosos y ahorran mucho trabajo. Dan a los desarrolladores de software program superpoderes; Pueden escribir un montón de código repetitivo de calderas, código que es necesario pero ni divertido ni satisfactorio. Y cuando se usa correctamente, los asistentes de codificación pueden ayudar a los desarrolladores a aprender. Pero también pueden crear un trabajo innecesario. Como escribe Nat Torkington:2

Cuando los jóvenes presentan código que no escribieron, tienen que aplicar el ojo crítico de un senior a ellos mismos; debe seguir nuestras convenciones, ¿maneja los errores correctamente, es esta la mejor manera de resolver ese problema, and many others. Si el junior no lo hace, entonces están haciendo un trabajo para el senior, cuando el senior, el Junior presenta un servicio de AI sin crítica. Efectivamente, los juniors que usan IA pueden hacer trabajo para personas mayores.

Entonces, una consecuencia de la codificación impulsada por la IA es que los juniors tienen que hacer el trabajo de un senior, tal vez antes de que estén completamente equipados para hacerlo. Necesitan tener un ojo en el panorama common, porque no solo están evaluando la calidad de su propio trabajo, lo cual es una habilidad necesaria; Están evaluando el trabajo de otro (que podría tener una gran O), y esa es la habilidad de un senior. La parte más importante de la programación no es generar código. Es comprender el problema en su contexto completo. Eso es lo que hacen los desarrolladores de alto nivel. Y eso nos deja a algunas conclusiones.

Primero, escuchamos que decía con demasiada frecuencia que las empresas ya no necesitarán desarrolladores junior. Tal vez eso sea cierto, pero aún necesitarán personas mayores, y sin juniors, ¿de dónde vendrán las personas mayores? No crecen en los árboles ni entran a su puerta listos para comenzar. Todos quieren desarrolladores “experimentados”; Tiene que haber una forma de adquirir experiencia.

En segundo lugar, ¿qué necesitamos para enseñar a los desarrolladores junior para que puedan convertirse en senior? El aprendizaje no se trata solo de programas de lenguajes, bibliotecas y algoritmos. Necesitamos enseñar la capacidad de analizar los problemas en un contexto más amplio, pensar en cómo evoluciona el software program con el tiempo, comunicarse con los demás y hacerlo como una parte integral de un flujo de trabajo que incluye asistentes de IA. Como escribe Addy Osmani,3 Los jóvenes deben “centrarse en construir esa mentalidad de evaluación crítica y comprender cómo usar herramientas de IA de manera efectiva”. En nuestra experiencia, los desarrolladores junior están entusiasmados con aprender a usar la IA de manera efectiva, pero tenga en cuenta que esto es una adición a un conjunto de habilidades, y que la adición aumenta la brecha entre los juniors y los adultos mayores. Y las personas mayores también están trabajando para agregar estas mismas nuevas habilidades; AI es tan nuevo para ellos como para el reciente graduado, posiblemente más nuevo.

Finalmente, los asistentes de codificación son buenos para codificar, pero los desarrolladores de asistentes de codificación han prestado relativamente poca atención al resto del trabajo. No está claro que no puedan, ya tenemos algunas herramientas. La IA es buena para tomar notas en las reuniones, generar transcripciones y resumir. En el futuro, la IA ciertamente podrá hacer más: ayudar a negociar los requisitos, navegar cuestiones políticas, pero aún no. Y sí, la IA está ganando gradualmente la capacidad de navegar en grandes bases de código, pero aún necesitamos humanos que sepan cómo funcionan las cosas y dónde están enterrados los secretos.

Siempre necesitaremos desarrolladores senior, por lo que siempre necesitaremos desarrolladores junior, junto con caminos que permitan a los jóvenes convertirse en personas mayores. A medida que incorporamos la IA en nuestros flujos de trabajo, debemos ser atentos a preservar y mantener esos caminos. ¿Cómo creamos la tutoría en los requisitos de trabajo? ¿Cómo alentamos a las nuevas contrataciones a mirar imágenes más grandes, cuando gran parte de nuestra cultura (y nuestros entornos profesionales) se basa en escalas de tiempo cada vez más cortas y cortas? ¿Cómo enseñamos a las personas a convertirse en solucionadores de problemas en lugar de generadores de código? ¿Y cómo enseñamos a los humanos a colaborar, tanto con cada uno como con la IA? Esos son los problemas que debemos resolver.


Notas al pie

  1. Y como he citado en otra parte.
  2. Correo electrónico private
  3. Correo electrónico private



Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles