Sondage Développeurs Québec 2012

Quoi de mieux que de commencer l’année avec un petit sondage pour les programmeurs afin d’en savoir davantage sur le profil de notre profession !
L’idée de ce sondage m’est venue lors de la conférence principale de l’Agile Tour Québec 2011 par Robert C. Martin. Ce dernier, au début de sa présentation, avait fait un sondage éclair à main levée parmi les participants afin d’en savoir plus sur les technologies utilisées et les pratiques connues. La foule n’était pas composée à 100% de développeurs et donc les résultats peut-être un peu faux à ce moment.
Histoire d’en avoir le cœur net, j’ai préparé le court et simple sondage suivant:
Merci d’avance de participer à ce sondage, en particulier si vous avez un des profils suivants ou que vous programmer à l’occasion:
- Développeur/Programmeur
- Chef d’équipe
- Architecte Logiciel
- Testeur
- Coach
- Formateur
- Entrepreneur
Les résultats du sondage seront publiés sur ce blogue dans quelques semaines. Merci d’y participer.
Mon Bilan 2011 et Mes objectifs 2012
Je crois qu’il est bon de faire notre bilan une fois par année et de mettre nos objectifs en ligne. Cela nous donne une petite pression intérieure pour les accomplir. C’est le but du présent billet et j’espère que cela vous donnera aussi l’idée de vous fixer des objectifs et d’en parler à votre entourage ou de les énoncer publiquement dans votre blogue par exemple.
J’aime bien commencer par un petit bilan histoire de bien positionner mes objectifs. 2011 fut une grosse année, et épuisante par moment, sur plusieurs volets. Néanmoins, je suis fier des résultats et 2012 sera sûrement une bonne année aussi.
Mes réalisations en 2011:
Emploi actuel:
- Dans mon emploi, j’ai participé à un bon projet de plus de 4000 j-p à titre d’analyste organique et qui regroupait plusieurs technologies dont VB6, VB.Net, TFS, SQL et Oracle. Ce fut un projet fort intéressant et j’ai beaucoup appris sur plusieurs aspects, humains et technologiques.
Communauté Agile de Québec:
- Devenu président du CA.
- Nous avons organisé avec brio la conférence Agile Tour 2011 avec Bob Martin comme conférencier principal et 400 participants, rien de moins ! Ce fut un bel effort d’équipe. D’ailleurs j’en ai déjà parlé dans un autre billet.
- Nous avons aussi organisé des rencontres mensuelles et des “Code Retreat” ou Retraite du programmeyr.
- Cela nous a pris beaucoup d’effort afin de bien s’organiser entre nous. À se doter de meilleurs outils en 2012.
Lectures:
- 15 lus, 2 en cours. Objectif de 12 atteint et dépassé. Super !
Mes objectifs en 2012
![]()
Professionnel
- Écrire davantage de blogues (voir autre billet dans les références)
- En m’inspirant de Frédéric Harper (voir liens dans les références), je vais sortir de sa zone de confort de temps à autre pour y apprendre les technologies suivantes:
- Développement d’application pour iPhone et le langage Objective-C
- Apprendre davantage le Ruby, RoR et ses amis (RSpec, Cucumber, …
- Autres petits projets de code et me servir de Git comme gestionnaire de code source
Agile
- Avec la Communauté Agile de Québec: continuer de m’impliquer pour une dernière année probablement
- Aussi continuer de me mettre à jour dans l’agilité avec des lectures ou autre, notamment sur le Lean et le Kanban que je veux approfondir.
Lectures
- Je hausse la barre à 20 livres à lire cette année. C’est 5 de plus, mais j’en ai quelques-uns à finaliser, donc c’est réaliste.
- De plus, je me suis procuré un Kindle Touch, ce qui me permettra de traîner mes livres un peu partout. Je me sers du site “GoodReads” pour suivre mes progressions de lecture.
Références:
Blogue de Frédéric Harper:
Mon Blogue:
Autres:
Bilan 2011 avec WordPress
J’aime bien faire le bilan annuel de mon blogue, histoire de voir un peu ce qui s’est passé. WordPress est très aidant en nous faisant parvenir un beau sommaire des faits saillants au début de l’année. Voici donc les points forts de mon blogue :
- 20 billets produits en 2011 au lieu de 52 souhaités. Malgré tout c’est une bonne progression par rapport à 2010 où j’en avais composés 13. Conclusion: j’aime bien écrire des billets, mais parfois avec beaucoup de travail au boulot et avec la famille, le temps est parfois difficile à trouver.
- Les visites en hausse à 3600 (1400 l’an dernier). Très bonne progression. Autre fait intéressant et qui prouve qu’annoncer ses nouveaux billets sur les médias sociaux fonctionne, regardez qui se retrouve parmi les sites référents principaux :
- twitter.com
- linkedin.com
- fr.wordpress.com
- Les pays principaux des visiteurs sont la France, le Canada et la Suisse.
- Certains visiteurs sont venus par des recherches, la plupart avec les mots clefs suivants: gtd, pomodoro logiciel, code retreat, gestion visuelle, et getting things done.
Autre point intéressant, ma série de billets sur les outils de productivité semble avoir été fort populaire. D’ailleurs, on en retrouve plusieurs dans mon top 5 des billets les plus lus et commentés en 2011:
- Outils de productivité partie 2: La Technique Pomodoro
(le plus populaire en 2011 !!!) - C’est quoi un Lean Startup ?
- Outils de productivité partie 1: GTD
- Outils de productivité partie 5: Les utilitaires
- Outils de productivité partie 4: Zen et Focus
Voici mes objectifs en 2012 en ce qui a trait à mon blogue:
- Rédaction de 30 billets en 2011 (52 était un peu trop, on va y aller progressivement).
- Refaire une légère refonte de mon blogue (thème et autre)
- Faire page "À propos de moi"
- Faire une série de billets sur un sujet en particulier
Référence:
Le cerveau divisé
Je m’intéresse beaucoup à notre cerveau, comment il fonctionne, se souviens et comment il pense. J’ai eu quelques questionnements on regardant l’excellent vidéo (11min) de RSA Animate "The Divided Brain":
Je vous recommande fortement de l’écouter si le sujet vous intéresse. Avec le côté graphique qui suit le discours, c’est divertissant et instructif.
J’ai noté deux passages vers la fin qui je trouve important:
The Intuitive mind is a sacred gift and the rational mind is a faithful servant.
- Albert Einstein
But our society has forgotten the gift and have created a society that honors the servant.
-Iain McGilChrist (présentateur)
- Est-ce qu’effectivement notre société met trop l’accent sur le côté rationnel de notre pensée ?
- Est-ce que le fait de laisser côté en général notre côté intuitif résulte ainsi une baisse de créativité ?
Je pense comme le présentateur au fait que nous avons besoin des deux côtés pour bien fonctionner. Des outils comme le Mind Map (schéma heuristique) et la pensée visuelle sont importants devraient être enseignés et utilisés davantage.
Qu’en pensez-vous ?
Comme d’habitude, les commentaires sont les bienvenus.
Agile Tour 2011: Un beau défi réalisé !
Pour une troisième année consécutive, l’Agile Tour était de retour à Québec mercredi dernier, le 26 octobre. Je m’étonne toujours de la qualité du travail que l’on peut faire pour organiser cette conférence en dépit des circonstances. Par exemple, le fait que personne ne travaille à temps plein là-dessus. Tous les organisateurs ont déjà un premier travail.
Aussi, cette année c’est un peu spécial, car un de mes auteurs préférés de livre, Robert “Uncle Bob” C. Martin, était notre conférencier principal.
J’ai adoré sa présentation, “Clean Architecture”, qui était instructive et divertissante, comme d’habitude dans son cas.
En passant, voici les nouveautés que nous avons amenées cette année:
- La conférence a lieu dans un hôtel au lieu de l’université Laval
- Nous avons quatre de salles de conférences + une grande salle pour la conférence principale et les repas.
- Les conférences sont divisées par thème et par salle afin d’en avoir pour tous les goûts chez nos participants.
- Un comité de programme a été établi afin d’évaluer et de choisir les soumissions de conférences.
- 18 sessions différentes, en plus de la conférence principale, étaient offertes aux participants.
Aussi, en tant qu’OSBL (organisme sans buts lucratifs), nous nous efforçons de rendre accessible cet événement au plus grand nombre possible de personnes. Nous avons eu aussi un nombre record de participants (400) et nous avons dû en refuser plusieurs pour cause de logistiques et d’espace dans les salles. L’engouement pour le développement Agile est vraiment en hausse à Québec cette année !
Certaines petites choses sont encore à améliorer, mais ce fut selon moi un très bon événement de grande qualité et pour un prix modique (50$). Ce qui concorde parfaitement avec la mission de la communauté Agile de Québec.
Un gros merci particulier à mes collègues pour qui la plupart c’était la première fois qu’ils organisaient un « Agile Tour » :
- David Beaumier
- Félix-Antoine Bourbonnais
- Patrice Caron
- Louis-Joseph Foujieu
- Dave Jacques
- Amélie Turgeon
Au plaisir de vous retrouver à l’Agile Tour 2012 !
Introduction à un Code Retreat par Corey Haines
Voici l’introduction d’un Code Retreat de Corey Haines que j’ai filmé lors de son passage au Code Retreat Québec 2011 en mai dernier.
J’ai téléchargé le tout sur YouTube en 3 parties pour ne pas perdre la qualité HD.:
Références :
Est-ce que votre code est S.O.L.I.D. ?
Dans ce billet, je vais vous décrire brièvement les principes SOLID pour la programmation orientée-objet avec quelques commentaires et vous suggérer quelques ressources pour approfondir ce sujet qui devrait être connu de tous les programmeurs sérieux et professionnels.
Je suis toujours surpris lorsque, la plupart du temps, à chaque fois que je parle de ces principes à de nouveaux collègues, mon interlocuteur hausse les épaules et ne sait pas de quoi je parle.
S.O.L.I.D. est acronyme regroupant les principes suivants:
- Single Responsability Principle (SRP): Une classe devrait avoir une et une seul raison (responsabilité) d’être modifiée.
- Open Closed Principle (OCP) : Chaque classe devrait être ouverte pour des extensions et fermé autant que possible pour des modifications.
- Liskov Substitution Principle (LSK) : Les classes dérivées peuvent être substitué de leur classe de base
- Interface Segregation Principle (ISP) : Nos classes ne doivent pas hériter, via une interface, de méthodes qu’elles n’utilisent pas.
- Dependency Injection Principle (DIP) : On doit dépendre de classes abstraites et non de classes concrètes
De tous ces principes, le plus important à suivre selon moi est le Single Responsability Principle (SRP). Ne pas respecter ce principe peut apporter plusieurs maux, notamment lorsque l’on fait évoluer le code. Dans mon équipe actuelle, nous avons fait du SRP le principe de base et le plus important à suivre. De cette manière nous l’avons toujours en tête et il nous sert en quelque sorte de règle de base lorsque l’on se questionne sur la grosseur de classes et de méthodes ou autre.
C’est important aussi de connaitre les autres, mais on y fait référence un peu moins souvent à mon avis.
Pour en savoir plus, sur SOLID, vous pouvez commencer par les deux références suivantes sur Internet :
- Site web de Bob Martin qui décrit les principes SOLID et plusieurs autres
- Pablo SOLID ebook (gratuit)
Pour approfondir SOLID, je recommande fortement le livre suivant (Liens Amazon.ca commandités) de Bob Martin qui se décrit en deux versions, tout dépendant si vous êtes de type Java/C++ ou .Net:
|
Type .Net (C#/VB) |
Type Java/C++ |
Dans ce livre, l’oncle Bob nous explique les pratiques agiles, on y voit un peu de modélisation et aussi de nombreux chapitres sont dédiés aux principes orientés-objet. Ce livre d’environ 700 pages fait un très beau livre de référence à mettre sur son bureau pour le lire au complet ou le consulter à l’occasion.
En passant, nous aurons la chance de recevoir Bob Martin en tant que conférencier principal lors de l’Agile Tour Québec 2011. Les inscriptions devraient commencer en septembre. Pour info sur l’Agile Tour : http://at2011.agiletour.org/fr/at2011_Quebec.html
Autres articles intéressants avec exemples d’application de SOLID:
- The SOLID Principles, Explained with Motivational Posters
- SOLID Code with Emergent Design
- http://blog.ploeh.dk/2011/06/07/SOLIDCodeIsnt.aspx
- SOLID Code isn’t
- SOLID part 1: Single Responsibility Principle
Référence pour l’image utilisée:
C’est quoi un Lean Startup ?
En gros, c’est un mélange de développement Lean et Agile avec une bonne dose d’entrepreneurship. Le but est d’éviter le plus possible de faire du gaspillage et de livrer un produit innovateur avec succès. On y dénote les principes suivants:
- Les entrepreneurs sont partout (Entrepreneurs are Everywhere)
- L’entrepreneurship c’est aussi de la gestion (Entrepeneurship is Management)
- L’Apprentissage est validé (Validated Learning)
- L’innovation doit être comptabilisée (Innovation Accounting)
- Construire-Mesurer-Apprendre (Build-Mesure-Learn)
Eric Ries est à l’origine de ce terme et il en parle depuis quelque temps. Je trouve sa démarche forte intéressante et cela m’a incité à me tenir informer sur ce sujet. En passant, le concept de Lean Startup peut aussi bien être appliqué à l’intérieur d’une compagnie existante que pour une entreprise en démarrage. Pour en savoir davantage sur Eric Ries, je vous recommande le vidéo suivant d’une de ses conférences qu’il a données récemment :
D’ailleurs, son livre sur le Lean Startup sera publié en septembre. J’aime beaucoup le graphique suivant qui montre le cycle de développement dans un Lean Startup:
![]()
On peut aussi se poser la question suivante, en quoi le Lean Startup est différent du développement Agile ? Le tableau suivant de Joshua Kerievsky résume fort bien les différences et les similitudes entre le développement Agile et le Lean Startup:
| Agile | Lean Startup |
|---|---|
| Product Roadmap | Business Model Canvas |
| Product Vision | Product Market Fit |
| Release Plan | Minimal Viable Product |
| Sprint | Kanban |
| Sprint Review | Pivot or Persevere Decision |
| On-Site Customer | “Get Out Of The Building” |
| User Story | Hypothesis |
| Backlog | “To Learn” List |
| Definition of Done | Validated Learning |
| Red-Green-Refactor | Learn-Measure-Build |
| Customer Feedback | Customer Validation |
| Acceptance Test | Split Test |
| Velocity | AARRR |
| Mock Object | Feature Fake |
| Continuous Integration | Continuous Deployment |
| Certified Scrum Master | Customer Success Manager |
Est-ce que vous pensez que ce genre de modèle peut réussir ici au Québec ?
Est-ce qu’il y a vraiment des entrepreneurs un peu partout ici ou c’est seulement réservé à nos voisins du sud ?
Est-ce que vous connaissez des exemples de compagnies d’ici qui ont appliqué ce modèle ?
Références:
- The Lean Startup Web Site
- Livre “The Lean Startup” de Eric Ries (Lien Amazon.ca commandité)
- How to Build a Better StartupWith Lean Startup 101 by Eric Ries (Cours en ligne gratuit)
- Livre “Running Lean” de Ash Maurya (livre gratuit que l’auteur donne en échange d’un tweet)
- Article “Agile vs. Lean Startup” de Joshua Kerievsky
La place des Business Objects dans le MVP
Où doit-on placer nos composants d’affaires (i.e Business Objects) lorsque l’on utilise les designs patterns du genre Model-View-Presenter (MVP) ou Model-View-Controller (MVC) ?
C’est une bonne question et je la retrouve régulièrement dans les projets auxquels j’ai travaillé.
Mais avant de poursuivre, voici une conversation forte intéressante que j’ai observée sur twitter il y a quelque temps entre Robert “Uncle Bob” Martin et Martin Fowler à ce sujet:
@unclebobmartin |
Views should have no knowledge of business objects. Presenters should create data structures from business objects & views should use them. |
@martinfowler |
@unclebobmartin disgree. It’s both traditional and effective for views to see domain objects |
@RonJeffries |
@unclebobmartin i’d wanna see one or more examples showing why views shouldn’t see domain objects but instead … what, “views “of them? |
@unclebobmartin |
@martinfowler The problem is that views become coupled to business logic. Changes to BOs imply changes to views. |
@martinfowler |
@unclebobmartin I think the relationships between view, model and other elements is too context-specific for a general rule |
| @unclebobmartin @martinfowler To be clear, I know MVC, but it seems there’s debate about what the V knows about the M? | |
@martinfowler |
@GBGames @unclebobmartin There are many forms of MVC with different trade-offs. I said more at http://martinfowler.com/eaaDev/uiArchs.html |
@unclebobmartin |
@peter_bugge BOs change for reasons of business logic. Views need not be affected. |
@unclebobmartin |
@sebasmonia A change to the BO will often cause change to presentation logic, but hopefully not to the views. |
@unclebobmartin |
An object has private state and public methods. A data structure has public data and no methods. Getters and setters make data public. |
@unclebobmartin |
@MahasenBandara Views are concrete. Models are abstract. Views should depend on Models. |
@unclebobmartin |
Business interactions are also business objects. Controllers should invoke interactions not _be_ interactions. |
| … |
En résumé, Uncle Bob mentionne que pour éviter le couplage, le presenter devrait se refaire de nouveaux objets et les passer à la vue. Martin Fowler nuance un peu le tout en mentionnant que ce n’est pas vrai tout le temps et que cela dépend du contexte.
Le fait de se refaire de nouveaux objets pour la vue peut amener certains problèmes. Exemple, j’ai vu très souvent ce genre de code qui, pour moi, est un beau cas de duplication:
public ViewObject ConvertObject(BusinessObject objectFromModel)
{
var viewObject = new ViewObject() ;
viewObject.Name = objectFromModel.Name;
viewObject.Adress = objectFromModel.Adress;
viewObject.PhoneNumber = objectFromModel.PhoneNumber;
viewObject.City = objectFromModel.City;
return viewObject;
}
}
Hmm, redondant n’est-ca pas ?
Si les objets sont pratiquement semblables, je suis d’accord avec le point de Martin Fowler et que ce genre d’objets peut être visible au niveau de la vue.
Par contre, s’il y a quelques différences ou des champs non utiles qui sont tout de même transférés à la vue, je crois qu’il vaut mieux y aller avec de nouveaux objets comme le mentionne Uncle Bob.
Bref, la règle à suivre selon moi est de toujours voir selon les besoins du contexte.
Et vous, qu’est-ce que vous faites dans ce cas avec les Business Objects ?
Lectures à la plage
J’aime bien me faire une nouvelle sélection de livre à lire pour l’été. Et ce, même si je mets de côté certains déjà entamés…
Et oui, c’est les vacances pour les lectures en cours aussi !
Donc, je vous présente ma sélection de lectures pour l’été:
Rework par Jason Fried et David Heinemeier Hanson: Livre des deux fondateurs de la compagnie 37signals. On y parle de comment ils ont bâtit leur compagnie en ne respectant pas les manières standards de faire. Très pragmatique et Lean dans leur approche, l’ouvrage semble intéressant à lire. C’est d’ailleurs David Heinemeier Hanson qui est derrière le framework web Ruby On Rails (RoR) qui a été utilisé pour bâtir un de leurs premiers produits: Basecamp. Ils ont fait par la suite de RoR un framework Open source.
Enchantment par Guy Kawasaki: J’aime bien cet ancien d’Apple et sa manière de présenter les choses. Quoi de mieux que de lire son dernier livre pour en apprendre davantage sur lui. On y parle ici de comment “charmer” les gens, de manière positive bien sûr, pour changer les choses, offrir ses services, vendre un produit, etc.
The Well Grounded Rubyist par David A. Black : Ayant récemment terminé un tutorial sur Ruby On Rails, je voulais poursuivre en apprenant davantage la base du langage Ruby. Ce livre semble bien fait pour cela. Par contre, je ne pense pas lire les quelques 500 pages pendant l’été. Passer à travers quelques chapitres serait déjà un bon pas d’effectué.
Et d’autres moins sérieuses pour se divertir, car c’est important aussi pendant les vacances. Étant un bon amateur de bandes dessinées ou Comics Books, voici ma sélection:
Dark Tower – The Gunslinger Born : J’ai toujours voulu lire la série “Dark Tower” de Stephen King. En voici l’occasion avec le premier volume de cette adaptation en bande dessinée qui me semble très bien réussi.
Justice League International: J’aime bien cette série des années 90 où l’humour est omniprésent chez un groupe international de super-héros. Hilarant.
Et vous, est-ce que vous avez des lectures particulières pour cet été ?
En passant, n’hésitez-pas à consulter mon profil et me suivre sur Goodreads:
http://www.goodreads.com/profile/karlmet


@unclebobmartin
@martinfowler
@RonJeffries
@martinfowler


