Developpez.com

Plus de 2 000 forums
et jusqu'à 5 000 nouveaux messages par jour

Les étudiants sont-ils assez sensibilisés aux métiers du développement ?
A l'école, la maintenance ne serait pas assez abordée

Le , par mattj, Membre habitué
Il s'agit en fait d'un débât en deux parties.

La première peut se résumer à cette question sur programmers.stackexchange.com. Le développeur qui pose la question semble surpris de constater que l'essentiel de son métier n'est pas le développement de nouveaux logiciels mais plutôt la maintenance de logiciels existants. Il évalue même le rapport entre les deux à 90%/10%.
La première question est donc : pensez-vous que l'essentiel du métier de développeur consiste à maintenir des logiciels existants ?
Personnellement je pense que, sans atteindre une proportion de 90/10, la maintenance constitue l'essentiel du métier: on doit modifier des logiciels existants et concevoir de nouveaux logiciels en pensant à leur maintenabilité.

La deuxième - la question principale - est donc la suivante : Pensez-vous que les universités, les écoles françaises, préparent correctement les étudiants aux métiers du développement logiciel ? J'inclus dans cette question à la fois le métier de développeur (analyste/développeur...) et celui d'ingénieur d'étude et de développement, dont les responsabilités en matière d'architecture logicielle sont supérieures.

Je ne dirais pas où j'ai fait mes études car je sais que les programmes ont pas mal changé là-bas depuis et je ne veux pas faire de mauvaise pub, mais pour ma part je n'ai pas été formé correctement à la réalisation de logiciels dans un milieu professionnel. En particulier je n'ai reçu aucune formation en ce qui concerne la maintenabilité. Jamais je n'ai appris à concevoir une application avec pour objectif de la rendre maintenable dans le cadre de mes études. Je trouve cela d'autant plus surprenant que la littérature sur le sujet existe depuis les années 90', je pense notamment à Robert C. Martin. En fait, pour caricaturer, j'ai plus l'impression que l'on forme plus les étudiants à créer des applications "de loisir" que des applications professionnelles.

Une petite idée pour conclure: en stage on demande généralement aux étudiants de réaliser un projet complet. Pendant leurs études ils doivent réaliser un grand nombre de projets du début à la fin. Devrait-on avoir un cours de maintenance où l'on donnerait comme projet annuel un sujet du genre "Rajouter telle ou telle fonctionnalité" à un projet mal "designé" ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de arkhamon arkhamon - Membre éprouvé https://www.developpez.com
le 02/05/2012 à 13:02
Citation Envoyé par souviron34  Voir le message
oui.. J'ai quelques souvenirs d'horreurs absolues.. En particulier les générateurs de code d'IHM... : chaque bouton a par exemple sa callback, qui porte un nom du style Frame1.button1.onClick ... Super pour s'y retrouver

J'ai le souvenir d'avoir écrit il y a très longtemps un générateur de code en Turbo Pascal pour du code en Turbo Pascal.
Ca marchait. Mais il faut bien admettre certains points quant à l'utilisation d'un générateur de code :
  • Tant qu'on reste dans le "classique", le code généré est correct, avec cette petite restriction sur le nom des variables : on peut rarement faire preuve de créativité comme le fait un développeur
  • Dès qu'on s'aventure dans des contrées inexplorées, ben justement ça devient l'aventure...
  • quand on veut descendre dans du code pondu par un générateur de code, on a tout intérêt à s'adresser au concepteur du générateur, on gagnera beaucoup de temps et on risquera moins de migraines...

Je n'ai jamais pondu de générateur de code en environnement Windows, je n'en ai jamais eu le besoin. Mais je serais tenté de dire comme ça à première vue, que forcément le code généré risque d'être encore moins lisible. Sans aller jusqu'au "#define toto1(a,b) toto(ab,-2.0)" dans des .h (t'as qu'à pas faire de C t'auras pas de .H pas taper), je pense effectivement que le code généré par un générateur étant censé être exempt de tout bug (ça serait la moindre des choses...), on n'est pas trop censé descendre dedans. Et s'il faut que l'utilisateur du générateur se tape les noms de variables, ca rend pas l'opération moins intéressante ?

Dernier petit point : j'ai le souvenir d'utiliser les générateurs de code pour pondre des IHM. Mais maintenant qu'on a des outils de développement graphiques (sauf Eclipse pas taper), je me demande quelle peut être l'utilité d'un générateur d'IHM... Techniquement je vois l'avantage (l'informaticien est fainéant, il préfère bosser 10 jours sur un générateur de code plutôt que de retaper le même code pendant une journée), mais économiquement je vois moins... Peut être le fait de n'avoir qu'un seul code à débugger... ?
Avatar de souviron34 souviron34 - Expert éminent sénior https://www.developpez.com
le 02/05/2012 à 13:20
Citation Envoyé par arkhamon  Voir le message
Mais maintenant qu'on a des outils de développement graphiques ... je me demande quelle peut être l'utilité d'un générateur d'IHM...



un outil de dev graphique n'est pas un générateur de code ?????

Quand tu drag-and-drop un bouton sur une fenêtre, ça génère pas du code ?? quand tu fais de l'auto-complétion, ça génére pas du code ?? ou du refactoring ? ou de la vérification qui inclue les classes manquantes ??
Avatar de arkhamon arkhamon - Membre éprouvé https://www.developpez.com
le 02/05/2012 à 13:33
Citation Envoyé par souviron34  Voir le message


un outil de dev graphique n'est pas un générateur de code ?????

Quand tu drag-and-drop un bouton sur une fenêtre, ça génère pas du code ??

Si bien sur... Je me suis mal exprimé...
Je voulais dire que à l'époque, quand on n'avait pas d'EDI graphique, on devait pondre soi même le code pour générer les IHM. Vous savez un peu comme en java au 21ème siècle ( je vais encore me faire des potes moi...).
Du coup, on faisait des générateurs de code pour ne pas avoir à se retaper les multiples
Code : Sélectionner tout
create boutonmachin(create titre(create string("titre")) , create position(create point(s = 2 , y = 10)))
(sauf en java encore), puis les 50 exécutions/correction du fameux X et Y ca c'est trop collé ca fait pas beau...
Maintenant, les EDI étant tous graphiques (ou presque, sauf Java bon j'arrête) on peut se concentrer sur la logique du programme. Et c'est là que j'ai plus de mal à voir l'utilité d'un générateur de code.
Avatar de el_slapper el_slapper - Expert éminent sénior https://www.developpez.com
le 02/05/2012 à 14:43
Citation Envoyé par goudax, maître testeur  Voir le message
(.../...) "Tester une fonctionnalité ce n'est pas essayer de la faire fonctionner, mais bien essayer de la planter. Si on n'y arrive pas, c'est qu'elle est bien écrite". (.../...)

+1, comme les autres(non seulement sur le fond, mais aussi sur la formulation, très élégante). Ca ne se limite pas aux TU : dans les temps anciens, j'ai été homologateur, et je validais aussi bien les cas passants que non passants(avec le classiquissime montant à 3 décimales, que le programme doit savoir refuser avec classe).

Mais ça vaut aussi pour les TU : si le programmeur n'a pas testé les cas non passants, alors il n'a pas vérifié la solidité de son unité. Or, si l'unité n'est pas solide, l'ensemble ne risque pas de l'être.....

Je suis en train de me mettre à Java, à la maison(exigence de mon commercial). Mon JUnit de test (bel outil, d'ailleurs, je veux le même sous MVS) est bourré de "assertFalse". ça n'est pas un hasard. Le testeur qui sommeille en moi fait flipper le programmeur, et le programmeur sait qu'il faut surblinder pour échapper au courroux du testeur. Parceque le courroux de l'utilisateur, lui, est infini.
Avatar de mattj mattj - Membre habitué https://www.developpez.com
le 07/05/2012 à 2:22
Je réagi sur le thème de l'artisanat:
Citation Envoyé par mattj  Voir le message
Il ne s'agit donc pas de former des généralistes qui connaissent un peu de tout, ni des "bons en tout" utopiques, ni des super spécialistes d'une technologie particulière; mais des spécialistes du développement logiciel, des personnes qui savent s'adapter à n'importe quelle technologie et qui développent "bien".

Citation Envoyé par souviron34  Voir le message
Je ne suis pas tout à fait d'accord

Si je prend ta dernière partie de phrase, avec laquelle je suis 1000% d'accord, "des personnes qui savent s'adapter à n'importe quelle technologie et qui développent "bien"", ce ne sont pas des spécialistes du développement logiciel, ce sont des "têtes bien faites", des gens armés d'esprit critique, de logique, et de culture générale suffisante pour prendre du recul tant par rapport à un problème qu'à une éventuelle solution ou une technologie...

Citation Envoyé par souviron34  Voir le message
Une des phrases avec lesquelles je suis le plus en accord, et que j'essaye ici-même d'imprimer le plus posible dans les têtes est :

instill a sense of craftsmanship and quality in the production of software from the outset

Cela est cependant délicat, avec le nombre d'étudiants dû aux formations tous azimuths... et les "méthodolgies" usuelles, se basant sur la non-responsabilité et la remplaçabilité...

Tout le monde ne peut pas être artisan...

Mais beaucoup peuvent quand même..

Je ne crois pas que l'artisanat dont nous parlons, craftsmanship, désige "des "têtes bien faites", des gens armés d'esprit critique, de logique, et de culture générale suffisante pour prendre du recul tant par rapport à un problème qu'à une éventuelle solution ou une technologie".

Lorsque je parle de personnes qui développent bien, je ne désigne pas ceux qui, grâce à leur facultés intellectuelles, trouveront le moyen de résoudre un problème donné. Je parle de ceux qui, parmi les précédents, parviendront à exprimer leur solution de manière claire, en utilisant les bons "outils", en respectant des principes établis par des générations d'autres artisans avant eux; bref ceux qui produiront le code le plus maintenable.

Le développement en tant qu'artisanat n'est donc pas basé que sur des notions subjective comme la culture générale ou l'esprit critique, il est basé sur des techniques, sur des pratiques, sur des outils qu'il faut connaître et utiliser à bon escient.

L'artisan développeur est donc à la fois un créateur, car il doit inventer une solution à un problème donné, et un ouvrier, car il sait utiliser les bons outils aux bons moments en respectant les canons de sa profession. C'est seulement à cette condition qu'un autre artisan développeur pourra sans difficulté comprendre et reprendre le code pour le faire évoluer.

Cet artisan développeur, c'est le spécialiste du développement dont je parle.
Avatar de goudax goudax - Membre à l'essai https://www.developpez.com
le 07/05/2012 à 10:17
Concernant "l'artisanat" soulevé par souviron34 et mattj, je pense en fait qu'un bon developpeur ne doit pas se contenter de pisser les mêmes lignes de code dans chaque cas similaire, mais doit se poser les bonnes questions au bon moment et prendre une decision qui aura été réfléchie.
Ca m'est arrivé au début de ma "carrière" de refaire plusieurs fois un developpement car au moment de l'ecriture, tu te dis: "et si je faisais comme ca ?" et tu poses les pour et les contre de cette nouvelle solution et si tu sens que c'est mieux, tu y vas.
Et ca, evidemment il faut une tête bien faite, mais ca ne suffit pas toujours. Mon prédécesseur avait une tête bien faite, il a eu de bonnes idées en matière de code (parfois) mais la plupart du temps, on ressentait très fort le fait qu'il n'ait pas eu de formation en développement, il était autodidacte.
Je ne dis pas que les autodidactes sont des clenches (pas du tout), je dis juste qu'une tête bien faite n'est pas incompatible avec une bonne formation en logique de programmation.
Pour conclure mon intervention, je dirais que pour faire un bon developpeur, il faut:
- un cerveau en état de marche
- une solide formation en technique de programmation (de bonnes bases, il n'y a que ca de vrai)
- un complément de formation sur la technologie que vous utilisez, parce qu'il n'ya rien de pire qu'un code pour une technologie écrit dans le "style" d'une autre.
Avatar de souviron34 souviron34 - Expert éminent sénior https://www.developpez.com
le 07/05/2012 à 12:37
Citation Envoyé par mattj  Voir le message
Le développement en tant qu'artisanat n'est donc pas basé que sur des notions subjective comme la culture générale ou l'esprit critique, il est basé sur des techniques, sur des pratiques, sur des outils qu'il faut connaître et utiliser à bon escient.

L'artisan développeur est donc à la fois un créateur, car il doit inventer une solution à un problème donné, et un ouvrier, car il sait utiliser les bons outils aux bons moments en respectant les canons de sa profession. C'est seulement à cette condition qu'un autre artisan développeur pourra sans difficulté comprendre et reprendre le code pour le faire évoluer.

Cet artisan développeur, c'est le spécialiste du développement dont je parle.

Je suis d'accord avec toi...

Cependant, que ce soit une partie ou un tout, la notion même d'artisanat est orthogonale au terme "industrie logicielle" ou à ce qui propagé / enseigné, que ce soit dans les formations ou dans les métholodogies ou structures de projet ou d'entreprises...

Les Tour de France des professions hautement artisanales comme ébéniste, tailleur de pierre, verrier, patissier, et autres, sont justement la marque de l'établissement de critères personnels, et non globaux...

C'est bien là à mon avis que la notion générale de formation en informatique pêche.. On forme des menuisiers, pas des ébénistes.. Or il y a une différence fondamentale entre les 2..
Avatar de el_slapper el_slapper - Expert éminent sénior https://www.developpez.com
le 07/05/2012 à 13:47
un lien un peu vieux que je viens de trouver sur le sujet (lire le deuxième sujet, "a mangement story "). Avec un résumé qui devrait faire plaisir à Souviron34 :

Process is not a substitute for talent, common sense, hard work, and good management.

. Le processus ne permet pas de se passer de talent, de bon sens, de dur labeur, et de bon management.
Avatar de Pill_S Pill_S - Membre expert https://www.developpez.com
le 16/05/2012 à 18:14
Citation Envoyé par arkhamon  Voir le message
D'ailleurs, en parlant de ça, j'ai vu je sais plus trop où qu'un langage introduisait une "troisième" état dans le booléen : incertain ou un truc de ce genre. J'avais fumé ou d'autres ont vu ça aussi ? Je me demande si c'était pas dans la prochaine version de Java...

bah nan dans toutes les version de Java, les Boolean (java.lang.Boolean et non pas boolean) peuvent être null lorsqu'ils ne sont pas initialisés

Avatar de EtherOS EtherOS - Membre actif https://www.developpez.com
le 04/09/2012 à 0:40
Dans mon Pays, l'Ecole National Supérieure Polytechnique du Cameroun offre une bonne formation (plus théorique et pratique malgré les manquants en termes de technologies de pointes )dans les métiers du développement logiciel sauf qu'on se rend compte que dans les métiers du développement il faut un peu plus que la formation , il faut du savoir-faire d'abord personnel et de l'ingéniosité,l'innovation qui est fortement demandé et important dans la vie des développeurs.Certains étudiants arrivent déjà avec des talents et des compétences pratiques personnelles qui ont besoin d'être améliorer et mieux canaliser dans son aspiration.
Avatar de Rominou22 Rominou22 - Candidat au Club https://www.developpez.com
le 01/01/2017 à 20:08
Que puis_je dire à part que l'artisanat n'est pas pour tout le monde bien que beaucoup puissent en faire
Offres d'emploi IT
Architecte sécurité des systèmes d'information embarqués H/F
Safran - Ile de France - 100 rue de Paris 91300 MASSY
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)
Architecte et intégrateur scade/simulink H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil