Quelle est la différence entre les développeurs de niveau débutant / junior / senior? [fermé]


198

Autre que le titre et le salaire, quelle est la différence?

  • Quelles responsabilités différentes ont-ils?

  • À quel point sont-ils informés / expérimentés?

  • Quelle est la mesure de base pour déterminer la place d’un développeur dans cette structure de base?

Réponses:


341

Cela variera, mais c'est ainsi que je vois les choses dans un endroit suffisamment grand pour pouvoir distinguer les types de programmeurs.

Je dirais que le niveau d'entrée et Junior sont la même chose. Ils viennent de sortir de l'école et ont moins de deux ans d'expérience professionnelle. Ils se voient attribuer les tâches les moins complexes et doivent être surveillés assez étroitement. En général, ils savent environ 10% de ce qu'ils pensent savoir. Habituellement, ils ne sont pas passés par tout le cycle de développement et font souvent des choix très naïfs s’ils en ont la possibilité. Malheureusement, beaucoup d’entre eux ne se soucient pas vraiment de ce qu’il leur faut, ils veulent construire les choses à leur manière. Ils ont souvent de faibles compétences en débogage.

Niveau intermédiaire est l'endroit où tombent de nombreux programmeurs. Ils ont plus de deux ans d'expérience et généralement moins de dix ans, bien que certains puissent rester à ce niveau toute leur carrière. Ils peuvent produire du code de travail avec moins de supervision tant qu'ils sont affectés à des tâches relativement routinières. Ils ne sont généralement pas chargés de tâches de conception de haut niveau ni de tâches très complexes nécessitant un niveau de connaissance approfondi. Ils peuvent toutefois être chargés de la conception d’une partie de l’application, d’autant plus qu’ils sont sur le point de devenir développeur senior. Ils sont bons pour les tâches de maintenance ou pour lesquelles ils peuvent se concentrer uniquement sur leur pièce du puzzle, mais ils ne sont généralement pas censés considérer l'application dans son ensemble, sauf si ils travaillent avec des développeurs seniors ou s'ils sont préparés à une promotion. Ils peuvent généralement faire un travail décent de dépannage et de débogage, mais ils doivent vraiment se débrouiller pour obtenir les plus difficiles. Ils n'ont pas encore assez d'expérience pour voir les tendances dans les problèmes qui les dirigent vers l'endroit probable où ils se produisent. Mais ils acquièrent ces compétences et ont rarement besoin de demander de l’aide pour le débogage. Ils ont probablement traversé au moins une fois tout le cycle de développement et ont constaté les résultats des problèmes de conception et apprennent à les éviter. Habituellement, ils ont tendance à être plus enclins à accepter une exigence à sa valeur apparente et à ne pas la repousser en cas de problèmes ou de lacunes évidents. Ils ont suffisamment appris pour savoir ce qu’ils ne savent pas et commencent à acquérir cette connaissance. Ils sont les bêtes de somme du monde de la programmation,

Personne qui est au niveau supérieur n'a même besoin de poser cette question. Ce sont des experts dans les piles de technologies choisies. Ils se voient confier des tâches difficiles (celles que personne ne sait résoudre) et ont souvent des responsabilités de conception. Ils travaillent souvent de manière indépendante car ils ont une expérience éprouvée dans la livraison des marchandises. Ils sont censés encadrer les développeurs juniors et intermédiaires. Ce sont souvent des dépanneurs incroyables. Ils ont déjà rencontré ces mêmes problèmes auparavant et savent très bien par où commencer. Les aînés jouent souvent un rôle de mentor en dehors du lieu de travail. Ils ont généralement au moins dix ans d’expérience et ont presque toujours participé à au moins une marche de la mort et savent exactement pourquoi certaines choses doivent être évitées. Ils savent comment livrer un produit qui fonctionne et respecter un délai. Ils savent quels coins peuvent être coupés et quels coins ne devraient jamais être coupés. Ils connaissent au moins une et souvent plusieurs langues au niveau expert. Ils ont assisté à la disparition de nombreuses "nouvelles technologies" sur le lieu de travail. Ils ont donc tendance à être un peu plus prudents en ce qui concerne l'adoption du prochain nouvel outil de développement (mais ils ne sont pas complètement résistants au changement). développeurs intermédiaires plus âgés qui ne font jamais le saut vers Senior). Ils comprennent que leur travail consiste à fournir un logiciel fonctionnel qui fait ce que les utilisateurs veulent, et non à jouer avec des outils amusants. Ils sont souvent plus difficiles quant à l'endroit où ils vont travailler parce qu'ils peuvent être et parce qu'ils ont constaté à quel point certains endroits peuvent être pénibles. Ils recherchent les endroits qui ont les tâches les plus intéressantes à faire. Souvent, ils en savent plus sur les produits de leur entreprise que quiconque, même s'ils ne sont là que depuis quelques mois. Ils savent qu'ils ont besoin de plus que de la connaissance en programmation et qu'ils maîtrisent bien le domaine commercial qu'ils soutiennent. Ils sont souvent conscients de problèmes que les juniors ne prennent jamais en compte et que les intermédiaires ne pensent pas, tels que les problèmes réglementaires et juridiques du domaine commercial qu’ils prennent en charge. Ils peuvent et vont repousser une exigence car ils savent quels seront les problèmes et pourront expliquer la même chose aux profanes.


2
existe-t-il un titre (en anglais) pour le traducteur Google de "niveau intermédiaire" utilise "développeur complet"? Mais ce n’est pas une source valable =)
Michel Ayres

23
Excellente explication semblable à une histoire. J'ai bien aimé le lire.
Saeed Neamati

1
Merci pour cette explication. Je suis un autodidacte dans iOS dev (aucune éducation comp-sci) et j'ai publié ma première application qui présente des fonctionnalités non triviales (par exemple, le JSON de CRUD, des composants sociaux, un bon design). Je ne pense pas que je sois un grand programmeur, mais j’ai écrit l’application à l’avance et j'ai compris ce qu’il fallait pour expédier. Où placeriez-vous quelqu'un comme moi, hypothétiquement?
SamYoungNY

1
@NYCTechEngineer, on pense au dépassement de pile. Également des groupes d'utilisateurs locaux, des blogs, la rédaction d'articles et de livres.
HLGEM

1
@BrianHaak Thx - c'est intéressant ce que vous dites. Depuis l'année dernière, j'ai travaillé sur un projet beaucoup plus vaste qu'avant. J'ai eu le sentiment de jeter un coup d'œil au code que j'avais écrit il y a quelques mois à peine en disant "wtf? Qui a pensé que c'était une bonne idée?" :) - Le démarrage de ce projet à partir d'un petit noyau vers un projet pouvant être étendu facilement et pouvant également accueillir des non-développeurs souhaitant ajouter du contenu m'a obligé à réfléchir à une structure de niveau supérieur. Le couplage avec un programmeur plus expérimenté m'a montré qu'il me manque beaucoup d'opportunités. utiliser des abstractions. J'ai aussi des problèmes avec l'espace de noms.
SamYoungNY

43

Niveau d'entrée - doit leur donner des instructions explicites, vérifier tout ce qu'ils font, peu ou pas de responsabilité de la conception, aucune responsabilité d'analyse

Junior - instructions moins explicites, moins de vérification, quelques responsabilités mineures en matière de conception et d'analyse; aide les personnes de base à trouver le compilateur et à utiliser le référentiel

Senior - responsable majeur de la conception et de l'analyse, devrait corriger lui-même les erreurs de contrôle, peu ou pas de vérification, peu ou pas d'instructions; aide les subalternes à apprendre / améliorer leurs compétences en analyse et en conception


20
Bien, sauf que je ne sais pas si je suis complètement d'accord avec "pas de vérification / instructions" pour le niveau supérieur. À moins que vous ne travailliez sur ou avec une équipe, personne ne devrait être complètement une île.
Wonko the Sane

@WonkotheSane, nous en avons un qui fusionne les codes avec des erreurs sans codeReview ni demande d'extraction. Ne discute pas beaucoup de l'architecture des applications autrement que d'utiliser simplement un modèle d'observation partout. Prend toutes les décisions tout seul pour qu'il ne s'adapte à rien de nouveau . Tout cela parce qu'il est une île lui-même. Il n'est pas dedans. Il est l'île :(
Honey

16

Vraiment, je pense que cela dépend simplement du temps que vous avez passé au travail. Si vous avez 10 ans d'expérience, vous êtes un développeur expérimenté. Si vous êtes diplômé, vous êtes probablement débutant. J'ai vu beaucoup de développeurs «plus expérimentés» qui savaient à peine coder et ne savaient pas vraiment ce qu'ils faisaient, et beaucoup de développeurs junior qui étaient fantastiques.


7
Cela fait écho à mes expériences. "Senior" signifie le temps passé avec l'entreprise et généralement rien d'autre; la compétence ne compte pas dans un iota. J'ai travaillé avec de nombreux développeurs "seniors" (et des gestionnaires d'ailleurs) qui ne connaissaient rien au logiciel, à part le développement par essais et erreurs, mais qui travaillaient pour la société depuis plus de 5 ans, ou qui était le tout premier programmeur embauché lieu a été commencé, et donc a été promu en raison de la permanence.
Wayne Molina

8

Je pense que les machines à sous d'apprenti, de compagnon et de maître de la vieille école se prêtent bien à ces machines pour les débutants, les débutants (ou simplement pas de préfixe) et les seniors.

Une personne de niveau débutant se voit confier des tâches relativement simples qui n’ont pas de conséquences graves et leur travail est contrôlé par un junior ou un senior. Au fil du temps, ils assument davantage de responsabilités et se voient confier des tâches plus complexes, apprenant les ficelles du métier tout au long du processus.

En tant que junior (ou juste la suppression de "niveau d'entrée" / "junior" du titre / de la description), vous avez terminé votre apprentissage et avez couvert les principaux domaines de développement de votre entreprise, en vous plongeant dans chaque domaine familier avec chacun d'eux. Vous aidez maintenant à fournir des conseils et une contribution pour l'équivalent apprenti, mais votre propre travail est toujours examiné par le maître / senior, bien que peut-être pas autant que lorsque vous étiez junior.

Avec le temps et la réalisation de projets réussis, vous devenez éventuellement senior. À un niveau supérieur, vous avez maîtrisé tout ce qui est couvert dans votre domaine, couvrant tout le processus de développement et tous les outils et technologies impliqués. Vous êtes habilité à prendre des décisions techniques importantes et vous devez fournir un aperçu de la gestion dans le processus de développement logiciel.

Donc, étant donné ces directives, vous devriez pouvoir regarder une personne ou une position et déterminer laquelle des trois cases elles atterrissent.


6

Cela va se résumer aux attentes de la société en matière de programmation.

Si je suis la société qui embauche et que j'engage un programmeur Entry Level, je sais que cette personne ne sait presque rien et nous allons supposer qu'il / elle doit tout apprendre. Si j'embauche un cadre supérieur, en théorie, il sera autonome sur le plan technique.


4

Cela dépend strictement de l'entreprise. Mais les mots sont assez évidents: niveau d'entrée est une personne qui vient d'entrer sur le marché, junior est une personne qui est au-delà du niveau d'entrée et qui connaît bien les technologies de quelques langues. Enfin, les personnes plus âgées sont celles qui sont plus en charge du projet et occupent un poste plus élevé. Ils peuvent généralement déléguer autant qu'ils codent.


Je comprends cela, mais à quel moment êtes-vous "au-delà du niveau d'entrée" ou "au-delà de junior"? Si vous apprenez toujours, vous êtes chaque jour au-delà de ce que vous étiez la veille.
JD Isaacks

Le niveau d’entrée est facile, mais je cherche davantage d’exemples d’expérience / connaissances suggérant des années junior ou senior.
JD Isaacks

Comme je l'ai dit, cela dépend de la société, du contexte de la technologie / des langues en question et, plus spécifiquement, d'une question d'opinion à moins que vous ne parliez de titres de poste officiels. Je pense que je ne me considérerai jamais comme un expert dans aucune langue à moins d’avoir écrit moi-même cette fichue chose.
Chris

De plus, si vous êtes dans une entreprise, regardez jr, développeurs sr et comparez-vous / contrastez-vous avec eux. C'est un bon indicateur dans le contexte spécifique de cette société.
Chris

4

Comme la plupart l'ont dit, cela varie d'une entreprise à l'autre et d'un emploi à l'autre.

Par exemple, j'ai déjà travaillé dans une entreprise qui considérait toute personne qui y travaillait depuis plus de 5 ans comme un "ingénieur logiciel senior". À l'autre extrême, un autre endroit où j'ai travaillé avait des définitions très strictes (et des barèmes de rémunération associés).

Certains endroits peuvent considérer "niveau d'entrée" et "junior" comme signifiant la même chose.

Elle peut varier en fonction des années d’expérience, des connaissances générales, des connaissances spécifiques (connaître les caractéristiques d’une langue donnée), de l’expérience en matière de gestion et / ou de direction, de toutes leurs combinaisons et certainement de beaucoup plus.


3

Je vais y aller avec la réponse très simple ici: les développeurs seniors (en général) sont des gens qui peuvent voir la forêt pour les arbres. Ils réfléchissent bien au-delà du problème immédiat et comprennent quels changements architecturaux pourraient ou devraient avoir lieu à la suite de la résolution du problème auquel ils sont confrontés.

La plupart des sociétés de logiciel que j'ai vues ont des personnes de premier niveau qui codent au jour le jour, tandis que les développeurs expérimentés supervisent ce que font les nouveaux utilisateurs et s'attaquent aux problèmes vraiment horribles et épineux.

De toute évidence, ceci n’est que mon opinion et non une règle absolue. YMMV.


2

En termes simples et à partir d'observations personnelles trouvées sur des sites d'affichage d'emplois et uniquement en ce qui concerne les niveaux d'expérience.

Entrée = Votre nouveau probablement votre premier emploi.

Junior = Votre bon mais pas supposé être le meilleur, vous avez aussi généralement moins de 5 ans et plus de 2 ans d'expérience.

Senior = Vous êtes censé être le meilleur et avez plus de 5 ans d'expérience.


Vous avez manqué un intermédiaire.
Neolisk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.