• Aucun résultat trouvé

OUTLINE DE LA PRESENTATION DE LA VEILLE TECHNOLOGIQUE ET DU PARCOURS DE PROFESSIONNALISATION

N/A
N/A
Protected

Academic year: 2022

Partager "OUTLINE DE LA PRESENTATION DE LA VEILLE TECHNOLOGIQUE ET DU PARCOURS DE PROFESSIONNALISATION"

Copied!
27
0
0

Texte intégral

(1)

OUTLINE DE LA PRESENTATION DE LA VEILLE TECHNOLOGIQUE

ET DU PARCOURS DE PROFESSIONNALISATION

VEILLE TECHNOLOGIQUE

1. Pourquoi ce choix de sujet

2. Mise en place de la veille technologique

3. Bonnes pratiques acquises avec l’experience 4. Liens entre cognition et programmation

5. Exemple détaillé de multiples resolutions d’un même problème

PARCOURS DE PROFESSIONNALISATION

1. Parcours de professionnalisation : liens vers portfolio 2. Contexte et spécification du stage

3. Projets de professionnalisation

(2)

VEILLE

TECHNOLOGIQUE

STRATÉGIE DE RÉSOLUTION DE PROBLÈME

(3)

Introduction : Pourquoi ce choix de sujet ?

• La résolution de problème est au cœur de ce que représente le métier de programmeur

• Cohérence avec mes projets de professionnalisation car je souhaite me spécialiser dans les rapports entre les sciences cognitives et l’informatique

• Cohérence avec l’état d’esprit de mon stage : c’est-à-dire apprendre à se démener, à être

d’abord seul face au problème, à peiner, être bloqué puis essayer encore une nouvelle façon de débloquer le problème

(4)

MISE EN PLACE DE LA VEILLE

TECHNOLOGIQUE

Utilisation de…

• …l’agregateur de flux RSS Netvibes

• …google alert avec flux RSS

• …HackerNews (RSS+key word)

(5)

BONNES PRATIQUES ACQUISES AVEC

L’EXPERIENCE

A u c o u r s d e m a f o r m a t i o n j ’ a i v o u l u c a p i t a l i s e r s u r l e s

n o m b r e u s e s e r r e u r s q u e j ’ a i p u f a i r e , v o i c i u n e s y n t h è s e d e c e q u e j ’ a i a p p r i s .

L a r è g l e d ’ o r a t o u j o u r s é t é “ n o m a g i c ” : c ’ e s t- à - d i r e s i ç a

s e m b l e m e r v e i l l e u x c e n ’ e s t p a s b o n s i g n e i l f a u t c r e u s e r e t

c o m p r e n d r e .

(6)

ISOLER LES FACTEURS

> pour ne pas faire fausse route et passer du temps à résoudre un aspect qui n’est pas la source du problème

> en lisant les messages d’erreur (et faire une recherche avec le code du message d’erreur sur internet si besoin)

> en debuggant pour comprendre comment le programme et le langage fonctionnent

S’ARRÊTER ET PENSER

> se précipiter ne va pas permettre de résoudre le problème plus rapidement

> mettre par écrit l’analyse du problème

> avoir conscience que cette analyse peut évoluer : il s’agit d’hypothèses

> ne pas se bloquer sur un seul aspect du problème

> lors de gros blocages : repartir de zéro et viser au plus possible la simplicité

BONNES PRATIQUES ACQUISES AVEC L’EXPERIENCE 1/4

(7)

L’ÉPREUVE DE L’ENDURANCE ET DE LA PERSÉVÉRANCE : NE PAS PERDRE ESPOIR

> il est important d’apprendre à naviguer dans le gris et de ne pas se perdre

> ne pas surinvestir émotionnellement un problème même simple qui pose de gros problèmes

> bien chercher les informations en anglais et en français pour avoir plus de résultats et vérifier les années de

publication (un post de 2005 peut être désuet)

> ne pas paniquer parce qu’un problème, même petit en apparence comme une installation de logiciel, prend beaucoup de temps à se résoudre

> ne pas se disperser à essayer de résoudre plusieurs problèmes à la fois : rester méthodique

TESTER

> en isolant un paramètre dans une nouvelle application créée uniquement pour tester cet aspect (technique de Clive)

> en mettant en commentaire les autres parties du code non testées

> vérifier les changements de valeurs de variables

> vérifier les compatibilités de format en particulier pour les dates!

BONNES PRATIQUES ACQUISES AVEC L’EXPERIENCE 2/4

(8)

COMBATTRE L’APPRÉHENSION

> ne pas rester sur ses acquis et aller toujours vers de nouveaux outils et de nouveaux logiciels pour ne pas se figer dans une seule manière de faire.

> « Let’s walk before we can run » (“essayons de marcher avant de tenter de courir”)

> recommencer à zéro d’une autre façon une fois le problème résolu

> c’est en pratiquant plusieurs fois dans un intervalle de temps court qu’un automatisme peut être acquis

DOCUMENTER AU FUR ET A MESURE

> tout documenter : l’accès, les domaines, les manipulations

> utiliser un système de documentation automatique dès le départ

> penser à aussi documenter la connexion entre différents logiciels (finalités, manière de communiquer, accès)

> en documentant imaginer que le

destinataire ne connait rien du programme

BONNES PRATIQUES ACQUISES AVEC L’EXPERIENCE 3/4

(9)

RUNNER

> le plus régulièrement possible

> ne pas avoir peur de cette étape : cela ne va pas déclencher une bombe atomique

> vérifier les résultats

RÉUSSIR A CONNECTER DES PROGRAMMES ENTRE EUX

> comprendre ce que fait chaque programme: impossible par exemple de faire fonctionner une application windows form dans un container docker

> ce que chaque programme veut en terme de type d’imput

> penser en amont: ne pas créer une application dotnet incompatible avec windows service si la finalité est de faire fonctionner l’application en back-ground

> utiliser les commandes de type : docker –help

> timescaledb va proposer toute une documentation détaillée pour faciliter le déploiement de sa technologie:

aller voir ces sites dédiés à ces nouvelles technologies en premier

BONNES PRATIQUES ACQUISES AVEC L’EXPERIENCE 4/4

(10)

Le cerveau fonctionne par anticipation

• il veut prévoir en permanence la prochaine action qui va se passer

• pour cela il formule des prédictions qu’il réajuste avec les nouveaux éléments arrivants.

On voit bien que cela pose problème dans notre cas de résolution de problème informatique car il s’agit souvent de situations dans le brouillard : comment prévoir alors qu’on ne sait pas encore

comment on va procéder ?

Article trouvé grâce à la veille technologique sur hackernews :

> https://nautil.us/issue/98/mind/that-is-not-how-your-brain-works

(11)

C’est pourquoi il faut bien déterminer le plus clairement possible :

> où l’on veut arriver

> où l’on est actuellement

Il faut donc formuler : formuler ce qu’on veut ; formuler là où l’on veut aller ; formuler la première tentative de chemin que l’on a décidé d’emprunter pour parvenir à résoudre ce problème.

Ce processus de mise en mots et d’identification doit se faire par écrit (Notepad, dictée vocale).

(12)

Les techniques de thérapie comportementale cognitive au service des développeurs Combattre et identifier le plus vite possible…

Le raisonnement émotionnel - Croire qu’il y a une relation d’implication entre ce que nous ressentons et une proposition de vérité.

Parce que je me sens dépassé, je dois faire face à quelque chose d’extrêmement difficile.

La pensée tout-ou-rien - Si nous n’exécutons pas parfaitement et rapidement dans un domaine ou que la résolution d’un problème n’aboutit pas : cela implique un échec généralisé.

Je ne peux pas apprendre cette langue assez rapidement, donc je suis un échec en tant que développeur.

Le catastrophisme

une erreur va forcément avoir de très graves conséquences

Article trouvé via la veille technologique : https://hackernoon.com/cognitive-behavioural-therapy- cbt-for-developers-f170826cac5c

(13)

Trouver plusieurs manières de résoudre un problème

L’exemple du formatage de chaines en C# et application à la connexion SQL

(14)

Mes premières versions en utilisant la concaténation par les "+"

var value = 21;

var sqlcommand = "INSERT INTO table (col1) VALUES (“ + value + “)";

(15)

Première alternative proposée par Clive : le formatage par String.Format var value = 21;

var sqlcommand = String.Format("INSERT INTO table (col1) VALUES (%i)", value);

> On place la valeur entière après la virgule, elle sera automatiquement insérée à la place du %i.

> Si il y a plusieurs valeurs, elle seront insérées dans l’ordre (même nombre de valeurs que de pourcents.

> %i (entier), %s (string), …, %A (formatage automatique)

(16)

Deuxième alternative proposée par Clive : la concatenation à l’aide du signe $ et des {…}

var value = 21;

var sqlcommand = $"INSERT INTO table (col1) VALUES ({value})";

> flexible et lisible

> bonne présentation par Visual studio ou VSCode (adds–on avec couleur)

(17)

Troisième alternative proposée par Clive : NpgsqlCommand

using (var cmd = new NpgsqlCommand("INSERT INTO table (col1) VALUES (@p)", conn)) {

cmd.Parameters.AddWithValue ("p", value);

cmd.ExecuteNonQuery();

}

> il s’agit de la plus performante

> l’utilisation de NgpsqlCommand avec des paramètres permet de séparer la commande SQL qui sera interprétée, des paramètres qui seront transmis séparément en binaire de manière optimisée.

> Les noms des paramètres sont définis à l’aide de @

> l’affectation d’une valeur à ces paramètres se fait séparément, c’est pratique pour faire de multiples requêtes avec la même commande mais des paramètres différents

(18)

Quatrième alternative proposée par Clive : le type anonyme avec NpgsqlConnection using (var connection = new NpgsqlConnection(cs))

{var cmd = $"INSERT INTO {tableName} (ts, symbol, volume) VALUES( @ts, @symbol,@volume);";

connection.Execute(cmd, new { ts = valeurTs, symbol = k.ToString("00"), volume = RndQuoteVal() });

}

> il s'agit d'un type anonyme ressemblant à une classe sans nom avec juste les propriétés énumérées

(19)

PARCOURS DE

PROFESSIONNALISATION

(20)

Lien vers PPE1

https://github.com/jhbonnet/gestionFiches.git

Application C# Windows Service de gestion automatisée de fiches de frais Liens vers PPE2

https://github.com/jhbonnet/GSBComptable.git https://gaussbonnet.site

Application PHP de gestion de fiches de frais Lien vers tsBenchmark

https://github.com/jhbonnet/tsbenchmark.git Lien vers mon CV

https://www.gaussbonnet.com/presentation/cv.pdf

PORTFOLIO

(21)

CONTEXTE DE MON STAGE

J'ai fait mon stage auprès de Capital Management Ltd qui est la société de service de Methodology Asset Management LLP qui est une société de gestion enregistrée et régulée par la FCA (AMF anglais).

https://www.methodologygroup.com/

(22)

Présentation de l’entreprise

Methodology Asset Management gère des fonds pour des grosses institutions américaines et

européennes elle a été fondée en 2005 par un groupe d’anciens de l’équipe de trading propriétaire de Goldman-Sachs. Leur stratégie financière sont bases sur des algorithmes complexes (trois des six managers ont des doctorats en sciences ou finance). L’essentiel des activités sont automatisés (de l’analyse des marches jusqu’au back office). Dans son activité de gestion sur les marchés, elle suit les prix de marchés de plusieurs milliers d’actifs financiers en temps réel. Cela représente des quantités énormes de données. Plusieurs dizaines de milliers de prix par seconde : un challenge de

programmation.

En particulier il est nécessaire de sauvegarder un historique de ces prix ce qui pose des contraintes de gestion importantes en termes de logistique de bases de données.

(23)

Spécification du contexte du stage

Clive Thompson, directeur informatique, a exclu le SQL comme solution à cause de la lourdeur de

« l’overhead » : le temps nécessaire pour l’insertion de chaque bit de données.

L’arrivée récente de nouvelles technologies timescale superposées au SQL pour augmenter ses performances est l’occasion de vérifier que cette conclusion est toujours bien valide…

(24)

Voici un exemple de résultat de tsBenchmark sur une

implémentation de 10 000 s

(environ 3 h) de données toutes les 5 secondes pour 1, 2, 4, 8, 16, 32 symboles (20 000 dates par symboles).

Explication: dans l’intervalle de temps entre start et End (3h) on a un nombre de dates = 2161 ce qui correspond à deux

groupes de 1000 (on ignore les 161 restant) pour chaque

nombre de symbole.

Start End Number Of Dates Number Of Symbols Time (ms)

Temps par symbole et par date (en micro secondes!)

01/01/2011 00:00 01/01/2011 03:00 2161 1 6811 6811

01/01/2011 00:00 01/01/2011 03:00 2161 1 4769 4769

01/01/2011 00:00 01/01/2011 03:00 2161 2 9007 4504

01/01/2011 00:00 01/01/2011 03:00 2161 2 9620 4810

01/01/2011 00:00 01/01/2011 03:00 2161 4 18328 4582

01/01/2011 00:00 01/01/2011 03:00 2161 4 26572 6643

01/01/2011 00:00 01/01/2011 03:00 2161 8 46298 5787

01/01/2011 00:00 01/01/2011 03:00 2161 8 53928 6741

01/01/2011 00:00 01/01/2011 03:00 2161 16 90045 5628

01/01/2011 00:00 01/01/2011 03:00 2161 16 85867 5367

01/01/2011 00:00 01/01/2011 03:00 2161 32 187236 5851

01/01/2011 00:00 01/01/2011 03:00 2161 32 174317 5447

(25)

Analyse des résultats avec le temps par symbole:

Sur une petite à moyenne base de données on remarque qu’il y a une bonne stabilité. Bien entendu il s’agit de bases dans la limite de mon ordinateur, il faudrait faire un test grandeur nature.

Il serait aussi intéressant de faire une analyse grandeur nature des performances en fonction de la taille des « chunks » : peut-être que 1000 n’est pas la taille optimale d’un point de vue des

performances.

Par ailleurs, dans une utilisation standard à grande échelle où des quantités astronomiques de symboles sont enregistrées toutes les cinq secondes: on pourra déterminer un point où le temps d’insertion dépasse les 5 secondes donc la viabilité de cette solution.

5 secondes divisé par temps par symbole en secondes donne le nombre critique de symboles. Pour mon ordinateur portable il s’agit d’environ 1000 symboles.

(26)

Projets de professionnalisation

Plusieurs retours m’ont indiqué qu’avoir un profil polyvalent littéraire et de programmeur est valorisé.

Il y aurait un fort besoin pour un profil de programmeur capable de rédiger les besoins client, les documentations, etc.

Mon stage m’a montré que l’expérience professionnelle était un moyen privilégié et efficace pour l’acquisition de compétences et d’autonomie ; je suis donc partagé entre la poursuite d’études et l’acquisition d’expérience de travail immédiatement.

(27)

Mes projets…

> Approfondir la mission avec Clive cet été (docker, C#, SQL, structure et performance de base de données)

> Obtenir un emploi ou un stage dans un domaine générant un fort intérêt : les rapports entre sciences cognitives et informatique

> Poursuite d’études (en licence d’informatique ou en master spécialisé)

> Creuser la piste du profil polyvalent, et les liens possibles entre mes compétences linguistiques/

littéraires et la programmation

Je souhaiterais plus généralement approfondir les compétences développées au cours de ma

formation (TP, PPE, Stage): la gestion de bases de données (langage SQL, modèles conceptuels de données) et la programmation en C# (et autres langages comme le java, C++, php). J’ai aussi appris à manipuler le logiciel de containerisation Docker grâce à mon stage, j’aimerais donc approfondir ces compétences.

Références

Documents relatifs

3- Ne cessant d’améliorer notre commande, nous avons constaté qu’un phénomène d’oscillation de l’eau autour d’un niveau provoque de nombreux démarrage et arrêt

Exercice 4 : La combustion complète de 0.35 g d’un composé A de formule brute C x H y a donné 0,45 g d’eau. Déduire celui du carbone.. 2/ a- Sachant que la masse molaire de A est

marge brute – remise – prix d’achat net – prix de vente hors taxe – coût d’achat prix de vente toute taxe comprise – prix d’achat net – frais d’achat – prix

Mise en valeur du travail de création : Ronsard au gré des poèmes associe le mythe de Méduse à un autre mythe, complète et dépasse le mythe en attribuant à

Le soumissionnaire remet, comme pièce constitutive de son offre, un document par lequel il marque son engagement à mettre en œuvre

* Détermination de la graduation 100 : on plonge le réservoir du thermomètre dans de l’eau en ébullition sous la pression atmosphérique normale.. Le liquide dans le capillaire

3- Pour déterminer la composition centisémale de la substance (A) on réalise la combustion complète de l’échantillon précèdent, on remarque que la masse du dioxyde de

De façon intéressante, le niveau d’infection des centrales mémoires TCM est très bas et ce sont les lymphocytes TTM et TEM (cellules à vie courte) qui contribuent le plus [31] ;