Un nuovo programmatore dovrebbe concentrarsi su una singola tecnologia fino a quando non è competente? [chiuso]

10

Ok, ho insegnato a un amico a programmare per un po 'ora. È uno studente molto veloce, ed è abbastanza bravo a programmare finora. Tuttavia, ha un "problema" che continuo a cercare di correggere.

Salta e inizia a fare programmi di alto livello senza imparare alcune delle basi (ha creato un'applicazione web in piena regola, ma non conosce ancora la paginazione o la gestione delle sessioni).

Questo non è il problema però. Continua a saltare alla nuova tecnologia (Node.js, MongoDB, EC2, ecc.). Ho provato a dirgli che avrebbe dovuto imparare alcune delle nozioni di base sul suo RDMS di scelta (MySQL) poiché lo utilizza ogni giorno prima di investire un po 'di tempo nell'apprendimento delle basi di MongoDB (e probabilmente spostarsi su qualcosa di nuovo).

Sono io quello che torto qui, o dovrebbe cercare di concentrarsi su una cosa alla volta e diventare veramente bravo in questo?

    
posta Brandon Wamboldt 18.04.2012 - 02:30
fonte

9 risposte

18

Personalmente, penso che possa essere una buona idea campionare tecnologie e linguaggi diversi quando si impara a programmare. Concentrarsi su una tecnologia ha l'ovvio vantaggio di renderti molto bravo, ma l'ovvio svantaggio di conoscere solo una singola tecnologia.

Ma penso che il lato negativo più importante è che le lingue e le strutture generalmente hanno un'ideologia. Ci sono molti programmatori (forse la maggior parte dei programmatori) che applicano solo un'ideologia in tutto ciò che programmano. Questo è spesso perché hanno imparato bene un framework in una lingua veramente e ora non possono vedere nulla senza quegli occhiali.

Soprattutto per qualcuno che sta imparando a programmare, non penso davvero che sia un problema voler provare cosa c'è là fuori, e aspettare di concentrarsi su qualcosa fino a più tardi. Dopo tutto, sarà difficile scrivere qualcosa di sostanziale senza conoscere bene una tecnologia.

    
risposta data 18.04.2012 - 02:36
fonte
5

C'è un buon ragionamento su entrambi i lati di questo problema. Sapere " abbastanza " su molte diverse tecnologie è certamente prezioso. Conoscere " un po '" su molte tecnologie diverse? Non così tanto.

La profonda conoscenza di determinate tecnologie può certamente essere preziosa - SE c'è una domanda costante per loro. Conoscere " tutto quello che c'è da sapere " su una particolare tecnologia? ... molto probabilmente eccessivo.

Quindi, è tutto in bilico. Se finisce per creare app meravigliose con nosql, perché dovrebbe conoscere la differenza tra il motore InnoDB e il motore MyISAM?

    
risposta data 18.04.2012 - 02:42
fonte
3

Sono d'accordo in parte. Ha bisogno di conoscere i principi di base - ma non ha bisogno di sedersi su una cosa e diventare veramente bravo in questo. Nessuno lo fa.

Stai seduto con una cosa e stai davvero bene

Attualmente sto lavorando con C # e Microsoft XNA per creare un gioco. Sto imparando molto su XNA mentre vado, e mentre sono già abbastanza competente con C #, la mia conoscenza si sta espandendo poco a poco (oggi ho imparato a conoscere vincoli sui parametri del tipo ).

Tuttavia, non c'è bisogno che io diventi "veramente buono" su XNA o C #. Se dovessi terminare il mio progetto ora e andare avanti e non usare mai più nessuno di questi, sarei completamente soddisfatto e il mio apprendimento continuerebbe altrove.

I principi sono importanti anche se

Almeno capisco i principi sottostanti. Quando creo le cose in C # e XNA, capisco cosa sto facendo - e se non lo faccio, lo imparo.

Se avessi scritto l'impaginazione, avrei capito come funziona la paginazione. Se il tuo amico ha creato qualche impaginazione e non ha idea di come ha funzionato, questo è un problema. Se non ha creato l'impaginazione, non c'è motivo per cui abbia bisogno di saperlo.

Il problema qui è: sa cosa è @ $ #! sta facendo, o è un programmatore che non ha idea di come programmare?

    
risposta data 18.04.2012 - 02:42
fonte
3

Immagino che stia tentando altre lingue perché ha qualcosa che vuole costruire. Puoi sempre tornare a una lingua o quadro e saperne di più.

C'è una linea sottile tra l'apprendimento della teoria / la costruzione di una fondazione e il tentativo di rimanere motivati.

Almeno non è bloccato in una sola lingua. A volte prendi il buono con il cattivo.

    
risposta data 18.04.2012 - 03:25
fonte
3

Trovo il suo atteggiamento come una risorsa piuttosto che una responsabilità. La sua capacità di fare ricerca è al di sopra della media. La sua curva di apprendimento è anche superficiale. Perché non sfruttare questi tratti se vuoi che impari qualcosa.

La sua mente curiosa è sempre in movimento, perché non fornirgli indicazioni. Inizia dicendogli perché l'impaginazione è importante ed essenziale. Lascialo dare un'occhiata ai siti Web con paginazione e siti Web senza questi.

Che ne dici di dare una critica costruttiva a ciò che sta facendo. "Wow hai fatto qualcosa di eccezionale, ma non sarebbe stato meglio se lo facessi in questo modo con enfasi sull'ottimizzazione e le migliori pratiche.

Penso che fare un confronto tra una buona pratica e una cattiva pratica possa davvero stimolare la sua mente.

Non limitarti, alla fine troverà qualcosa che vorrebbe e sistemerà per un po 'di tempo. Se fossi in te, gli fornirò un sacco di materiale didattico sulle cose di cui è così appassionato.

Penso che stia procedendo dall'alto verso il basso mentre tu, d'altra parte, vuoi che faccia un approccio dal basso verso l'alto

    
risposta data 18.04.2012 - 10:51
fonte
1

Perché è cattivo?

Al contrario, penso che sia molto buono! Mostra curiosità e voglia di imparare. Inoltre, vuole trovare lo strumento giusto per il lavoro giusto! Meglio che restare con una tecnologia inadeguata di prima scelta. ;)

In realtà, lo faccio allo stesso modo, come programmatore esperto. E lo raccomando. Ogni volta che ho un nuovo progetto, il mio comportamento è il seguente:

  1. esplorare (le tecnologie potenziali che possono essere utili)
  2. esperimento (con quelli che sembrano promettenti)
  3. scegli i tuoi tecnici (o prova un po 'più avanti finché non lo sai)
  4. segui questa procedura (sviluppa la tua app e sfila)

Penso che abbia perfettamente senso.

    
risposta data 18.04.2012 - 09:14
fonte
1

Personalmente, se qualcuno dovesse concentrarsi solo su una tecnologia, direi che dovrebbe essere C # / Java, usato insieme a SQL.

Da questo, credo, puoi adattarti a qualsiasi altra tecnologia.

Ma attenersi a una tecnologia potrebbe essere limitante se un ragazzo vuole entrare nell'ambiente aziendale.

Idealmente, una piattaforma orientata agli oggetti, una piattaforma mobile, una piattaforma web e quindi un'ottima conoscenza di SQL (o di qualsiasi altro ambiente db).

Per prima cosa, altrimenti rimarrà bloccato in seguito!

    
risposta data 19.04.2012 - 08:54
fonte
0

Non è male se è un principiante nella programmazione.

Vedrà come funzionano alcune cose. Ma se non capisce cosa sta facendo è meglio non farlo affatto.

Ho avuto questo problema con me stesso voglio sapere tutto Java, C, C ++, C #, Phyton, ASP.NET ... ecc ma ho capito che non posso sapere tutto, quindi mi sono concentrato su un paio di cose ed è molto meglio.

Quindi cosa dovrebbe fare (consigliarlo):

  1. Pensa a ciò che vuoi fare
  2. Esplora tutte le opzioni
  3. Trova ciò che ti si adatta
  4. Impara
  5. Non smettere mai di imparare

Non sarei d'accordo con @arnaud se esplori sempre e impari nuove cose quando un nuovo progetto è di fronte a te (beh, non completamente). Ci vuole troppo tempo per esplorare e imparare nuove cose ancora e ancora e alcuni progetti hanno un limite di tempo. Ma d'altra parte se hai bisogno di imparare alcune cose nuove e semplici va bene: D.

    
risposta data 18.04.2012 - 23:35
fonte
0

Sono d'accordo con te, a volte è facile avere una conoscenza superficiale di un particolare framework o tecnologia o linguaggio, ma per ottenere una vera comprensione è meglio essere coinvolti in uno sviluppo del mondo reale fino al completamento, e mantenerlo - diventare qualcuno a cui altri vengono per un consiglio. È preferibile diventare un jack di tutti i mestieri, maestro di uno piuttosto che un semplice jack di tutti i mestieri, maestro di nessuno . Detto questo, non lo scoraggerei dall'apprendere cose nuove perché ovviamente ha un buon livello di entusiasmo.

    
risposta data 19.04.2012 - 09:28
fonte

Leggi altre domande sui tag