¿Cuál es la diferencia entre los desarrolladores de nivel de entrada / Jr / Sr? [cerrado]

198

Aparte del título y el pago, ¿cuál es la diferencia?

  • ¿Qué responsabilidades diferentes tienen?

  • ¿Qué nivel de conocimiento / experiencia tienen?

  • ¿Cuál es la medida básica para determinar dónde encaja un desarrollador en esta estructura básica?

JD Isaacks
fuente

Respuestas:

341

Esto variará, pero así es como lo veo en un lugar lo suficientemente grande como para tener distinciones entre los tipos de programadores.

Yo diría que el nivel de entrada y Junior son lo mismo. Acaban de salir de la escuela y tienen menos de dos años de experiencia laboral. Se les asignan las tareas menos complejas y se deben supervisar con bastante atención. Generalmente saben alrededor del 10% de lo que creen saber. Por lo general, no han pasado por todo el ciclo de desarrollo y, a menudo, toman decisiones muy ingenuas si se les da la oportunidad de elegir. Lamentablemente, a muchos de ellos no les importa cuál es el requisito, quieren construir las cosas a su manera. A menudo tienen malas habilidades de depuración.

El nivel intermedio es donde caen muchos programadores. Tienen más de dos años de experiencia y generalmente menos de diez, aunque algunos pueden permanecer en este nivel durante toda su carrera. Pueden producir código de trabajo con menos supervisión siempre que estén asignados a tareas relativamente rutinarias. En general, no tienen la tarea de un diseño de alto nivel o tareas muy complicadas que requieren un nivel de conocimiento profundo. Sin embargo, se les puede asignar el diseño de una parte de la aplicación, especialmente porque están en la zona para convertirse en desarrolladores senior. Son buenos en tareas de mantenimiento o tareas en las que pueden enfocarse solo en su pieza del rompecabezas, pero generalmente no se espera que consideren la aplicación como un todo a menos que trabajen con desarrolladores senior o estén preparados para ascender a senior. Por lo general, pueden hacer un trabajo decente de solución de problemas y depuración, pero tienen que esforzarse mucho para obtener los difíciles. Todavía no tienen suficiente experiencia para ver los patrones en los problemas que los señalan al lugar probable donde están ocurriendo. Pero están adquiriendo esas habilidades y rara vez necesitan pedir ayuda para la depuración. Probablemente han pasado por todo el ciclo de desarrollo al menos una vez y han visto los resultados de los problemas de diseño y están aprendiendo cómo evitarlos en el futuro. Por lo general, tienden a ser más propensos a tomar un requisito al pie de la letra y no retrasarlo cuando tiene problemas obvios o brechas. Han aprendido lo suficiente como para saber lo que no saben y están comenzando a obtener ese conocimiento. Son los caballos de batalla del mundo de la programación,

Nadie que sea de nivel superior incluso necesita hacer esta pregunta. Son expertos en sus conjuntos tecnológicos elegidos. Se les asignan tareas difíciles (las que nadie sabe cómo resolver) y a menudo obtienen responsabilidades de diseño. A menudo trabajan de forma independiente porque tienen un historial comprobado de entrega de productos. Se espera que sean mentores de desarrolladores junior e intermedios. A menudo son increíbles solucionadores de problemas. Se han encontrado con esos mismos problemas antes y tienen una muy buena idea de dónde buscar primero. Las personas mayores a menudo también son mentores fuera del lugar de trabajo. Generalmente tienen al menos diez años de experiencia y casi siempre han estado en al menos una marcha de la muerte y saben exactamente por qué hay que evitar algunas cosas. Saben cómo entregar un producto que funcione y cumplir con una fecha límite. Saben qué esquinas se pueden cortar y qué esquinas nunca se deben cortar. Conocen al menos uno y, a menudo, varios idiomas a nivel de expertos. Han visto muchas "nuevas tecnologías populares" llegar al lugar de trabajo y desaparecer, por lo que tienden a ser un poco más conservadores al subirse al carro para la próxima nueva herramienta de desarrollo emocionante (pero no completamente resistentes al cambio, esas serían las desarrolladores intermedios mayores que nunca dan el salto a Senior). Entienden que su trabajo es entregar software que funcione y haga lo que los usuarios desean, no jugar con herramientas divertidas. A menudo son más exigentes con respecto a dónde trabajarán porque pueden estar y porque han visto de primera mano lo malos que pueden ser algunos lugares. Buscan los lugares que tienen las tareas más interesantes para hacer. A menudo saben más sobre los productos de su compañía que cualquier otra persona, incluso si han estado allí solo unos meses. Saben que necesitan más que conocimientos de programación y también son buenos para obtener conocimiento sobre el dominio comercial que admiten. A menudo son conscientes de los problemas que los juniors nunca consideran y los intermedios a menudo no piensan, como asuntos regulatorios y legales en el dominio comercial que admiten. Pueden y harán retroceder un requisito porque saben cuáles serán los problemas y pueden explicar lo mismo a los legos.

HLGEM
fuente
2
¿Existe un Título (en inglés) para el traductor de Google "Nivel intermedio" que utiliza "Desarrollador completo". Pero no es una fuente valiosa =)
Michel Ayres
23
Excelente explicación similar a una historia. Disfruté leyéndolo.
Saeed Neamati
1
Gracias por esta explicación Soy autodidacta en iOS dev (sin educación comp-sci) y he lanzado mi primera aplicación que tiene algunas características no triviales (es decir, JSON de CRUD, algunos componentes sociales, buen diseño). No creo que sea un gran programador, pero escribí la aplicación al frente y entendí lo que se necesita para enviar. ¿Dónde colocarías a alguien como yo, hipotéticamente?
SamYoungNY
1
@NYCTechEngineer, me viene a la mente el desbordamiento de pila. También grupos de usuarios locales, blogs, redacción de artículos y libros.
HLGEM
1
@BrianHaak Thx: es interesante lo que dices. Desde el año pasado he trabajado en un proyecto mucho más grande que antes. Tengo la sensación de echar un vistazo al código que escribí hace unos meses y decir "wtf? ¿Quién pensó que era una buena idea?" :) - Comenzar este proyecto desde un kernel pequeño hasta un proyecto que se puede extender fácilmente y que también puede acomodar a personas que no son desarrolladores que desean agregar contenido me ha obligado a pensar en una estructura de nivel superior. El emparejamiento con un programador más experimentado me mostró que me faltan muchos opps. usar abstracciones. También tengo problemas con el espacio de nombres.
SamYoungNY
43

Nivel de entrada: debe darles instrucciones explícitas, verificar todo lo que hacen, poca o ninguna responsabilidad de diseño, ninguna responsabilidad de análisis

Junior: instrucciones menos explícitas, menos verificación, algunas responsabilidades menores de diseño y análisis; ayuda a las personas de nivel de entrada a encontrar el compilador y usar el repositorio

Senior: se espera que la responsabilidad principal de diseño y análisis corrija los descuidos por su cuenta, poca / ninguna verificación, poca / ninguna instrucción; ayuda a las personas de nivel junior a aprender / mejorar las habilidades de análisis y diseño

Steven A. Lowe
fuente
20
Bien, excepto que no sé que estoy completamente de acuerdo con "no verificar / instrucciones" para el nivel superior. A menos que no esté trabajando en o con un equipo, nadie debería ser completamente una isla.
Wonko el sano
@WonkotheSane tenemos uno que combina códigos con errores sin ningún código de revisión o solicitud de extracción. No discute mucho sobre la arquitectura de la aplicación que no sea solo usar el patrón de observación en todas partes. Toma todas las decisiones por sí mismo para que no se adapte a nada nuevo . Todo porque él mismo es una isla. Él no está en eso. Él es la isla :(
Miel
16

Realmente, creo que todo se reduce a cuánto tiempo has estado en el trabajo. Si tienes 10 años de experiencia, eres un desarrollador senior, si eres un graduado, entonces probablemente estés en el nivel de entrada. He visto muchos desarrolladores 'senior' que apenas podían codificar y realmente no sabían lo que estaban haciendo, y muchos desarrolladores junior que eran fantásticos.

Craig
fuente
77
Esto hace eco de mis experiencias. "Senior" significa tiempo con la compañía y generalmente nada más; la habilidad no tiene en cuenta un ápice. He trabajado con muchos desarrolladores "senior" (y gerentes) que no sabían nada sobre el software más allá del desarrollo de prueba y error, pero habían estado con la compañía por más de 5 años, o fue el primer programador contratado cuando el el lugar se inició, y así fue promovido debido a la tenencia
Wayne Molina
8

Creo que los espacios de artesanos de la vieja escuela de aprendiz, oficial y maestro encajan bien en estos espacios para principiantes, junior (o simplemente sin prefijo) y senior.

A un nivel de entrada se le asignan tareas relativamente simples que no tienen consecuencias profundas y su trabajo es verificado por un junior o senior. Con el tiempo adquieren más responsabilidad y se les asignan tareas más complejas, aprendiendo las cuerdas en el camino.

En un nivel junior (o simplemente la eliminación de "nivel de entrada" / "junior" del título / descripción) ha completado su aprendizaje y ha cubierto las principales áreas de desarrollo de su empresa, habiéndose sumergido en cada área importante para que esté familiarizado con cada uno de ellos. Ahora ayuda a proporcionar orientación y aportes para el aprendiz equivalente, pero su trabajo aún es revisado por el maestro / senior, aunque quizás no tanto como cuando era un junior.

Con el tiempo y la entrega de proyectos exitosos, eventualmente se convierte en senior. En un nivel superior, ha dominado todo lo que está cubierto en su área, cubriendo todo el proceso de desarrollo y todas las herramientas y tecnologías involucradas. Usted está facultado para tomar decisiones técnicas significativas y se espera que brinde información a la administración sobre el proceso de desarrollo de software.

Entonces, dadas esas pautas, debería poder mirar a una persona o una posición y determinar en cuál de los tres contenedores aterrizan.

Todd Williamson
fuente
6

Se reducirá a las expectativas de la compañía del programador.

Si soy la empresa contratante y contrato a un programador de nivel de entrada, sé que esa persona no sabe casi nada y vamos a asumir que necesita aprender todo. Si contrato a una persona de nivel Senior, en teoría, serán autosuficientes, desde un punto de vista técnico.

Walter
fuente
4

Esto depende estrictamente de la empresa. Pero las palabras son bastante obvias: el nivel de entrada es alguien que recién ingresa al campo, junior es alguien que está más allá del nivel de entrada y conoce algunas tecnologías de idiomas. Por último, son los que están más a cargo del proyecto y se sientan en un nivel superior. Por lo general, pueden delegar tanto como codifican.

Chris
fuente
Entiendo esto, pero ¿en qué punto estás "más allá del nivel de entrada" o "más allá de junior"? Si siempre está aprendiendo, todos los días está más allá de lo que era el día anterior.
JD Isaacks
El nivel de entrada es fácil, pero estoy buscando más ejemplos de experiencia / conocimiento que sugieran junior o senior.
JD Isaacks
Como dije, esto depende de la empresa, el contexto de la tecnología / idiomas en cuestión y, más específicamente, es una cuestión de opinión, a menos que esté hablando de títulos de trabajo oficiales. No creo que alguna vez me considere un experto en ningún idioma a menos que yo mismo haya escrito la maldita cosa.
Chris
Además, si está en una empresa, mire a los desarrolladores de jr, sr y compárelos / contraste con ellos. Este es un buen indicador en contexto específico de dicha compañía.
Chris
4

Como la mayoría ha dicho, varía de una compañía a otra y de un trabajo a otro.

Por ejemplo, una vez trabajé en una empresa que consideraba a cualquier persona que trabajó allí durante más de 5 años un "ingeniero de software sénior". En el otro extremo, otro lugar donde trabajé tenía definiciones muy estrictas (y escalas salariales asociadas).

Algunos lugares pueden considerar que "nivel de entrada" y "junior" significan lo mismo.

Puede variar en función de años de experiencia, conocimiento general, conocimiento específico (es decir, conocer las características de un determinado idioma), experiencia en gestión y / o liderazgo, todas sus combinaciones, y ciertamente mucho más.

Wonko el cuerdo
fuente
3

Voy a ir con la respuesta realmente simple aquí: los desarrolladores senior (en general) son personas que pueden ver el bosque por los árboles. Piensan más allá del problema inmediato frente a sus caras y entienden qué cambios arquitectónicos podrían o deberían ocurrir como resultado de solucionar el problema que enfrentan.

La mayoría de las compañías de software que he visto tienen a las personas de nivel básico haciendo la codificación diaria mientras que los desarrolladores senior supervisan lo que están haciendo las nuevas personas y abordan los problemas realmente feos y espinosos.

Obviamente, esta es solo mi opinión, y no una regla estricta. YMMV.

MattC
fuente
2

En pocas palabras y a partir de observaciones personales que se encuentran en los sitios de publicación de empleos y solo en relación con los niveles de experiencia.

Entrada = Tu nuevo probablemente tu primer trabajo.

Junior = Su buena, pero no se supone que es el mejor, también por lo general tienen menos de 5 años y más de 2 años de experiencia.

Senior = Se supone que eres el mejor y tienes más de 5 años de experiencia.

señor-fu
fuente
Te perdiste un intermedio.
Neolisco