Comment motiver au XXIe siècle ?

En matière de motivation des employés, on peut facilement rapprocher la méthode traditionnelle à la fameuse expression « La carotte ou le bâton ». L’entreprise promet de récompenser les salariés les plus performants et parallèlement, de punir les moins bons.

Selon Dan Pink dans La vérité sur ce qui nous motive (Riverhead Books, 2009) ; plusieurs expériences démontrent que ce système de motivation pouvait faire ses preuves pour des tâches simples et répétitives, mais qu’il devenait inefficient voire contre-productif pour des activités plus créatives et scientifiques Dans les années 2000, aux Etats-Unis, les activités considérées comme créatives (réflexion, conception, etc) représentaient 70% du travail à réaliser tandis que les tâches mécaniques et le suivi de processus ne représentaient que 30% du travail.

Aujourd’hui, tenir compte de la différence des natures du travail est essentielle, surtout quand on est manager. Ainsi, pour présenter un travail de type mécanique et considéré comme peu valorisant, il est conseillé d’adopter les démarches suivantes :

  • Expliquer le contexte, donner le cadre et montrer à quel point il est importance de le faire
  • Reconnaître que la tâche n’est pas toujours amusante mais qu’elle justifiera d’un récompense à la clé
  • Laisser les employés réaliser la tâche de façon autonome (chacun à sa façon)

À l’inverse, quand il s’agit de tâches plus créatives, les effets de la méthode traditionnelle peuvent s’avérer être l’opposé du résultat souhaité sur l’individu ou l’équipe. Les effets les plus couramment observés sont les suivants :

  • Augmentation de la concentration
  • Accoutumance au système de la carotte : efforts = récompense obligatoire
  • Diminution de la motivation intrinsèque
  • Vision à court terme privilégiée
  • Réduction de la performance et de la créativité
  • Incitation à tricher, simplifier et développer un comportement immoral

Les expériences et études menées par les économistes, psychologues et sociologues du monde entier (Titmuss, Gluksberg, Twain …) au sujet de la motivation montrent depuis plusieurs années que lorsque l’on demande une tâche créative à son équipe, les éléments clés de la réussite sont :

  • L’autonomie : faire comme on veut et où on veut
  • La maîtrise : ni trop facile, ni trop difficile
  • La finalité : ce qu’on fait a un sens dans la vie, en adéquation avec nos valeurs

Ci-après un récapitulatif permettant d’appréhender ces 3 piliers de la motivation :

Conditions de l’autonomie Lois de la maîtrise Domaines de manifestation de la finalité
  1. Décider de ce qu’on fait.
  2. Quand on le fait.
  3. Comment on le fait.
  4. Avec qui on le fait.
  1. C’est un état d’esprit (selon Carol Dweck) composé du :
    –  Fixed Mindset : nos croyances déterminent notre manière d’interpréter nos expériences.
    –  Growth Mindset : Envisager nos possibilités non pas comme étant finies mais améliorables à l’infini.
  2. C’est une souffrance, qui suppose des difficultés et une pratique délibérée en vue de s’améliorer.
  3. C’est une asymptote (on ne l’atteint jamais à 100%).
  1. Les objectifs : où le profit est un moyen.
  2. Le discours : mettre l’accent sur autre chose que l’intérêt personnel.
  3. La politique : permettant aux salariés de trouver eux-mêmes un sens à ce qu’ils font.

3

Quelques outils pour faire progresser son équipe vers le nouveau système : motivation 3.0

Accorder pendant 6 mois 10% de temps libre aux collaborateurs pour se consacrer à développer des idées/projets de leur choix, en dehors de leur travail.
Variante : tous les 3 mois  accorder 24h d’autonomie avec une production obligatoire à rendre le lendemain en s’inspirant du défi « FedEx days ».

Encourager des récompenses spontanées entre collègues.
Exemple : tout salarié qui fait quelque chose d’exceptionnel peut se voir verser une prime de XX euros par un collègue, en temps réel. Les primes peuvent être issue d’un pot ou budget commun financé par l’entreprise.

Faire un audit anonyme d’autonomie :

Poser 4 questions notées de 0 à 10 + une question ouverte pour recueillir les idées. Faire ensuite une moyenne par question (domaine ) et une moyenne générale de l’autonomie :

Q1 : Etes-vous autonome dans vos tâches et dans la façon d’occuper vos journées de travail ?
Q2 : … dans votre emploi du temps, vos heures d’arrivée et de départ et la façon d’occuper vs heures de travail ?
Q3 :  … dans la façon dont vous assumez vis responsabilités au travail ?
Q4 : … par rapport à la composition de votre équipe au travail i.e le choix de vos collaborateurs/contributeurs ?

Céder le contrôle.
Impliquer les salariés dans la détermination des objectifs.

Adopter un vocabulaire « non contraignant ».

Au lieu de convoquer les collaborateurs, leurs permettre de venir voir les managers par eux-mêmes dans le cadre d’une permanence hebdomadaire, par exemple.

Travailler sur la finalité.
Demander aux salariés « Quelle est la finalité de votre entreprise ? », regrouper les post-it et faire un bilan par la suite pour en tirer des conclusions constructives.

Constituer une équipe équilibrée.

Assigner des tâches ni trop faciles ni trop difficiles pour éprouver la sensation de « flow » i.e. de fluidité dans le travail.
Encourager la collaboration plutôt que la compétition.
Faire évoluer les collaborateurs dans le temps.
Motiver l’équipe avec une finalité plutôt qu’une récompense (mission commune).

5

La récompense et la rémunération sous motivation 3.0

La récompense

Toute récompense extrinsèque doit être inattendue et offerte une fois le travail terminé. Il est également recommandé d’envisager des récompenses non matérielles comme des félicitations/feedbacks pour valoriser ses collaborateurs et leurs témoigner de la reconnaissance.

Quelques règles de base :

  • La récompense doit être adéquate et cohérente, en comparaison à des travaux similaires et/ou à la concurrence
  • Le travail demandé doit respecter les 3 piliers de la motivation : autonomie, maîtrise et finalité
  • L’urgence et l’importance du travail ont été expliqués.

La rémunération

La rémunération n’est pas un élément de motivation en soi. Un manque de rémunération est en revanche un facteur majeur de démotivation, par conséquent il est recommandé ce qui suit :

  • Veiller à l’équité interne et externe
  • Payer un peu plus que la moyenne pour :
  • Attirer les meilleurs talents
  • Réduire le turnover
  • Améliorer l’implication des collaborateurs
  • Échapper aux primes occasionnelles
  • Si on évalue la performance, utiliser des critères larges, orientés vers le long terme et une rémunération variable pas trop importante pour ne pas se focaliser dessus
  • Toute récompense doit aider à atteindre la maîtrise i.e. il faut récompenser/complimenter sur la méthode et non sur le résultat.

Avec tous ces éléments en tête, vous avez toutes les clés pour manager autrement, susciter et maintenir durablement la motivation de votre équipe.

Juba N.A.

EXTEAM a fêté ses 5 ans d’existence !

Retour en images sur notre séminaire spécial 5 ANS EXTEAM !
Team Building, repas gastronomiques, détente, jeux, soirée dansante, et ambiance de folie pour fêter comme il se doit 5 belles années d’existence dans ce lieu hors du commun !
Quelle belle équipe !
Merci à toutes les personnes qui ont contribué à nous faire grandir, qui font de nous ce que nous sommes aujourd’hui, et ce que nous serons demain !

LES FONCTIONS

Contribution de SAVANE VAMARA / Ingénieur Java Big Data EXteam chez EDF.

Les fonctions sont les pièces maîtresses dans les langages de programmation fonctionnelles.

fonctionNous allons explorer certaines propriétés des fonctions et voir comment nous pouvons les utiliser dans un langage de programmation fonctionnel.

Définition de la fonction

Une fonction est une boîte noire qui, lorsqu’on lui donne une entrée nous donne toujours la même sortie.

Une fonction n’a aucun effet secondaire, et s’il y en a , il pourrait s’agir d’une procédure mais pas une fonction.

La fonction est un terme qui vient des mathématiques et il n’y a pas de concept d’effet secondaire là-dedans.

Les valeurs en entrée à une fonction sont appelées « domaine d’une fonction ».

La sortie d’une fonction s’appelle codomain et l’ensemble des sorties sont appelées l’ image de la fonction.

Nous pouvons décomposer comme ceci:

f: A -> B

A est le domaine et B est le codomaine.

Comme nous l’avons dit A est le domaine B est le codomaine et [2, 4, 6] est l’image de la fonction.

Arité

L’arité est le nombre d’arguments qu’une fonction peut prendre.

Nous disons que l’arité de f(x: Int) est 1. C’est une fonction unaire ou c’est une fonction avec un argument.

AritéPar conséquent l’arité d’une fonction peut être exprimée avec un nombre ou de terme.

Unaire, binaire, ternaire, etc …

Ce sont des mots qui viennent du latin mais on utilise généralement le grec au lieu du latin.

On peut dire aussi que l’arité d’une fonction est monadique , dyadique ou triadique.

Composition de la fonction

La composition de la fonction est l’une des bases de la programmation fonctionnelle.

Composition de la fonction

L’idée est que si vous avez une fonction f = A->B et une fonction g = B->C vous pouvez créer une 3ème fonction h = A->C qui utilise en interne f et g pour créer ce C qui est: h = g(f(x)).

Si nous l’exprimons en termes mathématiques, nous pouvons dire que h = f∘g “h est égal à f après g” ou ce qui est le même:

Un exemple de composition de fonction est : h = Cgf

def intToString(i: Int) : String = i.toString

def stringToDouble(s: String) : Double = s.toDouble

val composedFunction = stringToDouble _ compose intToString

Nous avons déclaré deux fonctions intToString et stringToDouble, lorsque nous les composons, nous créons une troisième fonction qui accepte un int et renvoie un double.

Donc si nous l’appelons:

composedFunction(“32”) il retourne 32.0 qui est le résultat après la conversion de cette chaîne en int et du int en un double.

Notez que lors de la composition des fonctions est appliquée de droite à gauche cette fois: intToString et puis stringToDouble.

intToString - stringToDouble

Nous pouvons faire la même chose sans modifier l’ordre des fonctions avec la fonction andThen ce sera comme ceci:

val composedFunction2 = intToString _ andThen stringToDouble

C’est pareil et à mon avis moins déroutant…

Cette dernière expression pourrait être énoncée sans les opérateurs infixes comme suit:

val composedFunction2 = (intToString(_)).andThen(stringToDouble)

Fonctions d’ordre supérieur

L’idée derrière les fonctions d’ordre supérieur est que les fonctions sont des valeurs donc les fonctions peuvent être transmises comme les entiers, les chaînes, etc …

Fonctions

Les fonctions qui acceptent d’autres fonctions comme arguments ou fonctions de retour sont appelées des fonctions d’ordre supérieur.

Un exemple d’une fonction d’ordre supérieur vraiment commune est map, sa définition dans la classe List de Scala est:

def map[B](f: A => B): List[B]

La signification de map est d’appliquer une transformation à chaque élément de la liste et de renvoyer une nouvelle liste avec tous les nouveaux éléments transformés.

Si un langage supporte des fonctions d’ordre supérieur, nous disons que les fonctions dans cette langue sont traitées comme des first class citizen, c’est-à-dire que les fonctions sont des fonctions de première classe.

First Class

Donc quand nous nous référons à un langage de programmation, nous disons que la langue supporte les first class citizen mais si nous nous référons à une fonction nous disons que la fonction est une fonction de première classe.

L’un des usages pratiques des fonctions d’ordre supérieur est de créer des fonctions en ligne que nous appelons des fonctions anonymes ou des littéraux de fonction.

Un exemple utilisant la carte précédemment définie pourrait être ceci:

List(1).map(i => i + 1)

Comme vous pouvez le voir, la fonction i => i + 1 est passée en argument de la mapfonction.

Application partielle

Application partielle signifie que pour une fonction qui accepte un certain nombre d’arguments N nous pouvons fixer ou lier certains de ses arguments qu’il faut pour réduire l’arité de la fonction.

Considérez ces deux fonctions:

def sum(a: Int, b: Int) = a + b

def sumOfOneWith(a: Int) = sum(1, a)

Notez que sumOfOne la somme des fonctions est partiellement appliquée en réduisant son arité à 1.

C’est très utile et si vous jetez un coup d’œil sur Internet vous verrez des personnes utiliser cette technique en remplacement de l’injection de dépendance.

Currying

Currying ou la curification est une technique qui nous permet de décomposer une fonction avec arité N (où N est > 1) dans une chaîne d’appels à des fonctions plus petites avec une arité 1.

Voyons un exemple:

def sumCurried = (a: Int) => (b: Int) => a + b

sumCurried(1)(1) == 2

Maintenant sumCurried est une fonction qui renvoie une autre fonction et cette dernière calcule le résultat.

En faisant cela nous avons réduit l’arité de la somme à 1 en l’exprimant comme une fonction plus petite.

Scala peut automatiquement activer une fonction en utilisant la curriedfonction, un exemple de la version précédente de sum:

sum _ curried

Ceci est un exemple d’implémentation de curry ou la curification:

def curry[A, B, C](f: (A, B) => C): A => (B => C) = a => b => f(a, b)

Ce qu’il fait c’est de recevoir une fonction avec arité 2 , de retourner une fonction avec une arité 1 , qui retourne une autre fonction avec une arité 1 et finalement cette fonction appelle la fonction donnée avec les paramètres requis.

Prenez le temps de digérer cela et si vous en avez l’occasion, amusez-vous un peu jusqu’à ce que vous compreniez le concept.

C’est une technique puissante mais il faut du temps pour bien la comprendre.

Nous pouvons aussi bien curifié une fonction.

C’est le même concept mais tout autour nous prenons une fonction avec moins d’arité et nous la convertissons en une autre avec une plus grande arité.

Le double de la fonction précédente est:

def uncurry[A, B, C](f: A => (B => C)): (A, B) => C = (a, b) => f(a)(b)

Cette fois il prend une fonction avec une arité 1 et renvoie une fonction avec une arité 2 qui applique finalement ces arguments à l’original.

Currying VS application partielle

Alors quelle est la différence entre curry ou curification et application partielle?

Comme nous l’avons déjà dit:

Currying ou curification:
Possibilité de décomposer une fonction avec arité N (où N est > 1) dans une chaîne d’appels à des fonctions plus petites avec arité 1

Application partielle:
Possibilité d’appliquer une fonction avec un ensemble donné d’arguments pour réduire l’arité de la fonction d’origine.

Une exigence de faire une application partielle est que la fonction est déjà curifié pour que nous puissions appliquer les arguments un par un.

Souvenirs d’une belle soirée EXteam

Afin de fêter une année riche en challenges et en succès, nous avons organisé une soirée de fin d’année dans nos nouveaux locaux ! Le thème : trouvez un déguisement qui commence par la 1ère lettre de votre prénom ! Défilé de danseuses, d’astronautes, de pères Noël, d’Aladdin… Nos collaborateurs ont été créatifs sur ce coup là ! Découvrez toutes les photos sur notre page Facebook ! 

Contact

N’hésitez pas à nous solliciter pour vos projets ou pour en savoir plus sur nos expertises, nos offres et nos domaines de compétences.