Académique Documents
Professionnel Documents
Culture Documents
Prsentation de l'entreprise
L'entreprise dans laquelle j'ai ralis mon stage est Kwyk (http://kwyk.fr). C'est une jeune
start-up cre il y a deux ans par deux ingnieurs tout justes diplms de l'cole Centrale Paris, qui
en sont aujourd'hui encore les deux seuls employs. Le produit de l'entreprise est un site internet
proposant des exercices de Mathmatique destins aider les professeurs faire travailler leurs
lves. Il est vendu des professeurs au sein d'tablissements sous forme de comptes
enseignants/lves donnant accs au site. L'entreprise compte ce jour une quinzaine
d'tablissements utilisant le site et a conclu au cours de l't un contrat avec la maison d'dition
Hachette lui assurant une rentabilit plus confortable.
L'activit de l'entreprise se dcoupe en deux taches trs distinctes : la premire, technique,
consistant en la conception, l'amlioration et l'entretien du site internet et la deuxime en le
dmarchage et la vente du site. Les deux fondateurs de l'entreprise, Nicolas Patry et Roch Feuillade,
assument respectivement chacun une tche. J'ai assist Nicolas, directeur technique de l'entreprise,
dans un ensemble raisonnable de missions au cours de mon stage.
Dans le code donn ici, on choisit les coefficients des polynmes dans l'intervalle [-9, 9], ce qui ne
semble pas poser de problmes au premier abord pour la lisibilit de l'exercice. Cependant, sa
rsolution implique des produits de membres qui peuvent se retrouver fastidieux et aboutissants
des valeurs numriques normes. Les exercices du site tant faits pour tre rsolu de tte, il faut
faire en sorte de garder les valeurs numriques de l'exercice dans une plage raisonnable et donc de
bien contrler les valeurs initiales.
Les rponses attendues des lves, mme si elles doivent tre crites de la manire la plus minimale
possible ou sous une forme spcifique, ne sont pas uniques. En effet, dans l'exemple donn, la
bonne rponse est un quotient de polynmes. Or un polynme peut s'crire de nombreuses faons
diffrentes, selon l'ordre des coefficients dans lequel on l'crit. On ne peut donc pas juste donner
une rponse type dans le code et le confronter basiquement la rponse donne par l'lve. Il faut
donc faire appel aux mathmatiques formelles.
Ces deux points donnent un aperu de la complxit se cachant derrire chaque exercice. Par
ailleurs, les exercices tant tous assez spcifiques, il est difficile de rutiliser du code fourni dans un
exercice pour en crire un autre. Difficile donc de mettre en place un systme permettant
l'automatisation des gnrateurs.
Ma seconde mission, qui s'est droule en parallle de la premire, a t induite par des
besoins que j'ai ressenti lorsque j'ai commenc implmenter des gnrateurs d'exercices de
gomtrie. La librairie d'outils de gomtrie dj en place et celle de dessin se sont rvles
insuffisantes quant mes besoins. J'ai donc commenc par apprhender le code dj existant pour
pouvoir par la suite rajouter les fonctionnalits qui me manquaient.
Enfin, ma troisime mission a consist en l'implmentation d'un outil de recherche en
JavaScript pour sonder la base de donnes d'exercices prsente sur le site.
points = [A, B, O, I, M]
m = choice(['single_dot', 'double_dot', 'cross'])
segments = [
Segment(M, N, style='-'),
Segment(O, Q, style='-'),
Segment(P, N, style='-'),
Segment(Q, M, marker=m, marker_size=.3, style='-'),
Segment(Q, P, marker=m, marker_size=.3, style='-')
]
elements = points + segments + [Circle(O, radius)]
push_labels([A, B, M, I], from_=O)
push_labels([O], from_=M)
drawing = draw_html(*elements, scale=(20, 20))
Ce code fournit la figure suivante :
Cependant, comme on peut le voir dans cet exemple, l'arborescence est assez consquente et il peut
tre fastidieux d'y trouver des exercices spcifiques. J'ai donc suggr d'y ajouter une fonctionnalit
de recherche via un champ de texte. L'ide a t bien accueuilli et j'ai entrepris de la raliser.
J'ai donc tout d'abord tudi le systme mettant en place cette arborescence, un module JavaScript,
pour pouvoir y apporter des amliorations. Contrairement aux travaux raliss prcdemment,
celui-ci impliquait l'utilisation des langages html css, que je connaissais dj, mais aussi JavaScript
et jQuery, que je ne connaissais pas encore. Il m'a donc tout fallu un petit temps de familiarisation
avec ces langages.
Dans l'tat initial, la colonne de gauche contient l'arborescence des dossiers et la colonne de droite
contient tous les exercices contenus dans un rpertoire racine que l'on a slectionn. La premire
fonctionnalit de la barre de recherche a consist a afficher dans la colonne de droite tous les
exercices dont le nom contenait un des mots de recherche. Cette fonctionnalit n'a pas reprsent de
difficult algorithmique particulire sinon des difficults lies au langage.
La seconde fonctionnalit de la barre de recherche a consist colorer les dossiers contenants des
exercices dont le nom correspondait avec un des mots de recherches. Cette fonctionnalit a t plus
complexe raliser d au fait de l'absence de structure de donne statique. En effet, l'arborescence
des dossiers telle qu'elle est affiche est gnre dynamiquement chaque ouverture ou fermeture
de dossier. Il a donc fallu trouver une solution de navigation via les balises html dans cette
arborescence. J'ai pu y mettre en application mes connaissances sur les parcours d'arbre.
Voici le rsultat des deux fonctionnalits conjugues.
Enfin, une fois cet aspect visuel termin, on m'a charg de mettre en place un systme de logs sur
cet outil de recherche. En effet, il est intressant lors du dploiement d'une nouvelle fonctionnalit
de voir comment ses clients y ragissent et si elle les aide plus qu'elle ne les drange.
Il a alors fallu rentrer dans le systme Django du site pour pouvoir crer des requtes contenant les
mots de recherche et pour pouvoir stocker ces mots ensuite dans la base de donnes. J'ai pu cette
occasion un peu plus apprhender le fonctionnement du site web et mettre en application mes
connaissances sur le framework Django.
Conclusion
Bien que je considre n'avoir pas avoir tant mis en application les connaissances et le
savoir-faire acquis l'cole durant ce stage, je pense avoir retir beaucoup de cette exprience.
Tout d'abord, j'ai dcouvert l'environnement de la start-up et ai pu le confronter avec celui de la
grosse entreprise que j'avais expriment l'anne prcdente. J'ai particulirement apprci
l'ambiance de travail, sereine et amicale, qui contribuait mettre chacun dans un bon tat d'esprit au
jour le jour et ainsi n'tre jamais rticent aller au travail le matin. De plus, cette ambiance cre
des liens certains entre les personnes et facilite les changes, chose importante dans le cas d'un
stagiaire qui est souvent amen questionner. Par ailleurs, j'ai t sensible une convention
prsente chez Kwyk qui tait que chacun pouvait, un jour dans la semaine, travailler sur un projet
personnel pouvant profiter l'entreprise. Cela permettait de faire un break avec le travail courant et
de potentiellement s'panouir un peu plus que les autres jours de la semaine. C'est dans ce cadre que
j'ai ralis l'outil de recherche. Enfin, Kwyk ayant ses bureaux dans un incubateur, nous tions
constamment en contact avec d'autres start-ups innovantes et dynamiques ce qui crait un
environnement diversifi et trs riche.
Concernant le cot technique, Kwyk a cr et entretient son produit sans prestations
extrieurs et doit donc pouvoir traiter tous les domaines qui y sont lis :organisation de projet,
dveloppement, services webs et innovation. Je connaissais certaines notions dans ces domaines
uniquement de manire thorique et ai donc pu en voir des applications avec le plus grand plaisir.
Au niveau des langages, j'ai pu amliorer mon niveau de connaissance de Python et apprendre le
JavaScript et jQuery. Pour ce qui est du Python, je connaissais certes dj ce langage mais beaucoup
de mcanismes m'taient encore inconnus ou bien je ne les maitrisait pas encore. J'ai apprci
passer du temps dcouvrir des nouveaux aspects de ce langague et les mettre en application dans
la mesure o je gagnais le plus souvent en puissance dans l'criture.
Par ailleurs, j'ai pu voir une architecture web Django de taille bien plus consquente que celles que
j'avais pu voir auparavant. Je n'ai pas ressenti de problmes particuliers lis cette grande taille et
cela m'a confort dans mon got pour ce framework.
Enfin, j'ai pu voir une mise en application des problmatiques lies la gestion d'un site internet qui
doit toujours tre oprationnel. Par exemple, la gestion des variations de charges exerces sur les
serveurs.