Quel est le mythe le plus absurde sur les problèmes de programmation?


101

En d'autres termes ... Quel est le malentendu le plus répandu et le plus frustrant à propos de la programmation que vous avez rencontré?

Quels mythes / idées fausses répandus et de longue date trouvez-vous difficile à dissiper / corriger pour les programmeurs ?

S'il vous plaît, expliquez pourquoi c'est un mythe.


24
J'aimerais voir Mythbusters s'attaquer à certains d'entre eux.
Spong

8
Quelqu'un veut-il une chaîne YouTube Mythbuggers? :-)
Tamara Wijsman le

1
Ooooh, MythBusters et conditions de course! Meesa aime!

@TomWij serait bien d'avoir un site web avec un tel nom!
Junior M

Réponses:


272

Parce que vous êtes un programmeur, vous savez comment réparer la machine infectée par le virus de [personne].


34
Clause d'analogie voiture / sortie: "Je suis un pilote de course, pas un mécanicien."
Peter Boughton

15
Cette bande dessinée est pertinente: theoatmeal.com/comics/computers
lunixbochs le


21
@ Tim, si elle sait cuisiner, commence à la proposer à l'organisation de fêtes pour tes amis
Steven A. Lowe Le

19
Ce n'est pas que je ne sache pas comment ... C'est que je ne veux pas perdre des heures à réparer votre machine que vous ferez de toute façon dans deux semaines.
ChaosPandion

267

Un problème commun des ressources humaines qui me rend fou quand je cherche un emploi: l'hypothèse implicite selon laquelle toutes les compétences en matière de codage sont spécifiques à une langue, selon laquelle aucune expertise en génie logiciel ne transcende les ensembles de commandes. Ces dix années d'expérience en Java et cinq autres en Perl signifient que vous seriez complètement inutile dans un projet utilisant, par exemple, le C #.

"Oui, il y a une courbe d'apprentissage. Mais j'ai fait des transitions plus difficiles que ça. Je vais vous faire une affaire, payez-moi 80% pour le premier mois et à la fin de cette période si je ne suis pas ... oh attends, nous n’avons pas réellement cette conversation, car ton singe HR a tout simplement supprimé ma candidature. "


91
+ INF pour singe HR.
Rusty

67
Un responsable des ressources humaines m'a refusé un poste parce que je savais utiliser C #, mais il cherchait quelqu'un qui pourrait coder dans dotNet.
burnt_hand

11
@burnt_hand: Oui, je connais dotNet. Je connais aussi Excel et Internet Explorer. Je peux m'engager maintenant?
Alan Plum le

Bien que je convienne qu'il existe d'énormes chevauchements entre la syntaxe, la structure, les SDLC, etc., entre Java et C #, s'ils vous soumettent un test C # assez astucieux lors de votre entretien, comment allez-vous vous débrouiller?
JBRWilkinson

2
@ Kyralessa - Je pense que j'en connais suffisamment sur la théorie informatique et les fonctions informatiques sous-jacentes pour ne pas commettre d'erreur de base dans aucun langage de programmation. Je peux lire la documentation. Cependant, une langue spécifique embauchant avec des compétences / volonté / tâches d'ingénierie limitées commet des erreurs de base dans la structure, la conception, l'exactitude, l'évolutivité, la fiabilité et la maintenabilité du programme, ce qui peut éventuellement coûter cher. Si vous ne perdez pas tous vos clients à cause de la faible qualité du logiciel entre-temps (en supposant que votre projet aboutisse réellement).
Flamingpenguin

261

Si vous ne tapez pas, vous ne travaillez pas.

Je crois que les regards vides de zombies et les promenades de café sont essentiels aux programmeurs qui organisent des choses dans leur tête.


9
Page vers le haut, page vers le bas ... page vers le haut, page vers le bas ...
Adolf ail

139
Je ne suis pas payé pour dactylographier, je suis payé pour penser. Je fournis la dactylographie en prime.
Kevin Laity


11
C’est pourquoi je n’apprécie guère les marchés de la freelance en ligne proposant l’enregistrement de "temps de travail" avec un screengrabber et une webcam. WTF? Si vous pensez que ma citation est bonne, pourquoi vous souciez-vous de ce que je fais exactement dans le temps que je facture?
Alan Plum le

10
"Si j'avais plus de temps pour coder, j'écrirais moins de lignes." - Décollez sur Abe Lincoln citation.
JeffO

158

que vous pouvez accélérer un projet en retard, simplement en y attirant plus de monde.


28
Ah, du mois de l'homme mythique. en.wikipedia.org/wiki/The_Mythical_Man-Month
éponge du

2
En fait, tu peux. -1 (ouais, voici un porteur de mythes!)
P Shved le

63
Nous utilisons un dicton coloré: "On ne peut pas mettre 9 femmes dans une pièce et faire un bébé en un mois".
Walter

10
La semaine dernière, nous avons ajouté 4 personnes sans expérience en projet pour «aider» à respecter un calendrier irréaliste. Le rapport de cette semaine sur le projet a donné lieu à des listes de direction: "Retard dans le planning. Cause: Efficacité réduite en raison de la courbe d'apprentissage des nouveaux membres de l'équipe" et "Plan de reprise: Continuer à ajouter des personnes lorsque des opportunités se présentent." Incroyable.
AShelly

7
@Walter, mais vous pouvez avoir 9 bébés en 9 mois et une petite équipe de baseball en 7 ans.
Huperniketes

132

Ce logiciel d'écriture est facile.

Sinon, comment expliquez-vous tous ces projets qui durent dans le temps et dépassent votre budget et les gens (hommes politiques, médias, etc.) sont toujours surpris, et les clients se plaignent lorsque vous leur dites que leur "petit site Web" (ou autre) prendra réellement 6 mois pour se développer et coûter plusieurs milliers de dollars (livres, euros, [insérer la devise de choix])

Avec des exigences floues et en constante évolution, je pense parfois qu'il est étonnant qu'un logiciel soit jamais terminé!

Je sais que c'est un peu plus compliqué que ça;)


11
Et c’est à ce moment-là qu’ils tentent d’amener le développement à des solutions off-shore moins chères. Ce n'est que beaucoup plus tard que cela s'est avéré encore plus coûteux. Et moins de ce dont ils avaient vraiment besoin, en raison de la séparation physique et des défis de communication entre l'équipe de développement et le client.
7wp

1
Ce n'est pas seulement un problème parmi les gestionnaires, mais aussi les programmeurs eux-mêmes. Le vrai problème, c’est que le temps qui n’est pas consacré activement à l’écriture de code est souvent oublié (probablement en raison du LOC généralisé = mythe de la quantification de la productivité).
Alan Plum le

3
Ce n'est pas que les exigences ont changé, ce n'est simplement pas ce qu'ils pensaient vouloir.
JeffO

1
Quelqu'un a rejeté la programmation comme étant "juste un groupe de déclarations" si ". OK, peut-être que c'est le cas ... dans ce cas, la poésie est "juste un tas de mots" ... la production de films est "juste un tas de scènes", etc.
JoelFan

2
J'ai travaillé pour le type de gestionnaire qui pensait que la partie programmation était la partie la plus facile du travail. Et non, il n'avait aucune expérience en programmation.
Capitaine Sensible

114

La complexité de l'application est directement proportionnelle à la complexité de l'interface utilisateur. Selon ce raisonnement, vous devriez pouvoir créer Google ou Twitter au cours d’un week-end.


2
C’est vrai, je pourrais créer Twitter et Google en un seul week-end. Ce n'est pas leur logiciel qui est complexe; pour Google, c’est leur algorithme de recherche (qui est plus comparable à une bibliothèque de code, ou à un pilote de base de données), et Twitter (jusqu’à 1,5 ans) était extrêmement simple, avec seulement l’évolutivité et les problèmes de base de données complexes. Maintenant qu'elle est plus complexe (nécessitant plus d'employés), elle dispose également d'une interface utilisateur beaucoup plus complexe et de nombreuses autres.
Orokusaki

3
Je pense l'avoir lue sur le blog de Joel Spolsky, mais l'article ne mentionnait que la progression de l'interface graphique par rapport à l'avancement du back-end. De cette façon, vous pouvez donner une estimation réaliste des progrès aux types aux cheveux pointus qui sont trop bêtes pour comprendre que la plupart des programmes se composent de beaucoup plus que de la poudre aux yeux.
Evan Plaice

3
1+ Il fut un temps où j'ai présenté à mon ancien patron un projet lié à SharePoint (un addon multilingue), après avoir passé des heures à travailler sur le code complexe complexe. Le résultat final était que peu d'interface utilisateur avait été utilisée, ce qui a amené mon patron à croire que peu de choses avaient été faites sur le projet. Cela m'a énervé. Ce n’est pas lui qui a passé des heures au clavier à essayer de contourner les bizarreries de SharePoint, ainsi que la logique de remplacement du texte.
Jason Evans

1
Ne vous détestez pas quand une requête énorme, presque impossible, est formulée comme "pouvez-vous ajouter un bouton à faire ..."
JoelFan 13/12/2010

Je me demande ce que j'ai fait ces dernières années. Tous les projets sur lesquels j'ai travaillé à temps plein auraient dû être terminés en un rien de temps, car ils n'avaient aucune interface utilisateur. :-)
Bart van Ingen Schenau

95

Tous les programmeurs sont bons en maths. :-)


Commentaires: les commentaires servent à demander des éclaircissements et non à prolonger la discussion. Si vous avez une solution, laissez une réponse. Si votre solution est déjà publiée, veuillez la revérifier. Si vous souhaitez discuter de cette question avec d'autres personnes, utilisez le chat . Voir la FAQ pour plus d'informations.

Je pense que les capacités en mathématiques sont en quelque sorte liées aux compétences en programmation.
Diego

@ Digo: Bien que cela ne signifie pas nécessairement que tous les programmeurs sont néanmoins bons en maths.
Omega

95

Tout adolescent qui manipule des ordinateurs a des compétences équivalentes (ou supérieures) à celles d'un programmeur expérimenté.

Mon neveu de 14 ans est doué en informatique et je lui paie 10 $ l'heure pour tondre ma pelouse. Pourquoi devrais-je vous payer six chiffres pour écrire le prochain FaceBook?


5
Ils sont probablement dans leur propre environnement, c'est-à-dire qu'ils travaillent par leurs propres moyens. Mettez-les dans une équipe où ils doivent communiquer et c'est là qu'ils souffrent.
Adolf ail

36
La contre-question pourrait être: "Que lui paieriez-vous pour construire votre maison?"

7
Un enfant sans qualifications mais qui écrit du code soigné peut battre M. Spaghetti n’importe quel jour.
Zaz

13
J'en veux à Hollywood
MAK

6
Quand j'ai commencé à travailler, je m'attendais à ce que ce que je m'étais enseigné et que j'avais appris à l'université ne soit qu'un début beaucoup d'eux. L'expérience m'a appris le contraire. C'est absolument important, mais sans compétence ni passion, l'expérience est une perte de temps.
Peter Boughton le

69

Ce temps réel signifie rapide.

Indiquant "Les paquets doivent être traités en temps réel." est nul et le jumeau maléfique ... répondant "à quelle vitesse X doit-il arriver?" avec "temps réel" est peut-être moins que sans valeur ... à la limite stupide plutôt qu'ignorant.

En temps réel , cela signifie que, tout simplement, la fonction Y prendra toujours X fois et que tout écart indique une erreur grave. La durée de X ne définit pas le "temps réel", cela peut être six microsecondes ou six jours. Le fait que vous puissiez déterminer que la fonction Y prendra X fois définit le "temps réel". Les systèmes en temps réel sont déterministes selon cette définition.

Alors arrête ça ..


temps réel = proche heure
brian chandley le

4
J'ai toujours pensé en temps réel que tout ce qui se passait se passait comme vous le souhaitiez, et non une référence au temps passé.
burnt_hand

14
Ce n'est probablement que l'un des cas où un concept mal nommé contribue à la confusion.
JohnFx

2
@JohnFx Bien mis. Les concepts ont besoin de contexte.
Rusty

2
@ Richard: En effet, iTunes prend toujours quelques minutes avant de jouer quoi que ce soit. Oh, ce n'est pas ce que tu voulais dire?
configurateur

69

Pourquoi n'écrivez-vous pas simplement la première fois correctement, plutôt que de passer autant de temps à saisir du code buggy puis à le lire plus tard pour essayer de trouver les bogues?

:-) :-) :-) :-)


34
Franchement, c'est une bonne question. Le moment le plus facile pour rendre le code correct est celui où il est écrit pour la première fois.
DJClayworth

10
Nous avons un paramètre dans la configuration de l'application: <add Key = "Bugs" Value = "true" />
burnt_hand le

1
@DJClayworth - ça ne marche pas toujours. Dans certains cas, le problème est si important, si mal défini ou tout simplement si difficile qu’il est trop difficile de s’attendre à ce qu’il en soit de même du «vrai» la première fois. Dans un tel cas, il est préférable d’écrire une "première pièce" qui ne soit pas totalement fausse, au lieu de passer des jours / semaines / mois à concevoir et à redessiner sans cesse pour tenter de bien faire les choses du premier coup.
Stephen C

Cela pourrait être la version laïque de "Pourquoi ne faites-vous pas le TDD?" Ce qui, pour être juste, est une très bonne question, si elle est trop simple pour un développement dans le monde réel.
Dan Ray

1
@Stephen C: oui, mais il y a une différence entre obtenir le plus souvent le droit (plutôt que parfaitement le droit) et ne faire pratiquement que tout ce qui reste à gauche et à droite pour que cela fonctionne. Je sais que ce n'est pas ce que vous avez dit mais je pense toujours que cela doit être dit.
n1ckp

65

Si vous n'êtes pas allé à l'université, vous n'êtes pas apte au travail


27
Aussi: un programmeur avec un diplôme vaut mieux qu'un programmeur sans et devrait être payé en conséquence. Il en va probablement de même avec l’âgisme et le sexisme. Ce genre de bêtises me met en colère - si vous ne savez pas écrire un bon code, je me fiche de savoir où vous êtes allé et ce que vous avez fait. Ceci peut être un autre cas de culture de programmeur / nerd (compétence == autorité) en conflit avec la culture d’entreprise (rang = autorité).
Alan Plum le

1
Et pourtant, les professeurs d'Université semblent également penser qu'ils peuvent généraliser le comportement des programmeurs et des projets en observant le fonctionnement des étudiants lorsqu'ils travaillent en équipe. Les communications de l'ACM sont bonnes pour 4 à 6 articles de ce type par an.
MIA

1
@Billy Que diriez-vous ici, où un diplôme d'études collégiales signifie un valet, mais un diplôme universitaire vous accordera tout? Les deux vont à l'école, les deux sont sans doute meilleurs que les autres, mais il y a une différence sociologique
Tarka

4
@Billy: au Canada, l'université vous délivre un diplôme et les collèges vous délivrent des diplômes. Les collèges ressemblent davantage à des "écoles où vous apprenez des choses pratiques". Pensez au collège communautaire américain par rapport au collège / université habituel. Ici, ils ont généralement des programmes spécialisés appliqués de deux ans. Vous ne pouvez pas obtenir un baccalauréat (maîtrise, etc.) dans un collège. En gros, vous iriez au collège pour apprendre à écrire des logiciels et à l’université pour étudier l’informatique. Les diplômes universitaires ont une préférence beaucoup plus grande dans le recrutement.
Adam Lear

4
Les universités enseignent au moins une chose importante: la mentalité . C'est très important, mais ceux qui ne le savent pas ... eh bien, ne le savent pas.

61

Cette optimisation prématurée signifie que vous ne devriez pas optimiser du tout. J'ai vu des bases de données encore plus épouvantables parce que personne ne voulait prendre en compte les performances (essentielles pour tout système de base de données) dans la conception car il s'agissait d'une optimisation prématurée, plus que tout autre problème de conception de base de données. Les déchets, il existe des tueurs de performance connus, arrêtez de les utiliser comme votre premier choix.

Autre mythe, il est trop difficile de refactoriser la base de données. Non, mais vous devez réfléchir à la manière de procéder à la refactorisation lors de la phase de conception pour le faire efficacement. En outre, plus vous attendez pour résoudre ce problème de performances lié à la conception, plus il sera difficile à résoudre.

Autre mauvais mythe, la conception de la base de données devrait refléter les principes de la POO. Non, les bases de données sont conçues pour fonctionner avec des ensembles et non avec les principes de la POO. Certaines choses de la programmation orientée objet vont causer d’horribles problèmes de performances, alors que d’autres ne sont que des bêtises en termes de bases de données.

Enfin, vous devez appliquer l'intégrité des données dans l'application. Les bases de données vont durer au-delà de l'application et perdraient les règles lorsque l'application serait remplacée, de nombreuses applications vont y accéder et il sera souvent nécessaire d'exécuter des requêtes directes pour corriger les problèmes qui ne passent pas par l'application. Je n'ai jamais vu une base de données qui refuse d'appliquer l'intégrité des données dans la base de données contenant de bonnes données.


+1 en particulier pour les commentaires relatifs aux contrôles d'intégrité de la base de données.
Frank Shearar

+1 Surtout pour le dernier paragraphe. J'ai battu ce tambour plus d'une fois.
Binary Worrier

5
+1 pour le premier paragraphe. L'optimisation prématurée est la racine de tout Mal; écrire du mauvais code sans raison sanglante est encore pire.
configurateur

3
"Certaines choses de la programmation orientée objet vont causer d’horribles problèmes de performances et d’autres ne sont que des bêtises en termes de bases de données", pouvez-vous dire lesquelles? Je connais la programmation orientée objet, mais pas beaucoup de bases de données, et je suis intéressé par la mesure dans laquelle je peux porter des idées de chaque côté à l'autre.
Tom Anderson

@HLGEM Je serais également intéressé par les exemples que @Tom s'interroge sur ...
Armand

53

Qu'il existe une source mythique de meilleures pratiques absolues.

Aucune déviation ne peut jamais être justifiée.

Aucun document prétendant définir quelque chose comme une meilleure pratique ne peut jamais être remis en question.


1
un membre de l’équipe mieux que vos gestionnaires ...
Bill

5
Pouvez-vous me transmettre ce document?
AShelly le

1
Entièrement d'accord. Qui se soucie de mélanger des tabulations et des espaces dans du code Python?
Zaz

4
@Josh - quelqu'un qui doit afficher votre code source à l'aide d'une chaîne d'outils qui a une idée différente de l'emplacement des tabulations.
Stephen C

1
J'interprète "c'est la meilleure pratique" comme "je ne peux pas justifier cela". Je l'utilise certainement de cette façon moi-même.
Tom Anderson

51

Le fait que le marketing semble penser que l'ajout d'une tonne de petites fonctionnalités représente moins de travail que l'ajout d'une fonctionnalité simple, mais plutôt lourde. Ce qui est probablement un cas plus spécifique de l'idée fausse selon laquelle "le basculement de tâches n'a pas de surcharge".


12
Et la chose encore plus amusante du marketing n’a aucune idée des fonctions faciles ou quasi impossibles.
derobert

4
@derobert Exactement, j'ai souvent eu l'expérience que certains des plus prévenants spécialistes du marketing craignaient même de poser des questions sur une fonctionnalité simple / facile qu'ils pensaient très difficile à mettre en œuvre. Bien que j'éprouve l'inverse bien plus souvent: voici un lot de X fonctionnalités "simples" que nous avons déjà vendues au client, merci de le faire avant hier ....
Giel

50

Ce code de commentaire est inutile, ou ce "bon code n'a pas besoin de commentaires". Parfois, vous devez expliquer ce que fait un morceau de code complexe. De plus, commenter les sections de code vous permet de lire plus efficacement, beaucoup plus rapidement.


14
@DisgruntledGoad - C'est vrai cependant. Le malentendu dans ce "mythe" vient du fait que trop de programmeurs considèrent que leur code monolithique déroutant est "bon". if user.is_logged_in: print('Welcome')n'a pas besoin de commentaire.
Orokusaki

3
@orokusaki Tous les algorithmes ne sont pas aussi simples.
Jouke van der Maas

25
@orokusaki vous confondez "un bon code n'a pas besoin de commentaires" avec "un code simple n'a pas besoin de commentaires". Un bon code n'est pas toujours simple.
DisgruntledGoat

3
@Jouke van der Mass: bien sûr. Mais peu importe la complexité de l'algorithme, l'objectif est de l'exprimer simplement. C'est-à-dire qu'un bon code exprime des algorithmes complexes, des règles, des optimisations, d'une manière simple et compréhensible. Exprimer des choses simples est relativement facile. Exprimer des choses complexes est simplement là où réside la compétence.
Flamingpenguin

2
@orokuskai: un bon code est simple. Les choses qu'il fait sont peut-être complexes mais la simplicité (élégance) du code est ce qui le rend bien à mon avis! Bien sûr, le code fait beaucoup d'autres choses, et le code de déchets peut vous rapporter beaucoup d'argent. Mais mon objectif est d’écrire du code simple, même dans des situations complexes.
Flamingpenguin

50

Le pire mythe: si vous programmez longtemps, vous pouvez facilement devenir chef de projet.

Et que vous deviez devenir chef de projet si vous programmez depuis longtemps.


3
Ou pire encore, si vous n'avez jamais programmé ou géré un projet de programmation, lisez quelques livres et créez des logiciels comme par magie. Je suis dans cette voie avec un ancien PM et je ne tiens pas à le répéter tant que je vis.
Evan Plaice

4
Pire: puisque tous les grands programmeurs de l'équipe préfèrent écrire du code plutôt que des rapports, nous devrions promouvoir le médiocre programmeur auprès de Project Manager. L'idée est qu'il sera "assez technique". Le fait est qu’il finit par être un filtre de désinformation entre l’équipe et la direction supérieure.
AShelly le

2
Aussi: si vous êtes le meilleur programmeur, vous devriez évidemment devenir le chef de projet et à partir de là, arrêtez de programmer vous-même! Non, merci beaucoup, mais je vais quand même prendre la relance. Note: Je ne parle pas de devenir un chef de file programmeur ou une telle chose, je parle des gestionnaires qui pensent qu'il est une idée intelligente de promouvoir tout le monde à leur niveau d'incompétence suffisante.
Alan Plum le

1
Aussi connu sous le nom de Peter Principle. fr.wikipedia.org/wiki/Peter_Principle
Spoike

bien dit en effet
Michael Easter

50

Si nous utilisons autre chose que Java, C # et C ++ dans notre projet, nous ne trouverons aucun programmeur pour le prendre en charge.


Je n'en avais jamais entendu parler, mais c'est valable. Bien sûr, si vous utilisiez un langage obscur, cela arriverait.
Maniero

5
@bigown, "obscure"? Comment obscure? TCL est-il obscur? Haskell? Pascal (Delphi)? Python? Je pense qu'ils ne sont pas obscurs. Beaucoup de gens le pensent, et seuls les langages très restreints (C ++, C # et Java) sont autorisés dans le développement "sérieux".
P Shved

5
@bigown: oh, tu veux dire obscur comme COBOL? : p
AnonJr

2
J'ai déjà travaillé pour une petite entreprise à l'aide de code Objective-C sous Linux. Le PDG - qui n'était pas ingénieur mais qui avait quelques connaissances techniques - ne pouvait pas croire qu'il y avait des programmeurs ObjC ou que quelqu'un d'autre l'utilisait. En fait, ils n’ont jamais eu de problèmes à embaucher de bons développeurs.

4
J'ai lu un argument selon lequel c'est exactement le contraire qui est vrai: pour les langages obscurs (ou du moins non significatifs sur le plan commercial) mais cool, amusants et intéressants (qui dans ce contexte signifiait Python et Ruby), il y a plus de programmeurs que d'emplois. De plus, ce sont tous des gens qui aiment les langues cool, amusantes et intéressantes. Ils doivent donc être intelligents. En réalité, travailler en Python signifie que vous aurez plus de facilité à engager des programmeurs intelligents que si vous travaillez en Java. Je ne sais pas si j'y crois, mais c'est au moins aussi plausible que l'idée orthodoxe!
Tom Anderson

42

Java est juste C ++ avec différentes classes.


57
+1 Une fois, un intervieweur m'a demandé: "Quelle est la différence entre C ++ et Java?" Alors j'ai énuméré quelques différences. Compilateur natif contre JVM, norme ANSI contre propriétaire, collecte des ordures ménagères, chargeurs de classes, etc. Il rugit, "FAUX! Il n'y a pas de différence! Ils sont identiques!" Il n'était pas étudiant, il était le responsable technique.
Bill Karwin

11
@ Bill, ma réponse serait alors, "alors pourquoi les appeler avec des noms totalement différents?"
Jesse C. Slicer

2
@ Bill, vous avez donc échoué au test et été embauché?

20
Ma réponse serait "Au revoir."
Foole

6
@ Foo Ne voulez-vous pas dire System.exit (1)?
Barry Brown


33

C’est probablement le plus dangereux que j’ai vu, parce que cela est accepté si facilement, c’est bien de pouvoir écrire du code rapidement. Par conséquent, plus vite vous pouvez coder [insérer une fonctionnalité ici] dans une langue donnée, meilleure est la langue. est.

Ceci est un exemple sérieux d'optimisation prématurée, car la maintenance du code demande plus de travail que sa création. Cela signifie qu'il est beaucoup plus important d'écrire un code facile à lire, à comprendre et à déboguer qu'un code facile à écrire rapidement, et faciliter un code facile à lire est une mesure beaucoup plus utile de la qualité de la langue.


14
c'est précisément ce qui est arrivé à l'un des produits pour lesquels je travaille; le développement précipité a été vu comme brillant. Le produit LOOKED ok et le développeur ont été vivement félicités par la haute direction. Un autre développeur junior a ensuite été chargé de corriger un "petit" bug et, après une semaine d'essayer de comprendre le code, a abandonné et a demandé conseil à un aîné .. qui ne pouvait pas croire à quel point le code était nul. La haute direction a refusé d'accepter est devenu un problème majeur pendant deux ans, après quoi le groupe a finalement convenu qu'il s'agissait d'un tas de bric-à-brac et qu'il devait être codé à nouveau
maintenant

4
Il existe un mythe bien établi parmi les responsables techniques selon lequel vos développeurs expérimentés sont dix fois plus productifs que les développeurs non expérimentés. Le résultat direct de ce mythe est que tout développeur capable de produire du code rapidement - quel que soit son niveau de bug ou de maintenance - reçoit des éloges et une promotion.
rtperson

3
Vous avez besoin d' un langage puissant. Voir la discussion de Paul Graham sur les langues et ce qu’elle vous permet de faire: paulgraham.com/power.html

4
@ Thorbjørn: J'ai lu cet article et Paul Graham s'est trompé. Il est un avocat de Lisp, alors il résume les faits en arguments égoïstes pour donner à Lisp une belle apparence. Peut-être même pas consciemment, car cela ne demande pas vraiment beaucoup de torsion. Il y a beaucoup de chevauchement entre lisibilité et concision, comme il le fait remarquer vers la fin de l'article. Mais les conclusions qu'il tire sont complètement décalées par rapport à l'état du développement logiciel dans le monde réel. Oui, vous avez besoin d'un langage puissant, mais il mesure la puissance en fonction de critères erronés, et il est préjudiciable de croire ce qu'il dit.
Mason Wheeler

3
@ rtperson: Le fait que la productivité puisse varier d'un facteur 10 n'est pas un mythe. Les personnes qui terminent vite sont nécessairement plus productives.
David Thornley

31

Les leçons de fabrication peuvent être appliquées au processus de développement logiciel.


6
Cela dépend des leçons. Lorsque j'ai travaillé dans une usine de matelas, nous avons appris que le fait de changer de tâche nuisait à notre production. Un peu important car nous étions payés par le nombre de matelas fabriqués et non par l'heure ... et une leçon qui s'applique ici aussi pour beaucoup des mêmes raisons.
AnonJr

Ceci est un mythe persistant lorsque vous travaillez dans un endroit qui fabrique principalement du matériel. Les étapes que nous franchissons pour intégrer notre logiciel dans le même modèle qu'une pièce matérielle sont étonnantes ...
AShelly

5
Le logiciel de fabrication est trivial. Il est facile de faire des copies, et cela ne coûte pas très cher de faire des millions de copies. Cela amène les gens à ignorer complètement la pièce de fabrication et à essayer d'appliquer la fabrication au processus de conception.
David Thornley

+100 pour cela, surtout ceux qui ont étudié l'économie pensent cela
Kugel

1
Tout le monde devrait lire Jack Reeves: developerdotstar.com/mag/articles/reeves_design_main.html - c’est l’origine (ou du moins une déclaration précoce et puissante) de l’idée que le code source est un design et non un produit . Les programmeurs sont comme les concepteurs de la salle de rédaction, pas les machinistes de l’usine, et la gestion de la programmation doit correspondre à la gestion d’autres types de conception technique, et non de fabrication.
Tom Anderson

31

En tant que programmeur, vous savez tout sur les dernières tendances en matière de matériel, d'overclocking, de cas, etc. Les amis et les proches vous consultent lorsqu'ils achètent leur matériel.


5
J'avais l'habitude de maîtriser certaines de ces choses au lycée, mais aujourd'hui, je trouve qu'elles n'ont généralement rien à voir avec ce que je fais et bien que certaines soient chouettes, je préférerais de loin payer quelqu'un qui connaît ses affaires et utilise le temps que je passe. enregistrer en faisant ce que j’aime (par exemple, écrire du code) Peut-être un autre malentendu "bon avec les ordinateurs".
Alan Plum le

2
+1 ou une tangente légère - Parce que vous êtes programmeur, vous avez un ventilateur ultra-performant refroidi par eau de 300 LEDs clignotant haut de gamme tout neuf, expédié de l’usine de fabrication avant la sortie de son boîtier. Euh pas vraiment! C’est une machine assez rapide, elle est dans un boîtier noir très bon marché. Ne vous souciez pas vraiment au-delà de ça!
Coder chirurgical

Rire, il y a un assistant de PM au travail qui a une plate-forme de jeu tout-puissant à la maison, se rend toujours dans la zone de développement pour demander s'il doit acheter (produit A) ou (produit B) ... dans une note sans rapport, il suppose également que l'équipe de développement traîne sur 4Chan (ce qu'il fait effectivement). - soupir
dimanche

+1 mot. C'est sur place. Je suis un développeur de logiciels et on m'a demandé de configurer Internet à plusieurs reprises et je ne fais que des essais et des erreurs ainsi que des recherches sur Google. J'aime mieux quand quelque chose de complètement indépendant se brise après que vous ayez rendu service à quelqu'un et que ce soit votre faute.
Anne Schuessler

30

Que lorsque les programmeurs disent que c'est très difficile à faire / tout simplement impossible, les ressources humaines se croient paresseux et démotivés


2
Inclure la gestion aussi
Prasham

Quand vous dites non, ils pensent que vous êtes simplement une personne avec qui il est difficile de travailler.
Captain Sensible

+100, et qu'avec suffisamment de "motivation", ils peuvent changer votre réponse. Ou bien, adressez-vous à un autre développeur [moins expérimenté] et omettez délibérément la moitié des détails pour le convaincre de dire oui, puis de terminer à mi-chemin du développement et de tomber sur le problème exact pour lequel vous l'aviez prévenu.
wildpeaks

28

Il doit y avoir un programme open source pour mon entreprise. Ne pouvez-vous pas simplement le télécharger et le modifier selon mes besoins?


2
+1 Oh, oui, tout ce que nous devons faire doit déjà être en open source.
Sharptooth

7
il y a souvent du temps ... au moins c'est vrai pour le développement Web.
WalterJ89

@ WalterJ89: C'est peut-être là, mais ça ne veut pas dire que c'est une bonne idée de l'utiliser. Open source ne signifie pas automatiquement bon code.
Alan Plum le

vrai .. mais dans le cas de Wordpress, Drupal, jQuery, ... il y a peut-être des domaines dans lesquels la gratuité n'est pas géniale, comme le commerce électronique, mais le plus souvent, le Web est très ouvert, et j'aime travailler avec un communauté open source bien plus qu’un centre de dépannage propiétoire.
WalterJ89

7
Le contraire est aussi un mythe. Vous ne pouvez pas utiliser les logiciels libres pour répondre aux besoins de votre entreprise.
terminus

27

Plus d'une personne m'a demandé ce que c'est que de programmer pour se rendre compte à mi-parcours de la conversation qu'elle pense réellement que nous programmons directement en binaire ou en utilisant des symboles mathématiques.

Je ne sais pas si je veux dissiper ce mythe, cela me rend très intelligent!


6
Cela n'aide pas que la plupart des gens ne sachent même pas ce qu'est vraiment la programmation ... ils ont cette vague idée de créer un logiciel ... mais ils n'ont pas vraiment une idée précise de ce que le logiciel est ...
Spudd86

7
"Nous écrivons des recettes à tricoter". Les grand-mères ont tendance à comprendre cela.

Je connais des gens qui vont écrire un programme en C, puis refaire les parties les plus critiques en termes de performance dans Assembly.
Zaz

1
@ Josh - sauf en cas de problème de performances, cela semble être une perte de temps.
JohnFx

1
@oosterwal - Assembly n'est pas binaire, il n'utilise pas de symboles mathématiques.
JohnFx

26

Je pense que la plus grande idée fausse est qu'il est plus important de pouvoir écrire le code facilement que de pouvoir le lire et le comprendre.


5
* v (int) (void) ++
Rusty le

1
@Rusty: Je peux trouver beaucoup, beaucoup plus mauvais exemples si je n'ai même pas besoin d'être syntaxiquement correct.

4
Ah, oui, code "seulement en écriture" ...
Paddyslacker

24

La programmation est comme un travail à la chaîne. Vous travaillez sur un produit pendant un certain temps (peut-être avec des collègues) et vous l'envoyez finalement. Juste comme construire une maison de briques.

Contra: La programmation contient beaucoup de créativité et de planification. C'est de l'art. Comme le maçon, un programmeur connaît également la différence entre façonner une brique et planifier une cathédrale entière.


6
Acceptez la différence par rapport au travail à la chaîne - mais, à bien des égards, je ne pense pas que ce soit très différent de la construction d’une maison.
Billy ONeal

24

Porter un programme en C ++ le rendra automatiquement plus rapide.


J'étendrais à d'autres langues de bas niveau. Il est possible d'obtenir le contraire lorsque le programmeur ne sait pas ce qu'il fait.
Maniero

2
Une autre variante courante consiste à passer à une architecture client-serveur. "La mise à niveau vers SQL rendra mon application beaucoup plus rapide!" Pas nécessairement.
JohnFx

Oui, c'est plutôt le contraire plusieurs fois. Les bases de données SQL sont bonnes pour être ACID ou presque, cela vient avec le prix. Et pourrait être pire, une mauvaise idée sur les techniques SQL pourrait nuire aux performances.
Maniero le

6
Porter en C ++ / C pour ceux écrits en Python / Perl / Ruby / etc. Portage vers asm pour ceux écrits en C / C ++: P. Je me demande à quoi vous porteriez? le concevoir dans le matériel?
MAK


21

Tout environnement de programmation avec un concepteur visuel quelconque permettra aux utilisateurs professionnels d’écrire le programme et aux programmeurs eux-mêmes.


9
Ah oui. Il est toujours amusant quand une entreprise crée un nouvel outil de création destiné à rendre les programmeurs redondants. Tous ceux qui l'adoptent s'engagent ensuite dans le processus et engagent des spécialistes hautement rémunérés <auteur> pour l'utiliser. Exemple: Joomla! et tout ce non-sens.
Alan Plum le

HA HA HA HA HA HA HA HA +1 :)
Billy ONeal

Cobol a déjà essayé ça :)
Carra

20

OOP réutilisation. C'est la plus grande erreur commercialisée dans la programmation.


1
Bien. La HP XL WESM est à peu près égale à 85% de la même chose que la Symbol WS5100 (les opérations OEM sont en cours). Souhaitez-vous que je copie-colle ce pourcentage de mon code de surveillance et de configuration afin qu'il y ait deux fois plus de bogues, ou préféreriez-vous que je le réécrive à partir de zéro et que je prenne quarante fois plus de temps et qu'il y en ait cinq fois plus? Ou êtes-vous simplement pressé par une folle direction qui pense que c’est l’un des nombreux panacées magiques permettant de projeter $ plus rapidement?

1
La réutilisation dans le petit a été résolue il y a 40 ans et plus. Réutiliser dans le grand est difficile et n'a pas encore été résolu à mon humble avis. Comme le dit Robert Glass dans Facts et sophismes de l’ingénierie logicielle
MarkJ
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.