Ruby on Rails dovrebbe avere una curva di apprendimento ripida o è solo io? [chiuso]

16

Sono un programmatore autodidatta. Ho imparato RoR da ottobre con intensità variabile (a volte tutto il giorno, a volte niente per diverse settimane). Prima sapevo solo Java, ma lo sapevo bene. Ho sentito tanto parlare di RoR e di come dovrebbe renderti felice, produttivo, ecc. Finora mi ha reso solo frustrato. L'ho imparato dal libro Agile, e sospetto che parte della difficoltà potrebbe avere a che fare con il mio non sapere JavaScript e CSS, e avere solo una comprensione tremenda di database e HTML. Ma a quanto pare ci sono voluti molto più tempo per completare il progetto nel libro Agile rispetto ad altre persone, e ancora non me ne ricordo granché. Ci sono alcune cose su Rails che non riesco a ottenere, ad es. quando usare i simboli e quando NON, o come vengono chiamati i metodi dinamici.

Recentemente mi è stato assegnato un piccolo incarico di Rails, in cui mi viene chiesto di apportare una piccola modifica all'interfaccia. Mi ci sono voluti circa 25 ore e anche se ho fatto dei progressi nella comprensione del codice, non ho ancora idea di come procedere. Non posso nemmeno chiedere Stack Overflow perché c'è così tanto codice che dovrò fornire per dare un contesto.

Quindi la mia domanda è nel titolo: RoR dovrebbe impiegare molto tempo per imparare o sto rallentando? Può essere che stia imparando dal libro sbagliato? Il mio stile di apprendimento è tale che non capisco nulla o capisco tutto, se questo ha senso.

    
posta Tootsie Rolls 10.12.2010 - 21:37
fonte

10 risposte

17

Dalla tua domanda, è ovvio che non si tratta solo di Rails che stai cercando di imparare, ma, allo stesso tempo, devi cogliere concetti di sviluppo web, oltre a database e SQL. È un compito enorme, quindi sii paziente.

D'altro canto, con Rails non hai scelta: devi imparare tutti e tre: M, V e C da MVC , tutti allo stesso tempo, ma sarebbe il caso di qualsiasi framework MVC, con Rails tra i più facili, direi.

Quello che potresti fare invece è iniziare con un framework più semplice, come Sinatra, fino a quando non ti sentirai a tuo agio con i concetti di base di Ruby e HTTP, per poi progredire lentamente verso una presentazione più ricca (viste e CSS) e modelli basati su database .

    
risposta data 10.12.2010 - 22:09
fonte
10

Quando stai imparando Rails e il tuo unico background è Java, non stai solo imparando un nuovo framework web. Stai imparando anche un nuovo linguaggio di programmazione e uno che è significativamente diverso da Java.

Potrebbe essere utile per te imparare Ruby e poi guardare Rails e le sue convenzioni. Imparare cosa fa Rails e come funziona è diventato molto più facile per me una volta che non dovevo più lottare per capire Ruby e poter leggere (e scrivere) codice / template di Rails.

Ho seguito il tutorial di Ruby on Rails e l'ho trovato molto utile. Il tutorial è gratuito e c'è una versione per Rails 2.3 e 3.0. Potrebbe anche essere utile leggere su MVC (Model-View-Controller) e sviluppo web / ciclo di vita della pagina in generale.

    
risposta data 10.12.2010 - 22:08
fonte
5

Anita, ho avuto quasi la stessa esperienza di te. ma penso che ora capisco perché è così difficile da imparare:

  • RoR non è una lingua, è una vasta raccolta di tecnologie, linguaggi e tecniche.
  • Non è come Java, C ++ o altri linguaggi che hanno una struttura logica
  • Non c'è un unico modo per imparare e nessun singolo libro che può insegnarti (di più su questo più tardi)
  • A mio parere, la comunità sembra avere un atteggiamento un po '"supponente" che non è così clemente come altre comunità quando apprende. Le persone non sono d'accordo su come dovrebbero essere fatte le cose. Questo viene dalla cima, dal ragazzo che ha inventato RoR
  • Il testing è strongmente incoraggiato a essere una parte fondamentale dello sviluppo nella maggior parte delle lezioni di RoR e i linguaggi di test sono DSL che possono anche aggiungere al già elevato carico di apprendimento.
  • Non esiste una documentazione adeguata per la lingua, solo un'API, alcune guide e tutti i libri che puoi trovare.
  • Alcuni metodi e tecniche fondamentali sono "automagicamente" e non è chiaro come funzionino. Ad esempio, i metodi has_secure_password.

Lo sto imparando da più di un anno e qui ci sono alcune cose che penso rendano più facile imparare, che ho imparato dall'esperienza:

  • Attaccalo da più angolazioni. Quando hai diversi libri, tutorial e blog su cui lavorare, questo può "aprire" un modo per imparare. Un singolo libro o blog può lasciarti "bloccato".
  • Considerare l'apprendimento di alcuni HTML / CSS e amp; Rubino. Non è tutto, solo quel tanto che basta per andare avanti, prima di andare troppo avanti in RoR.
  • Partecipa a un corso su RSpec (o metodologia di test simile). Lo strumento Codeschool su RSpec è particolarmente buono e questo ti impedirà di rimanere bloccato in una lezione RoR perché non puoi seguire il test.
  • Ottieni circa 3 libri. Obie Fernandez "The Rails 3 Way" è un must, usato come riferimento quando c'è qualcosa che non si ottiene (non per la copertina per la lettura). L'Agile che hai menzionato mi ha appena confuso. "Learing Rails 3" arriva da una direzione diversa e può aiutare ad abbattere alcuni problemi che non puoi ottenere da altri tutorial.
  • Fai uno screencast o un corso di apprendimento online. Il tutorial di Michael Hartl è buono, ma molto scabroso. Ho scoperto che i libri sopra, più il corso Codeschool su RSpec, mi hanno aiutato a superarlo, ma dovevo comunque raggiungere l'autore con un paio di piccoli punti.
  • Chiedi, chiedi, chiedi! C'è un Forum Ruby, Forum Rails, stanze IRC e StackExchange ecc. - usali tutti, frequentemente !

Per favore non arrenderti - sei intelligente, ma sembra avere uno stile di apprendimento simile a me, e Rails è solo molto difficile da imparare e non particolarmente ben insegnato (completamente) ovunque.

    
risposta data 24.04.2013 - 09:52
fonte
4

Forse il problema è meno rubino (e o rotaie) e più il fatto che hai solo una "stretta confusa" di HTML / CSS / JavaScript e SQL e database.

Rails è un 'full-stack framework'. Se la tua precedente esperienza di programmazione è core Java con forse qualche Swing, allora ci sono molti concetti da imparare allo stesso tempo.

Se mi stavo avvicinando a questo problema, inizierei con l'ottenere il modello SQL e la modellazione relazionale inchiodati per primi (non ci sono problemi di layout del browser con SQL!). Quando sei sicuro del livello del database, gioca con ActiveRecord e scopri come le rotaie avvolgono le tuple dal db.

Il prossimo passo sarebbe quindi imparare i controller e il routing e quindi l'interfaccia utente (html / javascript, ecc.)

Se hai intenzione di realizzare qualsiasi sviluppo web utilizzando praticamente qualsiasi framework web, dovrai comprendere la modellazione SQL e relazionale (anche se successivamente sceglierai la rotta NoSQL).

    
risposta data 31.03.2011 - 06:49
fonte
1

Vengo anche da uno sfondo Java e ho avuto un momento piuttosto difficile nell'apprendimento di Rails. Ho avuto tutti gli stessi problemi che hai menzionato. Ho scoperto che guardare railscasts.com ha aiutato all'inizio. Solo vedere come qualcun altro ha fatto le cose mi ha aiutato a capire e poi ho iniziato a fare le cose da solo. Non ho toccato Rails da quando è uscito Rails 3 però.

    
risposta data 10.12.2010 - 21:42
fonte
1

Le tue parole, "a volte tutto il giorno, a volte niente per diverse settimane" mi dicono tutto quello che devo sapere. Se stai imparando un nuovo linguaggio AND framework (presumo sia quello che stai facendo perché menzioni "Ruby on Rails" e non solo "Ruby"), la coerenza ripaga. Ho scoperto che l'unico modo in cui imparo e mantengo i concetti è quello di studiare circa mezz'ora al giorno, di solito alla fine della giornata, poco prima di andare a dormire. Se studio più di mezz'ora, divento irrequieto e perdo la concentrazione. Se studio meno, non mantengo quello che ho imparato.

Elimina le distrazioni: questo è il mio miglior consiglio. E studia ogni singolo giorno della settimana. Prima che tu lo sappia, le cose inizieranno a cadere al loro posto.

Non ho visto post di follow-up, quindi mi sto chiedendo come hai fatto. Sono passati 2 anni e questo dovrebbe sicuramente essere un sacco di tempo per imparare a diventare uno sviluppatore web di primo livello!

    
risposta data 09.09.2013 - 16:25
fonte
0

Ho appoggiato Ruby e Rails per circa 8 mesi. Sono entrato con una comprensione di HTML, XML, SQL. Ho ancora trovato lo stesso problema di te, quello che ha funzionato per me è stato lavorare su problemi reali, non solo leggere e sperare di capire. Potrebbe essere necessario eseguire un sacco di piccoli test di pezzi di codice o il mvc per cogliere un concetto. I simboli sono qualcosa su cui sto ancora lavorando. Basta prendere un problema alla volta e mentre li risolvi, imparerai qualcosa di necessario per risolvere un altro problema nel tuo progetto.

Risposta: No, non dovrebbe avere una curva di apprendimento ripida, la curva è diversa a seconda del tuo background.

    
risposta data 23.06.2011 - 17:32
fonte
0

Può. So di imbattersi nella "curva di apprendimento" ogni volta che cerco di sedermi e concentrarmi sull'apprendimento di Rails (ogni pochi mesi per circa 2 anni). Il problema è che molte cose in Rails cambiano a un ritmo velocissimo e spesso le risorse che trovi sono obsolete quasi immediatamente.

Il mio consiglio è di iniziare a concentrarsi su Ruby (almeno le basi) e poi su Rails, quindi non ci si può affidare al 100% al framework Rails per gestire tutto per te. Dovresti anche rispolverare HTML / CSS / Javascript per ovvi motivi. Inoltre dall'esperienza non vieni intrappolato nel costante churn del mondo di Rails: se puoi ignorare tutte le cose nuove che i cognoscenti Rails evangelizzano come Haml, Sass, RSpec / BDD, Cetriolo, ecc. O affogherai nel dover impara BDD e RSpec a scrivere il tuo codice, devi imparare Haml e Sass (non è difficile ma è ancora un'altra cosa da imparare) per codificare il front-end, ecc. Inizia il più semplice possibile.

    
risposta data 23.06.2011 - 17:49
fonte
0

C'è una curva di apprendimento per qualsiasi linguaggio di programmazione. Non stiamo davvero imparando una lingua nel modo convenzionale. Come C / C ++, ma quando le cose arrivano alla realtà, dobbiamo anche conoscere i dettagli di poche tecnologie.

Il modo migliore per affrontarlo è imparare facendo. Prenditi tutto il tempo per farlo da solo. Di solito leggiamo le cose, ma quando si arriva al quadro reale ci concentreremo su di esso. Sono un programmatore C ++ nativo, posso anche scrivere in C #. So che c'è molta bontà in quella lingua e biblioteca in un punto di vista astratto ma molti degli argomenti che ho appena letto e saltato. Quindi se me lo chiedi, in realtà sono handicappato.

Sto imparando il framework Django. Il libro che ho scelto è straordinariamente semplice e crea un'applicazione per i social bookmark. Quindi è come imparare le cose da zero a livello avanzato facendo un vero progetto. Ti suggerisco di avvicinarti in questo modo come tutto ciò che stiamo imparando da solo.

    
risposta data 24.06.2011 - 07:20
fonte
0

La cosa con RoR, in particolare con la seconda "R" è che la maggior parte dei tutorial di apprendimento si concentrano sull'insegnare lo stile "code-monkey". Soprattutto il libro Agile, è pieno di superficiale "ora facciamo solo questo, non preoccupatevi perché" i passaggi di programmazione. Inoltre il fatto che continuino a cambiare il loro paradigma - cioè, prima stavano propagandando la RJS come via d'uscita, ora tutto ad un tratto, si tratta di UJS.

Come suggerito da alcune persone, potresti provare a imparare i dettagli del linguaggio Ruby stesso, quindi passare al framework. Se vuoi ancora imparare entrambi insieme, ho trovato che questo libro chiamato "Ruby for Rails" è molto utile.

    
risposta data 24.06.2011 - 07:35
fonte

Leggi altre domande sui tag