Les connaissances informatiques de base

Au fil du temps, j’ai pu observer des lacunes techniques chez beaucoup d’informaticiens. On ne peut évidemment pas tout savoir ; l’informatique est un domaine très large, qui couvre des choses très variées. Mais il y a un certain nombre de connaissances basiques que vous devez absolument maîtriser si vous êtes informaticien.

Valeurs binaires standard

Il me semble absolument nécessaire de connaître de tête les plus importantes valeurs binaires.

Un octet, c’est stocké sur combien de bits ? Et un entier standard ?
Combien peut-on stocker de valeurs différentes en 8 bits ? Et en 16, 24, ou 32 ?

Réponses :

  • Un octet est stocké sur 8 bits. Un entier standard est stocké sur 32 bits. Un «short» est classiquement stocké sur 16 bits, un «long» sur 64 bits.
  • En 8 bits (sur un octet, donc), on a 256 valeurs différentes. En non-signé, cela va donc de zéro jusqu’à 255. En signé, cela va de -128 à +127.
  • En 16 bits (sur 2 octets), on a 65 536 valeurs. De zéro à 65 535 en non-signé ; de -32 768 à +32 767 en signé.
  • En 24 bits (3 octets), on a 16 777 216 valeurs possibles.
  • En 32 bits (4 octets), on a 4 294 967 296 valeurs possibles.
  • En 64 bits (8 octets), on a 18 446 744 073 709 551 616 valeurs.

C’est pas bien compliqué à mémoriser. Gardez juste à l’esprit les ordres de grandeur :

  • 1 octet => 256
  • 2 octets => 65 milles
  • 3 octets => 16 millions
  • 4 octets => 4 milliards
  • 8 octets => beaucoup (je considère que 18 trillions, ça fait trop grand pour être compté).

Mais pourquoi est-ce si important à savoir ? Après tout, on peut recalculer facilement tout ça. Oui, mais pour un informaticien, recalculer ça reviendrait au même qu’un géomètre qui se demande tous les jours combien il y a de centimètres dans un mètre…

Concrètement, ces valeurs ne servent pas forcément tous les jours, mais il faut être capable de les utiliser à bon escient. Si vous faites du développement embarqué, vous aurez sûrement besoin de calculer au plus juste l’utilisation de la mémoire ; et en codant en C, vous devrez choisir le type de vos variables en connaissance de cause. Mais ce n’est pas le seul cas où c’est utile.

Si vous êtes un développeur Web ou un DBA vous aurez à créer des tables dans votre base de données. Pour cela, vous devez connaître les types de données que vous pouvez utiliser. Si on prend l’exemple de MySQL, les nombres entiers peuvent être stockés dans des champs de type TINYINT, SMALLINT, MEDIUMINT, INT et BIGINT. Chacun pouvant être signé (par défaut) ou non-signé (en ajoutant UNSIGNED au type).
Alors pour stocker la taille d’un être humain, en centimètres, un TINYINT UNSIGNED sera sûrement suffisant. Hum… sauf si vous devez gérer les 4 hommes les plus grands du monde qui dépassaient les 255 centimètres. Certains choisissent alors la facilité et stockent tous leurs entiers en utilisant des INT. Mais pourquoi prendre 4 octets, là où la moitié suffirait ?

De la même manière, quel est le type le plus adapté à une clé primaire ? Sur 16 bits, ce serait un peu court ; c’est assez fréquent d’avoir des tables qui contiennent bien plus de 65 milles lignes.
Un petit truc pour y arriver, c’est de réfléchir en terme de rapidité de remplissage de la table : Si vous avez en moyenne une nouvelle ligne par seconde, une clé primaire stockée sur 3 octets (un MEDIUMINT UNSIGNED) se remplira en à peine plus de 6 mois. Si par contre vous passez sur 4 octets (INT UNSIGNED), vous pouvez tenir ce rythme pendant 136 ans. Est-ce vraiment utile de passer sur un BIGINT ?

Langage de script

Quel que soit votre domaine, quelle que soit votre plate-forme, quelles que soient les technologies que vous utilisez, vous ne pouvez pas faire votre travail efficacement si vous ne connaissez aucun langage de script. Évidemment, on peut toujours s’en tirer en mettant au point des «méthodes de contournement». Mais quelle perte de temps ! Cela revient à passer le baccalauréat scientifique avec une calculatrice « 4 opérations » ; c’est possible, mais c’est se mettre soi-même des bâtons dans les roues.

Recrutement : Développeur principal PHP 5

Le poste de développeur n’est plus à pourvoir. Merci à tous ceux qui m’ont envoyé un CV. Par contre, nous sommes à la recherche d’un administrateur système, n’hésitez pas à postuler. Un billet inhabituel aujourd’hui : Fine Media, l’entreprise que j’ai co-créé et dont je suis le directeur technique, est à…

Lire la suite

Attention aux mercenaires

Vendredi dernier, j’ai fait passer un entretien d’embauche. J’en fait passer régulièrement, c’est une activité chronophage mais malheureusement nécessaire.

Là, je recevais un jeune homme qui avait un profil autodidacte, chose qui ne me dérange pas outre mesure tant que les connaissances, les capacités et la motivation sont là. Malheureusement pour lui, il a lamentablement échoué à un petit test technique de rien du tout, qui me sert habituellement de «filtre passe-bas». Comme je cherche un développeur expérimenté, c’était évidemment rédhibitoire.

Quand je fais passer un entretien − à plus forte raison quand je m’apprête à l’écourter − je prends le temps de donner un feed-back au candidat. Je peux lui donner quelques trucs dont je parle sur ce blog, concernant le CV ou l’entretien lui-même, ou lui donner quelques pistes dans sa recherche. On ne se refait pas.

Là, le jeune homme avait sur son CV un parcours particulier : une première expérience d’un an en contrat pro, puis une autre expérience d’un an, puis enfin son poste actuel qu’il occupait depuis moins de 2 ans. Quand je vois ce genre de chose, je demande toujours au candidat de m’expliquer. Jusqu’ici, j’avais toujours eu des réponses satisfaisantes ; on m’expliquait que le poste était moins intéressant que prévu, ou que que l’entreprise n’offrait aucune perspective d’évolution, ou encore que les attentes de l’entreprise étaient trop élevées et que le candidat s’était mis à la recherche d’un poste lui permettant de développer son expérience.
Bref, dans tous les cas, les personnes en face de moi ont toujours tenté de m’expliquer qu’il s’agissait d’erreurs de parcours ponctuelles.

Bizarrement, ce candidat a réagi tout autrement. Il m’a dit que le turn-over est un fait en informatique, que les développeurs restent entre 6 mois et 1 an et demi dans leurs entreprises, qu’il est normal de vouloir changer d’air régulièrement. Quand je lui ai dit que les entreprises cherchent des employés pour les garder longtemps, il m’a dit qu’il n’était pas d’accord (sic) et qu’aucun autre recruteur ne lui avait jamais posé ces questions ni fait ces remarques.
(Je lui ai demandé si les autres recruteurs qu’il avait rencontré l’avaient rappelé, il m’a dit que non. Étonnant, hein ?)

Où est le problème ?

En fait, il faut se rendre compte que lorsqu’une entreprise embauche une personne, c’est dans l’idée d‘investir dessus. Investir en prenant le temps de la former, ce qui génère des coûts par son salaire alors qu’elle n’est pas productive, mais aussi par le manque à gagner sur le salaire des personnes qui la forment et qui ne sont donc pas productives non plus durant cette période. Investir en comptant qu’il lui faudra une certaine période d’adaptation au métier de l’entreprise, à ses outils, à ses procédures.

Améliorer les flux d’information

J’ai entendu récemment un échange qui m’a amusé, entre un oncle et une tante.
Elle de dire :

Mais tu ne m’écoutes pas ?

Et lui de répondre :

Je ne peux pas, tu parles tout le temps !

Derrière cette blague potache, on peut toutefois discerner une vérité universelle. Dans un flot incessant de communication, il devient difficile de faire le tri entre les informations pertinentes et celles qui ne le sont pas.

Dans le monde de l’entreprise, cela est d’autant plus vrai que le nombre d’interlocuteurs est souvent bien plus grand que dans le cadre plus restreint de la sphère familiale proche. Chaque nouvel intervenant sur un projet communique à son tour en direction de toutes les autres personnes concernées, ce qui démultiplie les échanges.

C’est toujours pareil

J’imagine que cela a dû vous arriver, d’effacer plusieurs dizaines d’emails que vous aviez reçu dans la même journée, et qui ne véhiculaient aucune information réellement utile pour vous. Et si vous réfléchissez bien, vous vous souviendrez que vous en avez vous-même envoyé un certain nombre dans la même journée.

Pourquoi envoie-t-on ce genre d’email ? Les raisons habituelles sont, en vrac :

  • Pour transmettre l’information à tous ceux qui pourraient en avoir besoin.
  • Pour élargir une discussion, s’assurer que notre désaccord avec Untel sera connu de tous.
  • Pour faire passer ses choix en douce («Comment ça tu n’es pas au courant ? Je l’ai proposé dans un email il y a 3 semaines et tu ne m’as pas dit non !»).
  • Pour se couvrir, en rejetant la faute sur les autres («Ça fait 2 mois que je vous préviens qu’on n’y arrivera pas, à raison de 15 emails par jour !»).

Et quand ce n’est pas par email, ça peut prendre la forme de blogs ou de forums d’entreprise dont le rapport signal/bruit décroit au fur et à mesure que la quantité d’information échangée augmente.

Encore un peu de délégation

Il y a quelques temps, je vous parlais d’un lecteur de ce blog que j’ai aidé à identifier comment il pouvait ne plus être un goulot d’étranglement (j’ai tenté, en tout cas). Un des points les plus importants de mes conseils − le premier de tous, en fait − concernait la délégation.

Nous avons échangé quelques emails par la suite, et je voudrais vous en rapporter la teneur. Pour simplifier, disons que j’ai voulu le convaincre de la réelle nécessité de confier ses tâches.

Quelques morceaux choisis :

  • «Le message n’est pas “tu ne dois pas être seul responsable d’un projet”, mais plutôt “tu ne dois jamais être le responsable d’un projet”. Ça me semble vraiment important si tu veux pouvoir apporter ton expertise sur un projet qui le nécessite, sans pour autant stopper tous les autres projet pendant ce temps.»
  • «Ton entreprise cherche à gérer un nombre de projets croissant au fil du temps. Ce développement (commercial) ne peut pas être lié uniquement à l’augmentation de tes heures travaillées. Une fois que tu bosseras 24h/24, tu feras comment pour traiter de nouveaux clients ?»
  • «La confiance des clients repose sur toi, oui. Et pour garder cette confiance, il faut qu’ils sachent que tu peux intervenir sur leur projet à tout moment si c’est nécessaire. Mais ça ne veut pas dire que l’intégralité des aspects de tous les projets doivent être gérés par toi au quotidien.»

Quelques exemples de délégation

1. Quand Alain Prost a créé son écurie de Formule 1 (ce n’est pas un très bon exemple, vu qu’elle a coulé, mais vous voyez ce que je veux dire), tout ça reposait sur son nom et son image. Mais il ne pouvait pas s’occuper en même temps de la recherche de sponsors, des stratégies de course, du développement de la voiture en cours d’utilisation, du programme de création de celle de l’année suivante, du recrutement du personnel, du remplacement du papier-toilette, …
Même si c’était lui qui était « à la barre », tout le monde sait qu’il avait un directeur commercial, un directeur de course, un responsable des essais, un directeur technique, …

2. Un grand chef cuisinier ne peut pas être tout le temps derrière les fourneaux. Ne serait-ce que parce qu’ils ont souvent plusieurs restaurants. On sait pertinemment qu’ils ont plusieurs sous-chefs dans chaque restaurant, et que ce sont eux qui gèrent en direct les cuisiniers et les commis en cuisine. L’important, c’est que le nom des grands chefs est un gage. Un gage de quoi ? De sérieux dans la formation des cuisiniers, d’expertise dans le choix des aliments, d’originalité dans les recettes des menus proposés. On estime qu’ils suivent d’assez près ce qui se passe dans leurs cuisine, pour garantir que les plats qui en sortent sont tous quasiment-comme-s’il-l’avait-cuisiné-lui-même.