Ruby on Rails est-il censé avoir une courbe d'apprentissage abrupte ou est-ce juste moi? [fermé]

17

Je suis un programmeur autodidacte. J'apprends le RoR depuis octobre avec une intensité variable (parfois toute la journée, parfois rien pendant plusieurs semaines). Avant cela, je ne connaissais que Java, mais je le savais assez bien. J'ai entendu tellement de battage médiatique sur RoR et comment il est censé vous rendre heureux, productif, etc. Jusqu'à présent, cela ne m'a fait que frustrer. Je l'ai appris dans le livre Agile, et je soupçonne qu'une partie de la difficulté pourrait être liée au fait que je ne connais pas JavaScript et CSS, et que je n'ai qu'une compréhension fragile des bases de données et du HTML. Mais apparemment, il m'a fallu beaucoup plus de temps pour terminer le projet dans le livre Agile que les autres personnes, et je ne m'en souviens toujours pas beaucoup. Il y a des choses sur Rails que je n'arrive pas à comprendre, par exemple quand utiliser des symboles et quand NE PAS le faire, ou comment les méthodes dynamiques sont appelées.

Récemment, on m'a confié une petite tâche Rails où l'on me demande d'apporter une petite modification à l'interface. Cela m'a pris environ 25 heures et même si j'ai fait quelques progrès dans la compréhension du code, je n'ai toujours aucune idée de la façon de procéder. Je ne peux même pas demander à Stack Overflow car il y a tellement de code que je vais devoir fournir pour donner du contexte.

Donc ma question est dans le titre: RoR est-il censé prendre beaucoup de temps à apprendre ou suis-je juste lent? Se peut-il que j'aie appris du mauvais livre? Mon style d'apprentissage est tel que je ne comprends rien ou que je comprends tout, si cela a du sens.

Tootsie Rolls
la source
1
L'apprentissage est toujours incrémental , vous comprenez un peu plus chaque fois que vous apprenez quelque chose.La résolution de problèmes est difficile et nécessite de la patience (quelle que soit l'expertise du langage de programmation) plus tôt vous l'acceptez plus facilement, il vous appartiendra de les aborder avec un esprit frais.
Aditya P
Je pensais que c'était le cas, mais c'est probablement parce que sa convention était orientée dans mon cas. Très habitué à configurer beaucoup de choses qu'il fait comme convention.
Rig

Réponses:

17

D'après votre question, il est évident que ce n'est pas seulement Rails que vous essayez d'apprendre, mais, en même temps, vous devez comprendre les concepts de développement Web, ainsi que les bases de données et SQL. C'est une tâche énorme, alors soyez patient.

D'un autre côté, avec Rails, vous n'avez pas le choix - vous devez apprendre les trois: M, V et C à partir de MVC , tous en même temps, mais ce serait le cas avec n'importe quel framework MVC, Rails étant parmi les plus faciles , Je dirais.

Ce que vous pourriez faire à la place est de commencer avec un cadre plus simple, tel que Sinatra, jusqu'à ce que vous soyez à l'aise avec les concepts de base de Ruby et HTTP, puis de progresser lentement vers une présentation plus riche (vues et CSS) et des modèles basés sur une base de données.

Mladen Jablanović
la source
10

Lorsque vous apprenez Rails et que votre seul arrière-plan est Java, vous n'êtes pas seulement en train d'apprendre un nouveau framework web. Vous apprenez également un nouveau langage de programmation, qui est très différent de Java.

Cela peut vous aider à apprendre Ruby d'abord, puis à regarder Rails et ses conventions. Apprendre ce que fait Rails et comment il est devenu beaucoup plus facile pour moi une fois que je n'avais plus de difficulté à comprendre Ruby et que je pouvais lire (et écrire) du code / des modèles Rails.

J'ai parcouru le didacticiel Ruby on Rails et je l'ai trouvé très utile. Le livre de tutoriel est gratuit et il existe une version pour Rails 2.3 et 3.0. Vous pourriez également trouver utile de lire sur MVC (Model-View-Controller) et le développement Web / le cycle de vie des pages en général.

Adam Lear
la source
6

Anita, j'ai eu presque la même expérience que toi. mais je pense que je comprends maintenant pourquoi il est si difficile à apprendre:

  • RoR n'est pas une langue, c'est un large éventail de technologies, de langages et de techniques.
  • Ce n'est pas comme Java, C ++ ou d'autres langages qui ont une structure logique
  • Il n'y a pas une seule façon d'apprendre et aucun livre qui puisse vous apprendre (plus de détails plus tard)
  • À mon avis, la communauté semble avoir une attitude quelque peu "d'opinion" qui n'est pas aussi indulgente que les autres communautés lorsqu'elle apprend. Les gens sont régulièrement en désaccord sur la façon dont les choses «devraient» être faites. Cela vient du haut, du gars qui a inventé RoR
  • Les tests sont fortement encouragés à faire partie intégrante du développement dans la plupart des leçons RoR, et les langages de test sont des DSL qui peuvent également ajouter à la charge d'apprentissage déjà élevée.
  • Il n'y a pas de documentation appropriée pour la langue, seulement une API, quelques guides et tous les livres que vous pouvez trouver.
  • Certaines méthodes et techniques de base sont "automagiques" et leur fonctionnement n'est pas clair. Par exemple, les méthodes has_secure_password.

Je l'apprends depuis plus d'un an maintenant et voici certaines choses qui, selon moi, facilitent l'apprentissage, auxquelles je suis parvenu par expérience:

  • Attaquez-le sous plusieurs angles. Lorsque vous disposez de plusieurs livres, didacticiels et blogs à partir desquels vous pouvez travailler, cela peut "ouvrir" une voie d'apprentissage. Un seul livre ou blog seul peut vous laisser «coincé».
  • Pensez à apprendre du HTML / CSS et Ruby. Pas tout, juste assez pour s'en sortir, avant d'aller trop loin en RoR.
  • Suivez un cours sur RSpec (ou une méthodologie de test similaire). Celui de Codeschool sur RSpec est particulièrement bon et cela vous empêchera de rester coincé dans une leçon RoR car vous ne pouvez pas suivre les tests.
  • Obtenez environ 3 livres. Obie Fernandez "The Rails 3 Way" est un must, utilisé comme référence quand il y a quelque chose que vous n'obtenez pas (pas pour une lecture de couverture à couverture). L'agile dont vous avez parlé vient de m'embrouiller. "Learing Rails 3" vient dans des directions différentes et peut aider à résoudre certains problèmes que vous ne pouvez pas obtenir avec d'autres didacticiels.
  • Faites un screencast ou un cours d'apprentissage en ligne. Le tutoriel de Michael Hartl est bon, mais l'apprentissage très raide. J'ai trouvé que les livres ci-dessus, ainsi que le cours Codeschool sur RSpec, m'ont aidé à passer au travers - mais j'ai quand même dû contacter l'auteur sur quelques petits points.
  • Demandez, demandez, demandez! Il existe un forum Ruby, un forum Rails, des salles IRC et StackExchange, etc. - utilisez-les tous fréquemment !

S'il vous plaît, n'abandonnez pas - vous êtes intelligent, mais semblez avoir un style d'apprentissage similaire à moi, et Rails est juste très difficile à apprendre et pas particulièrement bien enseigné (complètement) n'importe où.

dix fois
la source
4

Peut-être que le problème est moins rubis (et / ou rails) et plus le fait que vous n'avez qu'une «compréhension fragile» de HTML / CSS / JavaScript et SQL et des bases de données.

Rails est un «framework full-stack». Si votre expérience de programmation antérieure est un noyau Java avec peut-être un peu de swing, alors il y a beaucoup de concepts à apprendre en même temps.

Si j'approchais de ce problème, je commencerais par faire en sorte que SQL et la modélisation relationnelle soient cloués en premier (il n'y a aucun problème de mise en page du navigateur avec SQL!). Lorsque vous êtes sûr de la couche de base de données, jouez avec ActiveRecord et découvrez comment rails enveloppe les tuples de la base de données.

La prochaine étape serait alors d'apprendre les contrôleurs et le routage puis l'interface utilisateur (html / javascript etc).

Si vous voulez faire du développement Web en utilisant à peu près n'importe quel framework Web, vous devrez comprendre la modélisation SQL et relationnelle (même si vous choisissez ensuite la route NoSQL plus tard).


la source
1

Je viens également d'un arrière-plan Java et j'ai eu beaucoup de mal à apprendre Rails. J'ai eu les mêmes problèmes que vous avez mentionnés. J'ai trouvé que regarder railscasts.com m'a aidé au début. Le simple fait de voir comment quelqu'un d'autre a fait les choses m'a aidé à comprendre et j'ai ensuite commencé à faire les choses moi-même. Je n'ai pas touché Rails depuis la sortie de Rails 3.

mbreedlove
la source
1

Vos mots, "parfois toute la journée, parfois rien pendant plusieurs semaines" me disent tout ce que j'ai besoin de savoir. Si vous apprenez un nouveau langage ET un nouveau framework (je suppose que c'est ce que vous faites parce que vous mentionnez "Ruby on Rails" et pas seulement "Ruby"), la cohérence est payante. J'ai trouvé que la seule façon d'apprendre et de retenir des concepts était d'étudier environ une demi-heure par jour, généralement à la fin de la journée, juste avant le coucher. Si j'étudie plus d'une demi-heure, je deviens agité et perds le focus. Si j'étudie moins, je ne retiens pas ce que j'ai appris.

Éliminez les distractions - c'est mon meilleur conseil. Et étudiez chaque jour de la semaine. Avant de vous en rendre compte, les choses commenceront à se mettre en place.

Je n'ai vu aucun article de suivi, alors je me demande comment vous avez fait. Cela fait 2 ans, et cela devrait certainement être beaucoup de temps pour apprendre à être un développeur web haut de gamme!

user2583747
la source
0

Je penche Ruby and Rails depuis environ 8 mois maintenant. Je suis arrivé avec une compréhension du HTML, XML, SQL. J'ai toujours trouvé le même problème que vous, ce qui a fonctionné pour moi était de travailler sur de vrais problèmes, pas seulement de lire et d'espérer comprendre. Vous devrez peut-être exécuter de nombreux petits tests de morceaux de code ou du mvc pour saisir un concept. Je travaille toujours sur les symboles. Prenez-le simplement un problème à la fois et au fur et à mesure que vous les résolvez, vous apprendrez quelque chose nécessaire pour résoudre un autre problème dans votre projet.

Réponse: Non, il n'est pas censé avoir une courbe d'apprentissage abrupte, la courbe est différente selon votre parcours.

OpenCoderX
la source
0

Ça peut. Je sais que je rencontre la «courbe d'apprentissage» chaque fois que j'essaie de m'asseoir et de me concentrer sur l'apprentissage de Rails (tous les quelques mois depuis environ 2 ans et plus maintenant). Le problème est que tant de choses dans Rails changent à un rythme ultra-rapide, et souvent les ressources que vous trouvez sont obsolètes presque immédiatement.

Mon conseil est de commencer par se concentrer sur Ruby (les bases au moins) puis sur Rails, donc vous ne comptez pas à 100% sur le framework Rails pour tout gérer pour vous. Vous devez également rafraîchir HTML / CSS / Javascript pour des raisons évidentes. De plus, par expérience, ne vous laissez pas emporter par le roulement constant du monde de Rails: si vous pouvez ignorer toutes les nouveautés que les cognoscenti Rails évangélisent comme Haml, Sass, RSpec / BDD, Cucumber, etc. ou vous vous noierez en devant apprendre BDD et RSpec pour écrire votre code, avoir à apprendre Haml et Sass (pas difficile mais quand même, c'est une autre chose à apprendre) pour coder le front-end, etc. Commencez aussi simple que possible.

Wayne Molina
la source
0

Il existe une courbe d'apprentissage pour tout langage de programmation. Nous n'apprenons pas vraiment une langue de manière conventionnelle. Comme C / C ++, mais lorsque les choses se présentent, nous devons également connaître les écrous et boulons de quelques technologies.

La meilleure façon de l'aborder est d'apprendre en faisant. Prenez toutes les précautions pour le faire vous-même. Habituellement, nous lisons les choses, mais quand il s'agit de la vraie image, nous nous en tiendrons à cela. Je suis un programmeur C ++ natif, je peux également coder en C #. Je sais qu'il y a beaucoup de bonté dans cette langue et cette bibliothèque d'un point de vue abstrait, mais la plupart des sujets que je viens de lire et d'ignorer. Donc, si vous me demandez, je suis en fait handicapé.

J'apprends le framework Django. Le livre que j'ai choisi est d'une simplicité intéressante et crée une application de signet social. C'est donc comme apprendre des choses de zéro au niveau avancé en faisant un vrai projet pratique. Je vous suggère d'aborder de cette façon car nous apprenons tous vous-même.

Sarat
la source
0

Le problème avec RoR, en particulier avec le deuxième "R", c'est que la plupart des didacticiels d'apprentissage se concentrent sur vous enseigner le style "code-singe". Surtout le livre Agile, il est plein d'étapes de programmation superficielles "maintenant nous faisons juste cela, ne vous embêtez pas pourquoi". De plus, le fait qu'ils continuent de changer de paradigme - c'est-à-dire qu'ils vantaient d'abord le RJS en cours de route, tout d'un coup, c'est à propos de l'UJS.

Comme certaines personnes ici l'ont suggéré, vous pourriez essayer d'abord d'apprendre les tenants et aboutissants du langage Ruby lui-même, puis de passer au cadre. Si vous voulez toujours apprendre les deux ensemble, j'ai trouvé ce livre intitulé "Ruby for Rails" très utile.

Jas
la source