Il y a quelques semaines, je démarrai l'apprentissage de Ruby et du framework Ruby on Rails de manière autodidacte avec pour but d'être capable de développer mes propres applications. Je continue sur cette lancée et présente ici la suite du parcours d'apprentissage, les livres et nouveaux sites découverts.

Rappel des faits

Dans le précédent article de cette série, j'expliquai mes motivations quant à l'apprentissage de Ruby et de Ruby on Rails et je listai les tutoriels, cours vidéos en ligne et livres que j'avais parcouru ou effectué. J'annonçai en fin d'article quelle allait être la suite de cet apprentissage.

J'avais prévu de lire des livres orientés Ruby : Learning programming de Chris Pine et Learn Ruby the Hard Way dans le but de parfaire ma compréhension de Ruby. Puis de reprendre des livres orientés Rails comme Agile development with Rails 4 et Crafting Rails 4.

J'ai donc commencé les deux premiers et tout aussi intéressant que soient leurs contenus, j'avais l'impression de revoir les mêmes fondamentaux une fois de plus. Et sans pratiquer il ne faudrait pas bien longtemps pour que l'oubli prenne l'ascendant sur la rétention d'informations.

Quant aux suivants, Crafting Rails 4 est définitivement trop avancé pour le moment et le parle d'Agile developement with Rails 4 un peu plus bas.

De nouvelles ressources

A force de recherches, de lecture d'avis, de retours d'expériences d'autres wannabe Rubyists, j'ai pu compiler de nouveaux liens intéressants et essayer de nouveaux livres et ressources en ligne.

Pour Ruby

Pour ce qui est du pur Ruby je ne saurai que trop conseiller Ruby Monk, une suite de tutoriels intéractifs qui sont vraiment intéressants. Le niveau est plus élevé que dans ceux parcourus auparavant.

Dans la même veine, il y aussi Ruby Koans. Je n'ai pas encore eu le temps de tout suivre mais ça vaut le coup d'être fait.

Côté livres, j'ai déniché The Well-Grounded Rubyist, Second Edition. Je pense que si il n'en fallait qu'un ce serait celui là. J'avance dans sa lecture morceau par morceau et trouve les explications très claires.

Pour Rails

Pour ce qui est Rails, j'ai suivi quelques livres qui se proposent de nous rendre presque "opérationnels" à la lecture et mise en application de leurs tutoriels. Agile development with Rails 4 étant un pavé assez imposant et ne voulant pas être perdu dans sa lecture, j'ai commencé par me rabattre sur des choses plus simples :

Jump Start Rails : dans lequel on fait un blog (encore et toujours) auquel on ajoute Active Admin. Sympa sur le principe mais j'ai rencontré beaucoup d'erreurs dans le livre et en dehors de la partie admin, le reste tourne autour de simples scaffolds.

J'ai une version de l'application pré déploiement, mais fonctionnelle sur ce dépôt github

Beginning Rails 4 : un livre qui m'a semblé intéressant car il propose de faire un peu de TDD. Le sujet est encore une fois un blog et la partie test se retrouve à la fin, une fois l'application terminée. L'auteur explique pourquoi ce choix mais j'aurai préféré avoir du "vrai TDD". Reste que j'y ai appris des choses importantes sur Active Record et les associations, c'est toujours ça!

Agile development with Rails 4 : J'ai envie de dire que c'est le livre par lequel commencer. Le projet n'est pas passionnant mais on y apprend une multitude de choses réutilisables dans des projets futurs et il apporte une méthodologie facile à suivre. Je me suis arrêté au chapitre internationalisation, à voir sur ce dépôt

Rails 4 in Action : Le dernier que j'ai entamé sur conseils des copains du groupe Ruby Nord qui s'avère aussi bon que le précédent. Je n'en suis qu'au début car je voulais vraiment sortir un peu de l'apprentissage pour passer à la pratique mais j'y reviendrai. Ma progression est dans ce dépot github

Se claquer la tête dans le mur

Les lectures c'est bien mais ça prend du temps et même si on crée des applications en suivant les tutoriels, on ne fait jamais que suivre. A la longue ça peut même être démotivant car à aucun moment on sort de notre zone de confort. Un peu comme le vélo avec les petites roues à l'arrière, on sait faire du vélo mais pas certain qu'on tienne l'équilibre.

Au fil des dernières semaines, j'avais donc besoin de pratiquer sur quelque chose de plus concret, qui m'appartiendrait !

J'ai commencé doucement en migrant mon site WordPress vers Middleman.

Puis j'ai travaillé un peu plus sérieusement sur ma première application afin de rapidement être confronté à des problèmes et me creuser la tête pour trouver des solutions. Je n'ai toujours pas trouvé le moyen ultime pour apprendre efficacement. Foncer tête baissée c'est bien, mais il faut avoir un minimum de ressources quand ça coince.

Toutes ces lectures peuvent semblaient vaines mais elles m'ont amenée quelque chose de très important : Je sais où trouver des réponses quand je rencontre un problème.

Exemple:

  • Je ne sais plus comment utiliser Active Admin ? C'est dans JumpStart Rails.
  • J'ai du mal avec les associations ? Dans Beginning Rails.
  • Je veux créer un panier ? Dans Agile developement.

Certes je n'y trouve pas tout mais j'ai maintenant largement de quoi faire pour tendre un peu plus vers l'autonomie. Pour le reste, il y a la doc, stackoverflow ou encore les RailsCasts.

Ma première "vraie" application

C'est maintenant que la partie fun commence. Mon envie d'en apprendre plus sur le back-end est nourrie par différentes idées d'applications. J'ai donc choisi celle qui me semblait la plus simple à mettre en place (erreur) et dont j'avais le besoin le plus immédiat.

Je prépare un article sous forme d'étude de cas pour présenter l'application. J'espère vivement être en mesure de la mettre en production avant cet été et passer à la suivante. Il y a encore du travail mais c'est gratifiant de travailler sur ce genre de projet en en étant maitre d'un bout à l'autre.

Je finirai avec un petit aperçu des technologies / apps / gems utilisées ou qui vont l'être sur le projet :

  • Sketch : wireframes, Ui design
  • Bourbon : Librairie de mixins SASS
  • Neat : Grille responsive
  • Rails : le framework web
  • Devise : authentification
  • Cancancan : autorisation
  • Slim : templating
  • Simple_form : forms builder
  • Cocoon : dynamic nested forms
  • Paperclip : gestion des images
  • Rspec : pour les tests
  • Capybara : test d'intégration
  • Factory_girl : remplacement des fixtures

Je ne suis pas encore arrivé au choix de l'hébergement et je n'ai pas encore exploré les techniques de déploiement. J'ai néanmoins le sentiment d'avoir avancé : hormis Sketch, Bourbon et Neat, je ne connaissais pas la plupart des termes de la liste ci dessus il y a quelques semaines :)

Article précédent : Advanced Custom Fields, cas pratique
Article suivant : Ma migration de WordPress à Middleman

Je suis disponible pour des missions longues / CDD / CDI Cliquez pour en savoir plus