lundi 18 novembre 2013

Développeur : une passion et un métier, sinon rien !

Introduction


Dans le développement logiciel depuis plus de 20 ans, je réalise depuis 2 ans (seulement mais réellement), et de plus en plus, à quel point le métier de développeur doit être une passion !

C'est un métier d'artisanat, où l'on fait rarement 2 fois la même chose, où il faut innover tous les jours. L'éco-système bouge très vite, les langages existants évoluent (pas très vite, mais tout de même), de nouveaux langages voient le jour (sont-ils adaptés à mon besoin ou pas ?), de nouvelles librairies sortent régulièrement, une techno révolutionnaire aujourd'hui sera remplacée par une autre encore mieux dans 3 ou 6 mois. Sans compter les bonnes pratiques que je vois évoluer et s'affiner sans cesse ...

Le métier de développeur est difficile ...


Evolution du développeur : chef de projet !?


NON ! Ca n'est pas le même métier, ça n'a rien à voir !

Et pourtant, cette "logique" a la vie dure, portée par l'industrie du développement logiciel depuis des années et les grosses sociétés de service. Mais pas seulement ! Il y a 2 semaines, j'ai animé une journée "Tests unitaires et TDD" à l'université, auprès d'élèves en master, en commençant par sonder les élèves : 1/3 seulement se projette dans le métier de développeur, et tous m'ont confirmé qu'on leur explique qu'ils feront développeur pendant 5 ans, jusqu'à être sénior et expert, avant de passer chef de projet ... Il faut que le système scolaire se mette au gout du jour !

Heureusement, d'autres voix s'élèvent et se font entendre, permettant peut-être à chaque développeur de sortir de cette fausse logique, de reconnaître ce qu'il aime faire et de se positionner ... (1)

Mais que faire ?

Je suis développeur et ça me passionne !


Et bien tant mieux, ne lâche pas l'affaire, et assume : tu n'es pas le seul !

Par contre, une passion ça s'alimente, ça se nourrit. Et si ça n'est pas le cas dans ton quotidien au boulot, tu dois te prendre en main, personne ne s'occupera de ta carrière à part toi (2).

Cela veut dire qu'il te faut lire des livres, lires des articles de blog, te créer un compte Github, participer (au moins un peu) à des projets, voire créer les tiens, participer à CodeStory, blogger, aller à des rencontres près de chez toi, à des JUG, des coding-dojo, faire des talks aux Human Talks, voire même faire des sessions dans des conférences, etc...

Et tout cela bien sûr, probablement en dehors de tes heures de boulot, car la passion ne s'arrête pas à 18h ;-)

Je fais du développement mais ça ne me passionne pas ...


A vrai dire, il y a alors 2 possibilités.

La première est que le développement te passionne, mais tu ne le sais pas. Du moins, tu es dans un contexte qui ne te permet pas de le savoir : ton environnement est dans la "logique" citée précédemment, ton job ne te permet pas de t'éclater ou d'innover, ton patron ne veut pas entendre parler tests unitaires, TDD et qualité, et pourtant au fond de toi, ça te titille, tu en as parlé mais tu t'es fait remballer. Alors là, c'est simple : casse-toi ! (3) Et oui, n'aies pas peur du changement, qu'est-ce que tu risques ? Trouve toi une bonne boite ou tu pourras prendre conscience de ta passion, l'assumer et l'assouvir.

La deuxième solution est que, vraiment, le développement ne te passionne pas et soit pour toi un travail, probablement passager. Dans ce cas, n'hésites pas à faire tout ce que tu peux pour faire rapidement autre chose, sans forcément passer par les cases "sénior" et "expert" qui ne sont pas indispensables pour ton évolution.

Je suis manager


Commence par reconnaître tes développeurs à leur juste valeur, individuellement et collectivement. Tu es dans l'édition logicielle : le boulot est fait grâce à eux, ne l'oublie pas !

Ensuite, comprend que c'est un métier difficile, qu'il faut se former tout le temps, et si possible, pas sur le code de production : libère du temps R&D pour tes développeurs, laisse-leur du temps libre (en rapport avec le boulot) leur permettant de faire de la veille techno, de s'essayer au TDD, de recoder mieux une partie de l'appli, de tester de nouvelles solutions ou ergonomies, etc... Incite les à organiser régulièrement, au sein de l'entreprise, des coding-dojo qui seront des lieux protégés d'entrainement, de partage, et de fédération de l'équipe.

Et pour compléter, propose leur d'aller dans des conférences (agilité, techno WEB, conf dédiées, etc ...) voire même d'animer eux-même des sessions pour partager leur passion (et ça fera de la pub pour ta boite).

Pour finir, laisse-les assumer leur passion du développement logiciel, laisse leur les initiatives et choix (techniques, architectures, etc...), et embauche des chefs de projet, mieux des Product Owner, au lieu de forcer des développeurs vers cette "évolution" qui n'en est pas forcément une ...

Je suis recruteur


Pour bien recruter, il faut connaitre et comprendre. Alors, va à la rencontre des développeurs, va dans les conférences ou les soirées, va discuter avec eux, va comprendre leur passion pour le travail bien fait, le "clean code", la qualité, les bienfaits des tests unitaires et du TDD, etc ...

Tu pourras alors comprendre ce que tu cherches, de quoi tu parles, ce que tu écris dans ton annonce. Peut-être même que tu ne passeras plus d'annonces et que tu comprendras que les bons développeurs, tu les trouveras autrement. Et lorsque viendra l'entretien, la discussion avec le candidat, tu pourras un peu mieux comprendre à qui tu as à faire, et déceler (ou pas) la passion qui anime ton futur recruté.

Et pour encore plus réussir ton recrutement, va rencontrer l'équipe qui devra accueillir le nouveau, va comprendre comment elle fonctionne, qui ils sont, ce qu'ils font, ce qui les anime, quelles sont leurs particularités. Et lorsque tu penses avoir trouvé l'oiseau rare, n'hésites pas à lui présenter l'équipe, à les laisser échanger et vérifier les éléments de leur adéquation.

Je suis client


Et tu vas me dire que tu n'y connais rien, et que ce qui t'importe c'est le résultat produit ? Non bien sûr, tu as déjà compris. Toi aussi, tu dois rencontrer et échanger avec les développeurs. Tu dois comprendre quel est leur métier, quelles sont leurs difficultés, qu'est-ce qui les passionne et les satisfait. Mais eux aussi ont tout intérêt à te connaitre, à t'avoir rencontré (pour penser à toi lorsqu'ils développeront), à comprendre ton contexte, tes attentes, tes craintes, tes rêves, et ce qui fera que tu seras content du résultat et heureux !

Conclusion


Développeur, c'est un "métier" et une "passion". Les développeurs doivent en prendre conscience, avec les apports qui vont avec, mais également les obligations. Mais tout le monde a un rôle à jouer, quelque soit son poste, son job, et sa proximité avec les développeurs !

N'hésitez pas à réagir et commenter, ça me fera plaisir, et pourra être l'occasion d'échanger sur le sujet.




(1) L'origine pour moi, cet article de Nicolas Martignole que je remercie aujourd'hui ! 
(2) Jean-Baptiste DUSSEAUT, La voie du programmeur ici et
(3) Antoine Vernois , Software Craftsmanship (j'espère que la vidéo sortira bientôt)

24 commentaires:

  1. Dans le chapitre "Je suis client" j'ajouterai : embauche en un, deux.. cent !
    Y en a marre de se retrouver face à des clients démunis et forcément incapable de maîtriser ce que leur présentent les SSII.

    Les achats se font de manière externalisés ? La gestion financière est faite en sous traitance totale ?
    Pourquoi ne pas remettre un peu de contrôle et de logique simplement en se réappropriant l'outil informatique de manière interne ?

    RépondreSupprimer
    Réponses
    1. Salut Titi, et merci pour ta réaction.

      Effectivement, ça peut être une solution, mais pas pour tous les clients.

      Etant indépendant, je travaille régulièrement en direct pour des clients "finaux", qui ont besoin d'une solution logicielle (application SaaS par exemple), mais ces client-là n'y comprennent rien à l'informatique ou au développement logiciel, et ils n'ont pas de raisons d'embaucher 1 ou plusieurs développeurs, logique.

      Par contre, pour rester dans l'idée de ta réaction, les clients peuvent aussi choisir la "bonne" SSII (si, si, y'en a ;-) ...), voire travailler directement avec un indépendant sérieux, passionné et professionnel !

      Supprimer
    2. oui, bien sûr que tout client ne peut embaucher de développeur.
      encore que... ça devrait être très haut dans les priorités quand on voit le coût sur les petites structures de "l'outil informatique"

      je ne m'exprimerai pas sur les "bonnes" SSII, pas en 5 minutes sur un post :)

      Supprimer
    3. Je confirme.

      Je croise des clients qui n'ont plus de postes développeurs en interne. Je me demande comment leur département IT fonctionne ... ah oui en fait non je comprends :)

      Supprimer
  2. Excellent article Xavier ! Très motivant.

    Toi qui a l'air d'avoir brassé du monde, des avis et des débats sur le sujet... Comment concilier rentabilité et qualité ? Pour faire simple, comment faire pour qu'une journée sur 5 par semaine soit consacrée à la R&D, sans sacrifier 20% du salaire ?

    Quand on en discute avec notre "direction", ils ne sont pas contre l'idée, simplement on ne peut pas s'offrir le luxe de "travailler" moins. Quand on est ni un grand groupe avec des fonds "illimités" ni une startup fraîchement financée, difficile de sortir du temps pour ça...

    Une solution miracle ? ;)

    RépondreSupprimer
    Réponses
    1. peut être commencer à par ne plus penser coût direct.
      prenons un exemple purement abstrait et théorique :
      si 20% de ton temps en R&D, conférences et auto formation apporte une réduction de 70% de la maintenance ou des appels au support ou rends joyeux le client qui signe pour un second projet ?

      La "rentabilité" d'un développeur ne peut absolument pas se résumer à son temps de production de lignes de code.

      C'est un peu comme ne jamais effectuer la maintenance d'une machine ou toujours produire le même objet dans une usine : à un moment, ça ne passe plus.

      Supprimer
    2. Je suis bien d'accord. Le souci c'est qu'on est une agence, et qu'on n'a pas de produits à nous sur lesquels s'exercer, peaufiner, tester, etc. Ce qui fait qu'on a pas vraiment de raison de bosser plus longtemps que "nécessaire" sur un projet, à partir du moment où le client paye et est satisfait ; jusqu'au prochain. Au final on piétine, on peine à monter en qualité... mais au moins on survit (dans l'ambiance actuelle, ça compte !).

      Je serais curieux d'avoir des retours de salariés ou patrons qui ont réussi à instaurer ce genre de rythmes sans pour autant... couler. En France si possible, on en lit souvent qui viennent de la Californie... là-bas ça compte pas ;)

      Supprimer
    3. Un exemple en France ? oui, c'est possible ;)
      http://blog.ninja-squad.com/2013/09/20/un-an-en-chiffres/

      Supprimer
  3. @Nico, il est vraiment possible de mettre des choses en place. Il y a quelque temps nous avions mis en place des journées assez libres pour l'"innovation", et cela nous (un site de 40 personnes) a fait énormément progresser sur beaucoup d'aspects. Pour faire vite je citerai juste les specs exécutables que nous avons commencé à découvrir collectivement dans ces journées, et qui sont devenues un point fort de nos développements. En gros le rythme était de 1 telle journée toutes les 6-8 semaines.

    Suite à cette expérience positive je conseille à mes clients d'essayer, et ca marche pour eux aussi.

    RépondreSupprimer
  4. @Nico : merci pour tes réactions ! Le métier de développement logiciel nécessite de mettre à jour ses connaissances tout le temps, de monter en compétences régulièrement. Il faut donc s’entraîner, essayer, se tromper, réussir, ... C'est indispensable pour tous les développeurs, il faut en prendre conscience, l'accepter et agir en conséquence.

    Un groupe de musique ne répète pas une nouvelle chanson le samedi soir en concert ! Pourquoi les développeurs devraient-ils s’entraîner et progresser sur du code de production quotidien ?

    Il faut donc leur laisser des espaces temps pour cela, c'est un investissement pour l'entreprise. Comme le dit Titi, si ça permet à l'équipe de monter en compétence et de produire de meilleure qualité par la suite, le ROI sera au RDV !

    Concernant ta "direction", peuvent-ils "s'offrir le luxe" de produire à qualité réduite alors qu'elle pourrait être meilleure ? Une partie des "fonds" consacrés au support et à la maintenance (en aval) ne pourraient-ils pas être consacré à la "formation" en amont, pour que l'équipe soit meilleure ?

    Effectivement, le fait d'être en "agence" sur des projets courts renforcent cette impression de ne pas pouvoir investir sur l'auto-formation (et la formation et l'accompagnement externes). Mais au contraire, parce que vous n'êtes pas sur des projets au long court, où il est plus facile de dégager des petites temps d'essais et d'apprentissage, dans votre cas, il est important d'explicitement dégager des temps libres pour cela !

    Et comme le dit Bruno, c'est possible, et ça n'est pas forcément un gros investissement. Commencez par 1/2 journée par mois, c'est pas énorme, ça peut permettre de tester l'idée et vérifier ce qu'elle peut apporter !

    Bon courage !

    RépondreSupprimer
    Réponses
    1. et si l'idée d'une demi journée individuelle est encore trop pour démarrer, vous pouvez amorcer la pompe en organisant des mini présentations collectives d'une 1h seulement où chacun son tour vous venez présenter un sujet où vous êtes plus pointu.

      Supprimer
    2. @Titi : tout à fait, j'avais oublié cette possibilité.

      Et si vraiment, ça ne passe toujours pas, vous pouvez le faire entre vous entre midi et 2. Je l'ai vu faire et ça a débouché sur des séances "officielles" lorsque le patron a vu que bon nombre de développeurs y étaient ;-)

      Et en dernier recourt, il te reste les créneaux en dehors du boulot, pourquoi pas des soirées entre potes ;-). C'est ton métier, ta carrière, ton avenir !

      Supprimer
  5. Merci à vous pour vos retours !

    On fait effectivement de temps à autre des petites réunions informelles où ceux qui le souhaitent peuvent présenter des choses (logiciel, site, applications, astuces, frameworks, etc.) qu'ils ont découvertes de leur côté. L'idée étant de mettre en place de nouvelles choses, mais ça finit souvent par tomber aux oubliettes parce qu'encore une fois les projets qui font tourner la machine passent en priorité. Donc on est à peu près à ce point-là, et encore, c'est difficile de régulariser et surtout de mettre en application.

    Merci pour le lien vers Ninja Squad, très instructif ! Des semaines de 4 jours dès le départ... impressionnant.

    RépondreSupprimer
  6. J'ai beaucoup aimé cet article !
    Parfois on a un peu l'impression que s'intéresser aux conférences, aux concours type codeStory... ne fait que créer de la frustration dans notre boulot de tout les jours où on ne peut pas prendre le temps de faire les choses correctement et où on a souvent à travailler avec des technos obsolètes ou qu'on n'aime pas... mais lire cet article rappelle qu'on peut soit essayer de faire bouger les choses au boulot, soit se bouger pour changer de boulot... être passionné dans notre métier et vouloir faire les choses correctement est une bonne chose pour tout le monde, même pour les chefs qui ont l'impression qu'on perd du temps sur des sujets inutiles. Cela fait du bien de s'en rappeller de temps en temps :)
    Et merci pour toutes les références très instructives (je ne connaissais notamment pas l'article du Touilleur Express sur le développeur de 31 ans... )

    RépondreSupprimer
    Réponses
    1. Merci Asterodeia pour ton retour.

      Tu as raison : pour un patron ou un manager, avoir des développeurs passionnés, c'est évidemment très positif ... mais malheureusement souvent assez mal perçu, car leur passion n'est pas reconnue au travers de leurs envies de faire bien, de faire mieux, de proposer des innovations, des ateliers (coding-dojo), des séances d'échanges, etc ...

      Il faut donc peut-être mieux expliquer le fond des démarches entreprises pour faire comprendre cette passion, puis la faire reconnaître, et enfin l'exploiter au mieux !

      Courage !

      Supprimer
  7. Tout à fait d'accord avec cet article. Une initiative est assez proche dans l'idée de tout ce qui est avancé : l'association http://fierdetredeveloppeur.org/

    RépondreSupprimer
  8. J'aimerais faire une longue réponse mais je vais résumer:
    - Commençons par transformer développement = coût en développement = valeur
    - Si tu veux du bon travail, payes à hauteur .... ou sois capable de dire "ce développement est pourri mais au moins je ne l'ai pas payé cher"
    - être bon développeur demande beaucoup plus d'investissement personnel qu'être bon manager, pourtant ce dernier payes bien mieux que le premier ... a votre avis que fais quelqu'un de normal ?

    Moralité: si tu veux être un bon développeur après 30 ans quitte la France, va en startup, soit Freelance ou rejoins quelques très rares SSII (mais attention à la douche froide quand tu vas chez ton client). Perso, j'ai plus de 30 ans je me considère toujours comme développeur et je sais que j'ai déjà bien cramé ma carrière.

    Pour l'association Fier d'être des développeurs, j'avais bien aimé le fait que la majorité des fondateurs n'était plus développeur sur leur CV ;)

    RépondreSupprimer
    Réponses
    1. Merci Yannick pour ces éléments de réflexion intéressants.

      Effectivement, un levier d'action serait que les développeurs soient mieux payés, sinon, effectivement, "l'évolution" de poste leur fera quitter le développement pour la gestion de projet.

      Une précision par rapport à mon article et mes propos : je suis indépendant, et effectivement, ça change pas mal la donne !

      Pour http://fierdetredeveloppeur.org/, tu es sûr pour l'histoire des CV ? Je n'arrive pas à savoir si cette association est bien .... bien comme http://lemeilleurdevdefrance.com/ ... oups ... ou bien comme des initiatives comme http://www.code-story.net/ ?

      Supprimer
  9. Bel article !
    J'ai une vision un peu extérieure : je suis venue au développement par le biais du design, à mon (très petit) niveau. Et je crois bien que c'est en train de devenir une passion (le fait que je potasse des tuto angular à 22h un dimanche soir me met la puce à l'oreille, en tout cas ;-).
    A côté de ça, je suis artiste peintre.
    Voilà mon ressenti sur la question. Le dev, c'est effectivement tout sauf de l'industrie. C'est effectivement plus proche de l'artisanat. Mais j'irais plus loin, ça ressemble à l'art.
    Développer, c'est partir d'une idée, et la concrétiser, la matérialiser. C'est souvent à chaque fois une création unique. Je rencontre chez les développeur la même recherche de perfection que chez les artistes, la même envie de partager avec d'autres, de faire des choses utiles (eh oui...), de changer le monde. La même passion, comme tu dis.
    Evidemment, tous les développeurs ne correspondent pas à cette description, beaucoup se contentent d'écrire des lignes de code. Mais mettez un peintre dans une structure qui tue sa créativité, et vous verrez qu'avant longtemps il se contentera de colorier des toiles...

    RépondreSupprimer
    Réponses
    1. Salut Céline !

      Merci pour ce comparatif entre développeurs et artistes, effectivement, ça se rejoint sur certains points. De là à changer le monde, je ne sais pas ... ;-)

      Pour ceux qui se contentent d'écrire du code, encore une fois, je pense que certains le font car ce métier ne les intéresse pas, mais pour d'autres, c'est parfois parce qu'ils n'ont pas la possibilité de découvrir que ça peut les passionner, et d'exprimer cette passion ...

      Supprimer
  10. En voilà un article qui force à réfléchir sur soi !
    Je suis 100% d'accord sur le fait que le métier de développeur est à rapprocher de l'artisanat. Les notions promu par le mouvement Software craftmanship, sont assez intéressantes dans ce sens.

    Au niveau du développeur passionné, je ne voudrais pas que la vision s'arrête au développeur passionné technique ou "geek". Dans mon cas, le développement logiciel me passionne. Mais ce qui me passionne c'est le fait de créer quelquechose d'utile pour quelqu'un, d'être au sein d'une équipe hétérogène, et qui ensemble arrive à faire des choses remarquables ! Je n'ai pas le niveau technique ni la capacité que peuvent avoir certains de mes collègues à "absorber" une techno ou une façon de développer. Par contre j'adore travailler à leur côté apprendre des nouvelles façons d'aborder un développement.
    Comme tu le dis il faut commencer par s'entourer d'un environnement propice à inspirer cette passion. Mais à chaque développeur "son" environnement d'inspiration. Effectivement suivre "l'actualité" (conférences, forum, blogs, ...) du développement peut permettre de comprendre quel est "son" environnement.
    Il faut se souvenir que l'une des capacités majeures de l'homme est sa capacité à modifier son environnement (parfois pour sa plus grande perte je l'accorde !) ;)

    RépondreSupprimer
  11. Salut,
    j'ai vu la vidéo en passant sur Human coders... ben c'est vrai qu'il faut assumer ! ... j'me casse ou j'continue ? là est (parfois) la question !
    En fait je voulais surtout te signaler que sur ta page de profil HumanCoders le lien vers ton github est un peu malade
    http://news.humancoders.com/users/905-xavier-nopre
    cordialement

    RépondreSupprimer
  12. Bonjour, j'ai trouvé votre article très intéressant et je me posé la question suivante. Je cherche actuelement à me reconvertir professionnellement sur les métiers du web, quel formation me conseillerez vous? Car j'ai trouvé un site de formation web bordeaux qui propose des formation mais j'ignore quel sont les débouchés.

    RépondreSupprimer
  13. bonjour je suis un novice dans le domaine mais je pense qu'un developpeur est comme on la dit plus haut , un artisant cependant ils sont d moins en moins marginalise et abuse par des porteurs de projet dans le domaine chose qui pour moi est une exploitation intellectuelle. je suis Camerounais et j'ai eu a developper plein de sites et d'applications pour des grands qui me nourrissaient d'espoir ;mais apres satisfaction ,on pu trouver des moyens pour m'effacer ...
    Bref svp j'aimerais savoir si il existe des moyens ou méthodes pour echapper a ce type de traitement.Merci

    RépondreSupprimer