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


10

Ok, insegno a un amico come programmare da un po 'di tempo. È uno studente molto veloce ed è abbastanza bravo a programmare finora. Tuttavia, ha un "problema" che continuo a cercare di correggere.

Salta dentro e inizia a programmare ad alto livello senza apprendere alcune delle basi (ha creato un'applicazione web completa ma non conosce ancora l'impaginazione o la gestione della sessione).

Questo non è il problema però. Continua a saltare alle nuove tecnologie (Node.js, MongoDB, EC2, ecc.). Ho provato a dirgli che avrebbe dovuto imparare alcune nozioni di base sul suo RDMS preferito (MySQL) mentre lo usa ogni giorno prima di dedicare un sacco di tempo all'apprendimento delle basi di MongoDB (e probabilmente passare a qualcosa di nuovo).

Sono io quello sbagliato qui, o dovrebbe cercare di concentrarsi su una cosa alla volta e diventare davvero bravo?


6
Sembra una buona opportunità per richiedere che la sua applicazione Web supporti sessioni e impaginazione. Ciò non lo avrebbe portato a impararlo?

Inoltre quale singola tecnologia dovrebbe essere appresa?

@ ThorbjørnRavnAndersen Non è una sola tecnologia, ma lo stack LAMP è ciò con cui lavora ogni giorno. Penso che dovrebbe imparare tutti gli elementi di base / pertinenti ai dettagli del suo lavoro su MySQL, Apache, PHP e JavaScript.
Brandon Wamboldt,

1
Quindi hai essenzialmente risposto alla tua domanda con "no".

1
Non sta già imparando più tecnologie come web, database, ecc. Contemporaneamente? Quali sono i limiti di ciò che costituisce una tecnologia qui?
JB King,

Risposte:


18

Personalmente, penso che possa essere un'ottima idea campionare diverse tecnologie e lingue quando si impara a programmare. Concentrarsi su una tecnologia ha l'ovvio vantaggio di renderti molto bravo a farlo, ma l'evidente svantaggio di conoscere una sola tecnologia.

Ma penso che l'aspetto negativo più importante sia che le lingue e le strutture generalmente hanno un'ideologia. Ci sono molti programmatori (forse la maggior parte dei programmatori) che applicano una sola ideologia in tutto ciò che programmano. Questo perché spesso hanno imparato davvero bene un framework in una lingua e ora non riescono a vedere nulla senza quegli occhiali.

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


2
+1 per il secondo paragrafo. Aggiungo che guardare diverse lingue, framework e API può insegnarti molto sul PERCHÉ i progettisti hanno scelto di implementare un determinato linguaggio / framework / API nel modo in cui lo hanno fatto. Dare allo studente una comprensione più profonda della programmazione e del software nel suo insieme. Almeno, imho
Jamie Taylor,

+1 Ci sono situazioni in cui imparerai a concentrarti, come quando hai un "vero" lavoro di programmazione. Ma come si ottiene un lavoro se si è stati esposti a un solo framework? Impara a scrivere qualcosa in più di un framework / libreria in modo da poter riempire il tuo CV e dimostrare che non sei influenzato da una particolare tecnologia. ;-) Puoi imparare cose come l'impaginazione e RMDB in seguito una volta acquisito il contesto reale per farlo.
Spoike,

@Spoike Ha un "vero" lavoro di programmazione, quindi il motivo per cui sto cercando di convincerlo a concentrarsi sulla tecnologia che usa ogni giorno per quel lavoro
Brandon Wamboldt,

1
@RougeCoder: assegnagli i compiti appropriati (consulta questa gigantesca lista, filtra gli elementi, disegna un diagramma con campioni raggruppati, ecc.) Per consentirgli di imparare come fare i concetti che vuoi che sappia. Se non ci sono tali compiti, allora non c'è contesto per lui per far rimanere quella conoscenza.
Spoike,

1
Pensavo fosse BS, o almeno un'esagerazione, quando le persone dicevano cose come "l'apprendimento della programmazione funzionale ti fa pensare diversamente". Si scopre che stavano tagliando l'effetto che ha sul tuo codice. Il mio codice è già completamente diverso e non sono ancora esperto del mio linguaggio funzionale di scelta, né sto cercando di cambiare il modo in cui scrivo il codice. È davvero una rivelazione.
Steven Evers,

5

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

Una profonda conoscenza di particolari tecnologie può sicuramente essere preziosa - SE c'è una domanda in corso per loro. Conoscere " tutto quello che c'è da sapere " su una particolare tecnologia? ... molto probabilmente eccessivo.

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


Bene, la differenza tra InnoDB e MyISAM è sostanzialmente nelle transazioni. Se non capisce le transazioni, che possibilità ha di lavorare correttamente con concetti come "eventuale coerenza"?
Michael Borgwardt,

Scusi? Nessuno ha detto che non capiva le transazioni, e ciò che ho scritto non lo implicava affatto.
pbr

3

Sono in parte d'accordo. Deve conoscere i principi di base, ma non deve semplicemente sedersi su una cosa e diventare davvero bravo. Nessuno fa.

Sedersi con una cosa e diventare davvero bravo

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 a poco a poco (oggi ho imparato a conoscere i vincoli sui parametri di tipo ).

Tuttavia, non è necessario che io diventi "veramente bravo" in XNA o C #. Se dovessi terminare il mio progetto ora e andare avanti e non usare mai più uno di questi, sarei completamente soddisfatto e il mio apprendimento continuerebbe altrove.

I principi sono importanti però

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

Se scrivessi l'impaginazione, capirei come funziona l'impaginazione. Se il tuo amico ha creato un po 'di impaginazione e non ha idea di come abbia funzionato, questo è un problema. Se non ha creato l'impaginazione, non c'è motivo per cui avrebbe bisogno di saperlo.

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


Sollevi buoni punti. Il problema è che con alcune cose sa cosa sta facendo, ma con altre cose che non lo fa (penso che semplicemente non vuole impararlo, quindi continua a copiarlo da altri progetti). Ad esempio, ha scritto l'impaginazione, l'ho esaminato pezzo per pezzo, ma ancora non capisce. So che potrebbe capirlo, perché è un concetto semplicissimo, e ha fatto cose molto più complesse.
Brandon Wamboldt,

Sì, e questo è un problema. Se sta scrivendo codice non capisce di essere a metà strada per essere un programmatore di copia-incolla e per essere un programmatore che non ha idea di cosa stia facendo.
doppelgreener,

3

Immagino che stia tentando altre lingue perché ha qualcosa che vuole costruire. Puoi sempre tornare a una lingua o un framework 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 bene con il male.


3

Trovo il suo atteggiamento come una risorsa piuttosto che una responsabilità. La sua capacità di fare ricerche è al di sopra della media. Anche la sua curva di apprendimento è 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. Lascia che dia un'occhiata a siti Web con impaginazione e siti Web senza quelli.

Che ne dici di dare una critica costruttiva a ciò che sta facendo. "Wow hai fatto qualcosa di eccezionale, ma non sarebbe meglio se lo fai 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 limitarlo, alla fine troverà qualcosa che vorrebbe e accontentarsi da qualche tempo. Se fossi in te, gli fornirò un sacco di materiale di apprendimento su cose di cui è così appassionato.

Penso che stia facendo l'approccio dall'alto verso il basso mentre tu invece vuoi che faccia un approccio dal basso verso l'alto


1

Perché è male?

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 di prima scelta inadeguata. ;)

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

  1. esplora (le potenziali tecnologie che potrebbero essere utili)
  2. esperimento (con quelli che sembrano promettenti)
  3. scegli i tuoi tecnici (o sperimenta un po 'di più finché non lo sai)
  4. attenersi ad esso (sviluppare l'app e farcela)

Penso che abbia perfettamente senso.


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).

E prima le basi, altrimenti si bloccherà più tardi!


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 quel 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 (avvisarlo):

  1. Pensa a quali cose vuoi fare
  2. Esplora tutte le opzioni
  3. Trova quello che fa per te
  4. Imparalo
  5. Mai smettere di imparare

Non sarei d'accordo con @arnaud se esplorassi e imparassi sempre cose nuove quando un nuovo progetto ti sta di fronte (beh, non del tutto). Ci vuole troppo tempo per esplorare e imparare nuove cose ancora e ancora e alcuni progetti hanno un limite di tempo. D'altra parte, se hai bisogno di imparare alcune nuove cose semplici, va bene: D.


0

Sono d'accordo con te, a volte è facile ottenere una conoscenza superficiale di un particolare quadro o tecnologia o linguaggio, ma ottenere una vera comprensione è meglio per essere coinvolto in uno sviluppo del mondo reale fino al completamento e mantenerlo - diventare qualcuno che altri vieni per un consiglio. È preferibile diventare un tuttofare, padrone di uno piuttosto che un tuttofare, padrone di nessuno . Detto questo, non lo scoraggerei dall'imparare cose nuove perché ovviamente ha un buon livello di entusiasmo.

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.