Une dépendance excessive à l'égard des outils implique-t-elle que vous êtes paresseux? [fermé]

29

J'ai commencé à programmer en C ++ à uni et j'ai adoré. Lors du prochain mandat, nous sommes passés au VB6 et je détestais ça.

Je ne pouvais pas dire ce qui se passait, vous faites glisser un bouton vers un formulaire et l'ide écrit le code pour vous.

Bien que je détestais la façon dont VB fonctionnait, je ne peux pas affirmer que c'était plus rapide et plus facile que de faire la même chose en C ++, donc je peux voir pourquoi c'est un langage populaire.

Maintenant, je n'appelle pas les développeurs VB paresseux en disant simplement que c'est plus facile que C ++ et j'ai remarqué que de nombreux langages plus récents suivent cette tendance comme un C #.

Cela m'amène à penser que plus les entreprises veulent des résultats rapides, plus de personnes programmeront ainsi et tôt ou tard, ce que nous appelons la programmation n'existera plus. Les futurs programmeurs diront à l'ordinateur ce qu'ils veulent et le compilateur écrira le programme pour eux comme dans Star Trek.

S'agit-il simplement d'une opinion sous-informée d'un programmeur junior ou les programmeurs deviennent-ils paresseux et moins compétents en général?

EDIT: Beaucoup de réponses disent pourquoi réinventer la roue et je suis d'accord avec cela, mais quand il y a des roues disponibles, les gens ne se soucient pas d'apprendre à fabriquer la roue. Je peux google comment faire à peu près n'importe quoi dans n'importe quelle langue et la moitié des langues font tellement pour vous quand il s'agit de déboguer, ils n'ont aucune idée de ce que fait le code pour corriger l'erreur.

C'est comme ça que je suis arrivé à la théorie selon laquelle les programmeurs deviennent de plus en plus paresseux et moins compétents, car personne ne se soucie de la façon dont les choses fonctionnent juste ce qu'elles font jusqu'à ce qu'elles ne le soient pas.

Skeith
la source
7
"Est-ce juste une opinion sous-informée d'un programmeur junior ou les programmeurs deviennent-ils paresseux et moins compétents en général?" - ce n'est pas un ou les deux sont vrais (mais pas pour les raisons que vous dites).
Jon Hopkins
15
Comment peut- on répondre à cela sans réfuter le titre?
Commentateurs: les commentaires sont destinés à demander des éclaircissements, pas à une discussion approfondie. Si vous avez une solution, laissez une réponse. Si votre solution est déjà publiée, veuillez la voter. Si vous souhaitez discuter de cette question avec d'autres personnes, veuillez utiliser le chat . Voir la FAQ pour plus d'informations.
8
Pourquoi cela n'a-t-il pas été considéré comme "subjectif et argumentatif" ...?
BlueRaja - Danny Pflughoeft

Réponses:

103

Non, les développeurs ne sont pas paresseux ou moins compétents. Oui, il y a un besoin de développement réel en constante diminution, dans le sens où vous le savez. Et oui, c'est très bien parce que les entreprises veulent des résultats rapides, et pourquoi pas?

Cependant, il y a un point final. Il y aura toujours un besoin pour certains développeurs.

De nombreuses exigences sont les mêmes pour différents projets. Celui dont vous parlez est le code UI. La plupart des interfaces utilisateur sont constituées d'un ensemble spécifique de champs - zone de texte, case à cocher, radio, sélection, etc. - et il est vraiment inutile de les développer à partir de zéro, encore et encore et encore. Ainsi, des couches d'abstraction sont mises en place pour supprimer tout ce code passe-partout.

De même, la couche de données, qui n'est généralement rien d'autre que Insérer ceci, Supprimer ceci, Remplacer cela et un grand nombre de vues différentes des mêmes données. Pourquoi continuer à écrire ça encore et encore? Inventons les ORM.

La seule chose que vous devriez développer est un code unique à l'entreprise pour laquelle vous développez.

Mais il y aura toujours cette unicité - là où il n'y en a pas, il y a une opportunité commerciale - et il y aura toujours un besoin pour les gens d'écrire du code.

Cela dit, gardez également à l'esprit qu'il y a beaucoup plus à être développeur que d'écrire du code. Que vous codiez en assemblage pur ou assembliez des composants Drupal pour créer un site axé sur le contenu, vous traduisez le besoin de l'entreprise en quelque chose que l'ordinateur comprend.

La partie la plus importante d'un développeur de logiciels est d'être en mesure de comprendre suffisamment les besoins de l'entreprise pour les expliquer à l'ordinateur.

Peu importe la langue que vous utilisez pour expliquer les choses à l'ordinateur, il importe seulement que vous le puissiez. Et c'est un travail difficile, rien de paresseux.

pdr
la source
3
Il y a une différence entre être développeur et programmeur.
Raynos
9
+1. Exactement. Un logiciel de travail est ce pour quoi vous êtes payé. Le code est un moyen de créer un logiciel, un artefact. La "programmation" pure est la partie facile et amusante de la création de logiciels.
Joonas Pulakka
+1 pour l'ensemble. Je ne suis pas sûr de l'avoir "La seule chose que vous devriez développer est un code qui est unique pour l'entreprise pour laquelle vous développez." Mais je concède que c'est une stratégie commerciale valable.
SoylentGray
@Chad - Prenez votre point. Je parle parfois en hyperbole. Le bon sens l'emporte toujours sur la philosophie, quand il s'agit de la crise, mais je pense que c'est une bonne position pour être décrié au cas par cas, plutôt que de prendre une position par défaut de "oui, écrivons-le nous-mêmes." :)
pdr
En tant qu'entreprise, la plus grande question est de savoir quel est le retour sur investissement du temps que vous passez à développer une solution. Mon patron ne se soucie pas du tout de la langue dans laquelle je développe, tant que je peux aider l'entreprise à gagner plus d'argent qu'elle ne me paie. Autre chose et ils perdent de l'argent sur moi.
Dan Williams
38

Un mécanicien est-il paresseux et moins compétent parce qu'il utilise une clé hydraulique ?

Imaginez deux gars, disons Brad et Pete. Ils travaillent tous les deux dans deux garages qui changent de pneus quotidiennement. Brad est un gars intelligent, il sait que l'utilisation de meilleurs outils peut faire son travail mieux et plus rapidement. L'utilisation de la clé hydraulique l'aide à changer plus de pneus. Les clients attendent dans une file d'attente plus courte - tout le monde est content. Bard sait également que cette clé est parfois trop grosse et qu'elle ne peut pas l'aider avec différents types de vis.

D'un autre côté, Pete dit que la clé hydraulique est un blasphème et Brad n'est pas un "vrai mécanicien". Bien sûr, Pete ne peut faire que la moitié de ce que Brad fait, mais il le fait de la "bonne manière".

Maintenant que pensez-vous, quels clients de garage choisiraient? Un qui prend 20 minutes ou un avec 40 minutes d'attente.

C'est assez similaire avec la programmation. C ++ est un bon langage et a sa fonction (principalement la performance). Ce que j'aime dans les langages comme C #, c'est que je peux me concentrer sur un problème, penser à un algorithme sans tout le bruit que fait C ++ comme les avertissements ambigus du compilateur, les comportements indéfinis, etc. Le développement devient de plus en plus compliqué que dans les vieux jours des ordinateurs centraux et des premiers PC, pourtant le cerveau humain reste le même - à peu près stupide. Une application peut fonctionner dans le cloud, mobile, bureau, il y a beaucoup de dépendances, problèmes de sécurité et autres problèmes. Je veux avoir un meilleur outil pour me concentrer sur des problèmes plus complexes et les résoudre.

Utilisez de meilleurs outils pour faire le travail - il n'y a rien de mal à cela.

lukas
la source
1
Je ne pense pas que l'analogie fonctionne parce que Brad et Pete sauront toujours comment retirer le pneu et tout ce qui est impliqué (clés, clés et bière).
Kristofer Hoch
3
+1 Grande Réponse. J'ajouterais que peu importe l'outil que vous utilisez, si vous comprenez ce qu'il fait, vous ferez bien votre travail. D'un autre côté, si vous ne le faites pas, peu importe la quantité de travail effectuée par l'outil, à un moment donné, vous allez visser quelque chose.
Jacek Prucia
1
@Kristofer: Peut-être que ce serait mieux si Pete connaît certains appareils électroniques. Alors que Brad sait seulement utiliser l'ordinateur de diagnostic et lire que le capteur d'O2 a mal tourné, Pete voit que le fil du capteur est un peu brûlé, sort le compteur pour le mesurer et se rend compte que le régulateur de tension est devenu bancal et est brûler les capteurs d'O2.
Zan Lynx
@Zan ce n'est pas la même chose. @Kristofer juste parce que j'utilise le concepteur pour faire glisser rapidement les contrôles sur un élément de formulaire et obtenir du code passe-partout ne signifie pas que je ne sais pas comment changer ensuite ce code pour faire ce que je veux après.
jcolebrand
Un moyen parfait de le mettre.
riwalk
37

Alors, comment appelons-nous la programmation maintenant

Vous dites:

Les futurs programmeurs diront à l'ordinateur ce qu'ils veulent et le compilateur écrira le programme pour eux comme dans Star Trek.

faites juste une expérience: regardez Star Trek et essayez d'interpréter les choses que l'ordinateur a l'ordre de faire un peu «sans grâce».

  • Thé, comte gris, chaud -> beaucoup de vapeur.
  • Thé, comte gris, 60 degrés Celsius -> une flaque d'eau et un nuage de vapeur
  • comte gris, 60 degrés Celsius -> une flaque d'eau
  • Earl Grey, 60 degrés Celsius, dans une tasse -> une tasse avec une goutte dedans
  • Earl Grey, 60 degrés Celsius, 0,2 litre, dans une tasse. -> enfin (ok, vous pouvez en savoir plus)

Lorsque vous appelez Programmation: «Connaître l'utilisation de la mémoire, les pointeurs, etc.», oui, je suppose que cela deviendra moins important (comme «Connaître http, openid, unicode» deviendra plus important).

Mais, à mon avis, tout est `` complexité accidentelle '', et le vrai travail de programmeur est `` Faire en sorte que les machines de construction résolvent les problèmes, en s'assurant que l'on comprend suffisamment les problèmes accidentels pour accomplir la tâche '', et par cette définition, quelqu'un conversant avec un ordinateur Star Trek doit être un programmeur (c'est-à-dire avoir les mêmes vertus que maintenant).

keppla
la source
2
@Raynos: tellement vrai. Particulièrement déprimant lorsque ces personnes sont des chefs d'équipe et établissent des directives comme `` lorsque les données à envoyer sont inférieures à X octets, utilisez GET, quand plus, utilisez POST ''
keppla
8
@keppla - Votre problème n'est pas que votre chef d'équipe n'a pas compris HTTP, c'est qu'il n'était pas disposé à changer son opinion à la lumière de preuves qu'il avait tort (en supposant que vous ayez essayé de lui expliquer les choses). Vous ne pouvez pas en savoir plus que tous ceux qui travaillent pour vous sur tout - le vrai crime n'est pas d'accepter que quelqu'un d'autre en sache plus sur vous que vous.
Jon Hopkins
3
"Tea, Earl Grey, Hot" est une programmation déclarative. C'est le travail de l'ordinateur de trouver un résultat contextuellement pertinent basé sur des attentes raisonnables. Produire de la vapeur à partir de "thé chaud" dans ce type de langage serait une erreur de la part de l'équipe de conception de l'ordinateur, pas du programmeur. Il doit utiliser le cas contextuellement pertinent, sauf si une requête spécifique est entrée.
diadème
1
@Diadem: même quand c'est déclaratif, vous devez savoir quoi déclarer, et en tant que programmeur, à mon humble avis, vous ne vous attendriez pas à ce que l'ordinateur devine par le passé ce que vous ferez ensuite, parce que vous ferez quelque chose de nouveau. L'interface qui interprète vos souhaits est destinée aux utilisateurs finaux.
keppla
2
@Zan Lynx: Peut-être un meilleur exemple: faites en sorte que l'ordinateur vous avertisse, chaque fois que quelqu'un est enlevé (l'ordinateur ne semble pas s'en soucier dans TNG). 'Ordinateur: informez-moi quand quelqu'un est enlevé' 'Veuillez définir enlevé' 'Quand il est emmené contre son gré' 'Veuillez définir la volonté', etc. Pour trouver une solution comme 'Informer l'officier responsable lorsque l'emplacement de quelqu'un change de connu à inconnu, et il n'y a pas de journal qu'un officier des transports l'ait téléporté ou qu'il est entré dans une navette, et le navire n'est pas sur le quai. vous avez toujours besoin d'un état d'esprit programmeurs.
keppla
23

Les programmeurs ne deviennent pas paresseux. Les programmeurs ont toujours été paresseux. Être paresseux fait partie de la nature fondamentale du travail. Le problème est que les gens supposent qu'être paresseux est négatif. Être un programmeur "paresseux" est une vertu.

Rappelez-vous le vieil adage «Travaillez plus intelligemment, pas plus dur». C'est le moteur fondamental des programmeurs.

Les gars qui ont construit et programmé les premiers ordinateurs ne l'ont pas fait parce qu'ils aimaient travailler dur, ils l'ont fait pour ÉVITER un travail encore plus difficile. (faire des pages de calculs à la main)

Être «paresseux» est l'une des raisons fondamentales pour lesquelles les programmeurs programment. C'est pourquoi nous écrivons de nouveaux langages de niveau toujours plus élevé, de meilleurs débogueurs et IDE, des scripts shell et build, etc ...

Un programmeur regarde un problème, tout ce qu'il fait et pense;

"puis-je automatiser cela?" , "combien de temps cela prendrait-il?" , "combien de temps cela me ferait-il gagner?"

Nous le faisons parce que nous sommes paresseux, nous ne voulons pas faire une tâche répétitive et ennuyeuse alors que nous pourrions faire des choses beaucoup plus amusantes.

Si les programmeurs n'étaient pas paresseux, aucun programmeur n'aurait jamais vu la nécessité d'écrire un seul nouveau langage ou compilateur.

En ce qui concerne la notion qu'un programmeur est "paresseux" parce qu'il doit "chercher les choses", alors quoi, peu importe. L'hypothèse selon laquelle il est plus difficile d'apprendre chaque nuance d'une langue particulière (et de ne jamais avoir à rechercher quelque chose), puis de trouver et d'utiliser ce dont vous avez besoin quand vous en avez besoin est une erreur. En outre, le processus de recherche des choses est le processus d'apprentissage et la raison même pour laquelle des sites comme celui-ci existent.

Si quelqu'un veut un travail de programmation difficile, je lui dirais de coder manuellement du code machine brut en hexadécimal. C'est fait? Vous voulez quelque chose de plus difficile? Maintenant, allez le déboguer.

Justin Ohms
la source
19

Tout d'abord, appeler des gens qui utilisent par exemple des langues avec le ramasse-miettes paresseux, c'est en quelque sorte appeler des gens qui conduisent des voitures avec une transmission automatique paresseux. OMI, c'est un peu ridicule.

Quant à la compétence, la programmation est un travail beaucoup plus populaire et égalitaire qu'elle l'était. Alors oui, il y a beaucoup de nouveaux arrivants qui manquent de connaissances. Je ne veux cependant pas dire qu'il y a soudainement des programmeurs moins compétents. En fait, il y en a plus. Vous regardez juste du mauvais côté de la courbe en cloche.

vartec
la source
11
Les gens qui conduisent des automobiles SONT paresseux, il n'y a rien de ridicule à cela. Le mode manuel avec talon et pointe donne beaucoup plus de contrôle et de performances hors de la voiture, mais nécessite beaucoup d'habileté et de travail supplémentaire.
Coder
11
@Coder: "nécessite un travail supplémentaire" - sur l'autoroute, ce n'est pas le cas, dans les embouteillages, mais cela ne vous donne aucun avantage de toute façon.
vartec
2
Les transmissions manuelles offrent également une meilleure économie de carburant sur l'autoroute, bien que cela soit moins vrai avec les convertisseurs de couple verrouillés.
Dave Markle
4
@Dave en fait l'électronique moderne a rendu l'automatique plus efficace en moyenne. Ma Ford Fusion avec les mêmes options a été évaluée à près d'un mile par gallon de moins. Je suis sûr qu'il y a des moments où le manuel est encore meilleur dans le micro mais dans l'ensemble c'est automatique qui a le plomb.
SoylentGray du
3
@Coder - Si vous pensez que la conduite d'un manuel nécessite "beaucoup de compétences", vous devez regarder autour de vous les milliers de conducteurs incompétents sur la route avec des transmissions manuelles. ;)
techie007
15

Je suis tenté de dire "oui, les programmeurs juniors avisés et non informés sont devenus paresseux et moins compétents", mais essayons une réponse sérieuse:

Beaucoup de choses sont devenues plus faciles, mais on attend plus de nous. Je suis en train de créer une application Web qui possède de nombreuses fonctionnalités généralement trouvées dans des applications graphiques bien conçues (vues tabulées, grilles modifiables et triables, exportation Excel, etc.). Les outils que j'utilise (ExtJS, etc.) rendent la création d'une telle application relativement peu coûteuse.

Il y a dix ans, il aurait été presque impossible, du moins très coûteux, de créer une telle application. Mais il y a dix ans, un simple formulaire HTML avec un tableau HTML aurait suffi aux clients. Aujourd'hui, avec le même effort, de meilleurs (au moins plus beaux) résultats sont possibles, et les clients s'attendent à les obtenir!

En général, un développeur de logiciels d'aujourd'hui doit connaître plus de langues qu'un développeur de logiciels il y a 20 ans. À l'époque, quelque chose comme C et SQL suffisait. Aujourd'hui, j'utilise JavaScript, HTML, Groovy, Java, SQL dans le même projet.

utilisateur281377
la source
+1 oui, les programmeurs juniors avisés non informés sont devenus paresseux et moins compétents
SoylentGray
12

Les programmeurs deviennent moins compétents et paresseux à certains égards, mais plus compétents à d'autres, bien que la fracture C ++ / VB ne soit pas la raison ou un symptôme dans mon esprit.

L'utilisation d'un générateur d'interface graphique n'est pas paresseux, c'est juste différent, il s'agit d'outils pour le travail en cours. Si un programmeur assembleur appelé un programmeur C ++ paresseux, vous appelleriez des conneries à ce sujet (à juste titre) et il en va de même pour C ++ et VB. VB vous permet de faire certaines choses rapidement au détriment d'un certain contrôle. Les obstacles au démarrage du codage sont certainement plus faibles, mais c'est une chose très différente de la paresse - vous apprenez simplement différentes choses et les appliquez de différentes manières. Les programmeurs VB ne sont pas plus paresseux que les programmeurs C ++ sont improductifs, ils fonctionnent et produisent simplement de différentes manières.

Sur un point plus large, l'éducation des programmeurs est généralement meilleure maintenant qu'elle ne l'a jamais été. L'idée de ne pas utiliser le contrôle de source, par exemple, est assez odieuse pour presque tout le monde maintenant où il y a 10 ou 20 ans, cela n'aurait pas été aussi vrai. De même, ils sont plus susceptibles de comprendre et de vouloir utiliser des tests unitaires automatisés, une intégration continue, etc., de sorte qu'en ce sens, ils sont plus compétents qu'ils ne l'étaient.

Mais ce que je pense a changé, c'est que les gens ne savent plus comment résoudre les problèmes comme ils le faisaient auparavant, et c'est vrai dans à peu près n'importe quel langage traditionnel. La réponse instantanée à tout problème est maintenant Google et même si c'est génial et fonctionne 95% du temps, je vois trop de programmeurs qui ne savent pas quoi faire quand ce n'est pas le cas.

Ce n'est pas qu'ils ne comprennent pas les principes fondamentaux (ils ne le font pas mais ce n'est pas vraiment un gros problème), c'est qu'ils ne peuvent pas décomposer les problèmes de telle manière qu'ils peuvent même déterminer les principes fondamentaux dont ils ont besoin pour être aux prises avec.

Avant Google, vous n'aviez pas le choix. Vos ressources étaient votre équipe, quelques dizaines de livres physiques auxquels vous pourriez avoir accès et votre cerveau. Cette configuration signifie que si vous rencontrez un problème, il est probable que vous le résolviez vous-même à partir de quelque chose de proche des premiers directeurs, de sorte que vous êtes devenu très bon ou assez rapidement au chômage.

Et c'était vrai quelle que soit la langue que vous utilisiez. Le VB est de haut niveau et se cache beaucoup, mais cela signifie qu'en matière de résolution de problèmes, cela signifiait en fait qu'il fallait plus de travail. Si quelque chose ne fonctionnait pas, vous deviez faire preuve de plus de créativité et travailler plus fort, car vous aviez moins de contrôle. En tant que programmeur VB (et je parle d'expérience), vous ne saviez pas moins que les gars C ++, vous saviez juste des choses différentes mais vous saviez tous les deux comment résoudre les problèmes.

Mais il est probablement difficile de voir cela comme une critique importante des programmeurs de nos jours, ils ne développent pas les compétences parce qu'ils n'en ont pas besoin, mais c'est une faiblesse par rapport à ceux qui ont acquis les compétences quand elles étaient nécessaires.

Jon Hopkins
la source
alors quand personne ne sait ce qu'est un algorithme ou comment implémenter une structure de données parce qu'ils "programment" tous en IDE par glisser-déposer, utilisent-ils simplement le bon outil pour le travail?
Skeith
@Skeith - Cela dépend du travail mais s'il produit un logiciel qui résout le problème, alors oui.
Jon Hopkins
1
@ Jon-Hopkins, je dirais que la hausse massive de la programmation dépendante de Google a à voir avec le nombre massif d'API dont nous avons besoin de nos jours. C'est trop difficile de garder une trace de tout cela. (Mais, dans l'essentiel, vous avez raison)
Jarrod Nettles
1
@Skeith - La construction d'une interface utilisateur prend environ 5% du temps moyen des développeurs d'applications. Que pensez-vous qu'ils font les 95% restants? Le concepteur n'aide pas beaucoup avec le code backend. Vous attaquez clairement un homme de paille. La plupart des gens connaissent les outils dont ils ont besoin pour leur travail, sinon ils ne seraient pas employés.
Morgan Herlocker
@Skeith: Un utilisateur de base de données doit-il se soucier de la façon d'implémenter une base de données? Bien sûr que non; l'utilisateur de la base de données l' utilise . Ils peuvent avoir besoin de connaître certains détails pour pouvoir optimiser leurs bases de données, mais ils ne devraient pas avoir à être capables de l'implémenter pour être dignes de l'utiliser. En outre, un programmeur peut ne pas savoir ce que signifie le mot «algorithme», mais cela ne signifie pas qu'il ne les écrit pas. Je développais et implémentais des algorithmes bien avant d'avoir entendu le terme.
Nicol Bolas
11

Je constate d'après votre profil que vous avez 23 ans. Permettez-moi de mettre mes dents dedans et de vous donner le point de vue de quelqu'un d'environ deux fois votre âge qui fait cela depuis très longtemps:

Auparavant, il y avait beaucoup moins de tout, à commencer par la puissance de calcul, le stockage et la bande passante du réseau, si vous aviez un réseau. Ces pénuries imposent des limites à ce que vous pouvez raisonnablement faire, ce qui facilite beaucoup plus la compréhension de tout. Le logiciel que nous utilisons aujourd'hui est bien plus performant que les choses avec lesquelles je travaillais il y a 25 ou 30 ans, et ces capacités signifient qu'il y en a beaucoup plus. Cela rend la collecte d'une compréhension fine de tout beaucoup plus difficile pour une seule personne. Cela tient en partie au fait que les choses vont continuer à augmenter en complexité et en partie aux effets secondaires de l'âge.

L'écosystème informatique ressemble beaucoup aux systèmes biologiques: les humains sont plus complexes que les organismes unicellulaires, et certaines parties de nous doivent se spécialiser si nous voulons réussir à faire quoi que ce soit. Mes cellules cérébrales sont terriblement douées pour les choses intellectuelles, mais elles seraient perdues si elles étaient plongées dans mon rein et attendaient de faire des choses rénales. De même, le gars qui sait bien écrire des processeurs de signaux numériques pourrait ne pas avoir la moindre idée du fonctionnement de l'indexation de texte intégral, car ce n'est tout simplement pas sa spécialité. Mais les deux pourraient évoluer un peu et apprendre à le comprendre s'ils en avaient besoin, mais il y a des limites à la mesure dans laquelle vous pouvez vous propager et être toujours efficace dans ce que vous faites.

... personne ne se soucie de la façon dont les choses fonctionnent juste comme ça jusqu'à ce que ce ne soit pas le cas.

Lorsque vous avez un travail à faire, vous devez souvent faire le geste de croire qu'un outil que vous utilisez (bibliothèque, SGBDR, sous-système entier, etc.) fonctionne comme il se doit. L'une des choses que l'expérience apporte est la possibilité de choisir les trous de lapin que vous allez exécuter pour dénicher les défaillances de vos outils, résoudre le problème, puis revenir à ce que vous faisiez.

Maintenant, je n'appelle pas les développeurs VB paresseux en disant simplement que c'est plus facile que C ++ et j'ai remarqué que de nombreux langages plus récents suivent cette tendance comme un C #.

C'est une question de perspective. J'étais là pour voir le C ++ voir le jour, et il suit également cette tendance. C ++ rend les choses beaucoup plus faciles que C, C rend les choses beaucoup plus faciles que l'assemblage et l'assemblage rend les choses beaucoup plus faciles que d'écrire des opcodes à la main. En tant que personne qui a écrit beaucoup d'assemblages et assemblé quelques choses à la main à partir de zéro, cela vous mettrait, en tant que programmeur C ++, trois étapes sur le chemin "c'est plus facile".

Blrfl
la source
1
+1 indiquant que c'est une question de perspective. J'étais là quand UNIX est sorti pour la première fois de Bell Labs et il y avait une quantité considérable de `` tsk tsk '' que des langages de haut niveau comme `` C '' réduisaient l'art ancien et ésotérique de l'écriture des systèmes d'exploitation, et cela conduirait sûrement à pas bien. Au fur et à mesure que nos outils s'améliorent et prennent en charge une comptabilité plus insouciante pour nous, nous pouvons utiliser le temps gagné pour résoudre des problèmes plus difficiles et plus subtils.
Charles E. Grant
6

Quelque chose que je maintiens depuis longtemps maintenant est:

L'une des plus grandes forces du langage Visual Basic est qu'un débutant peut apprendre à faire beaucoup de choses utiles assez rapidement.

L'une des plus grandes faiblesses des programmeurs Visual Basic est qu'ils apprendront à faire beaucoup de choses utiles assez rapidement, puis ils arrêteront d'apprendre quoi que ce soit.

Lorsque j'enseignais la programmation du premier exercice, le premier jour de cours était de savoir comment créer une application dans NOTEPAD et la compiler en utilisant VCC ou VBC. Oui, ce sont des choses que nous (en tant que programmeurs) ne faisons pas quotidiennement, mais nous devons comprendre ce qui se passe lorsque nous appuyons sur "F6".

Les programmeurs ne deviennent (généralement) pas plus «paresseux» que nous nous attendons à tirer le meilleur parti de nos outils. Je n'ai pas besoin de taper "get / set" 10 000 fois par jour, J'AIME que Visual Studio et d'autres outils comme Code Smith et Resharper travaillent pour moi pour faire ce que je sais déjà faire afin que je puisse appliquer mes efforts à la figuration comment faire de "nouvelles" choses. Cela ne me rend pas paresseux, cela me rend "innovant".

En tant que développeur professionnel, nous ne devrions pas «perdre du temps» à réinventer la roue, mais nous devons clairement comprendre ce qui entre dans la fabrication de la roue que nous allons utiliser. Ce sont des choses que nous «devrions» apprendre en tant que développeurs étudiants (mais malheureusement, ce n'est souvent pas le cas). Si un développeur ne comprend pas une technologie de "boîte noire", cela le rend-il vraiment moins "compétent". La plupart des développeurs ne «comprennent» essentiellement que le fonctionnement d'un pilote ODBC, ils comprennent simplement «ce qu'il» fait. Dois-je savoir comment fonctionne une transmission pour être un conducteur compétent? Je dirais que non. Cela fait-il de moi un propriétaire de voiture plus compétent pour le savoir, oui.

Cos Callis
la source
4

Le besoin de développement rapide d'applications (lien wiki obligatoire: http://en.wikipedia.org/wiki/Rapid_application_development ) signifie que les développeurs écrivent moins de code et que les développeurs plus récents comprennent moins, car ils n'ont pas besoin de comprendre comment implémenter un liste liée car ils ont quelque chose de plus élevé à se concentrer.

Je ne peux pas attraper, tuer, écorcher, boucher et soigner la viande, et je doute que le gars du café en bas le puisse, mais je reçois toujours mon sandwich au bacon de lui, tout comme les hommes d'affaires obtiennent leurs applications de développeurs qui ne connaissent pas pointeurs (comme moi!)

StuperUser
la source
4

On a dit que les grandes disciplines scientifiques sont des exemples de géants se tenant sur les épaules d'autres géants. Il a également été dit que l'industrie du logiciel est un exemple de nains debout sur les orteils d'autres nains.
- Alan Cooper

Un bon développeur de logiciels n'est pas celui qui réinvente la roue. Il est capable d'utiliser les outils qui ont été construits avant lui. Il ne perd pas de temps à réécrire les mêmes vieux trucs ennuyeux, qui ont été écrits des centaines de fois, deviennent rapidement fastidieux et existent probablement déjà dans une version de meilleure qualité.
Si vous leur donnez une langue qui contient déjà des disques de pierre ronds, il y a de fortes chances qu'ils ne passent pas trop de temps à réinventer les roues. Si j'avais un centime pour chaque routine de copie de chaîne jamais écrite en C, je pourrais probablement acheter toute l'industrie du logiciel.

La paresse est en fait l'une des trois grandes vertus d'un programmeur. Les outils dont vous parlez ont été conçus par de bons programmeurs pour de bons programmeurs, pour réduire la redondance et l'ennui et ainsi augmenter la productivité et la motivation. De tels outils peuvent en effet avoir des effets négatifs sur les débutants, car ils empêchent une compréhension plus approfondie de l'aspect de programmation qu'ils simplifient.

back2dos
la source
4

Non, tu vieillis.

Sans plaisanter, ce que vous vivez est une sorte de droit de passage pour les développeurs. Depuis les premiers langages de niveau supérieur ont supplanté l'assemblage. À l'époque, vous auriez entendu tous les programmeurs ASM se plaindre de la même chose. Dans 5 ans, tous les développeurs Ruby on Rails se plaindront de la façon dont une nouvelle génération de nouveaux outils paresseux rend les gens.

Ce refrain sera répété jusqu'à ce que les machines nous détruisent tous: "Est-ce que la technologie X rend les développeurs plus paresseux et pires que la technologie Z que j'ai toujours utilisée?"

La bonne nouvelle est que, même si les compilateurs ont parcouru un long chemin, les gens ont encore besoin d'assemblage et de C et de tous les autres vieux piliers pour beaucoup de choses ... mais pas la majorité des innovations technologiques de pointe. Si vous voulez être à la pointe de la technologie, je vous suggère de mettre à jour votre ensemble de compétences.

DougW
la source
+1: "Ces enfants paresseux aujourd'hui avec leurs chars, leurs arcs et leurs flèches. Quand j'étais enfant, nous avons mené nos combats avec des épées courtes, et nous sommes allés sur le champ de bataille et en revenir. Et c'était difficile dans les deux sens." - Xerxès I, empereur de Perse, 473 avant JC
Bob Murphy
3

D'après mon expérience, oui et non, mais ce n'est pas la faute des langues; c'est la faute des développeurs eux-mêmes. J'ai travaillé avec de nombreux développeurs qui ne se souciaient pas de bien faire les choses, de s'améliorer ou de faire vraiment autre chose que de produire la même merde qu'ils ont fait pendant des années. Essayer d'amener ces gens à s'améliorer, c'est comme parler à un mur de briques - la moitié du temps, ils ignorent tout ce qu'ils n'ont pas utilisé dans le passé ou ne veulent absolument pas "tenter leur chance" avec quelque chose qui pourrait améliorer leur productivité. .

Les langages plus avancés ne sont pas le problème, ce sont les programmeurs qui ne traitent pas ce métier comme un métier en constante évolution. Vous n'avez pas besoin d'être intimement au courant de tout ce qui est nouveau ou de sauter dans chaque nouveau mouvement, mais vous devriez au moins essayer de devenir meilleur dans ce que vous faites.

Pour un exemple concret: je suis développeur .NET par métier. Je m'attendrais à ce qu'un développeur .NET compétent soit au courant de choses comme LINQ, Entity Framework, WPF, MVC et similaires; ils n'ont pas besoin de l'avoir utilisé, ou de le pousser sur le lieu de travail, mais au moins une compréhension passagère de "Cela existe" vaut mieux qu'une ignorance absolue que je vois beaucoup trop souvent.

Wayne M
la source
2

Je ne code que depuis environ 4 ans et je travaille presque entièrement en c #. J'ai appris le C ++ à l'université et à l'université, mais je ne pourrais pas en faire grand-chose maintenant.

Donc, pour le développement de l'interface graphique, cela pourrait être considéré comme paresseux, mais là encore, ne pourrait-on pas voir que vous pouvez vous concentrer moins sur le codage de cette partie et plus sur le développement de la logique de l'application elle-même.

alors peut-être que plutôt que de devenir moins compétents, ils se concentrent, probablement beaucoup vers la communication et les systèmes distribués, par exemple le cloud computing et SOA. Bien que cela puisse être aussi similaire à celui d'un programmeur intermédiaire.

Kioshiki
la source
2

Il est probablement vrai que la barrière à l'entrée dans les emplois de programmation diminue chaque année. Par exemple, il est désormais possible pour les ingénieurs dont la spécialité n'est pas principalement les logiciels et les artistes d'écrire du code à l'aide de langages de script.

Cela implique que le niveau de compétence a effectivement augmenté, si l'on considère l'étendue. Le fait que les artistes puissent programmer signifie également qu'il y a maintenant plus de programmeurs ayant des compétences artistiques.

Joh
la source
1
par compétence, je voulais dire programmation, toutes les autres compétences ne sont pas pertinentes, sauf les mathématiques.
Skeith
3
@Skeith - "par compétence, je voulais dire programmation, toutes les autres compétences ne sont pas pertinentes sauf les mathématiques" - c'est tellement faux. L'une des plus grandes améliorations de l'industrie au cours des 30 dernières années est que les compétences en communication sont désormais considérées comme absolument essentielles. Donnez-moi un programmeur fondamentalement compétent avec de grandes compétences en mathématiques ou un avec de grandes compétences en communication et c'est le gars avec des compétences en communication à chaque fois.
Jon Hopkins
+1 @Jon - Tout à fait d'accord. Les programmeurs qui ne parlent aux clients que dans le calcul lambda et la soupe d'alaphabet ne valent rien sur la majorité des projets.
Morgan Herlocker
1
@Skeith: Donc, vous avez seulement besoin de connaître la programmation et les mathématiques pour être un bon programmeur? Dans quel monde êtes-vous? Vous devez savoir comment utiliser un ordinateur, comment communiquer avec les clients et les autres programmeurs, comment écrire des documents, etc. Ce que vous n'avez pas à savoir, ce sont les mathématiques. Bien sûr, il y a un certain chevauchement entre les mathématiques et la programmation, mais il suffit de connaître la partie programmation.
Martin Vilcans
Quand j'étais au collège, j'ai suivi un cours de calcul en entreprise. Lors de la finale, j'ai terminé premier et j'ai obtenu un 100 (le professeur m'a noté juste là - il était impressionné d'avoir terminé correctement si rapidement). Pourtant, en tant que développeur de logiciels, j'utilise zéro math. Ce que j'utilise, c'est la logique pour comprendre le domaine des affaires, et j'utilise le charisme pour interagir avec les gens. Les langages de programmation ont suffisamment évolué pour que si vous pouvez bien écrire en anglais, vous pouvez bien coder. Attention: bien écrire en anglais est plus difficile que de programmer, parce que vous programmez sur base d'ADN.
Christopher Mahan
2

Il y a une différence entre "programmeur" et "vrai programmeur". Veuillez ne pas appeler HTML un langage de programmation, mais il y a beaucoup de "programmeurs HTML". Chacun de vous (programmeurs / développeurs) peut faire une expérience avec ses collègues - il suffit de "désactiver Internet (en fait, ne pas leur permettre d'utiliser les moteurs de recherche)", et vous verrez qu'une grande variété de "programmeurs" seront assis sans emploi. Ce qu'ils peuvent faire, ils savent juste que s'ils ont besoin, par exemple, de rechercher dans le texte, ils devraient "rechercher" la recherche de texte dans% language_name% ""? Ils ne peuvent pas répondre à cela - quelles sont les différences dans les algorithmes de Boyer-Moore et Knuth-Morris-Pratt.

Donc, IMO, programmer signifie résoudre des problèmes, connaître très bien au moins un langage de programmation avec sa «STL» et d'autres choses importantes. La programmation est un art, c'est une sorte de vie, ce n'est pas une chose que tout le monde peut faire.

Désolé pour plus de sarcasme que nécessaire, mais je pense que cet article dit mieux que moi.

Ai-je tort?

UPD: La chose principale et importante est la connaissance des principes fondamentaux, tels que les algorithmes, les structures de données, etc. Combien d'entre vous peuvent implémenter les bibliothèques / fonctions standard / etc. au cas où aujourd'hui serait supprimé accidentellement? IMO, le programmeur devrait utiliser du code «extraterrestre» développé / bien débogué (bibliothèques / frameworks / etc), mais devrait toujours pouvoir réinventer la roue!

Dehumanizer
la source
6
Mon seul problème avec cela est que je travaille en tant que programmeur (un bon programmeur, pas web / HTML / script) depuis 20 ans et que je n'ai aucune idée des algorithmes de Knuth-Morris-Pratt. Pour la plupart des programmeurs, ce type de théorie n'a pas d'impact sur leur vie quotidienne, car ces informations sont regroupées dans des bibliothèques.
Jon Hopkins
2
Les bibliothèques standard avec lesquelles je travaille ont des milliers de classes et des centaines de milliers de lignes de code. Êtes-vous en train de dire que je devrais pouvoir réimplémenter tout cela sans documentation? Sinon, vous devez clarifier la taille d'un objet avant qu'il ne devienne une roue.
Peter Taylor
6
Les humains n'ont pas la durée de vie requise pour apprendre à réinventer toutes les roues inventées jusqu'à présent, ni à réinventer les roues inventées en ce moment .
Macke
3
@Dehumanizer: J'espère être formé et avoir plus qu'un compilateur C à portée de main pour sauver le monde, sinon je serai foutu de toute façon. (BTW Pourquoi même un compilateur C? Pourquoi pas juste une clé USB, un oscilloscope et une pile 9V? Sérieusement ....)
Macke
1
Éteignez simplement leurs compilateurs et vous verrez que la plupart des gens restent assis pendant que les vrais programmeurs tapent le code machine directement dans un fichier!
Philip
1

Concernant VB étant facile à utiliser, et les programmeurs paresseux choisissant VB à cause de cela:

Je pense que VB est entouré d'un grand mythe d'être facile à utiliser. Ce mythe était à l'origine quelque peu vrai: à l'époque de 1991 à 1994, lorsque les dinosaures ont marché sur la terre, il n'y avait que deux vrais outils RAD autour, VB et Delphi. Ils étaient assez similaires, mais NOTEZ CECI: Delphi et VB étaient tout aussi faciles à utiliser! La seule différence notable entre eux était que VB avait une syntaxe complètement illogique et produisait des programmes incroyablement lents.

Les interfaces graphiques C / C ++ ont été écrites dans MFC ou dans l'API Win brute. VB était donc certainement plus facile à utiliser que l'alternative Microsoft. Ensuite, le moulin à rumeurs s'est déroulé comme suit:

  • VB est plus facile à utiliser que l'API Microsoft C / C ++ / Win. ->
  • VB est plus facile à utiliser. ->
  • VB est facile à utiliser. ->
  • VB est le plus simple.

Cette rumeur a ensuite perduré, même si Delphi a toujours été tout aussi facile, sinon plus facile, car Pascal est un langage sensé et logique.

À la fin des années 90, Borland a publié un équivalent C ++ à Delphi: C ++ Builder. Maintenant, il y avait 3 outils tout aussi faciles. À cette époque, les quelques arguments rationnels restants pour utiliser VB sont morts. Pourtant, le mythe persistait. "VB est le plus simple".

Ensuite, Java est arrivé et il y avait aussi plusieurs outils RAD pour lui (et pour sa version fiasco de Microsoft appelée J ++). Pourtant, le mythe VB a survécu.

Ensuite, Microsoft a également pris en charge RAD pour C ++, et a également proposé C #, tout en un seul gros goo appelé .NET. Étant donné que le mythe VB persistait, ils ont réussi à inciter les anciens développeurs VB à utiliser VB.NET au lieu de C ++ ou C #. Même si VB.NET était tout à fait non compatible avec les versions antérieures de VB.

Aujourd'hui, VB est un langage complètement redondant. L'outil RAD n'est pas plus facile que tout autre outil RAD. La syntaxe du langage est carrément horrible, si mauvaise qu'elle encourage en fait une mauvaise conception de programme et de mauvaises pratiques de programmation.

user29079
la source
merci maintenant je peux sembler plus justifié dans ma haine de VB en ajoutant une raison
Skeith
1

Il existe une grande variété d'activités regroupées sous la bannière de la «programmation», et un nombre toujours plus grand de travailleurs impliqués au niveau «technicien» de l'échelle. Vous n'avez pas besoin d'être capable d'écrire des compilateurs, ni même de sélectionner parmi un ensemble d'algorithmes pour résoudre un problème particulier pour créer un site Web en PHP. L'industrie / la société a besoin de beaucoup de personnes produisant lesdits sites Web (apparemment), et aussi d'un certain nombre de programmeurs travaillant sur des problèmes plus difficiles. Ce deuxième groupe n'est pas paresseux ou incompétent dans son ensemble, ou nos avions tomberaient en flammes, des distributeurs automatiques de billets distribuant des quantités aléatoires d'argent liquide, des machines à rayons X délivrant des doses fatales de rayonnement, les marchés financiers s'emballant, etc. à propos de ce dernier :-)

Jaybee
la source
1

Je pense que toutes les autres réponses ne font que jeter un coup d'œil sur le fait que ce n'est que la tendance généralisée qui va des langues de bas niveau aux langues de haut niveau.

Oui, l'industrie du logiciel passe des langues de bas niveau aux langues de haut niveau, l'a toujours fait et continuera probablement de le faire tant que nous construirons de meilleurs outils. Oui, cela pourrait être considéré comme paresseux, car vous avez dû travailler très dur pour faire des choses qui sont basiques par rapport à la norme d'aujourd'hui. Mais je ne dirais pas moins compétent. La compétence passe simplement de la mise en œuvre à la conception.

Low Level C'est quelque peu subjectif, mais à un niveau bas, vous travaillez plus près du matériel. Il y a moins de prise de main et d'hypothèses d'intention. Les outils de base sont présentés et faire avancer les choses est laissé au programmeur. Les langues de bas niveau sont venues en premier bien sûr, et sont généralement les outils de la vieille garde puisque les langues de niveau supérieur n'existaient pas au début. Il y aura toujours un développement de bas niveau. Mais je ne ferais pas de site Web en assemblage.

Niveau élevé L'objectif à des niveaux élevés est d'automatiser les fonctionnalités de base et de simplifier la programmation. Il abaisse la barre d'entrée pour les nouveaux programmeurs, accélère les tâches et standardise la façon dont nous représentons et traitons les données, souvent avec des frais généraux. Considérez une chaîne. Au début, quelqu'un utilisait probablement 1-26 pour az, et n'utilisait que 5 bits et devait simplement savoir quelle taille étaient ses mots. Ensuite, la norme ascii a été développée et nous avons eu des chaînes C avec un caractère de terminaison. Nous avons maintenant des objets qui gèrent les choses pour éviter les débordements de tampon et des sous-types spéciaux qui interdisent les caractères d'échappement. Ou une boucle. Une boucle "for" est toujours un niveau légèrement plus élevé qu'une boucle "while". Et une boucle "while" est vraiment juste une représentation d'une façon structurée d'appeler GOTO.

Également,

Les futurs programmeurs diront à l'ordinateur ce qu'ils veulent et le compilateur écrira le programme pour eux comme dans Star Trek.

Bienvenue dans le futur! C'est exactement ce que font les compilateurs. Autrefois, les gens devaient écrire le code machine à la main. Maintenant, nous avons automatisé cela et expliquons simplement à l'ordinateur comment écrire le code machine pour nous.

Philippe
la source
1

Je pense que quelque part en chemin, vous avez perdu de vue ce que les programmeurs sont payés pour faire.

Notre livrable n'est pas du code, c'est un logiciel qui fonctionne.

Nous ne construisons pas de meubles où les queues d'aronde découpées à la main confèrent en quelque sorte une valeur supplémentaire en raison de tout le "savoir-faire" manuel qui y est entré.

Nous sommes payés pour résoudre des problèmes commerciaux sur des ordinateurs). Si vous pouvez livrer le même produit en moins de temps pour moins d'argent, alors je pense que c'est notre OBLIGATION d'abandonner la prétention que les programmes C ++ sont supérieurs simplement parce qu'ils sont plus complexes à construire.

JohnFx
la source
* il s'agit d'un logiciel gonflé, (parfois)
kagali-san
0

Le ratio (développeurs de programmes principaux / nombre de développeurs) diminue car:

  • Les outils deviennent plus faciles, cela signifie que des talents plus petits sont nécessaires pour le même problème

  • Les gens s'habituent aux technologies informatiques, ils sont plus disposés à dépenser de l'argent pour des outils personnalisés

  • La littérature informatique est en croissance exponentielle, la spécialisation et la division du travail augmentent donc il n'y a plus de gens "aristotéliciens" qui parlent de tout (en fait ils n'ont pas besoin de tout savoir à cause des couches d'abstraction)

  • Plus d'emplois offerts, le filtre est desserré

  • Plus d'automatisation est nécessaire à chaque cycle de vie, la demande augmente et l'offre n'est pas suffisante

  • Le ratio développeur / population augmente.

    Donc, les gens ne deviennent pas plus paresseux et moins compétents, la moyenne tombe parce que l'informatique est un domaine plus ouvert maintenant.

oguzalb
la source
0

Beaucoup de réponses disent pourquoi réinventer la roue et je suis d'accord avec cela, mais quand il y a des roues disponibles, les gens ne prennent pas la peine d'apprendre à fabriquer la roue.

Vous ébranlez tout votre argument via le fait que les roues sont toujours fabriquées. Je vois votre point, mais j'ai remarqué que dans n'importe quelle discipline, il y a suffisamment de gens qui sont intéressés par les trucs de bas niveau pour continuer. Par exemple, j'utilise Qt pour créer des interfaces graphiques. Cet outil n'est pas arrivé par magie, les gens ont développé le lien entre les trucs de bas niveau et les trucs que je fais. Est-ce que moins de gens comprennent les choses de bas niveau, oui. Moins de gens peuvent également tuer leur propre nourriture ou réparer leur propre voiture, mais la société parvient à survivre.

Chance
la source
0

Avant les années 40, les ordinateurs étaient des circuits câblés. Ensuite, Von Neuman a eu l'idée des emplacements de mémoire stockés. Je suis sûr que ces programmeurs du MIT pensaient qu'il allait dégrader leur métier en quelque chose de trop facile. Vint ensuite l'assemblage, puis FORTRAN, puis ada, puis C, puis c ++, puis java et ainsi de suite. Le fait est que le but d'une langue est de permettre une abstraction de plus en plus poussée. Cela a toujours été le but et c'est la raison pour laquelle le c ++ s'est propagé, puis java après. Mon plus gros bœuf est que les universités n'enseignent plus rien aux étudiants sur les ordinateurs. Je n'engage pas de programmeurs c # s'ils ne connaissent pas le c ++ comme le dos de leur propre main. Pourquoi? Parce qu'il est trop facile d'être un mauvais programmeur, le langage devient de plus en plus abstrait. Ils doivent comprendre les pointeurs, la gestion de la mémoire, la liaison dynamique, etc. . à l'intérieur et à l'extérieur avant de pouvoir comprendre C # au niveau auquel je leur fais confiance pour contribuer à notre base de code. Je leur fais également du mal à créer des fichiers avant de leur permettre d'utiliser Visual Studio. Cela dit, j'aime C # et un bon IDE, mais ils sont bons comme outils lorsqu'ils sont bien compris. À mon avis, une abstraction est plus utile lorsque vous comprenez les détails qui sont abstraits - c'est une idée très ancienne, voir Thomas d'Aquin sur la relation de l'abstraction aux détails.

Je pense qu'un autre bon exercice pour les développeurs débutants est de leur faire écrire quelques applications en utilisant l'API Windows. Ensuite, après l'avoir terminé, demandez-leur de le rendre orienté objet où chaque forme hérite de votre classe de fenêtre générique. Demandez-leur d'encapsuler la boucle d'événements et de remettre des pointeurs de fonction à leur classe de formulaire. Alors dites bon travail, Microsoft l'a déjà fait pour vous, son appelé System.Windows.Forms. S'amuser.

S'ils doivent être des développeurs Web, demandez-leur d'écrire quelques programmes CGI afin qu'ils comprennent le POST, le GET, etc., puis de créer un script pour la page. Cela rend ASP.NET et PHP beaucoup plus logique.

S'ils travaillent sur quelque chose de niveau inférieur sur un réseau, faites-leur écrire quelques applications à l'aide de sockets avant de les présenter aux bibliothèques qui l'ont déjà fait.

J'ai trouvé que cela améliore la productivité à long terme car cela leur donne les outils et les intuitions correctes pour résoudre leurs propres problèmes.

Les universités sont censées faire cela, mais ce n'est pas le cas, nous le devons.

Cela dit, je conviens qu'il devient de plus en plus difficile de trouver des programmeurs qui valent vraiment la peine de sortir de l'université, principalement parce qu'ils n'ont pas été éliminés en étant obligés d'écrire des algorithmes récursifs et des listes chaînées. De plus, ils n'ont généralement suivi que des cours Java ou .NET et ne comprennent donc rien à la façon dont ils fonctionnent. Pourtant, l'abstraction est très utile lorsqu'elle est correctement utilisée.

Jonathan Henson
la source
0

(..) tôt ou tard, ce que nous appelons la programmation

Je suis en désaccord avec ce point.
Sans savoir ce qu'est la conscience, le travail de programmeur est sûr.

Voici à quoi ressemblent actuellement les "machines à penser" :

-Arrêtez de changer de sujet!
-Je pensais que notre amour était spécial.
-Arrêtez de changer de sujet!
-Je ne change pas de sujet.
-Tu es! J'essaie de parler de votre incapacité à comprendre de quoi nous parlons.
-Pas ce n'est même pas proche. ma chanson préférée des beatles est à travers l'univers. Qu'est-ce qui est à toi?

Je crois que seuls les programmeurs qui n'obtiennent pas ce point sont un peu condamnés.

Par exemple, la réponse du déshumaniseur :

Ils ne peuvent pas répondre à cela - quelles sont les différences dans les algorithmes de Boyer-Moore et Knuth-Morris-Pratt.

Et avec "ce point", je veux dire - c'est mal d'essayer de dépasser l'ordinateur à ce qu'ils sont les meilleurs - des algorithmes. Au lieu de cela, le programmeur est censé aider l'ordinateur avec le contexte, racontant les problèmes que nous essayons de résoudre.

Les outils eux-mêmes ne résolvent pas les problèmes, ils rendent simplement (parfois) les programmeurs plus efficaces.

C'est comme avec: "les armes à feu ne tuent pas, les humains le font".

Arnis Lapsa
la source
1
Si je ne me trompe pas, Cleverbot ne se contente-t-il pas de répéter ce que les gens lui ont déjà dit?
Andrew Arnold
0

Absolument pas. D'après mon expérience, l'utilisation des bons outils de développement permet un développement rapide des applications sans sacrifier la qualité. En fait, je dirais que, pour la plupart, la qualité a augmenté en raison de notre «dépendance excessive aux outils». De plus, les outils de développement peuvent réduire la courbe d'apprentissage et initier davantage de personnes à la programmation. Bien sûr, cela a un inconvénient, car il y a beaucoup plus de programmeurs novices, mais dans l'ensemble, cela facilite le processus créatif et fait avancer la technologie.

Aviateur caféiné
la source
0

Une dépendance excessive à l'égard des outils implique-t-elle que vous êtes paresseux?

De manière générale, «non»; mais il y a une grosse mise en garde.

J'ai commencé à programmer en C ++ à uni et j'ai adoré. Lors du prochain mandat, nous sommes passés au VB6 et je détestais ça.

Je ne pouvais pas dire ce qui se passait, vous faites glisser un bouton vers un formulaire et l'ide écrit le code pour vous.

Oui en effet. Votre expérience à uni correspond à la mise en garde que j'ai mentionnée.

Si vous ne savez pas quel problème votre outil résout, ou si vous êtes incapable de dépanner des choses lorsque votre outil a ses propres problèmes, c'est un énorme drapeau rouge. Cette circonstance n'implique pas nécessairement la paresse, mais elle implique probablement l'inexpérience.

Jim G.
la source
-2

Je pense qu'il y a 2 versions de programmeurs. Il y a des programmeurs qui programment juste pour faire le travail à cause peut-être d'une échéance ou peut-être juste pour être plus productif. Je dirais qu'ils étaient paresseux. Je crois simplement qu'ils n'ont aucun intérêt à "comment" un ordinateur fait ce qu'il fait ou "comment" un programme fait ce qu'il fait.

Ensuite, il y a des programmeurs passionnés, comme moi. Les programmeurs passionnés, comme moi, aiment savoir exactement ce qui se passe dans le CPU. Tout comme un bon psychologue essaie de comprendre ce qui se passe dans la tête humaine, le progchologue, comme moi, veut savoir ce qui se passe à l'intérieur du CPU. Nous apprenons, disséquons et analysons donc un programme et utilisons des outils tels que le réflecteur et les désassembleurs pour essayer de comprendre comment fonctionne un programme.

Icemanind
la source
Je ne suis pas d'accord. Différentes personnes s'intéressent à différentes choses. Certaines personnes s'intéressent davantage à la programmation de niveau inférieur et aiment savoir ce qui se passe dans le matériel. D'autres personnes sont de plus haut niveau et s'occupent principalement des applications. Pensez-vous que quelqu'un qui écrit du code pour, disons, Facebook, se préoccupe de ce qui se passe avec le CPU ou du fonctionnement des pilotes? Dire que, par coïncidence, les gens qui sont intéressés par les mêmes parties de la programmation que vous, sont les passionnés n'a aucun fondement logique.
Chance
-3

J'ai un espoir silencieux que les choses vont changer. Les processeurs n'évoluent pas beaucoup verticalement, seulement horizontalement, et ARM, etc. vont être limités en ressources dans un proche avenir.

Il est fort possible que la demande de programmation sans glisser-déposer diminue et nous verrons des emplois plus intéressants.

Codeur
la source