On m'a demandé d'embaucher une personne de notre service informatique qui n'a aucune expérience en programmation, mais qui est une personne intelligente et capable et qui l'aide à passer à la programmation, disons à un développeur débutant prenant en charge des applications .Net existantes. Je crois vraiment que cette personne peut le faire, mais je cherche le moyen le plus rapide de le faire passer à la vitesse supérieure. J'ai beaucoup d'idées, mais je voulais voir ce que les autres pensaient. Je sais que cela dépendra aussi énormément de la façon dont il apprendra, mais je parle en général.
Donc, la question: quels sont, à votre avis, les meilleurs moyens d’informer rapidement un non-développeur de son développement (.Net dans ce cas)?
Réponses:
Je prescris généralement la même séquence à quiconque veut apprendre la programmation. C'est très théorique, mais cela pose de bonnes bases. Cela devrait prendre trois ou quatre mois d’études à temps plein, mais la programmation n’est pas quelque chose que vous apprenez du jour au lendemain.
Si vous ne pouvez pas passer à travers cette séquence, vous ne pourrez pas programmer, vous pouvez donc tout aussi bien abandonner maintenant.
Ma règle est la suivante: parcourez ces trois livres à la force des choses, si nécessaire. Posez toutes les questions que vous avez, mais seulement après avoir eu du mal à le résoudre vous-même. Si vous pouvez vous débrouiller dans ces trois livres, félicitations, vous êtes programmeur, je peux maintenant vous jeter à PERL EN 15 MINUTES ou à tout autre déchet se trouvant à la librairie du Big Bookcase of Java et vous vous en sortirez bien. Si vous ne pouvez pas lire ces trois livres, abandonnez, rentrez chez vous, vous ne l'obtiendrez jamais.
Je ne pense pas que vous ayez besoin d'apprendre C et Scheme, pour être honnête. Ils ne sont qu'une base pour l'apprentissage futur. Ces deux livres assez simples sont à la fois très simples en surface (C et Scheme sont des langages super faciles) mais ils approfondissent le véritable art de la programmation sans perdre de temps en confusion de syntaxe; ils sont donc excellents pour commencer à recâbler votre cerveau pour être un bon programmeur.
Les tentatives faites pour utiliser un raccourci et accéder directement à l'apprentissage de la chose exacte que vous voulez apprendre maintenant (par exemple, en commençant par C # et ASP.NET) sont vouées à l'échec.
la source
up to speed quickly
.Le meilleur moyen de mettre rapidement les non-développeurs au courant est de les inspirer !
Pour avoir du succès, le candidat doit être au moins curieux, sinon passionné , de programmation (quelle que soit la plate-forme).
Bien que je sois d’accord avec Joel dans le cas du candidat idéal, je ferais bien de ne pas entasser trop de théorie dans un esprit faible, cela ne ferait que les décourager. S'ils sont inspirés, curieux et, espérons-le, passionnés, ils voudront comprendre la théorie après avoir vu la magie.
Je suis tout à fait d'accord avec @karudzo - la réalisation de soi et un examen constructif peuvent être très inspirants.
la source
Le moyen le plus rapide pourrait être de lui donner le temps qu'il faut , bien que cela puisse facilement durer un an ou deux.
Bien sûr, il semble facile de lui apprendre un langage simple (C #, s’il doit faire des choses .NET), mais l’apprentissage d’une langue n’apprend pas à programmer.
S'il n'a jamais programmé, alors, outre la syntaxe et la bibliothèque d'au moins une langue, il devra en apprendre davantage sur les tableaux, les listes chaînées, le modèle de compilation de la langue qu'il apprend, la modularisation, la gestion des ressources, les paradigmes, les motifs, etc. O-notation ... - l'entier enchilada. C’est beaucoup de choses à explorer, et la plupart d’entre nous ont mis plusieurs années à apprendre ces bases et encore plus à devenir un véritable programmeur professionnel.
Il existe des documents qui couvrent beaucoup de cela (comme le dernier livre de Stroustrup qui enseigne la programmation en C ++, plutôt que le langage C ++), mais il n'y en a pas beaucoup et rien qui ne couvre tout cela. Donc, le gars doit être disposé à apprendre et à lire beaucoup de livres et d'articles.
Pour ce faire, je n'ai pas de programme complet à coller ici. (Désolé.)
Ce que je recommanderais cependant, c'est de commencer par lui apprendre un langage de programmation, afin qu'il ait la chance de faire des progrès rapides et d'obtenir des résultats encourageants. Il existe de nombreux livres pour enseigner de telles langues, choisissez-en un que vous connaissez bien. Si le livre contient de nombreux exercices et qu'il est prêt à les faire, préparez-vous à passer beaucoup de temps à l'aider. Si le livre n’en contient pas, commencez à penser aux vôtres, mais soyez prêt à les adapter à son niveau / vitesse de compréhension.
Si cette première langue n'était ni le C ++ ni le C ++, il devrait en apprendre un prochain. K & R est bon pour cela, tout comme le TCPL de Stroustrup ou, s'il peut (avec votre aide), faire face à une courbe d'apprentissage abrupte, Koenig / Moo. La raison pour laquelle je recommanderais ceci est que, une fois que vous connaissez C ou (IMO de préférence) C ++, il est relativement facile de choisir l'un de ces dérivés C comme C #, Java, ObjC ...
Pour le reste, fournissez-lui un flot constant de bons livres et articles. Je ne pense pas que ce soit très utile si nous en suggérons trop, car 1) cela doit correspondre à la culture de votre entreprise et 2) vous devez vous sentir à l'aise de lui dire de l'apprendre.
la source
Je ne les lancerais pas sur .NET. J'ai commis cette erreur trop de fois. Ne laissez pas un employeur vous obliger à créer un programmeur incompétent à cause du temps. .NET peut être une plate-forme de développement rapide, mais il ne force pas les développeurs à apprendre la programmation. En C # seul, vous constaterez qu'un développeur reste bloqué sur les types de référence, la durée de vie des objets, ils laissent d'énormes fuites de mémoire (oui, c'est possible dans .NET), et leur conception est médiocre. Il serait bien mieux de les démarrer en C ou C ++ (probablement c ++ car ils devront utiliser les concepts de la POO), puis dire quelque chose comme: "Ce ne serait pas bien si votre mémoire était gérée pour vous, tout était objet -orienté, et vous n'avez pas eu à gérer tous ces pointeurs méchants? " Voici C # et JAVA. S'ils maîtrisent le c ++, ils vaincront tous les deux en une semaine ou deux chacun. Je recommande le régiment de Joel. C’était la liste que mon professeur CS 101 m’avait fournie et j’étais beaucoup mieux quand j’ai eu recours à l’analyse numérique. Cela vous permettra également de savoir plus tôt si le candidat coupe la moutarde ou non. De plus, une fois que vous aurez c et c ++, vous comprendrez automatiquement c # et java après avoir lu l’introduction aux livres. Non seulement vous les comprendriez, mais vous les comprendriez mieux que quelqu'un qui ne connaissait pas c et c ++.
la source
hWND
des années 80, n'est-ce pas? Clairement, vous utilisez plutôt une belle abstraction (qui est un débat complètement différent). Bien sûr, savoir comment cela fonctionne sous le capot est agréable, mais vous n'avez pas besoin de C # .NET pour l'abstractionDonnez-leur quelque chose de simple, mais utile à résoudre. Laissez-les tâtonner un peu et aidez-les à le peaufiner. Rien de tel qu’un petit exploit pour les encourager (bien que quelqu'un ne veuille pas programmer
la source
Programmation en binôme. Laissez-les vous occulter pendant que vous écrivez votre propre code - n'importe quel code. Quelques heures plus tard, demandez-leur de saisir votre code, pendant que vous leur dites quoi faire, touche par touche, même si nécessaire. Répondez à quelques-unes de leurs questions, mais pas tant que cela vous ralentisse beaucoup. Laissez-les tremper. Ils trouveront aussi vos fautes de frappe et plus de vos insectes que vous ne le pensez. Dans quelques jours, ils pourront commencer à "naviguer" en vous indiquant le code à saisir pour des tâches similaires à celles qu'ils ont déjà vues.
En un mois, j’ai appris beaucoup de choses sur ce que j’ai appris en tant que développeur et j’ai enseigné à plusieurs autres nouveaux développeurs, dont l’un a pu prendre la relève pour moi en tant que développeur principal après plusieurs mois. Quand nous avons commencé à travailler ensemble, il n'avait jamais écrit une seule ligne de code.
la source
Donnez-lui une bonne idée (visual studios, express est toujours bon). Enseignez-lui les 60% de syntaxe habituels (laissez tomber le rendement, linq, les énumérations, les attributs, etc., enseignez les classes, virtuel et substitut). Passez du temps sur le débogueur (en particulier callstack). Puis, dites-lui de rechercher "msdn functionanme" sur Google à chaque fois qu'il a besoin d'aide, ce qui devrait lui permettre de démarrer rapidement.
Apprenez-lui également à ne jamais attraper et avaler une exception. Dites-lui qu'il doit le relancer ou le connecter!
Bonus: lui apprendre à sérialiser les données JSON afin qu'il puisse facilement lire / écrire dans un fichier. Une base de données est excessive et trop à apprendre et vous ne voulez pas qu'il écrive des formats de fichier personnalisés, bien que je puisse laisser une entrée par type de ligne de fichier passer pour enregistrer / charger un tableau de chaînes comme acceptable.
la source
Je sais que beaucoup de gens ont parlé de langues et de livres pour ces langues. Je diffère.
La programmation consiste à apprendre à penser de manière analytique. Tout d’abord, la personne devrait être capable de penser et de présenter l’algo sur un bout de papier, décrivant le problème. Vous devez les guider pour qu'ils acquièrent la bonne technique de réflexion.
Viennent ensuite les fondamentaux de la langue. Faites-les commencer sur la langue de choix. Donner un problème à programmer.
Une fois cette première coupe terminée, demandez-leur de se familiariser avec les principes fondamentaux et les modèles de conception de CS.
Maintenant, demandez-leur de reprogrammer le problème précédent avec ces nouveaux concepts.
la source
Commencez-le par les bases: variables, boucles, boucles, boucles, boucles, tableaux, apprenez les bases, imprimez à l'écran, faites des calculs simples. Déplacez-vous dans les méthodes et la POO de base, comme par exemple comment créer une classe, montrez-lui le pourquoi pas simplement le comment.
La langue importe peu, mais choisissez quelque chose que vous connaissez et qui est très abstrait (java, python, etc.). Ainsi, il n'aura pas à s'inquiéter de choses comme la gestion de la mémoire, les pointeurs, etc. ... Enseignez les bases de récursivité, tours de hanio ou recherche récursive de répertoires.
Apprendre à programmer est une bonne ressource gratuite sur la programmation Ruby. Rendez-le amusant, facile et amusant.
la source
Donnez-lui des défis et faites-lui apprendre à trouver des ressources pour résoudre le problème lui-même.
Si vous pouvez lui apprendre à trouver des réponses et à être autonome, il apprendra naturellement à bien programmer. La pensée critique et la débrouillardise sont deux compétences clés pour un programmeur.
À la fin de la journée, la passion / intérêt sera certainement un facteur clé dans la réussite de leur apprentissage rapide. S'il n'a pas ou ne détecte pas "le bogue", cela peut être un processus lent et / ou douloureux. S'il attrape le virus, il sera en retard sur le codage, en dehors des heures de travail, comme si de rien n'était.
la source