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?
la source
Réponses:
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.
la source
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?
la source
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?
la source
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.
la source
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
la source
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:
Je pense que c'est parfaitement logique.
la source
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!
la source
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):
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.
la source
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.
la source