Trascorrere del tempo su Programmers.SE o Stack Overflow può sostituire i buoni libri di programmazione per un non principiante? [chiuso]


44

Potrei passare del tempo (e partecipare attivamente) a Programmers.SE e Stack Overflow mi aiuterebbero a migliorare le mie capacità di programmazione vicino a ciò che passare il tempo a leggere un libro come Code Complete 2 (che altrimenti sarebbe il prossimo nella mia lista di lettura) mi aiuterà.

Ok, potrebbe essere la risposta a questa domanda per qualcuno che sta iniziando con la programmazione potrebbe essere un no, ma vorrei aggiungere che questa domanda che sto ponendo nel contesto quando la persona ha familiarità con i linguaggi di programmazione ma vuole migliorare le sue capacità di programmazione. Stavo leggendo questa domanda su SO e anche questo libro è stato raccomandato da molti altri (tra cui Jeff e Joel ).

Per essere più precisi, aggiungerei anche che, anche se faccio programmazione in C, Java, Python, ecc., Ma non sono ancora soddisfatto delle mie capacità di programmazione e leggendo la recensione di CC2 mi sono reso conto che devo ancora migliorare molto .

Quindi, fondamentalmente, voglio sapere qual è il modo migliore per migliorare le capacità di programmazione: passare più tempo qui / SO o continuare con CC2 e potrebbe venire qui come e quando il tempo lo permetterà.


1
Possibile duplicato / correlato: Stack Overflow come un modo per imparare cose nuove

1
È decisamente travolgente per un programmatore principiante.
surfasb,

Risposte:


102

No, non è un sostituto, ma un complemento perfetto . Sento che una combinazione dei due ha molto potere.

Perché una buona lezione ti insegna più di una semplice lettura di un libro? Interazione e capacità di porre domande.

Leggendo semplicemente un libro, potrebbero apparire alcune domande alle quali non puoi trovare alcuna risposta. Cerca queste domande qui o chiedi loro se non sono state discusse prima.


+1 per complemento perfetto. Posso solo immaginare come sarebbero stati gli anni Ottanta per me se SE o SO fossero in giro. sono grandi risorse.
Michael Riley - AKA Gunny,

1
+1 come complimento perfetto per un complemento perfetto. La sola lettura di domande "del mondo reale" e il tentativo di rispondere (o duplicare le soluzioni di risposte esistenti) sono fantastici mini-kata per aumentare abilità, conoscenza e intuizione
Dave Newton,

Semmai, la capacità di esprimere problemi e soluzioni in un canale facilmente comprensibile e accessibile migliora la tua capacità di sviluppatore, oltre a migliorare le tue abilità di comunicazione.
surfasb,

+1 (di nuovo) per un complimento perfetto. Ho letto P.SE ogni giorno. Non leggo sempre tutte le risposte, ma leggo la maggior parte delle domande e le risposte migliori. È un ottimo modo per farti pensare a cose sul campo che altrimenti potresti non incontrare. A volte vedo qualcosa in una domanda e risposta non direttamente a quello che sto facendo che finisce per essere effettivamente utile, il che è bello.
Andy Hunt,

12

Sono (attualmente) membro di StackOverflow da 1 anno e 10 mesi. Durante questo periodo sono diventato uno studente disciplinato dell'arte: conoscente di architettura, modelli, disaccoppiamento, unit test e l'elenco potrebbe continuare ... ma quale ruolo ha giocato SO ???

Innanzitutto, ha risposto alle mie domande immediate. Ma quando ho iniziato a esplorare SO, ho scoperto che ero un pessimo programmatore. Desiderosi di essere un artigiano al mio mestiere, ho comprato libri ... ma non era C # Unleashed, imparare il C # di programmazione, o altri sub-standard di testo per principianti che avevo bisogno. Ho comprato il giusto tipo di libri che riguardavano le aree di abilità che avevo scoperto carenti. Certo, mi sono preso il tempo di vedere cosa consigliavano gli esperti di SO.

In secondo luogo, SO mi ha dato un posto dove continuare ad imparare da coloro che (rappresentati dalla reputazione) sanno davvero cosa stanno facendo, sintatticamente e filosoficamente. C'è una certa quantità di intuizioni da ottenere su SO, CodeReview e programmatori che semplicemente non puoi ottenere da un libro.

Ovviamente, SO non può sostituire i libri o tutte le altre risorse Web (anche se, se potessi combinare MSDN e SO in un'unica risorsa di contenuto ...); invece, SO completa queste altre risorse. Il miglior insegnante, tuttavia, rimane esperienza .


11

Qual è il modo migliore per migliorare le capacità di programmazione?

Programmazione di più. Leggere libri e pagine Web è secondario.

Impari meglio facendo.


17
Sì e no. Fare di più può essere fatto senza saperne di più. Potrei programmare in una determinata lingua anno dopo anno e non imparare nulla di nuovo. La lettura e la scuola ti insegnano cose al di fuori della tua "zona di comfort". Non abbastanza per un downvote, ma comunque non un buon commento imo.
WernerCD,

1
La verità è che stavo programmando molto senza imparare. Quindi ho realizzato siti Web in PHP senza conoscere oggetti o utilizzare un framework. Devi allontanarti dal codice e andare e imparare
Bojan Kogoj,

@ Werner: molto vero. Intendevo "programmare di più" nel senso di "trovare qualcosa che vuoi costruire e costruirlo, idealmente in un modo nuovo per imparare qualcosa di nuovo"
Humphrey Bogart,

Ricordo che quando ero stagista, l '"insegnante" al lavoro a volte ci dava incarichi di programmazione, aspettandomi che avremmo imparato meglio facendo. Il problema era che qualunque fosse il problema, spesso non eravamo ancora a quel livello. E quando qualcuno le poneva una domanda a riguardo, continuava a dire: "Oh, è così facile! Devi capirlo. In questo modo impari meglio." Trascorsero diverse ore, con noi che studiavamo la documentazione, provavamo cose, ecc. Quando finalmente ci diceva la risposta ...
Panzercrisis,

... sarebbe qualcosa che semplicemente non ci hanno dato le informazioni necessarie per capire . Ci sarebbe voluta tutta la settimana o più a lungo per trovare le informazioni necessarie, quando non avevamo tempo e quando a volte le informazioni non erano disponibili né a noi né al pubblico in generale. Quindi è sufficiente dire che l'istruzione è molto importante e semplicemente dire a qualcuno di capire le cose da soli è buono quando e solo quando sono pronti e fino a quel livello.
Panzercrisis,

5

L'apprendimento ha bisogno di alcuni ingredienti:

  1. Studente (che ovviamente sei tu)
  2. Tempo (che dovresti gestire e dedicare)
  3. Risorse (da cui i siti SE sono solo una piccola parte)

Sei un bravo studente? Passi abbastanza tempo per l'apprendimento? Se la risposta a queste 2 domande è , allora hai già abbastanza potenziale per imparare quasi da qualsiasi risorsa.

Ma per rispondere alla tua domanda, sì, ho imparato personalmente molto dai siti SE. IMHO, non dovrebbero diventare la tua unica fonte di apprendimento, ma sono utili.


5

Due cose offerte da SO e P.SE che né la lettura di altri libri né la scrittura del codice offrono: test e insegnamento. Se fai solo domande alla cieca

Perché non compilare

wall
of
code
100
lines
long

E qualcuno dice "alla riga 33 che la virgola dovrebbe essere un punto e virgola" e tu accetti la risposta e vai avanti, e continui a porre le stesse domande per sempre, quindi potresti non migliorare.

MA, se stai leggendo le domande di altre persone, pensando alla risposta, guardando per vedere quali risposte arrivano e come si confrontano con ciò che conosci, ciò ti migliorerà davvero. Se digiti un po 'di codice nel tuo editor preferito e provi alcune cose per vedere qual è la risposta, questo ti migliorerà davvero. E quando inizi a cercare di spiegare concetti (e le persone stanno aspettando lì per "chiarire" quello che dici) che migliorerà anche te.

Da circa 30 anni ho scoperto che non ho mai imparato un argomento così bene come quando, credendo di conoscerlo, ho iniziato a insegnarlo. Per me questo è il contributo maggiore dei siti * .se alle mie capacità di sviluppatore. Inoltre, quando voglio solo sapere un fatto semplice, è il mio posto numero uno in cui cercare (o di tanto in tanto chiedere).


3

Le tue capacità di programmazione sono migliorate al meglio non leggendo siti web o libri, ma ripetendo

  1. scrivere codice basato sulle conoscenze attuali
  2. valutare il risultato
  3. imparare dalla valutazione su cosa fare e cosa non fare.
  4. vai a 1

La pratica rende perfetti. Ciò che sembra bello su un blog o in un libro può rivelarsi ingombrante da usare per qualche motivo non compreso dallo scrittore del blog o che l'autore del libro non ha trattato.


2
Libri (e blog e SO) possono esporti a concetti che potresti non aver inventato da solo, ma diventi un programmatore migliore scrivendo codice.
Annika Backstrom,

2
D'altra parte, se non prendo mai molta attenzione ai consigli esterni, non andrò troppo lontano. Altre persone hanno imparato a proprie spese, e sarebbe sciocco non imparare dalle loro esperienze. Certo, non fare affidamento solo sulla lettura e l'udito, ma non fare l'errore di provare ad imparare senza l'aiuto degli altri.
Phil

la lettura esterna va in # 2

la lettura esterna è necessaria per scoprire le funzionalità non obsolete, uniche o avanzate per una particolare tecnica o linguaggio di programmazione o librerie. Sono cose che non sono strettamente necessarie per svolgere alcuna attività, ma possono migliorare il modo in cui lo fai (ad es. Metaprogrammazione). Dal momento che non sono mai strettamente necessari, le persone raramente vengono a cercarli solo attraverso la sperimentazione.
Lie Ryan,

2

Come ti sei risposto, no, ma passare del tempo qui è un'aggiunta utile all'apprendimento più strutturato. Non dipenderei da esso autonomo in quanto potrebbero esserci delle lacune in alcuni concetti che potrebbero non essere coperti. Una delle tue migliori scommesse per migliorare la tua codifica per i ragazzi a livello intermedio è leggere il codice di altri sviluppatori sviluppando tempo su GitHub o altri repository open source.


1

Il pensiero critico e l'analisi sono ancora richiesti

Di per sé no. L'unico modo per fare fonte di apprendimento (libro, blog, sito Web, SO, ecc.) È attraverso la comprensione, l'analisi e quindi l'incorporazione ripetuta. Ciò che le persone scrivono su forum come questo non sono vangelo e non dovrebbero essere trattati come tali, indipendentemente da quanti voti positivi abbia. Devi fare la tua analisi sull'opinione resa per capire se è:

  1. Una buona idea
  2. Un'idea applicabile alla tua situazione

Il modo migliore per migliorare

È spesso specifico per la persona. Alcune persone migliorano attraverso la lettura e la ricerca. Alcune persone migliorano attraverso il gioco e la sperimentazione. Altri possono persino migliorare grazie all'auto-riflessione e all'analisi. Prova qualunque cosa ti piaccia e vedi se funziona meglio per te.


0

Imparare Java è diventato molto, molto più semplice quando ho scoperto StackOverflow. Non ho fatto domande, ma ho iniziato a leggere le domande java quotidianamente. Gran parte delle domande erano fuori dalla mia comprensione, ma ogni tanto qualcuno faceva la domanda del principiante. Molte persone chiedono dei concetti che leggono da un libro ma non capiscono e ottengono una risposta molto più comprensibile qui, spesso con un piccolo esempio di codice per spiegare ulteriormente il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.