Passer du temps sur Programmers.SE ou Stack Overflow peut-il remplacer de bons livres de programmation pour un non-débutant? [fermé]

44

Le fait de consacrer du temps (et de participer activement) à Programmers.SE et à Stack Overflow m'aide à améliorer mes compétences en programmation tout en évitant de passer du temps à la lecture d'un livre comme Code Complete 2 (qui serait le prochain sur ma liste de lecture) m'aidera.

Ok, peut-être que la réponse à cette question pour quelqu'un qui commence avec la programmation peut être un non, mais je voudrais ajouter que cette question que je pose en contexte lorsque la personne est familière avec les langages de programmation mais veut s'améliorer ses compétences en programmation. Je lisais cette question sur SO et ce livre a également été recommandé par de nombreux autres (y compris Jeff et Joel ).

Pour être plus précis, j'ajouterais également que même si je programme en C, Java, Python, etc., mais que je ne suis pas satisfait de mes compétences en codage, et en lisant la critique de CC2, j'ai compris que je devais encore beaucoup m'améliorer. .

Donc, fondamentalement, je veux savoir quel est le meilleur moyen pour moi d’améliorer mes compétences en programmation - passer plus de temps ici / SO ou continuer avec CC2 et peut être venu ici au fur et à mesure que le temps le permet.

Atul Goyal
la source
1
C'est définitivement écrasant pour un programmeur débutant.
Surfasb

Réponses:

102

Non, ce n'est pas un substitut, mais un complément parfait . Je pense qu'une combinaison des deux détient beaucoup de pouvoir.

Pourquoi une bonne conférence vous enseigne-t-elle plus que la lecture d'un livre? Interaction et capacité à poser des questions.

En lisant simplement un livre, il se peut que certaines questions auxquelles vous ne trouvez pas de réponse apparaissent. Recherchez ces questions ici ou demandez-leur si elles n’ont pas été discutées auparavant.

Steven Jeuris
la source
+1 pour complément parfait. Je peux seulement imaginer ce que les années 80 auraient été pour moi si SE ou SO avaient été là. Ce sont d'excellentes ressources.
Michael Riley - AKA Gunny
1
+1 comme complément parfait pour un complément parfait. Il suffit de lire des questions du «monde réel» et d’essayer de répondre (ou de dupliquer les solutions existantes) est un excellent mini-kata pour accroître les compétences, les connaissances et l’intuition
Dave Newton
Au contraire, la capacité d'exprimer des problèmes et des solutions via un canal facilement compréhensible et accessible améliore vos capacités en tant que développeur, en plus d'améliorer vos compétences en communication.
surfasb
+1 (encore) pour un compliment parfait. Je lis P.SE tous les jours. Je ne lis pas toujours toutes les réponses, mais je lis la plupart des questions et les réponses principales. C'est un excellent moyen de réfléchir à des choses sur le terrain que vous pourriez autrement ne pas rencontrer. Parfois, je vois quelque chose dans un Q & R qui ne soit pas directement lié à ce que je fais, mais qui finit par être utile, ce qui est bien.
Andy Hunt
12

Je suis (actuellement) membre de StackOverflow depuis 1 an et 10 mois. Pendant ce temps, je suis devenu un étudiant discipliné de l'art: connaissant l'architecture, les motifs, le découplage, les tests unitaires, et la liste pourrait continuer ... mais, quel rôle SO a-t-il joué ???

Tout d'abord, il a répondu à mes questions immédiates. Mais alors que je commençais à explorer SO, j'ai découvert que j'étais un très mauvais programmeur. Désirant être un artisan de mon métier, j'ai acheté des livres ... mais ce n'était pas du texte pour débutant C #, apprendre la programmation C # ou tout autre texte pour débutant ne répondant pas aux normes dont j'avais besoin. J'ai acheté le bon type de livres qui ciblaient les domaines de compétence que je découvrais comme insuffisants. Bien sûr, j'ai pris le temps de voir ce que les experts en SO ont recommandé.

Deuxièmement, SO m'a donné la possibilité de continuer à apprendre de ceux qui (représentés par la réputation) savent vraiment ce qu'ils font - syntaxiquement et philosophiquement. Il existe un certain nombre d'informations à acquérir sur SO, CodeReview et les programmeurs que vous ne pouvez tout simplement pas obtenir d'un livre.

De toute évidence, SO ne peut remplacer les livres ou toutes les autres ressources Web (bien que, si je pouvais combiner MSDN et SO en une seule ressource de contenu ...); SO complète donc ces autres ressources. Le meilleur enseignant reste cependant l' expérience .

Résumé
la source
11

Quel est le meilleur moyen pour moi d'améliorer mes compétences en programmation?

Programmer plus. La lecture de livres et de pages Web est secondaire.

Vous apprenez mieux en faisant.

Humphrey bogart
la source
17
Oui et non. Faire plus peut être fait sans en apprendre davantage. Je pouvais programmer une langue année après année et ne rien apprendre de nouveau. La lecture et l'école vous apprennent des choses en dehors de votre "zone de confort". Pas assez pour un vote négatif, mais toujours pas un bon commentaire imo.
WernerCD
1
La vérité est que je programmais beaucoup sans apprendre. J'ai donc créé des sites Web en PHP sans connaître les objets ni utiliser un framework. Vous devez vous écarter du code et aller apprendre
Bojan Kogoj le
@ Werner - très vrai. Je voulais "programmer plus" dans le sens de "trouver quelque chose que vous voulez construire, et le construire, idéalement d'une nouvelle manière afin d'apprendre quelque chose de nouveau"
Humphrey Bogart le
Je me souviens que quand j'étais stagiaire, le "professeur" au travail nous donnait parfois des tâches de programmation, espérant que nous apprendrions mieux en faisant. Le problème était que, quel que soit le problème, nous n'étions souvent pas encore à ce niveau. Et quand quelqu'un lui posait une question à ce sujet, elle répétait sans cesse: "Oh, c'est tellement facile! Vous devez comprendre. Vous apprenez mieux de cette façon." Il nous faudrait plusieurs heures pour examiner la documentation, essayer des trucs, etc. Quand elle nous dirait enfin la réponse ...
Panzercrisis
... ce serait quelque chose pour lequel nous n'avions tout simplement pas les informations nécessaires pour comprendre . Il aurait fallu toute la semaine ou plus pour trouver les informations nécessaires, lorsque nous n'avions pas le temps, et que, parfois, ces informations n'étaient tout simplement pas disponibles, ni pour nous, ni pour le grand public. Il suffit donc de dire que l’instruction est très importante et il est bon de dire à quelqu'un de se débrouiller seul quand et seulement quand il est prêt et à ce niveau.
Panzercrisis
5

L'apprentissage a besoin d'ingrédients:

  1. Apprenant (qui est bien sûr vous)
  2. Temps (que vous devez gérer et dédier)
  3. Ressources (à partir desquelles, les sites SE ne représentent qu'une petite partie)

Êtes-vous un bon apprenant? Passez-vous suffisamment de temps à apprendre? Si la réponse à ces 2 questions est oui , alors vous avez déjà assez de potentiel pour apprendre à peu près de n'importe quelle ressource.

Mais pour répondre à votre question, oui, j'ai personnellement beaucoup appris des sites SE. IMHO, ils ne devraient pas devenir votre seule source d'apprentissage, mais ils sont bénéfiques.

Saeed Neamati
la source
5

Deux choses que SO et P.SE n'offrent ni lecture, ni écriture de code: le test et l'enseignement. Si vous posez aveuglément des questions comme

Pourquoi est-ce que cela ne compile pas

wall
of
code
100
lines
long

Et quelqu'un dit "à la ligne 33, que la virgule devrait être un point-virgule" et que vous acceptez la réponse, continuez et continuez à poser les mêmes questions pour toujours, alors vous pourriez ne pas vous améliorer.

MAIS, si vous lisez les questions des autres, si vous réfléchissez à la réponse, regardez pour voir quelles réponses sont reçues et comment elles se comparent à ce que vous savez, cela vous améliorera vraiment. Si vous tapez du code dans votre éditeur favori et essayez différentes choses pour voir quelle est la réponse, cela vous améliorera vraiment. Et lorsque vous commencez à essayer d’expliquer des concepts (et que les gens attendent de «clarifier» ce que vous dites), cela vous améliorera également.

Depuis environ 30 ans, j'ai découvert que je n'apprendais jamais un sujet aussi bien que lorsque, croyant le connaître, je me suis mis à l'enseigner. Pour moi, c’est la contribution majeure des sites * .se à mes compétences en tant que développeur. De plus, quand je veux juste savoir un fait simple, c'est mon premier endroit à regarder (ou demander occasionnellement).

Kate Gregory
la source
3

Vos compétences en programmation sont améliorées au mieux pas en lisant des sites Web ou des livres, mais en répétant

  1. écrire du code en fonction des connaissances actuelles
  2. évaluer le résultat
  3. apprendre de l’évaluation sur ce qu’il faut faire et ne pas faire.
  4. aller à 1

La pratique rend parfait. Ce qui paraît bien sur un blog ou dans un livre peut s'avérer difficile à utiliser pour une raison que le rédacteur du blog n'a pas comprise, ou que l'auteur du livre n'a pas couvert.


la source
2
Les livres (et les blogs, ainsi que les SO) peuvent vous exposer à des concepts que vous n’auriez peut-être pas trouvés vous-même, mais vous devenez un meilleur programmeur en écrivant du code.
Annika Backstrom
2
D'un autre côté, si je ne fais jamais très attention aux conseils externes, je n'irai pas trop loin. D'autres personnes ont appris à la dure et il serait insensé de ne pas tirer profit de leurs expériences. Bien sûr, ne comptez pas uniquement sur la lecture et l'audition, mais ne commettez pas l'erreur d'essayer d'apprendre sans l'aide des autres.
Phil
lecture externe va dans # 2
La lecture externe est nécessaire pour découvrir les fonctionnalités non évidentes, uniques ou avancées pour une technique particulière, un langage de programmation ou des bibliothèques. Ce sont des éléments qui ne sont pas absolument nécessaires pour effectuer des tâches, mais qui peuvent améliorer votre façon de le faire (par exemple, la métaprogrammation). Comme ils ne sont jamais strictement nécessaires, les gens viennent rarement les chercher par la seule expérimentation.
Lie Ryan
2

Comme vous l'avez répondu vous-même, non, mais passer du temps ici est un complément utile à un apprentissage plus structuré. Je ne dépendrais pas de cela de manière autonome, car certains concepts pourraient ne pas être couverts. L'un de vos meilleurs atouts pour améliorer votre codage pour les gars de niveau intermédiaire est de lire le code d'un autre bon développeur en passant du temps sur GitHub ou un autre référentiel open-source.

Clé en main
la source
1

La pensée critique et l'analyse sont toujours nécessaires

En soi non. La seule façon de créer une source d’apprentissage (livre, blog, site Web, but lucratif, etc.) est de comprendre, d’analyser et d’incorporer de manière répétée. Ce que les gens écrivent sur des forums comme celui-ci ne relève pas de l'évangile et ne doit pas être traité comme tel, quel que soit le nombre de voix qu'il détient. Vous devez faire votre propre analyse sur l'opinion rendue pour déterminer si c'est:

  1. Une bonne idée
  2. Une idée applicable à votre situation

Le meilleur moyen d'améliorer

Est souvent spécifique à la personne. Certaines personnes vont mieux grâce à la lecture et à la recherche. Certaines personnes s’améliorent par le jeu et l’expérimentation. D'autres peuvent même s'améliorer grâce à leur propre réflexion et à leur analyse. Essayez ce qui vous intéresse et voyez si cela vous convient mieux.

dietbuddha
la source
0

L'apprentissage de Java est devenu beaucoup, beaucoup plus facile quand j'ai découvert le stackoverflow. Je n'ai pas posé de questions, mais j'ai commencé à lire les questions Java quotidiennement. La plupart des questions étaient incompréhensibles, mais de temps en temps, quelqu'un posait la question du débutant. Beaucoup de gens posent des questions sur les concepts qu'ils ont lus dans un livre mais ne comprennent pas et obtiennent une réponse beaucoup plus compréhensible ici, souvent avec un petit échantillon de code pour expliquer davantage le problème.

Zavior
la source