Affichage des articles dont le libellé est ISIMA études. Afficher tous les articles
Affichage des articles dont le libellé est ISIMA études. Afficher tous les articles

jeudi 4 février 2010

Let's buzz the #zzenglishoral hashcode !



Next Tuesday (09/02/2010), I will be giving a talk about Twitter, with my coworker Joan. This presentation will be held at ISIMA during the english lesson. The purpose of this talk ? 100% academic. But that's not why I'm writing this blog post, isn't it ? I'm writing it, because I need everyone of YOU, to help us create a microshort-buzz around the hashcode we have defined for this talk : #zzenglishoral, on Twitter of course!

For those of you who don't know what is Twitter yet, you can check these 2 tutorials from Scott Hanselman.

Now for those of you who know Twitter, all I'm asking is a little participation from you. You can help us by :

  • Giving advices about presenting Twitter (Tips, ideas of scenarios that we can use to show the real time benefit of Twitter etc.)
  • ReTweeting Tweets that are #zzenglishoral hashtagged.
  • Giving your thoughts about Twitter, and why you find it so useful.
  • Saying Hi to the audience (They will appreciate it !).
  • Wishing us good luck for the presentation.
  • Saying what you want, as long as it's tagged #zzenglishoral.
Our goal here, is to demonstrate how powerful Twitter is for real time events and communication. The floor needs to be amazed, and convinced that Twitter isn't' just a tool for telling the world that you are drinking your coffee, or reading your newspaper but a service that lets you talk to the whole world in real time for specific/important/value added/ needs.

We are basically open for any suggestions concerning this talk, and we really want it to be interactive, so buzz it up Twiples !

Before I let you go, I just want to remind you that the talk will be held next Tuesday (09/02/2010) between 3:30 PM and 5:30 PM (It'll last for 20mins but we don't know yet when it'll really start, we'll tweet about it for sure!). You should buzz it, before and during the presentation (if you can!).

That's it folks and thank you so much for your help !



dimanche 13 décembre 2009

Team team team team ! Et Comment construire un solide Ecosysteme autour de son Projet ?



Vous le savez peut être ou pas, je travaille avec mon binome sur ce projet, dans le cadre de mes études à l'ISIMA. Malheureusement, cette fin de trimestre ne nous a pas laissé assez de temps pour nous y mettre (TPs à rendre, examens à préparer etc.) mais maintenant que les partiels sont terminés, et qu'un nouveau trimestre va commencer il est grand temps de donner un gros gros punch pour bien démarrer le projet. Le démarrage est l'une des phases les plus critiques, étant donné que nous devons reprendre un code existant, s'assurer qu'il compile, l'étudier, étudier les technologies qui gravitent autour. Mais avant ça, il faut définir une stratégie d'organisation à suivre tout au long du projet.

J'ai passé donc une grande partie de mon week-end à réfléchir aux méthodes et outils qui nous permettront de travailler efficacement. La chose la plus important x 10000, est d'abord de s'assurer que nous allons faire du bon travail d'équipe avec mon binôme. Quelque soit le niveau respectif des membres d'une équipe, si chacun se la joue solo et si la coordination entre les différents membres ne se fait pas correctement, le résultat ne pourra certainement pas être à la hauteur (ou alors, le résultat sera atteint en 3 fois plus de temps que si les membres avaient mieux collaboré ensemble!). D'ailleurs, je ne suis pas le seul à le penser:
Feu Mr. Reynholm (aka The greatest man in the world) donnait une grande improtance au travail d'équipe, et il n'a pas tort ! :).

Pour qu'un travail d'équipe soit efficace, il faut s'assurer que :

1) Tous les membres de l'équipe puissent communiquer efficacement : Si un membre envoie un message, les autres membres doivent le lire et doivent réagir par rapport au message envoyé.

2) Les données soient partagées en temps réel entre les différents membres.

3) Les objectifs pour chaque membre soient clairement définis.

4) Deux membres ne travaillent pas sur la même tache.

Il est nécessaire alors de définir un certain nombre d'outils qui permettront la mise en pratique des 4 principes énoncés ci dessus. J'ai donc passé toute une journée, à chercher tous les outils qui permettront de faciliter la communication et optimiser nos efforts durant ce projet, cette liste je vais la partager avec vous :


Client SVN Subversion: Gestionnaire de versions de fichiers. Il est important dans un projet de développement, de pouvoir partager en temps réel avec les différents membres, la toute dernière version du code source utilisé. Un SVN permet également de gérer les conflits (deux personnes modifiant le même fichier en même temps). Ainsi plus la peine, de s'envoyer le code source par email ou par flash disk, un simple "commit" (jargon SVN pour dire que l'on update les fichiers sur le serveur) permet de partager le projet avec toute l'équipe !
Le client que j'utilise est : Tortoise SVN. Il est pas mal foutu, intuitif, permet de gérer les différentes opérations via une interface user-friendly :). Si vous êtes sous linux ou Mac, vous aurez par contre affaire au Terminal !

Serveur SVN : Qui dit Client SVN, dit Serveur SVN ! (Faut bien mettre ces fichiers quelque part !). Là deux choix s'offrent à vous, soit vous dédiez une machine à vous à cette tâche (faut qu'elle soit tout le temps allumée pour que les membres de l'équipe puissent envoyer leurs dernières versions autant qu'ils le souhaitent), ou alors utiliser un service tiers qui fournit en plus du serveur SVN un tas d'autres fonctionnalités intéressantes utiles !
C'est le cas de Assembla, qui fournit entre autres un espace de travail collaboratif (partage de fichiers, messages, chat etc.). Assembla, m'a été plusieurs fois utile jusqu'ici et c'est donc sans aucune hésitation que je rempile encore une fois avec ce merveilleux outil !

Mesh : En complément du Serveur SVN, j'utilise Live Mesh pour synchroniser mon répertoire de travail entre les différentes machines sur lesquels je pourrais travailler. Pour moi la différence avec le serveur SVN, c'est que là la synchronisation se fait automatiquement et instantanément. ça me permet de garder mon répertoire updaté tout le temps, même si j'oublie de faire un commit.

WinMerge : Un conflit à résoudre au niveau des versions de fichiers ? Pas de panique, munissez vous de WinMerge et comparez ligne par ligne les deux versions de fichier en votre possession. Et effectuer la fusion des deux contenus de manière organisée et prudente ! Les différences sont highlightées en jaune pour une meilleure observation !

Pastie : Vous pourriez avoir besoin de partager des bouts de code avec votre équipe. Au lieu d'un copier coller non indenté de votre code, vous pouvez utiliser pastie qui permet coller son bout de code et d'obtenir un rendu correct (indentation + coloration syntaxique).

Shared View: Je sens que je vais avoir besoin de cet outil pour le démarrage du projet :). Shared view, permet d'intervenir sur un ordinateur distant (partage de dekstop). Vous voulez aider votre équipe à configurer un IDE ? C'est l'outil qu'il vous faut ! :).

Ever note : Ce site web, permet de centraliser tout ce que vous pouvez trouver utile sur internet (liens, vidéos, photos, articles..) ou dans la vie réelle (photo prise avec votre téléphone, enregistrement d'une conférence ou d'un cours etc.). Le concept est simple, vous disposez d'une sorte de mur que vous remplissez depuis l'extérieur soit en envoyant un mail à votre espace ou en en envoyant un DM via twitter à myen. Au lieu de noyer sa boite email de liens ou de tout autre fichier, envoyez tout ça sur ever note et triez par la suite :).

Spotify : INDISPENSABLE. La musique me permet d'entrer la zone et de me concentrer sur la tâche que j'ai à accomplir. Aussi bizarre que cela puisse paraitre, je suis beaucoup plus distrait sans musique ! Je suppose, qu'elle me permet de rythmer mon activité cérébrale :P. Pour l'information Spotify vaut vraiment le détour, pour moi c'est l'un des meilleurs lecteurs musicaux qui soient, à ne rater sous aucun prétexte !

Jing : Imaginez que vous testez le rendu de ce que vous étiez en train de coder depuis 48h, et que vous voulez partager le résultat avec votre équipe (par exemple dans le cas d'un bug que vous n'arrivez pas à résoudre, l'idéal est de montrer une capture d'écran montrant visuellement le problème). Là vous pouvez soit, faire le fameux impr écran, aller sur Paint, coller votre capture, puis allez sur imageshack et uploader votre capture, pour enfin transmettre le lien vers votre image. Pfffiouu, assez énervant comme procédure. C'est pour cette raison que j'utilise Jing, qui s'installe sous la forme d'un widget et qui permet de capturer une photo ou une vidéo à partir de n'importe quelle zone de votre écran et de partager instantanément cette capture avec l'ensemble de votre équipe (Un lien est automatiquement généré vers votre fichier). En 2 clics, le tour est joué !

Bouml : Un logiciel qui permet de générer des diagrammes UML, avec option de reverse engineering ! (qui sera certainement utilisée pour notre projet vu qu'on récupère un code existant !)

Balsamiq : Cet outil permet de générer des mockup (croquis) pour vos interfaces utilisateurs. Un outil pareil est quasiment indispensable au moment de la conception, au lieu de dessiner vous même au crayon vos croquis, faites le numériquement avec des composants adaptés à la création de logiciels !

Voilà, je n'ai pas tout cité je pense mais voici un bon paquet de logiciels/outils qui permettent d'améliorer l'efficacité d'une équipe sur un projet. Je vais tenter de prêcher la bonne parole pour qu'il adopte ces outils et les utilise, on verra bien ce que ça donnera :).

Pour terminer, n'hésitez pas à partagez les outils que vous jugez utiles sur un projet (notamment ceux que je n'ai pas cité ex: builds automatiques, tests d'intégration/unitaires ou des alternatives aux outils que j'ai déjà cité, notamment le balsamiq qui est payant !). Si vous avez des anecdotes à partager concernant les différents travaux que vous avez eu à faire en équipe (soit dans le cadre d'un projet académique ou pro) faites les nous partager également :).

mardi 20 octobre 2009

[PROJET] Une fois n'est pas coutume..du java !

Une fois n'est pas coutume du java ? Et oui.. Je vous avais parlé de l'isima lors d'un précédent post, et du fait que je devais travailler sur un projet de 100h pour ma 2ème année. La liste des projets est tombée fin de semaine dernière et après un rapide coup d'oeil je me suis focalisé sur le projet suivant : "Amélioration d'un logiciel 3D pour le chargement de containers". Le problème revient à placer de manière optimale des objets 3D dans un volume (un container par exemple !). Ce problème fait partie de la classe NP-difficile. La difficulté ? Le placement d'objets 3D dans un volume est annexé à d'autres types de difficultés dont : Les respects de l'ordre de déchargement dans le positionnement des colis, la présence des colis fragiles, la possibilité de rotation ou non des colis etc.

Vous aurez remarqué le terme "Amélioration" dans le titre du sujet. En effet, un binôme a déjà travaillé sur ce projet l'année dernière et a développé un logiciel de simulation en Java, en utilisant la librairie java3D !


Le cahier des charges de cette année s'appuie donc sur ce travail existant, et c'est ça exactement qui m'a intéressé ! La refactorisation d'un code existant, un exercice difficile mais oh combien passionnant !

En gros refactoriser un code revient à : Lire et analyser le code existant, identifier les zones qui posent problème, les classes qui ont besoin d'être réorganisées, réécrites autrement. Et enfin réécrire ces zones de code en les refactorisant ! La refactorisation est bien souvent ce qui différencie un développeur ordinaire d'un autre ! Alex Iskold, définit d'ailleurs le refactoring comme étant l'une des conditions que doit remplir un rockstar software engineer !

Pour résumer, le refactoring permet à la fois de lire du code et d'en écrire ! Le cahier des charges, inclus également la correction de bugs de rendu, l'intégration d'algorithmes de placement 3D ainsi que l'étude d'alternatives à java3D. En plus du refactoring, ce projet m'a motivé étant donné que j'ai pas mal travaillé sur la programmation graphique dans mon passé (beaucoup plus de 2D c'est vrai, mais il m'est arrivé de faire de la 3D avec OpenGL :) ). Cerise sur le gâteau, ça me permettra de travailler sérieusement sur du Java (j'ai des projets en C++ et en C# .NET sous la manche mais pas de projets Java !).

Bien entendu, j'essayerai de poster des billets au fur et à mesure du développement de ce projet, afin de partager des détails techniques que je jugerais utiles :).



dimanche 27 septembre 2009

Nouveau pays, nouvelle école, nouvelle vie…

Vous l’aurez compris par le titre de ce billet, étant donné la dureté de la vie du développeur algérien j’ai décidé de m’exiler un certain temps dans le pays des fromages qui puent, à savoir : La France :).

Plus sérieusement, ce départ entrait dans le cadre d’un projet d’étude qui traine dans ma tête depuis un petit moment qui est celui d’obtenir un diplôme international en informatique et plus spécialement en génie logiciel. Monter en expertise technique, solidifier et enrichir les bases théoriques du domaine, effectuer des stages enrichissants etc.. Bref, je suis encore très jeune, le génie logiciel étant un domaine qui me passionne je me suis donc donné deux années pour m’affûter et être performant le jour de mon entrée dans le monde professionnel.

L’école que j’ai choisi est l’ISIMA :

Institut Supérieur d’Informatique de Modélisation et de leurs Applications. L’ISIMA est située à Aubière dans la ville de Clermont-Ferrand, qui est non seulement une très belle ville mais en plus elle bouillonne de dynamisme pour une raison toute simple : Clermont est une ville d’étudiants !! (Je n’ai pas de chiffres officiels, mais dans le tram et en ville t’as l’impression que 70% de la population est étudiante !). Bref, revenons à notre ISIMA :). La question que chacun doit se poser c’est : Pourquoi ISIMA et pas une autre école ?!. Avant de répondre à cette question, je vous cite les quelques critères que j’ai sélectionné lors de mon choix :

  • L'école doit être obligatoirement CTI, c'est-à-dire que l’école doit être en mesure de délivrer un diplôme d’ingénieur en bonne et dû forme.
  • La formation doit être spécialisée et orientée vers le génie logiciel.
  • L'enseignement doit être équilibré entre la théorie et la pratique.
  • La durée des études doit de préférence être de deux années (je parle pour moi :) c'est-à-dire la durée d’études supplémentaires à partir de mon cursus initial). La 1ère année d’ingénieur doit être assez généraliste afin de me permettre d’intégrer en 2ème année sans trop de difficultés.
  • La durée de stage doit être assez grande. Ayant effectué mon stage chez IROBASE (SSII à Paris) l’été dernier, je me suis rendu compte de son importance en matière d’expérience et de formation.

Et bien aussi bizarre que cela puisse paraitre, ces 5 critères combinés les uns aux autres ne mènent qu’à pratiquement une seule école en France : ISIMA. C’est fou non ?

Résumons : ISIMA est une école d’ingénieur CTI (durée maximale) qui délivre un diplôme d’ingénieur en informatique en 3 ans (recrutement sur concours commun polytechnique après prépa ou sur dossier pour les autres filières). La première année est assez généraliste, elle vise à donner une culture informaticienne solide aux étudiants qui viennent naturellement de cursus assez variés. Cette première année comporte non seulement des cours en info, mais aussi en électronique, en recherche opérationnelle, en physique, en traitement du signal etc..

A partir de la deuxième année les élèves doivent l’une des 5 options disponibles:

F1 -> Architectures Matérielles et Conception de Circuits.

F2 -> Génie logiciel, Systèmes informatiques et Réseaux. (ma spé :))

F3 -> Informatique des Systèmes d’Information et de Production et Aide à la Décision.

F4 -> Calcul et Modélisation Scientifiques.

F5 -> Télécommunications.

Jusque là tout se passe bien !!! J’ai une école où je peux intégrer en 2ème année du fait que la 1ère année soit assez généraliste et surtout ya pile poile l’option que je recherche, la F2 ! Voyons voir la suite J. A partir de la 2ème année, l’année pédagogique est divisée en deux parties :

Septembre -> Avril : Cours/TP/TD/Examens classiques.

Avril -> Septembre : Stage 5/6 mois !

Tout ça nous donne un total de 10 mois de stage minimum à la sortie de l’école !

Un dernier élément restait en suspens avant de décréter officiellement l’ISIMA comme école certifiée: Qualité Amokrane CHenQel (Ben oui copyright :p), à savoir, la qualité de la formation. Pour cela je suis allé me renseigner sur le forum des élèves de l’ISIMA. Première impression : Le forum est très dynamique et a l’air assez organisé. Les élèves et anciens ont pu répondre à toutes mes interrogations notamment en matière de formation. Pour résumer, les enseignements sont de très bonne qualité et le corps professoral est très compétent ! Sur le papier, l’équilibre théorie/pratique est largement assuré. A titre d’exemple cette année nous avons les cours suivants : Méthodes et outils de développement logiciel (avec trois environnements : C++, Java et .NET et de la conception avec UML), Programmation système, réseaux (avec un cours pour tout le monde et un approfondissement en deuxième semestre pour nous), services réseaux (web service, dev web etc..), compilation et analyse des langages, complexité algorithmique, outils d’aide à la décision, simulation, modélisation, développement de bases de données, systèmes embarqués et des cours de droit, de comptabilité, de gestion de projet, de communication bref peut on faire mieux ? On y apprend donc de tout et de manière très organisée !

Côté matériel, l’ISIMA ne manque de rien, les salles de TP et les salles en accès libre sont dotées de nouvelles machines, très puissantes capable de se connecter sur des serveurs différents (selon que l’on souhaite développer sous linux, windows, faire du calcul intensif en 64 bits etc.). Vous en voulez encore un peu plus ? L’école est très dynamique, la vie associative bouillonne il y a des associations assez variées : IsiBot (pour concevoir des robots participant à l’Eurobot), Im@ge (la junior entreprise de l’école), Koncept (réalisation de courts métrages au sein de l’ISIMA), Rezzo (organisation de LAN entre étudiants :) ) etc..

En tous cas, je termine ma deuxième semaine ici et je ne regrette absolument pas mon choix, tout ce passe comme prévu voir mieux que prévu :).

Côté taf, j’aurai un paquet de TP à faire, un gros projet de 120h à réaliser et surtout un stage de 5 mois à partir d’avril (avis aux recruteurs !). Tout ça en plus de mes projets personnels que je réussirais bien à caser quelque part :).

Voilà, quoi dire de plus ? Ben, si vous êtes en Algérie (ou ailleurs) et que vous avez comme projet de venir étudier l’informatique en France, considérez vraiment l’ISIMA comme choix prioritaire pour toutes les raisons que j’ai cité plus haut et puis comme ça équilibrera le ratio : marocains/algériens à l’école J. N’hésitez pas à me contacter si vous avez des questions !

Je posterai d’autres billets les prochains jours liés à ma nouvelle vie (notamment une MAJ du billet la vie pourrie du développeur algérien :p) d’ici là, commentez à volonté !!! :)