Quelles sont les principales différences entre les ingénieurs logiciels et les programmeurs? [fermé]


103

Quelles sont les principales différences entre les ingénieurs logiciels et les programmeurs?


1
Joel a déjà posé cette question. Ce n'est pas une question facile à répondre et je ne sais pas s'il existe une réponse claire. Mais je sais que Joel a déjà posé cette question.
Denaem

Réponses:


80

Lors de l’embauche, nous recherchons une distinction entre une personne capable de nous aider à architecturer notre système, à définir des processus, à créer des spécifications techniques, à mettre en œuvre une refactorisation avancée, etc., et une personne qui va nous aider à effectuer des tâches de programmation à partir d’une liste de contrôle . Je crois que vous pourriez appeler l’ancien un ingénieur en logiciel et le second un programmeur .


10
Pouvez-vous préciser, engagez-vous les deux (pour des emplois différents) ou uniquement les ingénieurs en logiciel?
Jaap

2
Vous pouvez appeler l'ancien ingénieur en logiciel, mais pas moi. Comme Brendan le sait bien, c’est typiquement un travail d’architecte logiciel.
JᴀʏMᴇᴇ

131

C’est vraiment à l’entreprise, car je ne pense pas qu’il existe un cadre juridique permettant d’appliquer une dénomination ou une autre, ou du moins pas à ma connaissance et qui pourrait varier d’un pays à l’autre (par exemple, l’utilisation du terme "ingénieur" est en fait assez réglementé en France, mais il existe des variantes autorisées pour les cas "abusifs").

Cela étant dit, la tendance générale est la suivante:

  • Un poste de programmeur est généralement celui d’ un professionnel engagé pour produire le code d’un programme informatique . Cela impliquera que vous sachiez écrire du code , que vous puissiez comprendre un algorithme et suivre les spécifications . Cependant, cela s’arrête généralement là en termes de responsabilité.

  • Un poste de développeur est généralement considéré comme un super-type du poste de programmeur . Il englobe les mêmes responsabilités, ainsi que la capacité de concevoir et d'architecter un composant logiciel et de rédiger la documentation technique correspondante (y compris les spécifications). Vous êtes capable - au moins techniquement - de diriger les autres (donc les programmeurs), mais pas nécessairement une équipe (ça vient du fuzz ...)

  • Un poste d' ingénieur implique généralement que vous êtes un développeur possédant un type de diplôme spécifique , une certaine connaissance en ingénierie et capable de concevoir un système (par exemple, une combinaison de composants / modules logiciels qui forment ensemble une entité logicielle complète). . En gros, vous voyez une image plus large , vous êtes capable de la concevoir, de l'expliquer et de la séparer en modules plus petits .

Cependant, tout cela est discutable , et comme je l'ai dit, il n'y a aucune exigence légale à ma connaissance dans les pays américains et britanniques . Cela étant dit, en France, vous ne pouvez vous appeler un "ingénieur" que si vous venez d'une école d'ingénieur (reconnue par la Commission des titres d'ingénieurs ou quelque chose du genre). Vous ne pouvez pas dire que vous avez un "diplôme d'ingénieur", mais vous pouvez dire que vous avez un "diplôme d'ingénieur" si vous avez étudié une discipline qui relève du portefeuille du génie et des technologies.

Peut-être que certains pays ont une distinction similaire, je ne sais pas vraiment.

Revenons au titre d'ingénieur en logiciel ... Un jour, un de mes professeurs a dit à notre classe - et à juste titre - qu'il n'existe pas à ce jour de telle chose que l'on appelle le "génie logiciel" . Parce que l’ingénierie de quelque chose (qu’il s’agisse d’un bâtiment, d’un véhicule, d’un équipement informatique…) signifie que vous êtes capable d’envisager sa conception et toutes les phases de sa production, et de prévoir avec précision les ressources dont vous aurez besoin, et donc le coût de la production.

Cela est vrai de la plupart des "vraies" disciplines d'ingénierie. Il y a bien sûr des fluctuations (les prix des matériaux vont varier dans le temps, par exemple), mais il existe des modèles théoriques très finis (pour la conception et la planification) et des modèles empiriques (pour garder pratiquement les premiers dans des contraintes accessibles) qui vous permettent de prédire la date de fin d'un projet et son utilisation des ressources.

Le principal problème des logiciels est qu’ils ne sont pas encore disponibles. Nous voulons viser le génie logiciel, mais nous n'y sommes pas encore. Parce que nous avons un environnement très fluide et dynamique, des contraintes de projet très variables et un manque de maturité rétrospectif dans nos processus. Certes, nous pourrions dire que nous y arrivons mieux (très discutable avec les données matérielles, cependant), mais nous ne le faisons que depuis les années 60 (les projets antérieurs étaient en réalité plus proches des ordinateurs uniquement matériels, donc plus proches de la véritable ingénierie, paradoxalement. ). Alors que nous construisons des véhicules à moteur depuis plus d’un siècle, des véhicules en général depuis quelques millénaires et encore plus depuis des millénaires (et que nous en avons été très bons dans certaines parties du monde, nous avons '

Nous ne parvenons pas à prévoir systématiquement les délais avec précision , nous ne parvenons pas à prévoir systématiquement les coûts avec précision , nous ne parvenons pas à identifier et à atténuer systématiquement les risques inhérents et externes de manière efficace et déterministe . Le mieux que nous puissions faire est de produire des estimations suffisamment précises et de prendre en compte certains tampons, tout en essayant d'optimiser les processus afin de réduire les cycles et les frais généraux.

Mais voyez, c'est peut-être ce que l'ingénierie est. Et c'est ce que, quand on parle d'un "ingénieur logiciel", ils devraient penser et viser.

Cela semble donc difficilement interchangeable avec le simple acte de la programmation, ou l'acte plus avancé du développement d'applications.

Pourtant, tout est affaire de tendances. Dernièrement, il est assez courant d'avoir une équipe de développement horizontale où chaque membre de l'équipe est un développeur logiciel senior (oui, les capitales, car cela nous donne le sentiment d'être spécial, n'est-ce pas?), Sans distinction réelle d'âge (assez juste, dans mon cas). opinion) et pas tant de distinction entre compétences (uh-oh ...) et responsabilités (maintenant ça ne peut pas être bon, sauf pour le buzz des relations publiques).

C'est aussi parfois juste une force d'habitude et spécifique à la culture et au jargon de l'industrie. Plus de postes pour la production de logiciels embarqués utilisent des titres pour les ingénieurs en logiciel. Principalement parce que cela impliquerait probablement que vous devrez toujours traiter dans une certaine mesure le matériel informatique dans ce domaine, vous devez donc évidemment traiter d'autres aspects de la production et de l'ensemble du "système" que vous produisez. Pas seulement les morceaux qui deviennent fous à l'intérieur. D'autre part, vous ne voyez pas vraiment le terme ingénieur utilisé dans les postes de production de logiciels financiers. C’est soit parce qu’il s’agit d’une évolution mimétique de cette industrie par rapport à l’un de ses prédécesseurs (l’ingénierie intégrée, par exemple, trouve ses racines dans l’ingénierie automobile), soit parce qu’ils veulent simplement accorder plus ou moins de crédit à une position.

Et pour être sûr de perdre tout le monde dans le brouillard, vous trouverez ensuite d'autres titres mélangeant les deux (comme "Ingénieur en développement logiciel" ou "Ingénieur en logiciel en test"!), Puis d'autres soulignant des ponts encore plus fous avec d'autres domaines ( penser à «architecte logiciel» et à la façon dont «architecture logicielle» pourrait être un vol éhonté de vocabulaire). Et gardez-les à l’avenir: ingénieur de publication, responsable du développement du changement, ingénieur de compilation (celui-ci est également affiché ffaaarrrrrr). Et parfois simplement simplement "ingénieur".

J'espère que cela a aidé, même si ce n'est pas vraiment une réponse.

Oh, et cela signifie que votre nouvelle société essaie de vous attirer avec un nouveau titre, ou qu'elle se fiche complètement des titres, ou que vous allez vraiment occuper un poste de niveau supérieur. La seule façon de le savoir est de lire votre cahier des charges, de leur parler et éventuellement de tenter votre chance et de juger vous-même. J'espère que c'est la dernière option et que vous en êtes satisfait (et potentiellement plus rentable). ;)


12
Le livre "Le programmeur pragmatique" dit également que les logiciels ne sont pas comme de l'ingénierie. Bien que vous puissiez planifier une maison ou un gratte-ciel, une analogie avec le génie logiciel peut difficilement être utilisée. Ils déclarent: Le logiciel est plus comme le jardinage. Planifiez le jardin, plantez les plantes. Ensuite, voyez ce qui pousse, enlevez les mauvaises herbes et plantez de nouvelles plantes.
Falcon

6
"Une fois, mon professeur a dit à notre classe qu’il n’existait pas à ce jour ce que l’on appelle le" génie logiciel ". Parce que quelque chose d’ingénierie signifie que vous êtes capable d’envisager sa conception et toutes les phases de sa production, et de prédire avec précision les ressources dont vous aurez besoin ". C'était probablement faux au moment où il a été écrit. Comme l'architecture, nous ne pouvons pas prévoir les coûts sans connaître les exigences (combien coûte un gratte-ciel? Je ne vous dirai pas à quelle hauteur il doit être avant de commencer à construire ...). Mais nous pouvons prévoir les coûts par la suite, compte tenu de la maturité du groupe de développement de logiciels.
MSalters

1
@MSalters: Bien sûr, vous pouvez inverser cette tendance: comme architeture, nous ne pouvons pas prévoir les coûts sans exigences. Mais contrairement à l’architecture , même avec des exigences bien définies (bien que les nôtres soient souvent plus fluides car difficiles à prévoir ou que nous avons tendance à leur permettre de changer), nous ne pouvons en prédire le coût. Vous pouvez le faire en ingénierie normale avec un niveau de précision très précis ET nous sommes actuellement plus en mesure d'identifier les coûts pour des circonstances extraordinaires par rapport à SE. Nous ne faisons que des estimations approximatives. Nous nous débrouillons mieux pour les fabriquer, mais ce sont toujours des suppositions.
haylem

3
@haylem: C'est la norme dans le développement logiciel. Toutefois, si vous avez travaillé pour une entreprise CMM de niveau 4/5, vous remarquerez qu'elle peut prévoir les coûts et leur attache souvent un niveau de confiance de 95%. Ils comprennent assez bien leur base de logiciels et ont des exigences assez bonnes pour que les barrages routiers soient rares. Et le coût des barrages routiers est inférieur lorsque vous avez l'expérience nécessaire pour les résoudre.
MSalters

1
@pcurry: notez que je ne prétends pas que ce soit "ma taxonomie". C'est ce que les recruteurs et les employés des entreprises considèrent généralement comme celui-ci, et c'est souvent ce qui est vu dans les cours d'informatique. Ils ont tendance à se tirer des coups les uns aux autres. Donc, je suppose que j'ai énuméré la vue qui est adoptée par les (soi-disant) ingénieurs logiciels plus que par les programmeurs (auto-décrits), évidemment. Peu importe comment vous appelez vous-même, c'est plus ce qui compte pour vous. Et ce n'est important que si vous vous souciez de ce genre de choses. Honnêtement, personnellement, je ne me soucie pas d'être l'un ou l'autre, ne me change pas.
haylem

81

Les ingénieurs en logiciel sont des personnes qui travaillent dans des entreprises qui appellent ceux qui écrivent des logiciels pour eux des «ingénieurs en logiciel».

Les programmeurs sont des personnes travaillant dans des entreprises appelant ceux qui leur écrivent des logiciels, des "programmeurs".

Il existe également des développeurs ou des développeurs de logiciels . Ce sont des personnes qui travaillent dans des entreprises qui appellent les personnes qui leur écrivent des logiciels «développeurs» ou «développeurs de logiciels», respectivement.


26
Je devrais noter que cette réponse n'était pas vraiment faite pour être drôle.
Jer

15

Donc, il y a le "Software Engineer", le "Programmeur", et aussi le "Développeur", "Codeur" et vous ne pouvez jamais oublier le "SOA expert"

Ce sont tous des termes de marketing pour les personnes qui ne peuvent pas dire quelque chose de significatif dans leur CV, telles que leur rôle réel (pas seulement le titre du poste) dans les postes précédents.

Sur les offres d'emploi, la différence réside dans la personne des ressources humaines.

En bout de ligne: chaque personne a sa propre opinion sur "ce qui fait un bon employé qui travaille avec du code", et certains aiment associer telle ou telle compétence à tel ou tel titre.

Qu'as tu besoin de faire? Les offres d'emploi doivent décrire les compétences requises et les CV doivent expliquer les détails de l'expérience du candidat.


10

Pas de différences. Ce sont les mêmes choses. Toutefois, les entreprises peuvent avoir des descriptions de travail formelles utilisant les termes, ce qui peut ensuite avoir une signification spécifique à l’entreprise.


8

La programmation concerne le code. L'ingénierie logicielle concerne le produit final.


3

Cela dépend vraiment de la manière dont l'entreprise définit les positions. En tant qu’ingénieur logiciel, il se peut que vous disposiez de plus de possibilités de décision en matière de conception, alors qu’en tant que développeur, ils vous donneraient des diagrammes UML et vous écririez le programme.

Mais, il n’existe pas de définition précise de la situation, de sorte que les gens sachent ce que vous faites ou quelle est votre expérience en fonction du titre.

Quand j'étais architecte / développeur, mon titre était informaticien, mais je voulais simplement dire aux gens que j'étais programmeur, car les deux premiers ne sont pas facilement définis, mais la plupart des gens savent ce que fait un programmeur.

Si un titre est important pour vous, acceptez le nouveau, car Ingénieur sonne plus haut qu'un développeur.


3

Je ne pense pas qu'il y ait de "différences officielles", pour mon expérience cela pourrait signifier:

  • Certaines entreprises utilisent des ingénieurs en logiciel et des développeurs de logiciels pour faire référence à la même chose. Ils utilisent simplement leur terme préféré.
  • D'autres utilisent les deux termes pour différents postes internes, mais les rôles varient d'une entreprise à l'autre! Dans certains cas, une simple différence sur la fonction peut être (un ingénieur logiciel travaillera sur la maintenance et l’amélioration des systèmes tandis qu'un développeur travaillera sur le produit de la société), ou pourrait être hiérarchique (l’ingénieur est au-dessus du développeur), ou même l'ingénieur est vraiment dépendant de Q & A!

Aussi, sont aussi des termes de mode qui changent ... Le terme était "programmeur", puis "ingénieur logiciel" et apparaît maintenant comme "développeur" ...

Il est préférable de lire la description du poste ou à quelqu'un de l'entreprise spécifique


3

Dans certaines juridictions, "ingénieur" implique l'obligation d'être un ingénieur professionnel, c'est-à-dire d'avoir un ingénieur en ingénierie. désigation parmi ses références. Cependant, dans d'autres domaines, il n'y a peut-être pas une telle différence, car j'étais un "ingénieur concepteur de logiciels" travaillant dans l'État de Washington il y a quelques années.


2

Les ingénieurs en logiciel ont tendance à travailler sur des systèmes très volumineux, ce qui prend plusieurs années, par exemple 5 à 16 ans. Les programmeurs ont tendance à avoir ce stéréotype de simplement coder et rien d'autre. Mais cela dépend vraiment de l'organisation dans laquelle vous travaillez et de la manière dont les ressources humaines commercialisent le rôle, comme expliqué ci-dessus. Ils sont essentiellement la même chose. Ne vous attachez pas trop à un titre, car il en va de même.

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.