Fare il salto logico dal noob completo allo sviluppatore?

12

Ho programmato in modo molto leggero per alcuni anni, senza fare molti progressi. È qualcosa che sicuramente mi interessa, ma non mi sono mai sentito motivato. Poi, penso di aver capito cosa mi sta uccidendo. Tutti i libri che ho letto, tutti gli screencast che ho visto, sembrano aver perso una cosa importante:

Come posso passare da dichiarazioni di stampa, variabili, ecc. a fare cose più complicate?

Ad esempio, prendiamo un sito come Posterous. Per coloro che non sanno, è una piattaforma di blogging che accetta post di blog via e-mail. L'autore del blog ha un'e-mail speciale @ posterous.com a cui invia post di blog, e viene automaticamente formattata e pubblicata.

In che modo uno sviluppatore utilizza la propria serie di funzioni e istruzioni per realizzare qualcosa di simile nel back-end?

Mi dispiace se questa domanda sembra davvero ampia, mi ha solo frustrato. Mi sento come se avessi una buona conoscenza dei concetti di base, ma non ho idea di come fare qualcosa

in realtà.

    
posta Blair Beckwith 19.07.2011 - 20:15
fonte

10 risposte

12

La chiave è scomporre l'attività in passaggi discreti che sai come fare (o puoi scoprire come fare). Quello che sai come fare è basato sul tuo livello di esperienza.

Prendiamo il tuo esempio di email Posterous:

Requisiti: accetta le email di @ posterous.com, formattale e pubblicale sul sito web.

Attività 1) Accetta l'email.

Molto probabilmente le e-mail devono essere recuperate da un server di posta. Dovrai ricercare le chiamate API per recuperare le e-mail dal tuo particolare server di posta. Dovrai anche capire come estrarre il contenuto dal corpo dell'email (probabilmente un'altra chiamata API).

Attività 2) Formattare l'e-mail.

Dall'attività 1, probabilmente il contenuto si trova nella memoria da qualche parte. Formatta questo in modo che sia conforme al passaggio 3 ...

Attività 3) Pubblica il contenuto sul blog.

Se stai aggiungendo questa funzione email2blog, probabilmente hai già un meccanismo per pubblicare post sul blog. Utilizza questo meccanismo e invece di accettare l'input da una textarea sul tuo sito web da qualche parte, sostituiscilo con il contenuto del tuo passaggio 2.

Ora, come ottenere dalle istruzioni di stampa, se le istruzioni e le funzioni sono sufficienti per completare ciascuna attività.

Si noti come nell'attività 1 ho citato due volte le chiamate API? Le chiamate API sono essenzialmente funzioni che qualcun altro ha scritto in modo da poter utilizzare le loro funzionalità. Se sai come chiamare le funzioni, puoi cercare la chiamata API corretta per recuperare la posta dal server di posta.

Non ho discusso molto sulla formattazione, ma se sai come manipolare String, sai come formattare. La formattazione di una pagina html è un esercizio per aggiungere tag come <b>bolded text</b> all'interno della stringa da qualche parte.

Nell'Attività 3, ho detto che c'era un qualche tipo di meccanismo per pubblicare blog. Se questa è una piattaforma di blogging esistente, ti sarà abbastanza familiare con questo. Ma se così non fosse, allora hai bisogno di sapere su HTTP Post e altri contenuti correlati alla struttura web.

Se dopo aver letto tutto questo non hai ancora idea di cosa sto parlando, quindi spero di averti convinto che non c'è alcun sostituto per esperienza. Quindi vai e costruisci qualcosa! Non preoccuparti troppo di fare errori di noob perché ogni sviluppatore era una volta un noob.

    
risposta data 19.07.2011 - 21:03
fonte
5

La cosa principale è trovare qualcosa che vuoi fare e farlo .

Ecco come è iniziata la maggior parte delle grandi aziende.

  • Google? Brin e Page erano appassionati nell'indicizzare il web.

  • Metafilter? Matt Haughey era appassionato di scrivere e condividere.

  • Twitter? Dorsey era appassionato di semplicità e non si ottiene molto più semplice di 140 caratteri.

  • StackOverflow? Joel & l'equipaggio era appassionato di risposte.

Le lingue, come PHP, Perl, Python e Ruby sono state tutte progettate allo stesso modo. Quindi era GNU / Linux. Qualcuno ha avuto un graffio, e ha iniziato a prudere quel graffio, e poi ha rilasciato i suoi strumenti per il consumo generale.

Quindi dai un'occhiata e decidi dove si trova il tuo prurito, quindi inizia a scrivere un programma per grattare quel prurito. Forse ti piace giocare, quindi potresti scrivere alcuni giochi. Forse hai un problema con i tag ID3 sulla tua collezione mp3 e devi correggerlo. O forse sei interessato alla storia di famiglia e vuoi esplorare il Web alla ricerca di riferimenti a persone o luoghi nella tua cronologia. O forse vuoi interagire con il mondo reale in qualche modo. O forse vuoi sviluppare FLOS Software: dai un'occhiata a GitHub, Gitorious e Sourceforge.

Trova qualcosa che ti appassiona e inizia a programmare, e molto presto avrai programmi enormi prima che te ne accorga. Ed è per questo che la pianificazione di qualche tipo è una buona idea;)

    
risposta data 19.07.2011 - 20:41
fonte
2

Lentamente e gradualmente.

Solitamente per progetti di grandi dimensioni, non si inizia semplicemente immergendosi in un codice di scrittura. Qualcuno da qualche parte deve avere un piano. Scrivono qualcosa, le caratteristiche del sistema che vogliono. Quindi iniziano con la prima pagina / finestra / qualsiasi cosa. Quindi aggiungono un altro. Per tutto il tempo aggiungo lentamente feature after feature, correggendo bug dopo bug. Non si tratta solo di apparire, ci deve essere un quadro generale, un progetto generale.

Per migliorare, hai bisogno di pratica! Inizia con un piccolo progetto. Qualcosa di semplice e anche questo ti interessa. Pianifica quello che fai prima di farlo, vedrai che non è difficile "effettivamente fare qualsiasi cosa".

    
risposta data 19.07.2011 - 20:28
fonte
1

Puoi guardare quanti screencast, leggere quanti libri e seguire quanti tutorial vuoi ma non hai mai sentito di andare ovunque. Devi capire qualcosa che ti interessa creare. Quindi scomporlo e provare a crearlo. Entrerai in un sacco di cose che potresti non sapere. Ma tu li cerchi e impari i compiti più complessi man mano che vai.

    
risposta data 19.07.2011 - 20:42
fonte
1

Ho incontrato anche questa sfida, e nel complesso ho trovato la mia soluzione: avevo bisogno di una fonte esterna che mi spingesse ad essere più produttiva.

Puoi essere affascinato dalla tecnologia come chiunque, eccitato alla programmazione come chiunque, e intelligente e veloce da imparare come chiunque altro, e significherà solo così tanto a meno che non ti sporchi le mani e faccia roba. Ma può essere difficile sapere da dove cominciare, e anche se hai un'idea di dove cominciare, può essere difficile ottenere la palla che rotola.

Se sei un buon autodidatta, probabilmente hai solo bisogno di alcune idee. Prova alcuni enigmi di programmazione oppure consulta le semplici utility che usi regolarmente e chiediti "Posso fare questo? Se l'avessi fatto, cosa cambierei? "

È davvero scoraggiante sedersi davanti a un editor aperto oa un pezzo di carta bianco e dire "Ok, cervello, crea! " Ma se lo analizzi, pensa a che tipo di cosa potresti avere una ragione per fare, e guidare da lì, puoi andare più lontano.

E, se trovi che non puoi semplicemente rendere il tuo codice, convincere qualcuno a darti un lavoro da fare, con una scadenza, i requisiti e tutto. Ti metterà in marcia.

    
risposta data 19.07.2011 - 21:09
fonte
1

Il fatto che tu abbia una conoscenza di base è buona - io non sono un professionista, ma posso vendere quello che faccio, quindi devo fare qualcosa di giusto. Consiglio di apprendere le nozioni di base sulla tua lingua e sulla piattaforma che stai sviluppando (e sembra che tu abbia).

Prima mappa quello che stai cercando di fare, e fatti un'idea di come lo farai, si tratta di far bollire cose fino a dettagli specifici, in quanto ti aiuta a capire cose più velocemente. Quindi solo Google cosa stai cercando di fare nella lingua che stai utilizzando se sei bloccato - anche a fare domande su Stack Overflow (io stesso ho già posto più di 70 domande, hehe!)

Personalmente ho imparato su google, all'inizio non avevo ancora imparato le basi, cosa che avrei dovuto fare, comunque già quando stavo facendo cose buone, non sapevo ancora che cosa fosse un "array" . ;)

    
risposta data 19.07.2011 - 21:21
fonte
0

Penso che per sviluppare le tue abilità sul back-end delle interfacce dovresti iniziare a manipolare i dati. I progetti più grandi riguardano lo spostamento, la trasformazione e la visualizzazione dei dati.

So per conto mio che non ho avuto una buona conoscenza dei progetti più grandi finché non mi sono sentito a mio agio con diversi tipi di accesso ai dati e manipolazione dei file.

    
risposta data 19.07.2011 - 20:39
fonte
0

Saltare in qualcosa che è un po 'sopra la tua testa e capirlo può essere un ottimo modo per espandere le tue abilità. Potresti provare a guardare alcune delle serie dei libri di cucina O'Reilly:

link

Il formato Problema / Soluzione / Discussione suona come potrebbe essere esattamente quello che stai cercando, codice "ricette" che DO qualcosa di interessante e qualche discussione su come funziona.

    
risposta data 19.07.2011 - 20:39
fonte
0

Penso che tu stia semplicemente sfidando te stesso a fare di più.

Se sei veramente curioso di fare qualcosa, vai a cercarlo! Se vuoi sapere come le opere Poster cercano di iniziare con qualcosa di piccolo come la ricerca di quale tipo di strumenti hai bisogno, come ottenere informazioni da una casella di testo a un sito web. Poi gradualmente ti costruisci su quello. La prossima domanda potrebbe essere la creazione di una connessione email a un sito Web e un database.

Hai il miglior strumento di cui hai bisogno, Internet.

    
risposta data 19.07.2011 - 20:41
fonte
0

Oltre a suddividere il progetto in attività, la chiave è anche imparare il riuso del codice. Dividi il tuo codice in moduli che puoi riutilizzare in altri progetti in cui devi fare la stessa cosa.

Ad esempio, in questo progetto di esempio, è probabile che si stia facendo del database per archiviare i post del blog. È possibile scrivere una classe di database per la connessione al database, eseguire query, ottenere i risultati, ecc. Quindi, in tutti i progetti futuri, è possibile utilizzare la stessa classe ed essere in grado di lavorare facilmente con il database.

    
risposta data 23.07.2011 - 09:12
fonte

Leggi altre domande sui tag