PROJET AUTOBLOG


Sam & Max: Python, Django, Git et du cul

Site original : Sam & Max: Python, Django, Git et du cul

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Servir des fichiers statiques avec nginx

jeudi 23 octobre 2014 à 08:20

C’est un truc dont j’ai tout le temps besoin, alors l’article servira de pense bête. Marre de chercher à chaque fois :

        # sur django, on met tout dans /static/, donc par habitude je le fais
        # pour tout
        location /static/ {

            # Le dossier doit contenir le dossier 'static'. Par exemple si votre
            # arbo est /home/sametmax/repo/static, le chemin sera
            # /home/sametmax/repo. Rassurez-vous, personne n'aura accès aux
            # autres sous dossiers de "repo".
            root  /chemin/absolu/vers/dossier/;

            # On active la compression
            gzip  on;
            gzip_http_version 1.0;
            gzip_vary on;
            gzip_comp_level 6;
            gzip_proxied any;
            gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
            gzip_buffers 16 8k;

            # Sauf pour les vieux nav
            gzip_disable ~@~\MSIE [1-6].(?!.*SV1)~@~];

            # On dit au navigateur de le mettre en cache pour 3 mois. Faites gaffe,
            # mettez un param dans les url de vos balises script/link qui change
            # à chaque version du fichier, sinon vous ne pourrez pas mettre à jour
            # vos fichiers.
            expires modified +90d;
        }

Rapatrier une branche d’un repo distant en local

mardi 21 octobre 2014 à 19:00

Vous avez un repo local et un remote. Une branche a été créée sur le remote, et vous voulez la récupérer en local :

git checkout --track nom_du_remote/nom_de_la_branche

Par exemple :

git checkout --track origin/dev

Ce qui va avoir pour effet de créer une branche “dev” sur votre repo local, de vous switcher dessus, et la lier à la branche “dev” du remote “origin”.

Comme d’hab, assurez-vous que votre copie de travail est bien propre avant sinon ça va merder au moment de changer de branche.

Ouais, ouais, je sais, checkout est la commande fourre-tout de git qui fait absolument n’importe quoi. C’est relou.

Rapport de l’INDMS : le niveau des développeurs

lundi 20 octobre 2014 à 15:34

Dans un article précédent, j’avais souligné la baisse du niveau des devs et on m’avait demandé mes sources. Mes sources, comme souvent pour ce genre d’opinion, sont les études empiriques du très sérieux Institut National du Doigt Mouillé de Sam. Faudrait que je fasse un logo mais je suis une pine en graphique.

Aujourd’hui, à l’aide de chiffres scientifiquement approximatifs et d’analyse d’échantillons représentatifs localement, à moins que ce soit l’inverse, nous allons vous expliquer ce qui se trame.

Je ne suis pro en dev que depuis 10 ans. 10 ans, c’est court dans une carrière. Mais en informatique, c’est long. Suffisamment long pour avoir vu l’ère pré-msql_real_escape, les premiers ORM, la mode du NoSQL et le big Data. Suffisamment pour avoir vu le design via table, puis la psychose du xHTML valide strict et accessible pour finir sur le HTML 5 avec le retour du JS inline qui ne sert pas qu’à faire des flocons de neige. Suffisamment pour avoir vu Linux devenir utilisable, la programmation sur téléphone accessible (vous vous souvenez qu’avant on programmait les nokias en J2ME ?), la latence réseau devenir un bottleneck, le CPU et la mémoire étant relégués à un problème comptable sur 90% des projets. Et surtout, suffisamment pour voir le Dev Web passer d’un truc de bidouilleur à une spécialité à part entière du monde de l’informatique.

Mais même avant, sans faire de l’argent avec, j’avais les mains dedans. J’avais un ordi avec des disquettes 5 pouces, un écran en noir et vert et un bouton “turbo” qui overclockait le puce à 8Mhz. Wooosh ! Et encore avant, un ordinateur avec une cassette à bande magnétique que je n’ai jamais réussi à faire marcher.

Et puis on croise du monde, des gens d’expérience qui partagent. On lit des livres d’il y a 20 ans (almost perfect est disponible gratos au fait). On travaille. On forme. On recrute.

Cela m’a amené a plusieurs constats.

Le niveau de vie des développeurs s’est bien amélioré

Que ce soit au niveau qualité de matériel (2 écran HD pour utiliser VI, c’est le luxe), accessibilité de l’information (Google, c’est plus facile qu’un magazine ou des man pages sur disquette), automatisation (on compile très rarement les dépendances tierces maintenant), facilité de trouver un job (y a des annonces partout), tout est plus confortable.

Mais ce n’est pas le plus important.

L’image des dev s’est améliorée. Être le geek au collège n’était pas vraiment une partie de plaisir. En fait si j’avais rencontré Max dans la cour de l’école, on se serait probablement mis sur la gueule.

Aujourd’hui on vend des magazines avec en couv’ des geeks millionnaires, Hollywood s’est approprié la mythologie du hacker et la coolification (devrais-je dire coolifitude ?) de l’utilisation informatique rend la vie beaucoup plus facile.

Quand je dis à une meuf que je suis informaticien, elle ne fuit plus. C’est pratique. La logistique devenait compliquée.

Utilisation du piège à loup en % de rencards.

La dernière fois que Max a choisi une carrière d’un soir, il était chirurgien esthétique.

L’informatique a explosé

Comme vous pouvez le voir sur ce graphique, le nombre de connards à utiliser l’informatique a drastiquement augmenté. Ce faisant, il y a donc beaucoup plus d’appareils nécessitant d’être programmés sur le marché, les rayons, le chaumières et les poubelles.

Progression de la situation situationelle

C’est toujours mauvais quand on croise les effluves

Malgré des échelles qui n’ont rien à voir, la courbe de facilité des usages suit paresseusement celles des usagers, et ce n’est pas un hasard. La formule pour calculer la simplicité d’un système étant dépendante de la variable du nombre de boulets l’utilisant (Evidence = MasseConnards²).

Or, pour répondre à la fois à la simplification des usages, et à leur multiplication, il y a fallu créer un paquets d’abstractions qui ont rajouté des couches, ce qui explique la progression du niveau d’indirection.

Les formations n’ont pas suivi

Dans le cas le plus grave, elles ont des années de retard sur les technologies actuellement utilisées. Dans le meilleur des cas, elles sont dispensées par des gens qui ne travaillent pas, et donc ne fournissent pas aux apprenants les éléments nécessaires pour être un élément productif.

Enseignement uiversitaire en France

Je voulais rajouter le pourcentage de profs qui avaient fait une migration de schéma en prod, mais LibreOffice n’accepte pas les chiffres négatifs.

Je voulais rajouter le pourcentage de profs qui avaient fait une migration de schéma en prod, mais LibreOffice n’accepte pas les chiffres négatifs.

Les bons informaticiens restent donc ceux qui se forment eux-mêmes. Via un projet personnel, par simple passion, en travaillant pour financer leurs études, etc. Même pendant la vie professionnelle, ceux qui ne deviennent pas obsolètes sont ceux qui continuent à apprendre. Car la formation en info, c’est toute sa vie. Et c’est un train où le paysage avance en même temps que soi, donc si on s’arrête, en vérité, on recule.

Et du coup

Le niveau des dev baisse. Pas de manière absolue, mais de manière relative au niveau dont le marché a besoin, et également en pourcentage de la population totale.

C’est lié à la conjoncture : plus de demande et plus de confort impliquent qu’il y a plus de monde qui se lance dedans. La démocratisation, c’est bien, mais ça apporte également un flot de personnes qui font ça comme job alimentaire. Or, si la formation ne suit pas, et qu’ils ne se forment pas, le nombre de technos continue d’augmenter. Les abstractions continuent de s’accumuler. Les nouveaux produits continuent de sortir.

Si bien que le besoin de dev augmente, mais également l’exigence de la somme des compétences requises progresse. Car si on a plus besoin de connaître la différence entre un little endian et un gros portoricain, pour dev une app Web moderne il faut maitriser : CSS, Javascript/Python/Ruby, HTML, quelques frameworks par dessus tout ça, une base de données et peut être un ORM, un système d’exploitation, potentiellement une machine virtuelle, un système de déploiement, des préprocesseurs, un système de files de tâches, un moteur de recherche, un système de cache…

Et l’attente des clients, comme des employeurs, sur le résultat, a elle aussi grandi. On veut du mieux, plus vite, plus ergonomique. Ils le font bien à côté. Par contre, ce qu’ils peuvent payer pour ça n’a pas beaucoup bougé en France, ils pensent toujours qu’avec un bon fichier de conf on peut faire faire un clone de Youtube pour pas cher.

Du coup les bons devs qui restent, ceux qui se sont formés et continuent de se former, ceux qui sont noyés dans la masse grandissante des spleenés de la programmation qu’on a attiré avec la promesse d’un job, ils se barrent. Ils se barrent là où on les paie à la hauteur de leur compétence : aux USA et aux UK.

Je résume :

A l’embauche, le nombre de bons dev disponibles comparé à la demande grandissante et au nombre total de candidats, est en chute libre. Et ce, malgré le nombre de devs de talent, absolu, qui lui augmente dans le monde par le simple truchement de la démographie et de l’émulsion technologique.

Dans la vraie vie vivante, ça se traduit par des entretiens déprimants, des embauches tristes et des cours d’info frustrants.

Et la situation ne va pas s’arranger. Les besoins vont continuer à croître. Les bons dev ne vont pas sortir du chapeau. Faites en sorte que ce soit une bonne nouvelle pour vous :

Comment faire ? Arf, ça pourrait être un autre article. Un jour :)

Le cercle de ses amis

samedi 18 octobre 2014 à 14:16

Aujourd’hui une jolie blonde m’a trollé en recrachant mon sperme dans mon nombril.

J’ai trouvé ça hilarant, et j’ai éclaté de rire.

Elle a pris son sex toy et m’a dit : “je jouis encore une fois et on joue à Dota”.

Et je me suis occupé de ses seins pendant qu’elle s’occupait d’elle.

Je préfère ces moments là aux couchés de soleil, aux fleurs, aux restos avec bougies et aux boîtes de chocolat de la saint valentin.

L’humanité adore les clichés mais je pense qu’il appartient à tout à chacun de déterminer ce qu’on trouve charmant ou non. La partie coton, c’est de trainer avec des gens qui sont d’accord sur la question.

Je ne m’en fais pas trop sur le sujet.

J’ai Max pour me parler de la dernière thaï atomique qu’il a trouvé en VOIP.

J’ai un ami chinois qui m’a recommandé un super club échangiste alors qu’on surfait sur des sites de libertins.

J’ai une copine libanaise qui m’a signalé une bonne plage nudiste tandis qu’on mettait à jour son ordinateur sous Ubuntu.

J’ai un pote espagnol qui m’a raconté les envies de partouse de sa coloc avec son ex en jouant à LOL.

Geeks et cul, finalement, la formule du blog était pas si bête.

Comment écrire une annonce pour recruter des dev

vendredi 17 octobre 2014 à 13:41

Je critique souvent les offres d’emploi, mais l’art est difficile, alors voici quelques lignes directrices si cela vous arrive un jour.

Ne mettez pas les RH en avant

Les RH ne doivent PAS rédiger l’annonce. Le moyen de contact ne doit PAS être celui des RH.

Je ne dis pas que les RH ne doivent pas faire partie du processus de recrutement. Mais je recommande qu’ils s’en tiennent à l’administratif et à l’accompagnement de l’équipe technique dans la démarche.

Ils ne sont tout simplement pas qualifiés pour ça.

Ce n’est pas une insulte, c’est un constat que je fais tous les jours. Ils ne sont pas capables d’évaluer un profil technique correctement. Ils recalent trop facilement de bons profils pour délit de sale gueule (courant en info). Ils ne savent pas lire un CV tech, ils vont juste comparer les besoins de l’annonce avec le papier.

Mettez les membres de l’équipe qui va accueillir la recrue comme contact, et demandez leur de rédiger l’annonce.

Cela a de nombreux avantages :

Bien entendu, il est important que les RH les accompagnent dans le processus. Les techos n’y connaissent rien en recrutement. C’est un travail d’équipe. Mais ils doivent être ce qui est mis en avant, le premier filtre, et le dernier mot.

Les infos importantes

Trop souvent je vois des annonces qui ne listent pas les infos essentielles. Voici une liste des choses qui DOIVENT figurer sur l’annonce :

A l’inverse, supprimez le bruit : expressions à la mode, jargon corporate, formules toutes faites… Les devs sont sensibles à ce genre de chose, et il est facile de passer pour des charlots en voulant rajouter du nutella sur la confiture.

Les trucs à oublier :

Évitez que votre annonce ressemble à ça.

Soyez pragmatique

Tous les parents trouvent qu’ils ont le plus beau bébé du monde, mais ils vous les cassent quand ils vous montrent les photos en vous clamant qu’il est fantastique.

Votre boîte pète peut-être du Chanel numéro 5 à vos yeux, mais à moins d’avoir une attractivité incroyable (auquel cas vous n’avez probablement pas besoin de mettre une annonce), tout le monde s’en fout.

Bref, n’exigez pas un bac+x pour votre poste, il n’en a très probablement pas besoin. Mettez uniquement les talents requis techniques et humains. Ceux indispensables. Oubliez la limite d’âge, de diplôme et autres caractéristiques purement sociétales.

La seule chose qui compte, c’est que le mec fasse son job, et ça, il n’y a qu’un moyen de le vérifier : le voir bosser. Donc préparez des tests techniques, et organisez la période d’essai. Souvenez-vous qu’un gars débrouillard se formera sur le tas sans problème en info, c’est l’essence de notre taff.

Enfin, si vous voulez un mec bon, il va falloir se montrer attractif. On lui proposera 80k à Londres pour le même poste, trouvez un moyen de matcher ça.

Et si vous voulez un crack, souvenez-vous qu’il peut avoir 200k aux US. Le fait qu’il soit en France montre qu’il est intéressé par autre chose que l’argent. Cherchez ce que c’est, et tentez de devenir attractif en rapport avec ce point. Il y a bien d’autres choses que du pognon : télétravail, horaires flexibles, matériel de qualité, aide pour la famille s’il a des mômes, responsabilités inhabituelles pour quelqu’un d’aussi jeune, etc.

Mais la plupart du temps vous n’avez pas besoin d’un tueur. Vous avez besoin d’un mec normal, qui fait son boulot normalement. Alors ne faites pas votre processus de recrutement comme si vous cherchiez le prochain Linus Torvalds. Soyez réaliste, et vous trouverez plus rapidement ce dont vous avez besoin.

Je ne veux pas dire qu’il faut recruter n’importe quel boulet. Mettez les (nombreux) incompétents de côté rapidement, et efficacement, sans remord. Néanmoins, descendez de vos grands chevaux. Trop de recruteurs visent bien plus haut que ce dont ils ont besoin, mais aussi de ce qu’ils valent. Et de ce qu’ils peuvent payer.

L’offre et la demande ne sont pas en votre faveur, et ça ne va pas s’améliorer. Je vois tous les jours les résultats désastreux de mauvaises embauches, si vous voulez éviter ça, il faut se remettre en question.

Exemple

Cherche Dev Backend Python

Titre simple, court, qui permet d’être scanné facilement. Votre annonce ne sera pas lue par 99% des chercheurs, elle sera listée sur une page au milieu de centaines d’autres. Pour cette raison, mettez des mots-clés qui permettent facilement de la lister. “cherche”, “dev” et “python” font une query simple pour Google, Twitter, ou le meta moteur des sites de jobs.

Mon équipe de 3 dev a besoin d’un(e) pythonista pour travailler sur notre crawler de pages. La mission sera dans un premier temps de rajouter de nouvelles sources d’information à parser. Cela inclut une batterie de tests et de la documentation. D’autres tâches ponctuelles comme de la correction de bugs de notre ancien système et de la refactorisation des précédents crawlers sont à prévoir.

On commence par le quoi. C’est ce qui intéresse le plus la recrue, il veut savoir ce qu’il va foutre là-bas. Pas besoin de rentrer dans trop de détails, il faut juste en donner assez pour être clair, et pas trop pour l’inciter à appeler pour en savoir plus.

On utilise la première personne, ce qui donne un sentiment de proximité. “pythonista” est un terme spécifique à ce type de dev, montrant que l’annonce a été rédigée par quelqu’un qui s’y connaît.

Nous : LambdaBoite est spécialisée dans la vente de LambdaProduit, notre but étant de satisfaire LambdaBesoin de LambdaTypeDeClient.

Vous : on se fiche de savoir si vous avez 23 ans, portez des piercings ou si vous êtes sur une chaise roulante pourvu que vous livriez les features à temps.

On présente rapidement l’entreprise de manière générale. Un lien vers une page plus détaillée peut être inséré. On note les exigences humaines. Si la ponctualité est importante, mettez le. Ces lignes sont la relation personnelle que vous voulez établir. C’est vous, et lui/elle. C’est aussi le moment de mettre les recrues à l’aise en faisant un contraste. Ici, c’est carte blanche. Si vous avez des valeurs, exposez les. Si vous avez des choses amusantes à dire, dites les. Si ce sont des phrases marketings dictées par le département com interne (“we value…”), faites-les sauter.

Profil technique :
– Capable d’écrire en Python : un décorateur maison, un code téléchargeant des ressources en ligne avec gestion des erreurs, une interface en ligne de commande avec argparse.
– sait créer et déployer un daemon sous Linux Fedora en prod via supervisor.
– sait faire une branche et un merge git.
Vous serez testé à l’entretien.
Sur place vous travaillerez avec :
– de la programmation asynchrone.
– PosGres.
– Le framework Scrapy.
Ces notions ne seront pas testées, vous pourrez les apprendre sur le tas.

Plutôt que d’utiliser des termes vagues comme “bon niveau”, “senior”, etc., donnez des moyens précis de mesurer un niveau. Notez qu’on ne parle pas de diplôme ici. Le meilleur prog que je connais a Bac -2.

On sépare l’indispensable du “est un plus”. Mais plutôt que de le tourner en exigence, on le liste comme quelque chose d’attractif.

Date de recrutement souhaitée : 3 mars
Contrat : CDD dans un premier temps, possible recrutement en CDI.
Rémunération : 30-40k
Contact : wololo@lambdaboite.com ou 0123456789 (Linette Michalon, CTO et votre futur boss)
Adresse : 69 avenue du coin de la rue 69777 La villette sur roustifailles (votre bureau vous y attend)
Site Web : http://lambdaboite.com/travaillez-chez-nous

Nature du contrat, contact avec qui, quoi et où puis lien vers une carte.

On notifie que l’adresse est bien l’endroit où l’on va travailler et pas juste le centre administratif.

Un lien vers plus de détails sur les conditions de travail (temps pour se déplacer, transport, photos des bureaux, liens vers l’équipe, présentation des produits, etc) est bienvenu.

Et oui, rédiger une annonce prend du temps. Recruter correctement prend du temps.

Copier / coller

Comme je sais que les gens aiment bien les templates, voici la version intégrale, prête à être copiée.

Mais je déconseille de l’utiliser telle quelle. Tout comme un CV doit être réécrit pour chaque poste qu’on vise, une annonce doit l’être pour chaque poste qu’on veut pourvoir.

Cherche Dev Backend Python

Mon équipe de 3 dev a besoin d’un(e) pythonista pour travailler sur notre crawler de pages. La mission sera dans un premier temps de rajouter de nouvelles sources d’information à parser. Cela inclut une batterie de tests et de la documentation. D’autres tâches ponctuelles comme de la correction de bugs de notre ancien système et de la refactorisation des précédents crawlers sont à prévoir.

Nous : LambdaBoite est spécialisée dans la vente de LambdaProduit, notre but étant de satisfaire LambdaBesoin de LambdaTypeDeClient.

Vous : on se fiche de savoir si vous avez 23 ans, portez des piercings ou si vous êtes sur une chaise roulante pourvu que vous livriez les features à temps.

Profil technique :

– Capable d’écrire en Python : un décorateur maison, un code téléchargeant des ressources en ligne avec gestion des erreurs, une interface en ligne de commande avec argparse.
– sait créer et déployer un daemon sous Linux Fedora en prod via supervisor.
– sait faire une branche et un merge git.

Vous serez testé à l’entretien.

Sur place vous travaillerez avec :

– de la programmation asynchrone.
– PosGres.
– Le framework Scrapy.

Ces notions ne seront pas testées, vous pourrez les apprendre sur le tas.

———-

Contrat : CDD dans un premier temps, possible recrutement en CDI.
Rémunération : 30-40k.
Contact : wololo@lambdaboite.com ou 0123456789 (Linette Michalon, CTO et votre futur boss)
Adresse : 69 avenue du coin de la rue 69777 La villette sur roustifailles (votre bureau vous y attend)
Site Web : http://lambdaboite.com/travaillez-chez-nous

Sortir du cadre

Ce que je viens de faire là, c’est une annonce générique. La vérité c’est que je n’écrirais pas une annonce comme ça moi-même. Une fois que vous avez maîtrisé ce qui est important pour vous et la recrue, vous pouvez adapter le style pour en faire quelque chose de plus personnel, et souvent plus court. L’idéal est de faire transparaître l’état d’esprit de la boîte via l’annonce.

Bon évidemment si vous recrutez pour une énorme boîte dinosaure type EDF, vous êtes baisé.

Pour finir, n’oubliez pas que l’annonce n’est pas la manière à préférer pour recruter. Le bouche à oreille, les événements techniques (conf, rassemblements, etc.), les sites communautaires et même les restos / bars sont de bien meilleurs sources. Donc mettez une annonce en ligne, puis allez à la Pycon à Lyon la semaine prochaine ou allez boire un verre au Cardinal sur Richelieu à Paname. Ca marche mieux.