Un nouveau programmeur devrait-il se concentrer sur une seule technologie jusqu'à ce qu'il soit compétent? [fermé]

10

Ok, j'enseigne à un copain comment programmer depuis un moment maintenant. C'est un apprenant très rapide, et il est assez bon en programmation jusqu'à présent. Cependant, il a un "problème" que je continue d'essayer de corriger.

Il intervient et commence à faire de la programmation de haut niveau sans apprendre certaines notions de base (il a créé une application Web complète mais ne connaît toujours pas la pagination ou la gestion de session).

Ce n'est pas le problème cependant. Il continue de sauter vers les nouvelles technologies (Node.js, MongoDB, EC2, etc.). J'ai essayé de lui dire qu'il devrait apprendre certaines des bases de son RDMS de choix (MySQL) car il l'utilise tous les jours avant d'investir beaucoup de temps dans l'apprentissage des bases de MongoDB (et probablement de passer à quelque chose de nouveau).

Suis-je celui qui a tort ici, ou devrait-il essayer de se concentrer sur une chose à la fois et devenir vraiment bon dans ce domaine?

Brandon Wamboldt
la source
6
Cela semble être une bonne occasion d'exiger que son application Web prenne en charge les sessions et la pagination. Cela ne le ferait-il pas l'apprendre?
En outre que la technologie unique devrait apprendre?
@ ThorbjørnRavnAndersen Pas tellement une seule technologie, mais la pile LAMP est ce avec quoi il travaille tous les jours. Je pense qu'il devrait au moins apprendre toutes les informations de base / pertinentes à son travail sur MySQL, Apache, PHP et JavaScript.
Brandon Wamboldt
1
Ensuite, vous avez essentiellement répondu à votre propre question par «non».
1
N'est-il pas déjà en train d'apprendre plusieurs technologies comme le web, la base de données, etc. à la fois? Quelles sont les limites de ce qui constitue une technologie ici?
JB King

Réponses:

18

Personnellement, je pense que ce peut être une excellente idée de goûter à différentes technologies et langues lors de l'apprentissage de la programmation. Se concentrer sur une technologie a l'avantage évident de vous rendre très bon dans ce domaine, mais l'inconvénient évident de ne connaître qu'une seule technologie.

Mais je pense que le plus subtil inconvénient le plus important est que les langages et les cadres viennent généralement avec une idéologie. Il existe de nombreux programmeurs (peut-être la plupart des programmeurs) qui n'appliquent qu'une seule idéologie dans tout ce qu'ils programment. Cela est souvent parce qu'ils ont appris un cadre dans une langue vraiment bien et maintenant ils ne peuvent pas voir quoi que ce soit sans ces lunettes sur.

Surtout pour quelqu'un qui apprend juste à programmer, je ne pense pas vraiment que ce soit un problème de vouloir essayer ce qui existe, et d'attendre de se concentrer sur quelque chose jusqu'à plus tard. Après tout, il sera difficile d'écrire quelque chose de substantiel sans bien connaître décemment une technologie.

Kris Harper
la source
2
+1 pour le deuxième paragraphe. J'ajouterais que l'examen de différents langages, cadres et API peut vous en apprendre beaucoup sur POURQUOI les concepteurs ont choisi d'implémenter un langage / cadre / API donné comme ils l'ont fait. Donner à l'apprenant une compréhension plus approfondie de la programmation et des logiciels dans leur ensemble. Au moins, à mon humble avis
Jamie Taylor
+1 Dans certaines situations, vous apprendrez à vous concentrer, par exemple lorsque vous avez un "vrai" travail de programmation. Mais comment obtenir un emploi si vous n'avez été exposé qu'à un seul cadre? Apprenez à écrire quelque chose dans plus d'un framework / bibliothèque afin de pouvoir remplir votre CV et montrer que vous n'êtes pas biaisé par une technologie particulière. ;-) Vous pourrez apprendre des choses comme la pagination et les RMDB plus tard une fois que vous aurez acquis un contexte réel pour le faire.
Spoike
@Spoike Il a un "vrai" travail de programmation, d'où la raison pour laquelle j'essaie de le faire se concentrer sur la technologie qu'il utilise tous les jours pour ce travail
Brandon Wamboldt
1
@RougeCoder: Donnez-lui des tâches appropriées (page cette liste gigantesque, filtrez les éléments, dessinez un diagramme avec des échantillons groupés, etc.) pour lui permettre d'apprendre à faire les concepts que vous voulez qu'il sache. S'il n'y a pas de telles tâches, il n'y a pas de contexte pour lui de faire durer cette connaissance.
Spoike
1
J'avais l'habitude de penser que c'était BS, ou du moins une exagération, quand les gens disaient des choses comme "l'apprentissage de la programmation fonctionnelle vous fait penser différemment". Il s'est avéré qu'ils étaient en train de réduire l'effet qu'il a sur votre code. Mon code est déjà complètement différent, et je ne maîtrise pas encore le langage fonctionnel de mon choix et je n'essaie pas de changer la façon dont j'écris du code. C'est vraiment une révélation.
Steven Evers
5

Il y a un bon raisonnement des deux côtés de cette question. Connaître « suffisamment » de nombreuses technologies différentes est certainement précieux. Connaître " un peu " beaucoup de technologies différentes? Pas tellement.

Une connaissance approfondie de technologies particulières peut certainement être utile - SI la demande est constante. Connaître " tout ce qu'il y a à savoir " sur une technologie particulière? ... très probablement exagéré.

Donc, tout est dans la balance. S'il finit par créer de merveilleuses applications avec nosql, pourquoi devrait-il connaître la différence entre le moteur InnoDB et le moteur MyISAM?

pbr
la source
Eh bien, la différence entre InnoDB et MyISAM réside essentiellement dans les transactions. S'il ne comprend pas les transactions, quelle chance a-t-il de travailler correctement avec des concepts comme la "cohérence éventuelle"?
Michael Borgwardt
Pardon? Personne n'a dit qu'il ne comprenait pas les transactions, et ce que j'ai écrit n'impliquait pas du tout cela.
pbr
3

Je suis d'accord en partie. Il a besoin de connaître les principes sous-jacents - mais il n'a pas besoin de simplement s'asseoir sur une chose et de devenir vraiment bon dans ce domaine. Personne ne le fait.

S'asseoir avec une chose et devenir vraiment bon

Je travaille actuellement avec C # et Microsoft XNA pour créer un jeu. J'apprends beaucoup sur XNA au fur et à mesure, et bien que je sois déjà assez compétent avec C #, mes connaissances se développent petit à petit (aujourd'hui j'ai appris les contraintes sur les paramètres de type ).

Cependant, je n'ai pas besoin de devenir «vraiment bon» en XNA ou en C #. Si je devais terminer mon projet maintenant et passer à autre chose et ne plus jamais utiliser l'un de ceux-ci, je serais complètement satisfait et mon apprentissage continuerait ailleurs.

Les principes sont cependant importants

Au moins, je comprends les principes sous-jacents. Quand je crée des choses en C # et XNA, je comprends ce que je fais - et si je ne le fais pas, j'apprends à ce sujet.

Si j'écrivais la pagination, je comprendrais comment fonctionne la pagination. Si votre ami a créé une pagination et n'a aucune idée de comment cela fonctionne, c'est un problème. S'il n'a pas créé la pagination, il n'y a aucune raison pour qu'il le sache.

Le problème ici est: sait-il ce que le @ $ #! il fait, ou est-il un programmeur qui ne sait pas comment programmer?

doppelgreener
la source
Vous soulevez de bons points. Le problème, c'est qu'avec certaines choses, il sait ce qu'il fait, mais avec d'autres choses, il ne le fait pas (je pense qu'il ne veut tout simplement pas l'apprendre, alors il continue de le copier à partir d'autres projets). Par exemple, il a écrit la pagination, je l'ai parcourue morceau par morceau, mais il ne comprend toujours pas. Je sais qu'il pourrait le comprendre, car c'est un concept super simple, et il a fait des trucs beaucoup plus complexes.
Brandon Wamboldt
Oui, et c'est un problème. S'il écrit du code, il ne comprend pas qu'il est à mi-chemin d'être un programmeur copier-coller et d'être un programmeur qui n'a aucune idée de ce qu'il fait.
doppelgreener
3

Je suppose qu'il essaie d'autres langues parce qu'il a quelque chose qu'il veut construire. Vous pouvez toujours revenir à un langage ou à un framework et en savoir plus.

Il y a une fine frontière entre apprendre la théorie / construire une fondation et essayer de rester motivé.

Au moins, il n'est pas coincé dans une seule langue. Parfois, on prend le bien avec le mal.

JeffO
la source
3

Je trouve son attitude comme un atout plutôt que comme un passif. Sa capacité à faire des recherches est supérieure à la moyenne. Sa courbe d'apprentissage est également peu profonde. Pourquoi ne pas exploiter ces traits si vous voulez qu'il apprenne quelque chose.

Son esprit curieux est toujours en mouvement, pourquoi ne pas lui donner des indications. Commencez par lui dire pourquoi la pagination est importante et essentielle. Laissez-le jeter un œil aux sites Web avec pagination et aux sites Web sans ceux-ci.

Que diriez-vous de donner une critique constructive à ce qu'il fait. "Wow, vous avez fait quelque chose de bien, mais ne serait-il pas préférable de le faire de cette façon en mettant l'accent sur l'optimisation et les meilleures pratiques.

Je pense que faire une comparaison entre une bonne pratique et une mauvaise pratique peut vraiment stimuler son esprit.

Ne le limitez pas, il finira par trouver quelque chose qu'il voudrait et s'installera avec pendant un certain temps. Si j'étais vous, je lui fournirai beaucoup de matériel d'apprentissage sur des choses qui le passionnent.

Je pense qu'il fait l'approche descendante alors que vous voulez d'autre part qu'il fasse une approche ascendante

Dorward Villaruz
la source
1

Pourquoi est-ce mauvais?

Au contraire je pense que c'est très bon! Il montre de la curiosité et un désir d'apprendre. De plus, il veut trouver le bon outil pour le bon travail! Mieux que de s'en tenir à une technologie de premier choix inadéquate. ;)

En fait, je le fais également, en tant que programmeur chevronné. Et je le recommande. Chaque fois que j'ai un nouveau projet, mon comportement est le suivant:

  1. explorer (les technologies potentielles qui peuvent être utiles)
  2. expérience (avec celles qui semblent prometteuses)
  3. choisissez vos technologies (ou expérimentez un peu plus loin jusqu'à ce que vous sachiez)
  4. respectez-la (développez votre application et faites-la passer)

Je pense que c'est parfaitement logique.

dagnelies
la source
1

Personnellement, si quelqu'un devait se concentrer uniquement sur une technologie, je dirais que ce devrait être C # / Java, utilisé avec SQL.

À partir de là, je pense que vous pouvez vous adapter à n'importe quelle autre technologie.

Mais s'en tenir à une technologie pourrait être limitatif si un homme veut entrer dans l'environnement de l'entreprise.

Idéalement, une plate-forme orientée objet, une plate-forme mobile, une plate-forme Web, puis une très bonne connaissance de SQL (ou de tout autre environnement db).

Et les bases d'abord, sinon il SERA coincé plus tard!

Pierre Pretorius
la source
0

Ce n'est pas mal s'il est un débutant en programmation.

Il verra comment certaines choses fonctionnent. Mais s'il ne comprend pas ce qu'il fait, il vaut mieux ne pas le faire du tout.

J'ai eu ce problème avec moi-même, je veux tout savoir Java, C, C ++, C #, Phyton, ASP.NET ... etc mais j'ai réalisé que je ne peux pas tout savoir, donc je me suis concentré sur quelques choses et c'est beaucoup meilleur.

Alors que doit-il faire (le conseiller):

  1. Pensez à ce que vous voulez faire
  2. Explorez toutes les options
  3. Trouvez ce qui vous convient
  4. Apprend le
  5. N'arrêtez jamais d'apprendre

Je ne serais pas d'accord avec @arnaud si vous explorez et apprenez toujours de nouvelles choses quand un nouveau projet est devant vous (enfin pas complètement). Il faut trop de temps pour explorer et apprendre de nouvelles choses encore et encore et certains projets ont une limite de temps. Mais d'un autre côté, si vous avez besoin d'apprendre de nouvelles choses simples, c'est ok: D.

Temps infini
la source
0

Je suis d'accord avec vous, il est parfois facile d'acquérir une connaissance superficielle d'un cadre, d'une technologie ou d'un langage particulier, mais d'avoir une vraie compréhension de son mieux pour s'impliquer dans un développement du monde réel jusqu'à son terme et le maintenir - devenir quelqu'un qui les autres venez pour des conseils. Il est préférable de devenir un cric de tous les métiers, maître d'un seul plutôt qu'un simple cric de tous les métiers, maître de rien . Cela dit, je ne le découragerais pas d'apprendre de nouvelles choses, car il a manifestement un bon niveau d'enthousiasme.

dodgy_coder
la source