Quali corsi CS sono "obbligatori" per uno sviluppatore web [chiuso]

4

Il mio obiettivo è imparare come programmare un sito web con Python / Django nel prossimo anno. Da quello che ho capito, devo anche imparare HTML, CSS, JavaScript.

Capisco per poter costruire un sito web, avrò bisogno di trovare un co-fondatore le cui abilità superino di molto le mie. Tuttavia, la situazione sarà molto diversa se io sono una persona più vicina al suo livello e ha dedicato molto tempo all'insegnamento di se stesso rispetto a tutti gli altri "Ho un'idea, ho solo bisogno di un co-fondatore di tecnologia", tipo di ragazzo.

Ho intenzione di conseguire una laurea in informatica, ma dopo aver finito il liceo lo scorso maggio ho deciso di prendermi un anno libero, quindi sono libero di imparare a programmare nei prossimi 10 mesi.

Per ora, ho la possibilità di frequentare alcuni corsi universitari in un istituto superiore. Quali sono indispensabili per uno sviluppatore web in modo da non avere lacune nella mia comprensione della programmazione e scrivere "codice sofisticato"?

EDIT: Grazie a tutti per l'aiuto! Dai corsi suggeriti potrei essere in grado di frequentare alcuni / nessuno / tutti di OOP (con Java), reti e grafica, algoritmi SE, matematica discreta per Comp.Scientists, database , Information Retrieval e Data Mining. Quali sono più importanti per lo sviluppo Web con Django?

Ho letto molte volte persone che affermavano che i programmatori autodidatti avevano lacune nelle loro conoscenze, non scrivevano codice chiaro. Questo è il motivo per cui chiedo quali corsi CS possono colmare queste lacune? Non solo nelle abilità pratiche, ma nella mentalità, nel modo di pensare.

    
posta Anton 23.10.2011 - 18:49
fonte

6 risposte

13

Innanzitutto, comprendi che un livello CS non è generalmente formazione professionale. Molti dei corsi sviluppano il pensiero logico che è richiesto per risolvere problemi complessi. Questi corsi sono strongmente focalizzati sulla matematica e l'informatica.

Ad eccezione di 2-3 classi, ciò che non fanno è insegnare un set specifico di lingue in modo da poter ottenere un lavoro come sviluppatore "X". Insegnare te stesso una programmazione web di base per Javascript / HTML / PHP (o qualche altro linguaggio server) in genere richiede solo pochi mesi di auto-formazione.

È una buona idea laurearsi in informatica. Questo dovrebbe far parte di un piano generale di auto-miglioramento che richiede anni di pratica e autodisciplina.

Se tutto quello che ti interessa è creare un singolo sito web per ottenere un profitto, quindi scrivere un buon codice non è una priorità. In questo caso, un diploma CS non fornirebbe alcun vantaggio.

Come principiante, semplicemente non starai bene. Accetta questo fatto. Ti renderà meno attento agli sviluppatori più esperti con cui lavorerai. Una mente aperta ti farà anche accettare di più le idee che sono in conflitto con ciò che ritieni sia la migliore pratica.

Se il tuo obiettivo è creare semplicemente un sito web, iscriviti a un college della comunità per un corso di programmazione di introduzione al web. Oppure, qualsiasi cosa Javascript / HTML / scegli la tua lingua web. Queste classi hanno lo scopo di prepararti a fare le basi del lavoro web sul posto di lavoro. Come ho detto all'inizio, l'informatica non è pensata per questo tipo di allenamento.

    
risposta data 23.10.2011 - 19:13
fonte
2

Lo sviluppo Web non dovrebbe essere considerato separato da altri sviluppi. Hai bisogno di una base di qualità, non importa cosa: strutture dati, programmazione imperativa, programmazione orientata agli oggetti, altri tipi di linguaggi, ingegneria del software e così via. È quindi possibile seguire corsi che possono essere meglio orientati allo sviluppo web.

Se stavi semplicemente imparando nel tuo tempo libero, potrebbe valere la pena di imparare in modo specifico Python. Dato che stai chiedendo dei corsi da svolgere, non vorrei sprecare i tuoi soldi in un corso su una lingua specifica. Una volta eliminata la teoria (come menzionato sopra), sarà facile imparare Python, o qualsiasi altra lingua per quella materia, da soli. Oppure, se ti senti all'altezza, fai entrambe le cose contemporaneamente: prendi una lezione e impara Python nel tempo libero.

EDIT: hai menzionato: OOP (con Java), reti e grafica, algoritmi SE, matematica discreta per Comp.Scientist, database, recupero informazioni e data mining

Suggerisco questo ordine:

1) OOP (se conosci già il concetto di base, può prendere più tardi)

2) Math discreto

3) Database

4) Recupero di informazioni e data mining

5) Rete e grafica: questa combinazione mi sembra strana, il che mi rende scettico sulla qualità del corso. Leggi la descrizione del corso.

6) Algoritmi - Richiede Discrete & OOP (o qualche tipo di programmazione) almeno. Controlla i pre-requisiti elencati nel catalogo dei corsi se non lo hai già fatto.

EDIT2: dovrei dire che OOP potrebbe essere preso dopo Discrete, ma molti studenti trovano Math discreta difficile senza un'applicazione per questo in mente e OOP (o qualsiasi altra programmazione) ti fornirà quell'applicazione.

    
risposta data 24.10.2011 - 02:30
fonte
1

Dovresti prendere ovviamente la Programmazione Web. Inoltre, consiglierei un corso sul Networking in modo da comprendere i fondamenti di come funziona Internet. Suggerirei almeno una lezione sull'interazione uomo-macchina e / o disegno utente. Le lezioni sul Data Mining sono una buona idea dato il rilievo di quel campo nel moderno Web Development. Una classe sulla teoria dei database sarebbe utile per progettare applicazioni web più pesanti. Una classe in Data Visualization potrebbe anche essere utile per gestire la modalità di visualizzazione dei dati in un modo che risulti utile per gli utenti dei siti o delle applicazioni Web che vengono creati. Potrebbero essere utili anche alcuni corsi di Graphic Design e Media Analysis. Alcune università combinano l'informatica con quelle discipline in una laurea che si chiama tipicamente qualcosa come Interactive Design o Computational Media, essenzialmente ibridi tecnologici / artistici.

    
risposta data 23.10.2011 - 20:40
fonte
1

Posso suggerire di andare un po 'oltre Django per un momento? Quanto bene conosci HTTP? Quanto bene conosci l'HTML? Hai considerato come gestirai la grafica in questo sito? Sai dove stai andando ad ospitare questo sito? Che nome di dominio avrà? Ci sono probabilmente una dozzina di altre domande come questa che direi che sono cose importanti da considerare qui dato che Django da solo non sarà un proiettile d'argento.

Reti, database, algoritmi SE, OOP e matematica discreta sarebbero tutte aree che suggerirei come luoghi in cui almeno immergere il dito del piede e vedere cosa funziona e non funziona per te. Potresti essere sorpreso di quante altre cose tu debba sapere e gestire per ottenere un sito attivo e funzionante sarebbe la mia ipotesi. Questo senza considerare le cose come l'integrazione con i social media, perché forse vorrai che le persone accedano con il loro account Facebook o Twitter invece di creare nuovi account da capo.

Sto osservando questo dal punto di vista del fatto che se il tuo obiettivo è quello di far funzionare un sito web che hai costruito usando Python / Django, allora ci possono essere cose che vanno oltre la semplice conoscenza di Python / Django che può essere utile qui. Il "programma un sito web" potrebbe significare 1.001 cose diverse in quanto vi sono molti diversi possibili usi per un sito. Avete in programma di vendere roba da quel sito? È solo una sandbox in modo da poter apprendere le basi di un sito web? È per creare il tuo sistema di gestione dei contenuti? Cosa farà il sito? Perché qualcuno dovrebbe vedere il sito? Hai pensato a qualche componente di Search Engine Optimization a questo? Per cercare di prendere tutto, ma il Python / Django fuori dall'equazione qui è un po 'irrealistico, almeno nella mia mente e quindi mi chiedo se stai vedendo questo da una prospettiva più ampia o vuoi che questo sia dove tutto è già gestito così tutto ciò che devi fare è solo una piccola cosa. Mentre è possibile in teoria, potresti essere più che sorpreso di quanto ti aspetti dall'altra persona in questa situazione.

Dai un'occhiata all'ultima storia in The High- Intervista sulla sicurezza, PHP Candidate e Overqualified se si desidera un esempio di dove, mentre si ha una buona idea, bisogna stare attenti a quanto lontano si prende e quanto dogmatico si vuole essere su questo.

    
risposta data 24.10.2011 - 19:39
fonte
0

Per "Sviluppo Web" in quanto tale, non penso che ci siano molti corsi nel set standard che sono orientati verso quella traccia. Quando parli di corsi di laurea, scoprirai che la maggior parte di essi adattati a materiale "Web" di solito saranno molto basilari e si imbatteranno nel loro approccio clericale.

Ti consiglierei di dividere il tuo tempo e prendere i corsi di base per studenti che ti permetteranno di diventare un buon programmatore, mentre allo stesso tempo farai da autodidatta da solo per la disciplina della programmazione web. Compra un buon libro su CSS. Acquista un buon libro su Javascript e HTML 5. Accedi a CS e impara come programmare in Java in questo modo. Prendi una lezione sul networking, con un focus su TCP / IP se possibile.

Ma soprattutto: trova un progetto che vuoi fare e avvialo. Sembra che tu abbia un'idea di cosa sia, quindi direi semplicemente "inizia da solo, sul tuo PC". Durante questo processo, non imparerai tutto ciò di cui hai bisogno per creare un sito web di altissimo livello, ma imparerai su cosa devi veramente concentrare nel tuo studio personale per farlo. Farai degli errori. Scriverò codice terribile. Ma va bene. Sono disposto a scommettere che una volta che avrai seguito i tuoi corsi, sarai in grado di recuperare le tue conoscenze e tracciare linee direttamente dai tuoi studi al tuo lavoro precedente.

    
risposta data 23.10.2011 - 19:17
fonte
0

Database e SQL!

Non credo che troverai un lavoro di sviluppo web che non li coinvolge. Essere in grado di scrivere selezionare, aggiornare, inserire ed eliminare istruzioni. Comprendere la normalizzazione della tabella (che si riferisce a non memorizzare dati ridondanti). Comprendere le chiavi primarie, le chiavi esterne, controllare i vincoli, i join, i sottoselezionamenti, i raggruppamenti, i sindacati, gli indici. Sapere come scrivere query efficienti. Sapere come aggiungere indici per rendere le query più efficienti e quando rallenterà le istruzioni che scrivono nel database.

Se vuoi andare oltre, è una buona idea. Sapere come creare viste, viste materializzate (se il db le accetta), stored procedure, come configurare un database per effettuare backup a caldo, ecc.

Ultimamente si parla molto di "NoSQL", ma sii consapevole del fatto che la maggior parte dei database sono ancora RDBMS. Inoltre, la maggior parte della programmazione Web tende a creare un front-end Web per un database. E anche se lavori con database NoSQL, probabilmente lavorerai ancora con RDBMS come wall. E framework come Hibernate che cercano di astrarre i database, in genere non possono funzionare così bene come speri.

    
risposta data 24.10.2011 - 22:16
fonte

Leggi altre domande sui tag