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


17

Sono un programmatore autodidatta. Sto imparando il RoR da ottobre con intensità variabile (a volte tutto il giorno, a volte nulla per diverse settimane). Prima di allora conoscevo solo Java, ma lo conoscevo abbastanza bene. Ho sentito così tanto clamore sul RoR e su come dovrebbe renderti felice, produttivo, ecc. Finora mi ha solo frustrato. L'ho imparato dal libro di Agile e sospetto che parte della difficoltà potrebbe avere a che fare con la mia non conoscenza di JavaScript e CSS e con solo una stretta traballante di database e HTML. Ma apparentemente mi ci è voluto molto più tempo per completare il progetto nel libro Agile rispetto ad altre persone, e ancora non me ne ricordo molto. Ci sono alcune cose su Rails che non riesco proprio a capire, ad esempio quando usare i simboli e quando NON farlo, o come vengono chiamati metodi dinamici.

Recentemente mi è stato assegnato un piccolo incarico su 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 qualche progresso 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 contesto.

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


1
L'apprendimento è sempre incrementale , capisci un po 'di più ogni volta che impari qualcosa. La risoluzione dei problemi è difficile e richiede pazienza (indipendentemente dall'esperienza del linguaggio di programmazione) prima di accettare che sarà più facile per te affrontarli con una mente fredda.
Aditya P

Ho pensato che lo fosse, ma probabilmente è perché è molto orientato alle convenzioni nel mio caso. Molto abituato a configurare molte cose che fa come una convenzione.
Rig

Risposte:


17

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

D'altra parte, 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 in giro, 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 senti a tuo agio con i concetti di base di Ruby e HTTP, e poi progredire lentamente verso una presentazione più ricca (viste e CSS) e modelli basati su database.


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, che è significativamente diverso da Java.

Potrebbe esserti utile imparare prima Ruby e poi guardare Rails e le sue convenzioni. Imparare cosa fa Rails e come è diventato molto più facile per me una volta che non ho più avuto difficoltà a capire Ruby e ho potuto leggere (e scrivere) il codice / template di Rails.

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


6

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

  • RoR non è una lingua, è una vasta raccolta di tecnologie, lingue e tecniche.
  • Non è come Java, C ++ o altri linguaggi che hanno una struttura logica
  • Non esiste un modo per imparare e nessun libro che possa insegnarti (ne parleremo più avanti)
  • A mio avviso, la comunità sembra avere un atteggiamento un po '"supponente" che non è così indulgente come le altre comunità durante l'apprendimento. Le persone sono regolarmente in disaccordo su come le cose "dovrebbero" essere fatte. Questo viene dall'alto, dal ragazzo che ha inventato il RoR
  • I test sono fortemente incoraggiati a essere una parte fondamentale dello sviluppo nella maggior parte delle lezioni sul 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 qualsiasi libro tu possa trovare.
  • Alcuni metodi e tecniche di base sono "automagici" e non è chiaro come funzionano. Ad esempio, i metodi has_secure_password.

Lo sto imparando da oltre un anno e qui ci sono alcune cose che penso rendono più facile l'apprendimento, a cui sono venuto dall'esperienza:

  • Attaccalo da diverse angolazioni. Quando hai diversi libri, tutorial e blog su cui lavorare, questo può "aprire" un modo per imparare. Un singolo libro o blog da solo può lasciarti "bloccato".
  • Prendi in considerazione l'apprendimento di alcuni HTML / CSS e Ruby. Non tutto, quanto basta per cavarsela, prima di andare troppo lontano nel RoR.
  • Segui un corso su RSpec (o una metodologia di test simile). Il 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 leggere la copertina). Quello Agile che hai menzionato mi ha confuso. "Learing Rails 3" proviene da una direzione diversa e può aiutare a risolvere alcuni problemi che non si possono ottenere da altri tutorial.
  • Fai uno screencast o un corso di apprendimento online. Il tutorial di Michael Hartl è buono, ma molto ripido. Ho scoperto che i libri sopra, oltre al corso Codeschool su RSpec, mi hanno aiutato a superarlo, ma dovevo comunque contattare l'autore con un paio di piccoli punti.
  • Chiedi, chiedi, chiedi! C'è un forum Ruby, un forum Rails, sale IRC e StackExchange, ecc. Usali tutti di frequente !

Per favore, non arrenderti: sei intelligente, ma sembra che tu abbia uno stile di apprendimento simile a me, e Rails è semplicemente molto difficile da imparare e non particolarmente ben educato (completamente) ovunque.


4

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

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

Se dovessi affrontare questo problema, inizierei con l'ottimizzazione di SQL e della modellazione relazionale (non ci sono problemi di layout del browser con SQL!). Quando sei sicuro del livello del database, gioca con ActiveRecord e scopri come rotaie avvolge le tuple dal db.

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

Se hai intenzione di fare qualsiasi sviluppo web usando praticamente qualsiasi framework web, dovrai comprendere SQL e la modellazione relazionale (anche se in seguito sceglierai il percorso NoSQL).


1

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


1

Le tue parole, "a volte tutto il giorno, a volte niente per diverse settimane", mi dicono tutto ciò che devo sapere. Se stai imparando una nuova lingua e un nuovo framework (suppongo sia quello che stai facendo perché menzioni "Ruby on Rails" e non solo "Ruby"), la coerenza paga. Ho scoperto che l'unico modo in cui apprendo e conservo i concetti è studiare circa mezz'ora al giorno, di solito alla fine della giornata, appena prima di coricarsi. Se studio più di mezz'ora, divento irrequieto e perdo la concentrazione. Se studio meno, non conservo ciò 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 sistemarsi.

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


0

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

Risposta: No, non si suppone che abbia una curva di apprendimento ripida, la curva è diversa a seconda del tuo background.


0

Può. So di imbattermi nella "curva di apprendimento" ogni volta che cerco davvero di sedermi e concentrarmi sull'apprendimento di Rails (ogni pochi mesi ormai da 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 ti affidi al 100% sul framework Rails per gestire tutto per te. Dovresti anche ripassare su HTML / CSS / Javascript per ovvi motivi. Inoltre, per esperienza, non lasciarti coinvolgere dalla costante agitazione del mondo di Rails: se riesci a ignorare tutte le cose nuove che i Roscate cognoscenti evangelizzano come Haml, Sass, RSpec / BDD, Cetriolo, ecc. O affogherai nel dover impara a BDD e RSpec a scrivere il tuo codice, devi imparare Haml e Sass (non difficile ma comunque, è un'altra cosa da imparare) per codificare il front-end, ecc. Inizia nel modo più semplice possibile.


0

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

Il modo migliore per affrontarlo è imparare facendo. Fai tutto il possibile per farlo da solo. Di solito leggiamo le cose, ma quando si tratta di una vera immagine, ce la faremo. Sono un programmatore nativo C ++, posso anche programmare in C #. So che c'è molta bontà in quel linguaggio e quella 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 quadro Django. Il libro che ho scelto è interessante in modo semplice e crea un'applicazione di social bookmark. Quindi è come imparare le cose da zero a livello avanzato facendo un vero progetto pratico. Ti suggerisco di approcciarti in quel modo come tutto ciò che stiamo imparando da soli.


0

La cosa con RoR, in particolare con la seconda "R", è che la maggior parte dei tutorial di apprendimento si concentra sull'insegnarti lo stile "code-monkey". Soprattutto il libro Agile, è pieno di superficiali passaggi di programmazione "ora facciamo solo questo, non preoccupatevi del perché". Inoltre il fatto che continuano a cambiare il loro paradigma - vale a dire prima stavano propagandando la RJS come va, ora all'improvviso, si tratta di UJS.

Come alcune persone hanno suggerito qui, potresti provare ad imparare prima i dettagli della stessa lingua di Ruby, quindi passare al framework. Se vuoi ancora imparare entrambi insieme, ho trovato questo libro chiamato "Ruby for Rails" molto utile.

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.