Un tiers des développeurs web devraient changer de boulot

…et quand je dis ça, c’est pour dire qu’ils devraient s’orienter vers n’importe quel travail qui soit loin, trèèès loin du développement informatique. Même la moindre macro Excel devrait leur être interdite. Revenons un peu en arrière. J’ai déjà parlé plusieurs fois sur ce blog des comportements qui me font…

Lire la suite

Le directeur technique : Un professeur d’université qui descend à la mine

J’ai parlé récemment des séances de coaching auxquelles je participe dans le cadre de mon MBA. Nous avons procédé une fois à un exercice intéressant, qui m’a fait réfléchir et que je veux partager avec vous. Cela consistait à choisir une image parmi quelques dizaines de photos éparpillées ; je…

Lire la suite

Recrutement : Administrateur système

Le poste d’administrateur système n’est plus à pourvoir. Merci à tous ceux qui m’ont envoyé un CV. Fine Media, l’entreprise que j’ai co-créé et dont je suis le directeur technique, est à la recherche d’un administrateur système / responsable d’exploitation. Présentation de l’entreprise Nous éditons des sites web communautaires, comme CommentFaitOn ou DcoPhoto, et des…

Lire la suite

Durée d’étude et expérience professionnelle

Il existe globalement 3 types de filières de formation :

  • Les études «classiques», en université ou en école d’ingénieur, sur des cursus cours (2 ou 3 ans) ou longs (5 ans).
  • Les études en alternance, avec différentes formules sur des rythmes très cadencés (4 jours en entreprise / 1 jour à l’école) ou très séquencés (3 semaines en entreprise / 1 semaine à l’école).
  • L’autoformation (il ne faut pas négliger les autodidactes, il y en a de très brillants).

Oui, je sais, je simplifie beaucoup les choses, mais c’est pour le bien de mon propos.

Intéressons-nous aux deux premiers types d’études. Elles comportent, l’une comme l’autre, des périodes d’enseignement scolaire magistral (cours en amphi, TD), des périodes d’application pratique (projets) et des périodes de découverte du milieu professionnel (stages ou apprentissage). La seule différence, c’est l’équilibre qui est tenu entre ces trois aspects.
Si je continue à schématiser, ça donne quelque chose comme ça :

  • En université, les cours magistraux forment l’essentiel de la formation.
  • En école d’ingénieur, les projets sont souvent prépondérants, ou tout au moins très importants.
  • En alternance, c’est l’expérience acquise en entreprise qui constitue la majeure partie du temps de formation.

Notez bien que je ne porte pas le moindre jugement sur ces différences. J’en parlerai peut-être dans un autre article, mais ce n’est pas le sujet pour le moment. Sachez juste qu’ayant passé 3 ans à la fac, 4 ans en école d’ingénieur, pour avoir embauché des informaticiens de tous profils et pour avoir donné des conférences dans des établissements assez différents, j’ai une vision assez précise de tout ça.

La chose qui ne cesse de m’étonner, c’est la perception que les informaticiens ont de leurs cursus, et comment ils les présentent lors des entretiens d’embauche.

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.