Avec un profil plutôt intégrateur, le back-end a toujours été pour moi la partie obscure du développement web. Celle réservée aux jedis du code. J'y ai fait plusieurs incursions, dans différents langages mais la force n'était pas vraiment avec moi. Sur les plateformes modernes, on a la chance d'avoir une myriade de plugins pour faire illusion mais parfois ce la ne suffit plus, et arrive l'heure de se salir réellement les mains!

Aller voir sous le capot.

Pour la plupart de mes projets jusqu'à présent, toutes les problématiques rencontrées trouvaient une solution via WordPress et des plugins, le plus difficile étant de trouver les bons. Pour certain projets à venir, plus orientés application, j'ai réfléchi à la faisabilité dans WordPress et, bien que possible, j'ai pressenti que sur le long terme je risquais d'avoir quelques difficultés en maintenabilité entre les plugins customisés, les plugins commerciaux et le codebase qui pourrait se retrouver fragmenté.

Je me suis donc intéressé aux frameworks de développement web en espérant y trouver les bonnes solutions. C'est aussi une excellente raison pour aller voir comment ça marche côté back-end et a terme lever une grosse frustration : savoir par moi même amener de la logique et des fonctionnalités plutôt que de se reposer sur des tiers.

Le choix du langage, pourquoi Ruby ?

Choisir un langage n'a pas été chose simple. J'utilise Wordpress au quotidien et donc du php, ou plutôt du "php WordPress" dans la mesure où je fait appel à 80% aux fonctions dédiées. Je suis naturellement allé voir du côté des frameworks php comme CakePhp, Zend Framework, Laravel et Symfony, j'ai parcouru les docs, fait des installations de test puis j'ai jeté un oeil aux autres langages.

Faisant du javascript en front, je me suis dit que le plus simple et le plus rapide serait de se diriger vers une solution Nodejs + Express mais ce ne sont pas forcément des technos adaptées à ce que je souhaite développer et par rapport aux autres, la documentation et les ressources pour apprendre ne sont pas aussi riches.

La suite logique était donc Ruby et Ruby on Rails. J'ai souvent regardé de loin ces deux là et à chaque fois je ne comprenais pas  ce qui suscitait l'engouement et surtout cette syntaxe étrange. Pourtant on en dit du bien et la plupart des cours en ligne ont une grosse partie Ruby. J'avais déjà fait les Try Ruby / Rails for Zombies mais avec une compréhension proche de zéro, me signalant que ce n'était pas pour moi.
Coïncidence ou pur hasard, je me rends compte qu'il y a des Meetups réguliers sur Lille avec le groupe Ruby Nord. Je m'inscris et me rends à l'un d'eux, espérant que la rencontre IRL avec des développeurs Ruby pourrait m'aider à comprendre.
Quelques jours plus tard, je rentrais d'un Rails Mentors, du Ruby plein la tête et convaincu qu'on allait finir par s'entendre Ruby et moi.

Comment apprendre Ruby et Rails

Entrons dans le vif du sujet, l'apprentissage ! Je suis autodidacte et au fil du temps j'ai essayé pas mal de méthodes d'apprentissage en ligne et de sites spécialisés. Je sais qu'il y a un cours assez long sur Treehouseet le contenu est souvent très intéressant mais le rythme des vidéos est vraiment trop lent et on met des heures à apprendre quelque chose qui se lit en 2 minutes. Chez le concurrent Codeschool, le parcours Ruby on Rails est assez complet et les challenges certainement ardus mais là encore beaucoup de vidéos et parfois de grands raccourcis sur certains concepts.

Quoi de mieux que les livres ?

Le meilleur moyen d'apprendre pour moi c'est d'être confronté à des problèmes réels et chercher le web entier jusqu'à trouver la solution. L'idéal serait de démarrer un projet et pièce par pièce apprendre ce qu'il faut pour le faire avancer. Mais sauf d'avoir quelqu'un pour nous diriger dans cet apprentissage cela peut vite devenir décourageant. Il est donc évident qu'une bonne base de connaissance est nécessaire avant de commencer.

Cette base, je la cherche plutôt dans les livres et/ou tutoriels renommés. C'est ainsi que j'ai démarré Ruby et Rails avec le tutoriel de Michael Hartl : The ruby on rails tutorial.Le livre est vraiment très bon si on débute, surtout les 5 premiers chapitres. On y découvre un peu les concepts derrière Rails et rapidement quelques fondamentaux de Ruby. Par la suite cela se corse, certaines explications peuvent sembler manquer et on se retrouve à copier du code sans vraiment comprendre les différentes relations qu'il implique...
J'ai mis ma lecture en pause au chapitre 8, j'avais la sensation qu'il me manquait trop de connaissance en Ruby pour bien appréhender la suite.

Apprendre Ruby en 9 heures

J'ai toujours aimé Codecademy car il n'y a pas de fioritures, la leçon tient en 10 lignes et on vérifie avec le challenge. Ca ne va pas très loin en terme de difficulté mais on peut balayer un cours rapidement.
Dans le cas de Ruby, le cours est annoncé en 9h00, soit une petite journée de travail. Pour le coup je recommande vivement ce cour avant de plonger dans un livre comme le Ruby on Rails tutorial. J'y ai appris beaucoup sur les blocs / procs / lambdas et sur les classes et modules. Sans même replonger dans le tutorial il y a certaines parties dont je me souviens qui sont beaucoup plus claires maintenant.

A la fin de ce cours, j'ai remarqué qu'il y en avait un pour Rails qui tenait en 10 heures. J'espérais y apprendre pas de mal de choses mais au final je suis assez déçu. Le cours promet de faire une app e-commerce façon Etsy mais on fait surtout du copier/colller assez répétitif et on se retrouve à la fin avec une application loin d'être complète et fonctionnelle.

Quoi apprendre ensuite ?

L'avantage de Ruby c'est qu'il y a énormément de ressources disponibles pour apprendre. Tellement qu'il est difficile de choisir! Suite à mes premières lectures et cours, je suis certain qu'une très bonne base en Ruby ne rendra l'apprentissage de Rails que plus simple. ( Même si on lit souvent qu'un peu de Ruby suffit ). D'ailleurs la lecture de cet article : How i trained to learn Rails me conforte dans mon idée.

Je vais suivre ses conseils de lecture et lire Learning programming de Chris Pine et Learn Ruby the Hard Way. Le compte rendu de ces lectures fera l'objet d'un prochain article dans cette série. Les deux ouvrages, comme le tutoriel de Michael Hartl peuvent être lus gratuitement en ligne ou commandés en version ebook  ou papier.

A la suite de ces lectures, mon niveau en Ruby devrait être suffisant pour reprendre l'apprentissage de Rails. J'ai prévu ensuite de lire : Agile development with Rails 4 et  Crafting Rails 4 applications.

En parallèle je commencerai à développer quelques embryons de projets persos pour mettre en application ce que j'ai appris.

Article précédent : Lazy load des images avec Advanced Custom Fields
Article suivant : Advanced Custom Fields, présentation

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