Michel de Champlain dirige DeepObjectKnowledge, principal partenaire de Technologia pour les technologies objet, agile et embarquées (embedded). Il est titulaire d'un diplôme de troisième cycle en génie informatique de l'École Polytechnique de Montréal. Fort de plus d'une vingtaine d'années d'expérience en programmation, dont C/C++. Il utilise Java et C# depuis leur lancement.
Il a formé et coaché des centaines d'organisations au Québec, particulièrement dans les langages objets depuis '86, surtout dans l'allègement de processus trop lourds depuis '95 (bien avant la popularité des méthodes agiles). Michel est Certified ScrumMaster et il présente régulièrement des séminaires à la conférence ESC. Il est l'auteur de plusieurs articles et livres. Il est le créateur du langage de programmation orienté-objet B# pour les systèmes embarqués à faibles ressources. La boîte à outils de B# (compilateur, machine virtuelle, librairies, utilitaires) a été développée entièrement en orienté-objet via une approche pilotée par les tests (Test-Driven Development --- TDD).
Il existe beaucoup de livres d'apprentissage en C#, malheureusement la majorité d'entre eux explique uniquement les nombreuses caractéristiques offertes par le langage. Ces livres traitent principalement du “comment" avec bien des exemples. C'est bien, mais on oublie le plus important : préciser “pourquoi" et “quand" il est nécessaire utiliser une caractéristique. Cette connaissance approfondie se partage uniquement lorsque l'on possède une expérience et un recul suffisant dans l'utilisation du langage. Ces explications sont fondamentales :
- pour bien comprendre “pourquoi" cette caractéristique a été intégrée dans le langage (sa raison d'être) et pourquoi elle contribue à résoudre telle problématique;
- pour discerner “quand" cette dernière est utile pour régler et faciliter la solution à un problème.
Sans le “pourquoi" et le “quand", un développeur sera embêté si on lui demande de justifier le choix de la caractéristique utilisée. Cette compréhension et cette confiance dans sa sélection sont primordiales pour développer adéquatement une application. Un bon menuisier choisira l'outil le plus adéquat pour sa tâche dans sa boîte à outils. Cette analogie s'applique parfaitement bien pour un développeur utilisant un langage orienté objet comme C#. Par contre, il fait face à un défi beaucoup plus grand car la boîte à outils de C# est immense, surtout parce qu'elle est constamment en croissance (C# 1.0, 2.0, 3.0, 4.0).
J'enseigne la programmation objet depuis 1986 pour des langages comme Smalltalk, C++, Oberon-2, Modula-3, Java, Ruby, B# (www.BSharpLanguage.org) et C#. Même si j'utilise plus fréquemment B# et C# dans mes applications, je dois encore en maintenir d'autres en Java et en C++. Évidemment, l'explication du “comment" utiliser telle ou telle caractéristique est la base même d'une bonne formation. Ma formation universitaire et mon parcours professionnel m'ont apporté non seulement une objectivité mais aussi une excellente compréhension dans les explications du “pourquoi" et du “quand" que j'adore communiquer à mes participants.
Les meilleurs développeurs que j'ai rencontrés en industrie et dans mes formations sont ceux qui peuvent justifier et argumenter clairement leur choix, partager leurs décisions, en discuter et apprendre de leurs collègues. Comprendre ou critiquer de façon constructive une autre vision de résolution de problèmes permet d’apprendre, peu importe l’âge.
Un autre aspect important dans l'apprentissage d'un langage objet aujourd'hui, c'est l'omniprésence de la conception dans l'écriture du code. Écrire du bon code en objet c'est concevoir en même temps, car l'utilisation judicieuse des délégués, des interfaces, des classes abstraites, de la composition et de l'héritage permettent non seulement l'élaboration d'une infrastructure, mais aussi l'intégration (ou la personnalisation) de votre code avec le framework .NET. Je permets à mes participants dès le premier cours (Programmation C# .NET - MN201) de reconcevoir une application (écrite de façon procédurale) en C# avec une présentation rapide des principes de base en UML (en quelques minutes) afin qu'ils puissent intégrer tout ce qu'ils ont appris lors de la formation et bénéficier de l'opportunité d'utiliser un design pattern (un avant-goût d'une formation capitale comme « Conception objet avancée avec les Design Patterns » - DE107).
Je suis d'abord un développeur qui recherche la simplicité avant tout. La création d'un langage comme B# dans le domaine embarqué (embedded) a toujours été pour moi un travail de réduction de caractéristiques. Elle correspond exactement à une excellente citation de St-Exupéry :
“Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher." --- Antoine de Saint-Exupéry
Malheureusement, ce n'est pas le cas de la majorité des langages modernes objets. L'ajout continuel de nouvelles caractéristiques peut sembler attrayant, mais cela exerce une pression énorme sur les développeurs qui doivent s'y retrouver pour être en mesure de faire des choix déterminés selon leurs besoins. Élaborer des formations concises sur un langage de programmation aussi vaste que C#constitue un exercice ardu en soi. Les développeurs expérimentés de logiciels ne peuvent se permettre de s'enliser dans des détails superflus, c'est là où mon rôle entre en jeu : surligner, malgré toutes ces caractéristiques, les éléments essentiels du langage qui vous permettront de bien concevoir et de développer rapidement en toute confiance. Ceci a toujours été le premier objectif de mes formations en langages objects.
Conception objet avancée avec les Design Patterns (DE107)
L'importance du “pourquoi" et du “quand" dans une formation C#
© Michel de Champlain, Tous droits réservés.
Téléchargez la brochure de Leadership stratégique (CH301) (PDF 237 ko).
Par courriel :
formation@technologia.ca
Par téléphone
514 380 0380
1 877 380 8228
440, boul. René-Lévesque Ouest,
5e étage, Montréal (Québec) H2Z 1V7
Commentaires ou suggestion sur notre site web : webmestre@technologia.ca
© 2012 Tous droits réservés. Groupe informatique Technologia inc.