Maîtriser un langage de programmation en ne programmant pas?

9

L'informaticien Peter Norvig a soutenu dans son essai Teach Yourself To Program in 10 Years que vous avez besoin d'environ 10 000 heures de pratique.

Mais Jeff Atwood a soutenu dans son article Comment devenir un meilleur programmeur en ne programmant pas qu'il croit que la seule façon de devenir un meilleur programmeur est de ne pas programmer.

Ces articles sont en opposition. Existe-t-il des preuves scientifiques pour prouver l'approche de Jeff Atwood?

bywronski
la source
12
Je ne vois pas du tout comment ils sont contraires du tout, en regardant au-delà des titres. Les deux sont importants, mais en fait la programmation et le travail sur les compétences hors programmation utilisées au travail. Ni l'un ni l'autre ne dit que vous ne devriez pas faire l'autre. Ils disent chacun qu'une chose est importante en plus de l'autre.
Servy
2
Déplaçons les méta-commentaires en méta, s'il vous plaît. meta.programmers.stackexchange.com/q/6137/53019

Réponses:

28

Vous manquez le point.

Jeff Atwood dit qu'être un excellent programmeur nécessite plus que de simples compétences en codage. Cela nécessite également d'être un bon concepteur, de bien travailler avec d'autres personnes et, en général, de devenir un meilleur penseur et résolveur de problèmes.

La plus grande compétence manquante est quelqu'un qui est à la fois bon dans la compréhension de l'ingénierie et qui a de bonnes relations avec les ingénieurs du noyau dur, et fait le lien avec le travail avec les clients.

-- Bill Gates

Le point de Peter Norvig est que vous ne pouvez pas simplement vous procurer une copie de "Devenir un programmeur maître en 24 heures" et vous attendre à ce que cela fonctionne. Mais c'est exactement le nombre de personnes qui posent des questions sur Stack Overflow qui semblent approcher la programmation. Ils pensent pouvoir charger Eclipse, apprendre quelques mots clés et écrire les prochains Angry Birds. Ça prend un peu plus que ça.

Robert Harvey
la source
5
Non, les oiseaux en colère sont probablement comme 2 ou 3 mots-clés répétés ad nauseum avec des photographies drôles d'oiseaux. Oui. C'est une base de données pour les ornithologues, non?
Jimmy Hoffa
Eh bien, mais d'une certaine manière, le point de Peter Norving se réfère au fait de "maîtriser" ne pas connaître de manière superficielle (c'est le point central de son article) le langage de programmation. En fait, Peter et Jeff Atwood se réfèrent à être un "maître". De la même manière que vous décrivez la posture de Jeff Atwood, je décris que Peter Norving dit qu'être un excellent programmeur nécessite beaucoup de codage (avec les sujets d'apprentissage implicites) et de pratique.
bywronski
2
@Wronski: Ah, tu es de retour, je vois! C'est un plaisir de vous revoir. Pendant votre absence, nous avons discuté de votre question, l'avons clôturée et rouverte. Quoi qu'il en soit, que dites-vous exactement? Le point de Peter Norving est que vous ne pouvez pas être un maître en 24 heures, voire 21 jours. Le point de Jeff Atwood est que vous ne pouvez pas être un maître en écrivant uniquement du code. Ils ont tous les deux raison.
Robert Harvey
@RobertHarvey Pourquoi le fermer et le rouvrir?. Dois-je interpréter l'article de Peter Norving comme étant un bon "codage" uniquement, et l'article de Jeff Atwood comme un bon "ingénieur"? Je suis un peu confus.
bywronski
1
@Wronski: Les maîtres sont à la fois de bons codeurs et de bons ingénieurs.
Robert Harvey
10

La partie "Pas de programmation" devrait venir après beaucoup de pratique de programmation.

the only way to become a better programmer is by not programming

Vous devez d'abord être programmeur avant de devenir meilleur. La première barrière d'apprentissage du langage de programmation demandera beaucoup d'efforts à elle seule et la partie de résolution de problèmes sera triviale par rapport aux problèmes que vous devrez affronter plus tard.

MISE À JOUR:

Comme suggéré dans les commentaires, vous pouvez toujours bénéficier de "ne pas programmer alias: (penser)" lorsque vous commencez en tant que programmeur, mais je ne m'éloignerais pas du clavier simplement parce que quelqu'un dit que je devrais le faire pour aller mieux, plutôt vous devriez le faire parce que vous savez que vous devez y penser davantage.

Korey Hinton
la source
2
Peut-être. Mais les compétences en conception ne sont pas si éloignées, même lors du premier démarrage; et les compétences relationnelles sont précieuses, quelle que soit votre capacité de codage.
Robert Harvey
@RobertHarvey Oui, mais l'article de Jeff Atwood semble être plus sur la résolution de problèmes et s'éloigner de l'ordinateur pour réfléchir à ce que vous programmez.
Korey Hinton
2
@KoreyHinton C'est quelque chose qu'il serait tout à fait approprié pour quelqu'un de résoudre son tout premier problème de programmation. Vous pouvez et devez le faire dès le premier jour, pas une fois que vous êtes déjà compétent, c'est ce que dit Robert.
Servy
1
@KoreyHinton C'est pourquoi personne (ni article, ni personne répondant ici) ne dit que vous ne devriez faire que l'un ou l'autre. Ils disent qu'il est important de faire beaucoup des deux, car les compétences se complètent.
Servy
1
@Wronski Je pense que Robert fait valoir le point opposé que les compétences non liées à la programmation peuvent être acquises lors de l'apprentissage de la programmation. Je suis également d'accord avec cela, mais je suis heureux de ne pas avoir trop compliqué le processus d'apprentissage au début. Mon objectif était comme vous avez mentionné la priorité avec les compétences en programmation d'abord, les compétences en réflexion ensuite et maintenant je m'efforce constamment d'améliorer les deux.
Korey Hinton