Camille Roux

Ingénieur en développement web (Ruby on Rails) sur Montpellier

Articles taggés avec ‘web’

Comment débuter en Ruby on Rails ?

Il m’arrive régulièrement de croiser des gens souhaitant s’initier à Ruby et Ruby on Rails. Il existe une multitude de ressources. J’ai essayé de sélectionner celles qui me semblent vraiment indispensables.
Développeurs Ruby, vous pouvez passer votre chemin, je ne vous en voudrai pas, vous n’apprendrez pas grand chose ici :)

Avant de commencer, faisons un petit rappel. Ruby est un langage de programmation (comme PHP, Java, Python…) et Ruby on Rails est un framework (les fondations d’un site, cela évite de réinventer la roue et permet de bien structurer son code).
Sites web à fort trafic utilisant Ruby on RailsRuby on Rails est un framework web très utilisé par les startups en ce moment (et pas les moindres, voir ci-contre). RoR permet de développer rapidement des sites web tout en respectant un grand nombre de bonnes pratiques. Ce framework très innovant et bien pensé est, depuis quelques années, une source d’inspiration pour de nombreux autres frameworks.
Si vous n’êtes pas sûr que c’est Ruby que vous devez apprendre, voici une conférence qui peut vous aider à faire le choix : Pourquoi Ruby on Rails est génial ?

Vous avez de la chance, il est vraiment possible d’apprendre Ruby et Ruby on Rails en s’amusant ! Vous allez voir…

Tout d’abord, Ruby

Le logo du langage de programmation RubyAvant de commencer à apprendre Ruby on Rails et faire des sites web avec, vous devez tout d’abord apprendre Ruby.

Je vous invite à aller faire un tour sur Try Ruby!. Ce site va vous permettre d’apprendre Ruby en commençant vraiment par les bases, le tout dans une ligne de commande interactive en ligne (pas besoin d’installer quoi que ce soit sur votre machine).

EDIT : Je vous conseille également d’aller jeter un oeil à Rubymonk. Pas encore complet, ce site permet d’apprendre les bases de Ruby encore plus simplement qu’avec Try Ruby !

Vous pouvez facilement installer Ruby sur votre propre machine que vous soyez sur Windows, Mac OS ou Linux. Une fois l’installation faites, lancez la commande « irb » en ligne de commande. IRB est une ligne de commande qui ressemble beaucoup à ce que vous avez pu voir sur Try Ruby (sans le tutoriel). C’est très pratique pour tester des bouts de code. Voici à quoi cela ressemble :

Session IRB Ruby

Ensuite, pour approfondir vos connaissances et les tester, je vous conseille de jeter un oeil à RubyKoans. Là encore, une façon originale d’apprendre un langage. Vous aller devoir completer les trous dans le code, puis lancer les tests pour vérifier vos réponses. Tout est expliqué sur le site.

Enfin, si vous souhaitez aller plus loin, vous devez lire Programming Ruby 1.9 (3rd edition): The Pragmatic Programmers’ Guide. La 3ème édition d’un livre d’une qualité remarquable.

Ensuite Ruby on Rails

Logo du framework web Ruby on RailsMaintenant que Ruby vous est familier, vous pouvez vous attaquer à Ruby on Rails. C’est sans hésiter que je vous propose de commencer votre formation avec Rails for Zombies. Sous ce nom étonnant se cache un site très bien fait, ludique et fun. Sans aucun doute, le meilleur moyen d’apprendre Rails en s’amusant !

Ensuite, vous pourrez renforcer vos bases en lisant les Ruby on Rails Guides. Ils commencent par un tutoriel très simple et vous guideront jusqu’à des notions assez avancées.

Enfin, Des screencasts sont aussi à votre disposition pour approfondir des points qui vous intéressent tout particulièrement sur RailsCasts.

« Hum… c’est pas si simple »

Se former seul n’est pas simple et il est fort possible que vous ayez du mal à comprendre certaines choses.

Vous pouvez tout abord rencontrer des développeurs Ruby dans un apéro Ruby près de chez vous (il y en a dans la plupart des grandes villes françaises). C’est un bon moyen de rencontrer des développeurs passionnés qui pourront prendre le temps de vous expliquer quelques points qui sont encore flous pour vous.

Ensuite, si vous avez du mal à vous former seul ou si vous manquez de temps, vous pouvez faire appel à un formateur. Il y a quelques entreprises et indépendants qui font ça très bien. Si ça vous intéresse, envoyez-moi un mail, je pourrai vous en conseiller quelques-uns.

En résumé

Si je ne devais vous donner que 3 ressources pour commencer sans difficultés,  je vous conseillerais le parcours suivant Try Ruby! → Rails for Zombies → Ruby on Rails Guides. Bon apprentissage !

 

Si vous avez d’autres supports à conseiller, n’hésitez pas à les proposer en commentaire.

Logo Startup Weekend Nice Sophia-Antipolis

Préparez votre environnement de travail

Réfléchissez aux techno que vous allez utiliser (surtout si vous êtes porteur de projet). Installez/configurez tout le nécessaire pour ne pas avoir à le faire pendant le weekend.

Faites un tour de table pour connaitre le niveau et les compétences de chacun

Dès le vendredi soir, il est important de bien connaître les compétences de chacun pour faire de bons choix techno et dispatcher au mieux les tâches. Effectivement, cela serait une erreur, par exemple, de sauver les données sur du MongoDB alors que personne ne l’a déjà utilisé et qu’une bonne vieille base Postgres ou MySQL aurait très bien fait l’affaire.

Travaillez de manière agile

Dès le début, dessinez sur un paperboard un tableau à 4 colonnes (backlog, todo, current, done). Dès que quelqu’un a une idée, il écrit son idée sur un post-it (en la décomposant si elle est trop complexe ou trop floue) et le colle dans le backlog. A chaque fois que vous faites un point (toutes les 3-4 heures), choisissez les idées les plus prioritaires (en fonction de leur complexité et de leur valeur business) et mettez dans la colonne todo. Ensuite, dès qu’un développeur commence une tâche, il la déplace dans current. Enfin, vous l’aurez compris, lorsque la tâche est terminée, le post-it va dans done.

48h, c’est très court, prenez bien soin de toujours travailler sur les tâches les plus prioritaires. Veillez également à toujours avoir peu de tâches en cours en même temps.

Pensez toujours à féliciter quelqu’un qui termine une tâche, qui a une bonne idée… C’est principalement ce qui va permettre de maintenir la motivation durant le weekend !

Déployez régulièrement

Afin de ne pas être pris au dépourvu 5 min avant la fin, je vous conseille de déployer régulièrement l’application (toutes les 3-4h). Cela permet aux non-dev de tester l’appli, de remonter des bug, de nouvelles fonctionnalités…

Keep focus on dev

Essayez au maximum de vous concentrer sur le développement. Ne vous occupez pas à faire le design si vous n’avez pas de designer, achetez un design sur ThemeForest, cela fera très bien l’affaire. Ne vous occupez pas de l’admin sys si ce n’est pas nécessaire, déployez votre application en utilisant du PaaS. N’ayez également pas peur de créer de la dette techno (par exemple, en omettant de faire des tests si cela est pertinent), vous pourrez corriger le code la semaine suivante.

Il y a un service pour tout

N’hésitez pas à dépenser quelques euros dans un service qui peut vous faire gagner un temps précieux. Voici quelques services à connaître :

  • Hoptoad : collecte les erreurs qui surviennent sur votre application (Rails, iOS, PHP, Java, .net…) et les agrège pour faciliter la consultation
  • Pusher : Push temps réel sur une application web grâce à des WebSockets
  • Redis To Go : hébergement Redis
  • Sendgrid : envoi d’email
  • Websolr : recherche full-text reposant sur Solr

Restez efficace et en forme

  • Faites des pauses régulièrement
  • N’hésitez pas à faire une sieste si la fatigue vous gagne
  • Mettez en place du pair-programming au moins pour les tâches complexes

Si vous êtes un développeur Rails

Utilisez RailsWizard

RailsWizard permet de générer le code d’une application Rails avec certaines gems indispensables. Vous pouvez choisir les gems que vous voulez intégrer en fonction de vos habitudes et de vos besoins. Cela vous fera gagner quelques minutes.

RailsWizard

Logo du framework web Ruby on RailsVersionnez le code avec Git

C’est devenu un standard pour beaucoup de dev en Rails. Git est également indispensable si vous souhaitez déployer sur des services comme Heroku.

Déployez sur Heroku (si possible)

Heroku vous permet de vous décharger complètement de la partie administration système. Vous faites un push sur le Git de votre projet Heroku, et hop, l’application se déploie. Cerise sur le gâteau, la version de base est gratuite ;)

logo heroku

Vu que Heroku fourni un repository Git pour le déploiement, vous n’aurez même pas besoin de vous créer un git sur Github ou autre pour travailler en équipe. Travaillez par exemple dans une branche dev et pushez sur la branche master à chaque fois que vous voulez déployer.

Si Heroku est trop restrictif pour vous, regardez du côté de solutions comme Engine Yard, Dotcloud

Il y a une gem pour tout

Evitez à tout prix de réinventer la roue. Si vous développez quelques choses d’assez classique, ayez le réflexe de regarder sur Rubygems s’il n’existe pas une gem qui fait ça très bien. Il y a près de 22 000 gems disponibles vous devriez trouver ce qu’il vous faut assez souvent.

Les conseils des lecteurs

Eclatez-vous et faites-vous plaisir (Frédéric Dupérier)

Pensez « lean » (Yann Klis)

Ce n’est pas la peine de bosser 24h/24. Il vaut mieux prendre le temps de construire un bon plan que de se jeter à corps perdu dans des choses qui ne sont pas forcément utile. Pensez « lean » -> « Eliminate waste »

 

Si vous avez d’autres conseils, partagez-les en commentaire, je les ajouterai dans l’article

 

Au micro de Pascal Cardonna

Pascal CardonnaPascal Cardonna est coordinateur multimédia chez Radio France. C’est un passionné de radio, de télévision, de cinéma, d’internet, de réseau sociaux… ! Sur son blog, il publie des interviews filmées de personnes toutes aussi passionnées que lui sur des domaines très divers : community manager, blogueurs célèbres, pompier, étudiants, top models…

Grâce à la magie de Twitter et du networking, nous avons fait connaissance sur la toile. Puis la semaine dernière, en déplacement dans la région, Pascal m’a proposé de se rencontrer et m’a demandé si j’étais d’accord pour qu’il m’interview. J’ai été surpris et honoré par cette invitation. Je me retrouve donc sur le blog de Pascal à côté de grands bonhommes comme Matthieu Blanco, Gonzague… Une telle proposition ne se refusant pas, je vous invite à lire son billet sur l’interview.
Je parle de mon métier, de Backinmind et du Startup Weekend Nice Sophia-Antipolis.

Merci beaucoup Pascal pour cette video et à très bientôt sur Nice !

 

Retours sur le Startup Weekend Genève #SWGVA

Logo Startup Weekend Genève #SWGVALe weekend dernier j’ai participé à mon deuxième Startup Weekend. Après avoir fait le Startup Weekend Paris, je suis allé à celui de Genève !

J’y suis allé accompagné de Claude Perrin (@klodr) et Florent Mérian (@fmerian). Voulant vivre l’expérience à fond, nous avons fait quelques séances de brainstorming sur Skype les jours précédents afin de trouver une idée. C’est le concept de BackInMind, que nous avons présenté vendredi soir dernier.

Qu’est-ce que BackInMind ?

BackInMind screenshotIl s’agit d’un moteur de recherche indexant sa mémoire sociale. Plus simplement, BackInMind permet de faire des recherches dans les tweets, les checkins Foursquare, les messages Facebook que l’on a écrits ou qu’on a pu lire dernièrement. Afin, de proposer une bonne expérience utilisateur nous avons choisi de fournir une interface à la Google Instant.

Il existe déjà certains acteurs sur ce marché, mais ils sont pour la plupart focalisés sur l’archivage.

Quels ont été les choix technos ?

Logo du framework web Ruby on RailsDans l’équipe, nous étions 2 développeurs. Un étudiant nous a rejoint dans le weekend. Comme nous ne connaissions pas les mêmes technos, nous avons décidé que je prendrais la partie serveur et le second, la partie front.

Nous sommes partis sur du Ruby on Rails 3 côté serveur, hébergé sur Heroku et du YUI pour le JS côté client. La base de données retenue a été Postgres.

Comment le projet a-t-il été géré ?

Business Model Canvas et méthode Agile - BackInMind TeamLe précédent weekend m’avait permis de voir qu’il n’était pas concevable de mettre en place Scrum dans un délai aussi court. De ce fait, nous avons juste été agiles :

  • nous avons fait des points réguliers (Scrum meeting),
  • nous sommes toujours restés proches d’une version démontrable,
  • la notion de « tâche terminée » a été définie au début du weekend,
  • nous avons listé les tâches sur des post-it et maintenu un tableau d’avancement (done, current, todo) à jour.

Pour réaliser ce projet en 54h, nous étions 7:Equipe BackInMind

Qu’ai-je appris ?

Startup Weekend GenèveEncore une fois, le Startup Weekend m’a beaucoup apporté ! J’ai tout d’abord découvert la Suisse et ses habitants avec cet accent qui me manque déjà.

Techniquement, le projet était très ambitieux et nous sommes tout de même arrivé à délivrer une version très acceptable pour une démo. Nous avons pu y arriver d’une part grâce aux choix technos, mais aussi grâce à une très bonne collaboration au sein de l’équipe technique. Nous avons su être pragmatiques, faire de bons choix et bien gérer le temps.

Ce Startup Weekend m’a aussi donné envie de m’intéresser au monde du business/marketing. J’ai pu découvrir qu’il existait des méthodes dédiées aux startups permettant d’assister la conception de business model. J’ai décidé d’approfondir le sujet en achetant ce livre, sur les conseils de Claude : Business Model Generation.

Enfin, j’ai fait une nouvelle fois de belles rencontres. Je pense vraiment que c’est là, la force d’un Startup Weekend.

Résultat, j’ai juste une envie, recommencer !
Sans oublier BackInMind, je réfléchis à participer à celui de Marseille (si vous y allez, faites-moi signe !) et je vais également participer à l’organisation d’un Startup Weekend sur Sophia Antipolis !

Retours sur le Startup Weekend Paris

Le weekend dernier, j’ai participé à la troisième édition du Startup Weekend Paris. Le weekend a été très dense, de ce fait j’ai à vous rapporter à propos de l’événement, du projet, de l’équipe, des technologies et méthodes utilisées…

Démarrage du weekend

Startup Weekend Paris LogoLe Startup Weekend a commencé vendredi soir par un apéro pour faire connaissance. Ensuite, Franck, un des organisateurs, nous a fait faire quelques exercices d’impro sur le sujet de la création de startups pour détendre l’atmosphère. Enfin, nous nous sommes tous rendu dans un grand amphi pour passer aux choses sérieuses (pitch et élection des projets).

Nous étions 116 personnes. 46 projets ont été présentés (liste complète). J’ai moi-même présenté un projet, le #26. L’idée que j’ai présentée est un outil permettant de faciliter au maximum la rédaction des tweets lorsqu’on publie de la veille, sans pour autant l’automatiser (comme le propose TwitterFeed par exemple). Cet outil offre également une analyse du ROI (Return On Influence). On pourrait donc avoir des réponses à des questions comme : Quel est le meilleur moment dans la journée/la semaine pour publier un tweet? Quels thèmes intéressent le plus mes followers? …

L'équipe Qualifeed

Mon projet a finalement été sélectionné. Deux autres projets se sont d’ailleurs ralliés au mien car nos sujets étaient proches. Les participants se sont répartis sur les différents projets, nous nous sommes retrouvé 11 pour « monter une startup » en un weekend! L’équipe était composée de 7 développeurs, 4 marketeux et 1 designer.

Le vendredi soir s’est terminé par un brainstorming et un peu d’organisation. Nous avons finalement décidé de nous consacrer uniquement à la partie stats.

Choix technologiques

Logo du framework web Ruby on RailsCoté techno, Ruby on Rails a été choisi de manière quasi-unanime. Pourquoi ? Car il n’y avait que des développeurs Rails ! Ce n’est pas du tout représentatif du marché du développement web en France, par contre cela représente très bien le marché des startups en France et plus particulièrement sur Paris. La vague Ruby on Rails est bien là et ça fait plaisir !

Nous avons donc développé en Rails 3 et Ruby 1.8.

Voici la liste des principaux services/techno que nous avons utilisés durant le weekend :

Logo MongoDBlogo herokuLogo GitLogo GithubLogo hoptoadLogo blueprint

Côté plugins Rails, nous avons utilisé :

  • mongoid
  • devise
  • devise-twitter
  • mini_fb
  • hoptoad_notifier
  • will_paginate
  • web-app-theme
  • haml
  • bitly

Avec du recul, je pense que nos choix ont été plutôt bons. Heroku nous a permis de déployer l’application très rapidement et de ne perdre aucun temps avec l’administration système. Grâce à MongoDB (et Mongoid) nous avons pu nous permettre quelques facilités comme stocker les tweets dans leur totalité sans déformer leur structure. J’ai cependant toujours un doute sur la facilité à faire évoluer la structure des documents mongoDB sur du long terme. Nous avons pu mettre en place l’authentification en quelques secondes grâce à Devise. L’authentification par Twitter fut plus complexe car le plugin, devise-twitter, n’est pas encore stable.

Organisation

Ce weekend m’a permis de constater que Scrum est fréquemment utilisé dans le monde startup, la plupart des membres de notre équipe connaissait déjà cette méthode agile de gestion de projet. Nous avons donc décidé de la mettre en oeuvre pour le weekend pour l’équipe de dev.

Qualifeed fait du Scrum

Nous avons adapté la méthode à notre cas. Nous avons fait des sprints de 6h. Nous avons également choisi de commencer le samedi matin avec un sprint pas encore défini afin de ne pas perdre de temps.

Malheureusement, comme le produit a été conçu et modifié par le marketing tout au long du weekend, il n’a pas été possible d’appliquer Scrum comme nous l’aurions souhaité. Nous avons donc supprimé la notion de sprint. Nous avons gardé le concept de user stories, des Post-It sur un tableau, la notion de ‘terminé’ (samedi matin, nous nous sommes entendus sur le fait que pour ce weekend, une tâche terminée serait une tâche qui aurait été testée par un développeur)…

Enfin, ce qui m’a le plus surpris côté organisation c’est le fait qu’il n’y a pas eu de leader durant ce weekend et que personne n’a cherché à l’être. L’équipe s’est auto-organisée. Toutes les décisions ont été prises par l’ensemble de l’équipe et cela a très bien fonctionné.

Je craignais une guerre du pouvoir, j’ai assisté à une alliance pour la réussite ! Bravo l’équipe !

Le résultat : Qualifeed

Logo Qualifee

Le weekend est passé très vite. Nous avons peu dormi. Et ce fût rapidement l’heure de rendre la copie.

Qualifeed - Top tweetEn un petit weekend, nous avons réalisé Qualifeed. Aujourd’hui Qualifeed permet déjà pas mal de choses :

  • Affichage des tweets les plus influents
  • Pour chaque tweet, affichage du nombre de personnes ayant pu voir le tweet, du Qualifeed Score, du nombre de réponses, du nombre de retweets et du nombre de followers au moment de la publication
  • Possibilité de tweeter votre meilleur Qualifeed Score
  • Mini gestion du suivi de l’effet d’une campagne sur son site (avec un tracker en Javascript)
  • Graphique montrant l’évolution du nombre de followers et du nombre de fans de votre page Facebook dans le temps
  • Authentification par Twitter

Bien sur l’idée est de faire évoluer le produit. Nous aimerions que petit à petit Qualifeed se rapproche de la définition suivante :

Qualifeed propose une solution de mesure de l’audience, de l’engagement et de la transformation de vos campagnes social media marketing.

Plus précisément :

Qualifeed fournit une solution de Social Inluence Management et de Social Influence Optimization pour aider les marques, les community managers et les politiques à mesurer et à améliorer de manière continue le ROI (Return On Influence) de leurs campagnes de social media marketing sur Twitter mais également sur les autres outils sociaux. Le Social Influence Dashboard fournit une vision holistique de l’audience, de l’engagement et la transformation des activités.

Conclusion

J’ai beaucoup appris ce weekend !

Tout d’abord, j’ai pu voir que Ruby on Rails est la techno choisie par la plupart des startups web qui se lancent sur Paris. Ce weekend a été une très belle démonstration des possibilités offertes par Ruby on Rails. J’espère que les startups de Sophia vont vite s’y mettre.

Ensuite, j’ai pu rencontrer des gens formidables. C’est incroyable à quel point les gens présents étaient passionnés, compétents et motivés.

Enfin, j’ai été bluffé par la quantité et la qualité du travail que les équipes ont pu réaliser en un weekend. Cela prouve bien que si l’on s’entoure de gens passionnés, on peut déplacer des montagnes !

Bref, ce weekend a été une excellente expérience. J’espère pouvoir participer à nouveau à un tel événement très bientôt !