Come classificheresti queste abilità di programmazione per apprenderle? [chiuso]

5

In qualità di programmatore per scopi generici , che cosa dovresti imparare prima e che cosa dovresti apprendere in seguito?

Ecco alcune abilità che mi chiedo ...

  • SQL
  • Espressioni regolari
  • Multi-threading / concorrenza
  • Programmazione funzionale
  • Grafica
  • La padronanza della sintassi / semantica / serie di funzioni del linguaggio di programmazione di tua madre
  • La padronanza delle librerie framework della classe base
  • Sistema di controllo versione
  • Test unitario
  • XML
  • Conosci altri importanti? Si prega di specificarli ...

Su quali competenze devo focalizzarmi per prima?

    
posta Ryathal 26.09.2010 - 01:44
fonte

9 risposte

3

SQL: impara subito. Non preoccuparti dei contenuti DBA, ma delle query principali, creazione di tabelle e viste, ottimizzazione, join, ecc.

Espressioni regolari - Comodo ma quasi mai critico. Ogni volta che ho bisogno di un RegEx cerco solo google e test finché non ne trovo uno buono.

Multi-threading / Concurrency - Utile per alcuni ma difficile da imparare. Impara quando lavori su cose che li richiedono.

Programmazione funzionale - Generalmente non utile a livello professionale. Divertente da sapere e molti concetti di FP si stanno facendo strada nelle lingue tradizionali.

Grafica: fantastico se ti diverti con loro o lavori in un settore che li utilizza.

La padronanza della sintassi / semantica / caratteristiche del linguaggio di programmazione di tua madre - # 1 cosa

La padronanza delle tue librerie framework di classe base - cosa # 2

Version Control System - # 3 thing (ne conosci almeno uno competente)

Test unitario - Alto utile per conoscere ed essere in grado di parlare. La maggior parte dei negozi parlerà di test unitari, solo alcuni lo faranno davvero, ma molto bene sapere.

XML: puoi imparare mentre vai in generale. Non vale la pena studiare in modo indipendente.

Le mie aggiunte:

SOAP / JSON: se fai sviluppo su web o servizi, questi sono enormi. Anche il mio sviluppo desktop sta iniziando a fare molto affidamento su questi due per l'integrazione. Bello sapere per molte vocazioni.

TCP / IP: dovresti sapere come funziona un socket, come aprirlo, la differenza tra TCP e UDP. Dovresti essere in grado di inviare un indirizzo e-mail via Telnet o utilizzando un semplice ambiente basato su socket. Comprendere il protocollo che sottostà a tanti altri è molto utile a volte.

Il tuo IDE: probabilmente trascorrerai un numero ridicolo di ore nel tuo IDE, e ognuno di loro ha caratteristiche che possono farti risparmiare un sacco di tempo e di irritazioni. Vale la pena ottenere un libro solo per imparare i trucchi nascosti del tuo IDE du jour.

    
risposta data 26.09.2010 - 03:20
fonte
17

Nella mia esperienza, i programmatori che "cercano di essere dei bravi programmatori" imparando cose come imparerebbero che la matematica di base non sono mai all'altezza di quelli che programmano con uno scopo.

Scopri cosa devi fare per realizzare un'idea che hai; imparare qualsiasi punto che hai elencato è inutile se non lo userai.

    
risposta data 26.09.2010 - 01:49
fonte
4

Come imprenditore indipendente ritengo che la capacità numero uno di cui ho bisogno sia la comunicazione. È assolutamente necessario che i programmatori capiscano le esigenze dei loro clienti. Puoi essere un guru in SQL, c #, ecc. Ma se non consegni ciò che il cliente richiede, allora sei affondato.

    
risposta data 26.09.2010 - 13:24
fonte
2
  1. Amore di base per risolvere problemi / puzzle. Senza questo non starai molto bene.
  2. Capacità di suddividere un problema complesso in parti
  3. I diagrammi di flusso dovrebbero essere in grado di mostrarti il flusso per risolvere il problema.

Questo è tutto. Padroneggia che e quale lingua o sistema utilizzi per risolvere il problema diventa semplicemente una lezione per imparare come rompe il problema. Non ci sono "giuste vie" per padroneggiare le capacità di programmazione, non esiste una sorta di "regola d'oro" che ti insegnerà tutto nel giusto ordine.

    
risposta data 26.09.2010 - 02:32
fonte
2

In questo nostro mondo moderno, la maggior parte delle cose che una volta era richiesta (e saranno ancora schiaffeggiate come l'unica vera conoscenza di quelle vecchie) non sono richieste così tanto oggi. Non hai bisogno di sapere come funziona l'hardware per essere ancora un programmatore eccellente.

Secondo me, le uniche cose che devi sapere in questi nostri giorni moderni sono:

  • Programmazione OO.

  • Test delle unità.

  • Notazioni di base di Big O (quando dovresti usare un ArrayList e quando dovresti usare una LinkedList?).

  • Comunicazione. La comunicazione è sempre necessaria. Con il consumatore, il cliente o i tuoi amici programmatori.

  • Rifinitura / rimozione del codice maleodorante.

Qualsiasi altra cosa seguirà in seguito con la pratica e l'esperienza.

Tranne il test delle unità delle cose che hai citato, considererei SQL, Concurrency e Version Control System più utili forse più di una volta nella tua carriera. Il resto sono solo cose generali che possono essere utili a volte anche se non sono necessarie.

    
risposta data 15.10.2010 - 21:55
fonte
1

Non intendo che questa sia la risposta banale, ma ho sempre desiderato poter trovare un programmatore che potesse veramente conoscere sia Perl che SQL. Immagino con quelle due basi di conoscenza, si potrebbe quasi cogliere qualsiasi cosa.

(Modifica) Abbastanza corretto: perl (IMHO) incapsula quasi l'intera programmazione in termini di comprensione di flussi, record, regexp, trasformazione dei dati, (de) riferimenti, strutture di dati di livello basso e alto, array e associazioni matrici (hash). La comprensione del linguaggio trasmette quasi un certo livello di padronanza nella programmazione. Conosco molti hack .NET, PHP e persino Java, raro vedere un hack che scrive Perl.

Aggiungi SQL ad esso (davvero comprenderlo, non solo semplici selezioni) e scommetto che qualcuno che capisce questi aspetti meno adatti al "profilo perl" (qualcuno che a volte potrebbe avere il proprio malinteso dire cose) sarebbe capace di padronanza veloce e rispettabile risolvere qualsiasi esigenza di programmazione nella maggior parte degli ambienti.

    
risposta data 26.09.2010 - 01:52
fonte
1

Immagino che tu abbia già la tua risposta ormai. Vorrei aggiungere altre cose.

Prima leggi alcuni libri non di programmazione per sviluppare il tuo interesse per la programmazione.

Alcuni buoni libri sono

  • Codice completo

  • Il programmatore pragmatico

Dopo pensaci su quale campo vuoi andare. Intendo quale tipo di lavoro vorresti fare? Se vuoi diventare uno sviluppatore di giochi, un programmatore di sistema, uno sviluppatore web ecc.

Dopo aver appreso alcune nozioni di base della matematica, impara a conoscere le strutture e gli algoritmi dei dati. Quindi selezionare una lingua in cui si desidera implementare tali algoritmi. Puoi selezionare C / C ++ / Java ecc secondo il tuo interesse. Impara la sintassi della lingua e impara come implementare quegli algoritmi che hai progettato.

Alcune conoscenze sulla programmazione funzionale sono anche delle competenze indispensabili. Ecco un grande articolo su FP. Fai clic qui per vedere.

    
risposta data 26.09.2010 - 06:48
fonte
0

Non penso che sia necessario "dominare" tutte queste aree. Basta imparare alcuni concetti di base e le altre cose [i sistemi di database, i controlli di versione] arriveranno quando ne avrai bisogno ...

    
risposta data 26.09.2010 - 02:06
fonte
0

Hai dimenticato un sacco di cose importanti, che distingue davvero il programmatore avanzato dal principiante. (Si noti che ho lavorato solo con lo sviluppo di Windows nativo e ho una preferenza per le cose di basso livello.)

Per prima cosa, se lavori sulla piattaforma Windows, devi eventualmente padroneggiare l'API di Windows, anche se sei uno sviluppatore Delphi, diciamo (e quindi può fare un sacco di cose nella VCL solo). Devi imparare a lavorare con HWND, HBITMAP, HMENU e tutti gli altri tipi di oggetti del kernel.

Inoltre, una cosa molto importante: devi essere in grado di progettare e implementare strutture e algoritmi dati personalizzati. Ogni programmatore decente dovrebbe essere in grado di scrivere un editor di testo con evidenziazione della sintassi in una settimana o giù di lì, da zero. Per andare ancora oltre, penso che un programmatore professionista dovrebbe davvero sapere come allocare e usare manualmente la memoria grezza sullo heap, per poter archiviare i dati in alcune strutture personalizzate.

Inoltre, dovresti essere in grado di comprendere e progettare i formati di file binari. Dovresti essere in grado di scrivere decodificatori e codificatori per semplici formati di file binari, come ad esempio Windows bitmap versione 3, almeno.

Inoltre, se stai lavorando con lo sviluppo nativo, una buona comprensione dell'assemblaggio è un sicuro segno di maturità come programmatore.

    
risposta data 26.09.2010 - 16:03
fonte

Leggi altre domande sui tag