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 :).

lundi 26 octobre 2009

Algerian Startup Initiative

L'Algérie a sa Silicon Valley et ça s'appelle : Le cyberparc Sidi-Abdellah. Pour donner vie à ce cyberparc, une initiative a été lancée par le biais d'un projet de coopération technologique entre l'Algérie et les Etats-Unis, dans le but de promouvoir l'innovation et l'esprit d'entreprise. Cette iniative est l'ASI pour l'Algerian Startup Initiative. L'objectif est de donner la possibilité aux jeunes algériens ayant un projet technologique innovant de lancer leurs start-up en les aidant à formuler leurs projets, à réaliser un business plan, à déposer leurs brevets, à obtenir leur premier investissement etc..
A ce titre, un concours similaire à l'imagine cup a été lancé dans le cadre de cette initiative. Seront primés les meilleurs projets/business plan. Le formulaire se trouve ici !

Si vous êtes étudiant en Algérie, je ne peux que vous conseiller d'y foncer ! Ayez de la motivation bon sang !! Croyez en vous, croyez en vos idées, croyez en votre bonne étoile, n'attendez pas passivement la fin de vos études pour commencer à réfléchir à votre projet de carrière !
Nous sommes dans une époque d'innovation, où le Web 2.0 (certains parlent même de Web 3.0) apporte son lot de start-ups quotidiennes (oui ya des dizaines de facebook/twitter/digg qui se créent chaque semaine, certains réussissent d'autres pas, mais eux au moins ils essayent!) c'est le moment où jamais de vous y mettre ! L'Algérie est un terrain vierge, tout reste à faire en matière d'information et de communication ! Vous pouvez vous occuper du problème des transports, de l'environnement, de l'accès aux ressources et à l'information etc. Les idées ne manquent pas et petite astuce: Il n'est pas interdit de traiter un problème local en s'inspirant du voisin ! Euh bien entendu, si vous avez d'autres idées ou une innovation technologique très pointue (style R&D) n'hésitez pas !! (A ce titre vous saviez qu'il sera possible dans un futur très proche de se transmettre des fichiers olfactifs par internet ?)
Enfin bref, vous êtes jeunes, étudiants, vous ne risquez rien foncez et vite car l'Algérie, qui a été classée avant dernier pays au niveau du classement de l'innovation, a besoin de start-ups!

Si vous n'êtes toujours pas motivés, je vous conseille fortement de vous procurer les films/ lectures suivantes :

  • [FILM] The Bill Gate story

Les pirates de la sillicon valley mets en scène Steve Jobs et Bill Gates dans leurs quête respective à l'innovation et au succès ! Ces types étaient des fous fourieux, ils ne vivaient que pour leurs idées et leurs produits ! Ce film (assez bien fait et assez réaliste je trouve !), vous montre comment un adolescent peut vraiment changer le monde ! (sérieusement et sans déconner: Si Bill gates et Steve jobs n'étaient pas nés il aurait fallu soit les inventer, soit inventer une machine qui les inventerait ou alors l'informatique n'aurait pas du tout le même visage qu'aujourd'hui !). Bill et Steve avaient quelque chose en commun: Ils avaient tous les deux abandonné leurs études au profit de leurs start-up (je dis pas qu'il faut faire comme eux!). Par contre les créateurs de google : Sergei Brin et Larry Page ont lancé google lorsqu'ils étaient en thèse à l'université de Stanford. C'est d'ailleurs l'histoire qui est racontée au niveau du livre: The google story, que j'ai lu dernièrement !
Ce livre retrace l'histoire de google, où comment le rêve de deux étudiants d'avoir un jour accès à une quantité illimitée d'informations en un seul clic est devenu réalité ! Sans google que ferions nous ? Que ferions nous dans quelques années, sans le produit que vous allez créer ?

Je compléterai cet article, par un lien vers TechCrunch, ce site permet de suivre l'actualité des start-up en direct de la silicon-valley vous y trouverez news, articles, interviews etc.
Buvez un peu de TechCrunch tous les jours, et vous allez passer du petit étudiant qui assiste à ses cours de C en se demandant si ya pas moyen d'avoir un 19 au prochain examen, au jeune entrepreuneur visionnaire qui va changer la face du monde ! Devenez le Bill Gates, Larry Page, Steve Jobs, Biz Stone, Zuckerberg algérien..en tentant l'expérience ASI :).

Avant de terminer ce post, si vous cherchez des informations concernant la conférence qui a eu lieu le 19 octobre dernier, je vous envoie vers le blog de iChaib qui y a assité ! Profitez en d'ailleurs pour jeter un coup d'oeil à ses articles et notamment à celui relatif au Barcamp qui a été organisé à l'ESI la semaine dernière ! Si ya des paumés qui lisent cet article et qui ne savent pas ce qu'est un Barcamp, je vous renvoie encore à un de ses posts. Ah oui, vous qui êtes encore paumés, ya des barcamp qui se font en Algérie, le prochain se tiendra d'ailleurs à l'USTHB !

Vous êtes encore là ? Allez créer votre entreprise bon sang :)





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é !!! :)

lundi 13 juillet 2009

A la recherche des geeks algériens * partie 1 *


Un projet qui vagabonde depuis un certain temps dans mon esprit, est celui de pouvoir référencer une bonne partie des geeks algériens (geeks dans le sens développeur passionné surtout, mais aussi dans le sens passionné de technologie). Ce projet s'est imposé de lui même, après avoir fait une observation assez simple avec iChaib, jeunes on pensait être les seuls geeks algériens activant sur le net. Deux conclusions par rapport à cette idée: Le geek est d'un naturel prétentieux :p et..le geek algérien s'il existe ne réseaute pas assez. (je parle pas de ceux qui réseautent bien sûr, mais de ceux qui ne réseautent pas ^^).

Ce premier poste, va me permettre donc de donner une première liste d'algériens que je connais et que je classifierais dans la case: geek, passionné de développement et d'informatique en général. J'ai connu la plupart de ces personnes grâce aux sites de réseaux sociaux (twitter, facebook..) mais aussi grâce à des événements technologiques comme Imagine Cup.

Alors qui sont ces geeks ? Découvrons les, sans plus tarder :

  • Riad Benguella : Etudiant à l'INSA de Lyon actuellement, il initialement ingénieur en informatique de l'USTO (Université Sciences et Technologies d'Oran). Développeur web passionné, il est co-fondateur de la boite de développement Nomade. Riad, s'est notamment distingué l'été dernier par le développement d'un digg like algérien bloginy. Pour plus d'informations sur Riad, vous pouvez consulter son portfolio, son compte twitter ainsi que son blog.
  • Inal Djafar : Etudiant en master Informatique spécialité Systèmes informatiques et réseaux à l'USTO, Inal possède également une licence en intelligence artificielle. Son domaine d'expertise est cependant beaucoup plus tourné vers le développement web, avec une maitrise des framework: Django et Symfony et des CMS Drupal et Wordpress. Inal développe essentiellement en : Java et Python. Sur le plan professionnel, Inal travaille dans une SARL spécialisée dans le développement web et est membre de la boite de services informatique Nomade solutions, il a également contribué avec Ryad Benguella au développement de Bloginy. Inal a comme pseudo, Inalgnu, trahissant son intérêt pour le projet GNU. Vous pouvez trouver plus d'informations sur Inal, via son site professionnel.
  • Aniss Bouaraba : Aniss est un jeune étudiant en informatique à l'université de Blida (cycle LMD), son domaine d'expertise est tourné vers le développement web 2.0 (RIA et métier). Aniss est connu pour avoir lancé dernièrement le projet minixr, qui est un réseau social type microbloging (à la twitter, sauf que son principe est légèrement différent étant donné qu'il permet de centraliser tous les changements de status effectués par les utilisateurs via facebook, twitter etc. le concept est beaucoup plus proche de FriendFeed). Aniss, s'était également illustré par le passé par le développement de Icoute, qui n'est malheureusement plus en ligne. Icoute est un deezer-like, il permet aux utilisateurs de pouvoir rechercher des morceaux de musique en ligne, de gérer ses playlists etc. 2 start-up en si peu de temps, en travaillant seul (design+dév) Aniss est sans contexte l'un des jeunes geek algériens les plus dynamiques et motivés de son ère.
  • El Kindi Rezig : El-Kindi est un jeune étudiant en master informatique à l'université de l'USTHB (Bab Ezzouar, Alger). Passionné de dévéloppement et de nouvelles technologies, il s'est notamment distingué en assurant une bonne partie du développement du linux algérien : Bee linux. El-Kindi, a également gagné la finale nationale de l'Imagine Cup 09 avec son ami Ryad Dahimene qui lui a valu une place à la finale mondiale qui s'est déroulée en Egypte cet été.
  • Nassim Kacha : Nassim est étudiant en informatique à l'Université Charlemagne à Nancy. Geek assez complet, son expertise va du développement logiciel jusqu'à l'administration des systèmes et des réseaux informatique. Il est notamment auteur technique dans plusieurs revues spécialisées notamment la revue N'tic. Pour plus d'informations sur Nassim et ses projets, vous pouvez vous référer à son blog.
  • Ismail Chaib : Ismail que j'ai cité en tête d'article, est étudiant à l'ESI (ex- INI) en Systèmes d'information. Ismail se définit comme étant un tech-entrepreuneur plutôt qu'un développeur acharné et associal. Il a notamment participé à la finale nationale d'Imagine Cup 09, et a manqué de peu la qualification mondiale (arrivé deuxième avec son équipe). Qu'à cela ne tienne, Ismail avec deux de ses amis compte continuer le développement de son projet (LocustGIS) et de lancer sa startup. Une initiative à encourager ! Ismail suit l'actualité technologique de très prés, vous pouvez consulter ses articles sur son blog, ou le suivre sur twitter.
  • Ahmed Siouani: En voilà un que je connais bien :). Ahmed, était étudiant avec moi à l'ENP (Polytech Alger). Nous faisions partis de la troupe rebelle qui passait beaucoup plus de temps à développer sur des projets perso qu'à nous occuper de nos études :p. Ahmed développe principalement en .NET, mais possède également de bonnes connaissances en C++, PHP et Java. Ancien participant à l'Imagine Cup (08), il compte remettre ça l'année prochaine et éspère se qualifier enfin à la finale mondiale (Pologne 2010). Il travaille déjà en tant que développeur dans une socièté de services informatique à Alger, mais compte continuer ses études d'informatique en France dés la rentrée prochaine. Pour plus d'infos sur ses projets, vous pouvez consulter son blog technique.
  • Oualid Boutemine : Oualid est un gros gros geek. Passionné de développement et de nouvelles technologies, il est à la fois étudiant en médecine, en informatique et est également Microsoft Student Partner. En tant que MSP, il a notamment participé à la création d'un club d'informatique à l'université de mentouri (constantine). Ne me demandez pas comment il fait pour assurer tout à la fois, je n'en sais rien ! Oualid s'intéresse essentiellement aux technologies .NET, avec un gout prononcé pour les techniques de développement agiles (S.O.L.I.D principles). Il est également l'administrateur d'un forum de programmation arabophone assez populaire. Pour plus d'infos sur Oualid référez vous à son blog.

8 geeks ! C'est déjà pas mal non ? Bien entendu j'ai 2/3 autres geeks sur ma liste (agence 84 notamment), mais je n'ai pas assez d'informations sur eux pour l'instant. Je compléterai la liste au fur et à mesure, ce billet n'en est qu'à sa partie 1 ! Afin de donner suite à ce projet, il serait intéressant que chaque personne taguée sur ce billet ou tout autre personne connaissant un certain nombre de geeks puissent poster leurs liste à eux au niveau de leurs blog ! D'ici peu de temps, on pourra avoir une bonne liste de geeks algériens, créer une communauté algérienne de de développeurs (à l'image du developpez français), organiser des nerd diner, lancer une revue informatique sur le web, organiser des événements etc. Bref, avec une communauté tout deviendra possible construisons là et faisant bouger les choses pour améliorer certains points discutés ICI.

J'attends vos commentaires avec impatience et bien sûr, si vous êtes mentionnés sur cet article et que vous avez des objections relatives à certaines informations, je me porte volontaire pour apporter les modifications qui s'imposent :).

dimanche 17 mai 2009

[EVENEMENT] Microsoft Student Festival'09 à l'ESI !


Un petit billet rapide pour vous informer que le Club .NET de l'ESI (ESI .NET, de l'Ecole Supérieure d'Informatique d'Alger ex INI) organise ce mercredi 20 mai 2009 la première édition du Microsoft Student Festival. Le principe ? Un certain nombre d'experts de l'industrie IT présenteront un certain nombre de conférences portant sur des domaines allant du génie logiciel jusqu'aux systèmes d'information. 

Alors ne manquez pas cet événement qui démarre à 8h30 à l'ESI. Pour plus d'informations (programme détaillé du MSF) rendez vous ICI.

jeudi 14 mai 2009

Résultat imagine cup 2009 Algérie: Evotech de l'USTHB vainqueur !


Hier à Boumerdés, s'est déroulée la finale de la 5ème édition d'imagine cup Algérie. Après l'USTHB (nom d'équipe?) en 2005, IniForUs de l'INI en 2006, HBM2 de l'INI en 2007 et Polygeek de l'ENP en 2008 c'est au tour de Evotech de l'USTHB de se qualifier à la finale mondiale de l'imagine cup.

Evotech s'est illustrée brillamment avec son projet: Education provider, qui vise à permettre un meilleur accès au savoir aux enfants privés d'éducation primaire. Je reviendrai en détail sur ce projet lors de mes futurs posts. L'équipe Evotech est composée de : El-Kindi Rezig et Dahimene Ryadh tous deux étudiants en M1 Informatique à l'USTHB. La deuxième équipe est l'équipe Microserfs avec son projet LocustGIS, équipe que j'ai coaché par ailleurs. Et enfin la troisième équipe n'est autre que Technology Geeks une équipe qui s'était classée en seconde position lors de l'édition précédente.

A noter l'absence de l'équipe WEINNOVATE (le lycée de boumerdés) qui a certainement eu un empêchement relatifs à ses examens de fin d'année, c'est dommage j'aurais vraiment aimé voir ce candidat en action d'autant plus que son projet avait l'air intéressant. Imagini Team avec son projet GAIA ne s'est pas qualifiée parmi le trio de tête à leurs très grande surprise (fallait voir la tête de Raouf l'un des membres de l'équipe lors de l'annonce des équipes non classées..). Rappelez vous lors d'un de mes précedents posts j'avais bien dit que tout était possible dans une finale, en effet sur le papier Imagini Team était favorite s'étant classée première lors des qualifications (basés sur la fiche technique du projet).

Je terminerai par quelques feedbacks personnels :

Les points positifs :

  • L'apparition des modèles économiques des projets au cours de certaines présentations, dû très certainement au temps alloué (15 mins) supérieur au temps alloué pour la présentation dans les éditions précédentes (qui était de 8mins).

  • Un saut qualitatif important comparativement aux éditions précédentes (même s'il y a toujours du très bon, du bon, du moyen et du mauvais à chaque fois).

  • Un projet qui consiste à localiser en temps réel des personnes susceptibles d'aider d'autres personnes en danger (accident, malaise cardiaque, etc.). La localisation est basée sur la proximité d'une personne répondant au profil nécessaire à la nature de l'intervention. Petit clin d'oeil, étant donné que l'année dernière nous avions également un projet de géo localisation mais appliqué au covoiturage. Néanmoins, ce projet n'a pas attiré l'attention du jury étant donné la difficulté de sa mise en pratique. Une personne en plein malaise cardiaque a d'autres chats à fouetter, que d'envoyer un SMSd'urgence. Le projet se nomme: Helpy et a été développé par la Team Forza de l'USTHB.

  • L'organisation était également au top (au même titre que l'année précédente).

  • L'équipe lauréate sera coachée par des professionnels de l'IT, c'est un + certain qui permettra certainement à l'Algérie de se qualifier en moins aux demi-finales de la finale mondiale.

Les points moins positifs :

  • Pas mal d'équipes n'ont pas respecté la durée impartie à la présentation. Le jury a été assez indulgent par ailleurs, lors des éditions précédentes les équipes avaient droits à 8 mins tout court. (quitte à être coupé en pleine phrase voir mot..). Lors de la finale mondiale, la durée sera de 20mins et pas une seconde de plus.

  • On est restés sur notre faim au niveau des démonstrations, la compétition devrait s'appeler à force: Software design officially, interface design in fact.. Bref, on sait très bien qu'il ne s'agit que de prototypes reflétant uniquement l'aspect du projet mais de plus en plus de démos se limitent à quelques interfaces mortes seulement. (pas de développement métier réel).

  • J'aurais aimé écouter plus de questions de la part des membres du jury sur certains projets.

Un feedback neutre : J'espère que l'ensemble des équipes vont réellement penser à développer un produit utilisable partant de leurs concept, et que leurs engagement à lancer une start up basé sur leurs projet n'était pas seulement une belle phrase visant à attirer l'attention et la sympathie du jury. Parce que gagner imagine cup, c'est bien mais c'est rien. Le plus important, c'est de produire concrètement le produit et de lancer son entreprise, à quoi bon s'embêter sinon :).

Voilà, bien entendu ces feedbacks n'engagent que moi. Vous pouvez bien entendu exprimer vos réactions en commentaire à ce post. Je reviendrai plus tard avec une vidéo (celle de l'annonce des 3 premiers que j'ai filmé à l'aide de mon téléphone) ainsi que quelques photos de l'événement, afin de vous donner un aperçu sur la bonne ambiance qui a régné à la finale nationale d'imagine cup 2009.

Pour terminer je félicite encore à l'équipe Evotech, qui a bien mérité sa victoire et qui je le suis sûr va représenter de son mieux l'Algérie lors de la finale de l'imagine cup en Egypte qui se déroulera début juillet prochain. Go go Evotech :).


mercredi 6 mai 2009

La vie pourrie du développeur algérien...



Avant de commencer cet article, je voudrais vous informer qu'il y'aura un petit changement de cap au niveau de ce blog, vous étiez habitués à y lire principalement du contenu dédié au .NET, à imagine cup ainsi qu'à d'autres technologies MS... ben disons qu'il y'aura toujours un petit peu de ça mais le blog viendra s'enrichir d'un contenu plus général : développement logiciel dans le sens général du terme, Open source, plus d'articles techniques sur différents langages que j'utilise quotidiennement (C++, C#, Javascript/php..), réfléxions diverses sur la discipline etc.. Enfin disons que le but est d'élargir l'impact du blog, et surtout d'exprimer toutes sortes de pensées qui trainent un peu partout au niveau de mon cortex cérébral ^^.

Revenons maintenant au sujet du jour :). Le titre est un peu provocateur, mais a le mérite de soulever quelques aléas de la vie d'un développeur vivant Algérie. Je vous vois venir avec vos: Le développement est universel, t'as juste besoin d'un PC (rien que ça), d'un éditeur/compilateur et le tour est joué. Bien que cela soit vrai, il faut admettre que là où je vis actuellement (Alger), je n'ai pas accès à certaines commodités très importantes, je me lance :

  • La pauvreté des ressources bibliographiques : Allez faire un tour à la librairie du tiers monde à Alger (c'est pratiquement la seule à ma connaissance qui vende des livres techniques plus ou moins intéressants..), sur votre gauche montez les éscaliers qui vous mèneront aux bouquins d'informatique (c'est tout au fond). Première constatation, ya 4 étages de livres avec pas mal de duplicata (le livre d'intelligence artificielles de Peter Norving et Stuart Russel y est présent en 5 exemplaires, occupant 80% de la rangée). Le reste disons qu'il ya un livre sur chaque sujet : un livre de C++, un livre sur le javascript, un livre sur les bases de données (SQL Server 2000, c'est dire comme c'est ancien), un livre sur la conception orientée objet puis c'est tout quoi.. C'est vous dire à quel point le choix est pauvre. L'été dernier j'étais à Paris, et l'une de mes activités favorites là bas était d'aller faire un tour dans des librairies comme: Eyrolles, Fnac, Gilbert jeune etc. et croyez moi j'étais franchement émerveillé ! Vous avez tout quoi.. Chez Eyrolles, vous avez un étage complet dédié rien qu'à l'informatique ! J'ai d'ailleurs acheté au cours de mon séjour les bouquins suivants: Php 5 mysql 5, MCTS 70-536 Self paced exam, Google story, et enfin l'excellent: Marketing Management. Dommage que mon dernier jour à Paris était un 15 aout, week-end de la pentecote Eyrolles était fermée ce jour là :'(, j'aurais fais une plus grosse rasia sinon :). Enfin tout ça pour dire, que le livre est avant tout à la base du savoir. Et il est bien connu, que si l'on veut vraiment maitriser un langage ou une technologie donnée rien ne remplace un bon livre sur le sujet! Etant donné que les cours gratuits que l'on peut trouver sur le net sont souvent écrits par des amateurs, et de ce fait et malgré tout leurs bonnes volontés sont quelques fois remplis d'erreurs ou coquilles :). Puis en plus, un livre c'est un livre ! Vous l'achetez, vous le planquez dans votre bibliothèque après en avoir lu l'essentiel et il vous servira durant toute votre vie de développeur ! C'est ce qui m'arrive avec le livre : C++ How to program, que j'ai acheté il ya de cela 6/7 ans. A l'époque je m'étais enfermé @ la maison tout un été pour travailler sur ce livre, j'ai travaillé sur les 10 premiers chapitres sérieusement, en essayant tous les exemples, en codant tous les exercices et en développant des petits projets en // (essentiellement des jeux 2D). Et bien maintenant, je m'en sers toujours de ce livre, je le connais sur le bout des doigts, je sais quel chapitre correspond à tel notion et donc si j'ai besoin par exemple d'avoir une précision concernant un algorithm de la STL, ben direct je file au chapitre 20 je pioche mon info et je ferme le bouquin :). Mon rêve est d'avoir un jour une bibliothèque comme celle ci :



Et c'est certainement pas dans ces conditions que je vais pouvoir avoir ça un jour :'(.
  • Le problème du pouvoir d'achat: Je vais continuer l'idée décrite plus haut, car non seulement les ressources bibliographiques sont rares ici, mais en plus le niveau de pouvoir d'achat ne permet pas l'achat de livres internationaux. Un livre qui coute 30 € en Europe, ben ça donne : 3200dinars ici. La différence, c'est que 40€ c'est le centième du salaire moyen d'un cadre en France et ici ce n'est que le dixième ! On peut appliquer le même raisonnement pour le matériel informatique (disques durs, cartes graphiques, écrans plats, RAM etc.).

  • L'absence de magazines spécialisés : Quand j'entre dans un kiosque en France, sur la droite généralement je trouve ça :et j'en passe... en Algérie il n'y a AUCUN magazine qui touche de prés ou de loin le domaine de la programmation. Les seuls magazines d'informatique qui se vendent, sont des magazines de bureautique ou de jeux vidéos. Et ça c'est quand même un inconvénient majeur. L'enrichissement personnel que l'on peut acquérir via ce genre de magazines est énorme.

  • L'absence d'événements : En Algérie il n'y a pas de journées ou conférences consacrées au développement logiciel. Pas de techdays, pas de php conf ou rails conf, ou je ne sais quoi d'autres :).

  • Achats en ligne impossible : Pour qu'un développeur soit efficace, il devrait limiter le nombre de sorties au maximum. En Algérie, du fait de l'impossibilité d'effectuer des payements en ligne (notre système bancaire ne nous donne pas accès aux cartes de crédits internationales), on est obligés de sortir pour tout et n'importe quoi.. pas la peine d'espérer commander une pizza ça n'existe pas! (du moins pas à ma connaissance ?).

  • Coder en pleine nature, vous rêvez ? Un fantasme que j'entretiens depuis pas mal de temps, est celui de pouvoir coder en pleine nature. Dans un parc, avec un bon jus de fruit par exemple ! En Algérie, les parcs sont rares, très rares. Et lorsqu'il y'en a ils sont: mal fréquentés (les couples y vont pour..), ils puent, occupés par les clochards, et surtout mal sécurisés. Non, non faut pas trop s'aventurer avec son laptop à la main pour coder dehors ;). D'autant plus que les algériens sont de nature observateurs, ils observent tout. Ils vous dévisagent, si jamais vous tentez quoi que ce soit d'original. Bref, à éviter :). Vous me diriez : qu'est ce qui te prend de vouloir coder dehors ? Ben il ya des avantages certains à cela, tout d'abord le fait de pouvoir respirer de l'air (frais si possible), d'avoir un joli paysage en face, de recevoir sa dose de soleil, de regarder les gens.. tout ça permet d'être beaucoup plus créatif et plus performant que si vous étiez dans un bureau.. C'est connu, les meilleures idées nous viennent lorsqu'on est loin de notre lieu de travail habituel.

  • Le calme ? pas la peine d'y songer Un autre problème que je rencontre personnellement quand je code, c'est l'impossibilité d'avoir accès au calme. Le calme, je ne sais pas ce que c'est pour le moment ou du moins je l'ai experimenté l'été dernier à Paris c'était une expérience formidable. Je pense que mon quartier est l'un des plus bruyants au monde: les gosses, les voitures, les vendeurs à la sauvette, les bagarres à répétition, les chantiers, le voisin qui allume son poste en mettant le volume au maximum.. bref, l'ambiance n'est pas du tout propice au travail et encore moins au code ni à l'imagination! Et ce phénomène de nuisance sonore concerne le pays d'une manière générale à cause du manque de civisme de la population.

  • Problèmes technologiques en tous genres Pas de 3G/3G+ pour surfer sur internet à partir de son PDA/regarder des vidéos techniques dans les transports en commun (euh même avec 3G ça aurait été impossible, dans le bus on slalomme, on avance en arrière.. et puis ya le problème de la sécurité bien sûr). L'ADSL en est encore à ses balbutiements preuve en est les pannes trop fréquentes que je me tappe etc.

  • Problème du transport en commun Le transport en commun, est la source d'une perte de temps énooooorme ici. Quand je dis énorme c'est vraiment énorme, on peut facilement passer 2/3/4h par jour dans les transports à cause des embouteillages notamment. La solution ? Exploiter ce temps là ? Ah oui, tu peux lire un livre dans le bus.. mon oeil !!!! Tu peux rien faire dans le bus ! D'abord on est à 90% du temps debouts, ensuite étant donné que la vitesse d'un bus n'est pas constante (ya des freinages, des accélérations, des queues de poisson etc..) il est pratiquement impossible d'y faire quoi que ce soit. Le problème devrait être réglé avec le métro d'Alger mais celui ci de toutes façons ne me servira pas à grand chose étant donné que les lignes qu'il déservira ne correspondent pas à mon trajet quotidien.

Pour toutes ces raisons, et pour d'autres encore la vie d'un développeur algérien est vraiment vraiment difficile. Pertes de temps, manque de ressources, ambiance non propice au code.. tout est fait pour en décourager plus d'un, mais la passion est plus forte il faut faire avec en espérant que les choses changent un jour petit à petit :).

A vous maintenant de me faire part de vos impressions/observations , rencontrez vous d'autres difficultés dans votre vie de développeur ? Aimeriez vous que certaines choses changent ? Comment vous vous débrouillez malgré les contraintes que nous impose le contexte économique/social du pays ? Connaissez vous des librairies à Alger qui en valent la peine ? Ya t'il des kiosques qui vendent des magazines de programmation ? Comment faire en sorte que ces magazines soient importés?

J'attends vos réponses !


mercredi 15 avril 2009

Résultats Imagine Cup 2009, la liste des finalistes est connue !

La liste des finalistes Imagine Cup Algérie 2009, est enfin connue. Par ordre de mérite il s'agit de:

1/ Imagini team avec un projet intitulé Gaia.

2/ WEINNOVATE avec un projet intitulé Prométracs studio.

3/ CIV. Risers avec un projet intitulé Youreka.

Technology geeks avec un projet intitulé VirtLab.

4/ Team Forza avec un projet intitulé Helpy.

Microserfs Team avec un projet intitulé LocustGis.


5/ Evotech avec un projet intitulé Education provider.

6/ Dream Team avec un projet intitulé Town partnership.

Félicitations aux 8 équipes qualifiées, aussi drole que cela puisse paraitre le plus dur est passé pour vous tous, car tout peut arriver le jour de la finale ! Félicitations également à WEINNOVATE (qui sauf erreur, est une équipe composée par une seule personne... qui plus est : lycéen!), bravo encore pour ce brillant parcours !!
Comme vous pouvez le remarquer j'ai mis en gras l'équipe: Microserfs Team, pour la simple raison que je coache cette équipe :). Le concours risque donc d'être acharné, d'autant plus qu'une équipe a soif de revanche: Technology geeks, qui était arrivée seconde l'année dernière coiffée sur la ligne d'arrivée par d'autres geeks.. ^^ (ceux de poly :p).
Imagini Team, a obtenu la note maximale lors de la phase éliminatoire il est donc assez logique de dire qu'ils sont favoris... mais .. tout peut arriver dans une finale !

Par contre étant donné que je coach une équipe (microserfs), je ne serai pas en mesure de compléter le dernier opus de la série : comment gagner imagine cup ! (logique, je garde les conseils pour eux! :p). Mais je donnerai quand même un conseil très important à vous tous participants (et c'est très important croyez moi). Passez un bon moment aux sanitaires avant de sortir de chez vous (la finale IC est un événement hyper stressant, il serait dommage d'être gêné par un trouble quelconque ^^).

Rendez vous donc le 28 avril 2009 (1ère date officielle) à l'université de Boumerdés pour assister à la 5ème finale d'imagine cup Algérie !!

mercredi 28 janvier 2009

Comment gagner Imagine Cup ? partie 2.

Comme promis, voici le second billet de la série : Comment gagner Imagine Cup ? Ce 2nd opus, parlera de la phase qualificative à la finale nationale. Comme vous le savez peut être, le dernier délai d'envoi des documents est fixé pour le 25/03/2009. Soyez sûrs de ne pas louper cette date là, car il serait dommage de gâcher tout votre travail pour rien :). (des dead lines ratées, ça arrive !). Alors, la question que vous pourrez poser est: Comment allons nous rédiger notre rapport technique ? Mais avant de répondre à la question, j'aimerais insister sur le fait que vous devez absolument prévoir au moins 1 semaine pour l'écriture de ce rapport. (En tous cas, c'est pile la durée dont j'ai eu besoin pour écrire le notre l'an passé). De préférence, laissez une seule personne s'en occuper afin de ne pas mobiliser toute l'équipe et ainsi gagner du temps précieux. (ça pourrait être la personne polyvalente, voir pas du tout technique dont je vous ai parlé lors de la 1ère partie). Le but du rapport, est de donner un aperçu de votre solution aux membres du jury. Vous devez brièvement, leurs donner envie d'en voir plus sur votre idée. Je vous conseille, de vous en tenir au plan suivant:

Document 5-10 pages, architecturé dans l'ordre de la manière suivante:

- 1 page: Page de garde, comportant le nom de votre projet ainsi que les noms et coordonnées des membres de votre équipe.

- 1 page: Définition de la problématique que vous tentez de résoudre, et description de votre idée/solution. Cette page, est très importante car c'est ici que vous allez expliquer en quoi votre idée est innovante, et comment elle permet de résoudre la problématique posée! Faites en sorte, qu'à la fin de la lecture de cette page, on puisse se dire: “mmm j’aime bien, j’ai envie d’en savoir +!”. Employez un langage claire, de préférence sans jargon technique et faites le lire à un proche ou à un ami qui n’est pas impliqué dans votre projet. S’ils comprennent votre idée, c’est gagné. Si ce n’est pas le cas, c’est que votre texte n’est pas très clair et qu’il comporte des zones d’ombres qu’il va falloir éclaircir.

- 2-3 pages: Description de votre projet. Attention, cette partie est différente de l’introduction. Au cours de l’introduction, vous allez juste citer la problématique à résoudre et vous allez énoncer la solution pour laquelle vous allez opter. Vous n’allez pas parler de votre logiciel en détails, vous n’allez pas détailler la partie fonctionnelle de votre logiciel. C’est là par contre, que vous allez le faire. Dans l’ordre, essayez de: résumer brièvement le but de l’application, de décrire toutes les parties composant votre solution (toujours dans le fonctionnel rien de technique), citez les utilisateurs que vous ciblez, les interfaces auxquels vous optez. N’hésitez surtout pas, à illustrer votre solution par 1 ou 2 schémas d’application qui montrent clairement les différents utilisateurs ciblés par la solution, les appareils sur lesquels votre solution pourrait potentiellement tourner (PC, PDA, Tablet PC, netbook, téléphone GSM etc.), les réseaux utilisés (indiquez clairement les modes connectés et déconnectés de votre solution). Votre schéma doit être assez clair, pour que l’on ait une bonne vue d’ensemble de votre solution. Si vous voulez au niveau de la 1ère page, vous dites “voila ce qu’on propose” et au niveau de cette partie, vous dites: “voilà comment notre solution sera mise en œuvre”. Au final, vous pouvez également ajouter une page pour illustrer l’application de votre solution dans la vie réelle via un scénario ou des scénarii d’utilisation. Ecrivez ce scénario sous la forme d’une histoire agréable à lire et soyez sûrs de bien montrer toutes les facettes essentielles de votre solution en insistant sur les appareils utilisés et la façons d’utiliser votre solution en fonction de certains paramètres.

- 2-3pages: Description de la partie technique. C’est ici, que vous allez parler de l’architecture technique et logiciels utilisés. Commencez par décrire l’architecture technique, faites des schémas clairs et concis, décrivez aussi bien la partie cliente que la partie serveur, si votre projet doit supporter une forte montée en charge dites comment vous comptez fournir la solution à grande échelle. Ensuite, décrivez la partie code. Les designs patterns utilisés ainsi que les librairies et outils utilisés. Assurez vous que votre solution, répond aux critères internationaux énoncés sur le site d’imagine cup, vous pouvez retrouver ces critères ICI.

- 1 page: Consacrez la dernière page, à la conclusion. Citez brièvement, les + du projets et discutez de l’avenir de votre solution (projet de start-up ? avez-vous engagé des discussions avec des partenaires industriels potentiels ? Où en êtes vous du développement de votre solution ? etc..).

Et c’est tout :). J’aimerais également insister sur le fait que vous ne devez en aucun cas envoyer le code source de votre solution. N’envoyez que le rapport écrit ! Ah oui, j’ai oublié de vous parler de la langue :). Personnellement, j’aurais écrit le rapport en anglais. C’est d’ailleurs ce que j’ai fait l’année dernière, pour la toute simple raison qu’écrire en anglais signifie que vous voyez déjà plus loin que la finale nationale! Croyez moi, après notre qualification et une fois la fête terminée (elle n’a duré que 30mins), on était bien heureux d’avoir un rapport déjà rédigé en anglais. Car s’il était écrit en français cela aurait signifié qu’il aurait fallut se retaper une semaine de + pour traduire le rapport en anglais. Et croyez moi, 1 semaine c’est beaucoup!! Surtout, vers la fin du mois de mai lorsque tous les examens de fin d’année vous tombent sur la tête et que la finale mondiale est programmée pour début Juillet et que vous avez tant à préparer pour cette finale mondiale! Pensez-y!

La dernière chose, sur laquelle j’aimerais insister est que vous devez faire très attention à la qualité de votre rapport. Assurez vous d’envoyer un document :

- Justifié.

- Contenant 0 fautes d’orthographe/grammaire (utilisez Word!).

- Ayant une police de caractère uniforme

- Au format PDF.

En gros, soyez sûrs que votre rapport fait pro et non amateur car il sera l’ambassadeur de votre projet. Vous devez donc faire en sorte qu’il donne une bonne image de votre solution et de vous en tant que futur Start-up.

Voilà, c’est déjà la fin de cette très courte partie (:p). A vrai dire, c’est une phase dite de formalité, le + important reste à venir! Je vous invite donc, à revenir sur le blog pour lire la partie la plus importante qui concerne la préparation de la présentation et la présentation finale à proprement parlé.

Pour toutes remarques ou questions mailez moi.

mardi 27 janvier 2009

Comment gagner imagine cup ? - Partie 1 -

Ce billet sera exceptionnellement écrit en français (néanmoins une version anglaise pourra être écrite dans les jours qui suivent), la raison en est qu'il est principalement destiné aux étudiants algériens.

Avant d'entrer dans le vif du sujet, j'ai une nouvelle à vous annoncer. Vous avez pu comprendre, que je me suis engagé avec une équipe de l'école polytechnique à l'édition 2009 de l'imagine cup. Oui, c'est vrai nous l'étions, nous avions une idée innovante, un concept fort, un modèle économique de tonnerre, une conception technique préparée méticuleusement mais malheureusement, nous manquons énormément de temps libres. A l'ENP, le projet de fin d'étude ne s'étale pas sur toute une année comme toutes les autres universités ou écoles, mais uniquement sur 3 mois (Mars, Avril, Mai), un PFE est déjà délicat à gérer en 9 mois. Vous imaginez ce que ça peut être en 3 mois ?. Les 6 premiers mois, étant par ailleurs occupés par 11 modules aussi robustes les uns que les autres. De plus, les études ne font pas tout notre emploi du temps on peut ajouter à cela: démarches diverses (opération avenir, comprendra qui pourra ^^), statut de MSP (en ce qui me concerne) qui demande un certain investissement niveau temps, préparation de certifications etc..
Nous avons essayé à plusieurs reprises de considérer une suite à notre participation mais le fait est là c'est impossible ! L'an passé, nous étions tous engagés également dans la compétition (dans deux équipes différentes) nous avons connu des fortunes diverses (la notre nous a envoyé à Paris, la leurs a été un peu plus courte :p). Il est clair, que mes coéquipiers ont envie d'une finale mondiale beaucoup plus que moi, étant donné qu'ils ont un peu plus faim que moi. D'ailleurs pour tout vous dire, j'ignore quelle est leurs décision finale. Mais bon, ceci est une autre histoire :). De mon côté en tous cas, it's over :(.

La bonne nouvelle, maintenant (et oui il y'en a une) c'est que je suis libre comme l'air et que vous (participants à imagine cup) n'êtes plus des concurrents ! Vous êtes, des algériens (que vous soyez de l'ENP, de l'INI, de l'USTHB, de Annaba ou de Boumerdés ou de n'importe quelle université du pays) par conséquent, mettez vous dans la tête que ce n'est pas une compétition inter-université mais une compétition mondiale. La meilleur équipe, ira en Egypte défendre les couleurs nationales face aux meilleurs équipes du monde ! C'est pour cette raison, que j'ai décidé d'écrire ce billet que j'ai intitulé: Comment gagner imagine cup ?.
Dans ce billet, je vous livrerai sans pudeur (ça se dit :p?) toutes les astuces, techniques, secrets que je pense utiles pour toutes équipes s'engageant dans cette compétition. Que ça soit claire, dés maintenant. Tout ce qui sera écrit en dessous, n'engage que moi, moi, moi, et seulement moi. (Pas Microsoft en tous cas, ni aucun membre du jury). Ce sont des observations tirées de ma double expérience nationale et mon unique expérience mondiale à Imagine Cup, libre à vous d'en tenir compte ou pas. Le fait est que si j'avais été engagé, mon équipe aurait suivi scrupuleusement tout ce que je vais balancer ici !

Ceci étant dit, lançons nous :) accrochez vous à votre siège, prenez une feuille un crayon et lisez le billet qui va vous faire voyager en Egypte l'été prochain !

La victoire à Imagine Cup, se fait en plusieurs étapes.

Première étape :
Trouver une idée originale/innovante qui réponds au thème de l'année en cours. Avant de parler de l'idée et de tout ce qui a autour, j'espère que, si vous êtes engagés à la compétiton cette année, vous avez déjà trouvé votre idée et que vous avez même terminé la conception de cette solution. Si ce n'est pas encore le cas, et si votre but est vraiment de gagner la compétition je vous conseille fortement d'activer. C'est pas pour vous faire peur, mais on va bientot attaquer le mois de février, la finale est proche (2-3 mois) :). Ceci étant dit, je vais supposer que vous avez déjà une idée et que mon speech vous aidera uniquement à l'affiner, à la concevoir d'une meilleur manière ou à réfléchir de manière plus profonde à son modèle économique.
D'abord, j'entends tout le monde parler d'idée originale ou innovante mais certains confondent avec le terme invention. Mettez vous bien ça dans la tête, ça m'étonnerait que vous fassiez une invention, il est je pense improbable voir complètement impossible d'inventer quoi que ce soit. Par contre, vous pouvez innover. Une innovation, peut être un concept déjà vu mais reformulé d'une manière différente par votre solution. Peut être, une approche technique différente, une approche économique différente, une manière de faire originale. Pensez à notre idée de l'an passé: Le covoiturage temps réel. Plusieurs, personnes ont critiqué le projet en disant que le covoiturage existait déjà, oui mes amis le covoiturage existe déjà rassurez vous on ne l'a pas inventé :). Par contre, nous avons proposé une nouvelle approche pour covoiturer. Là est l'innovation.

J'irai même un peu plus loin, en disant que travailler sur une idée innovante à laquelle des personnes à travers le monde travaillent déjà dessus, n'est pas du tout grave ! Cela ne doit pas, vous faire abandonner la dite idée. (nous sommes 6 milliards sur terre, à votre avis quelle est la probabilité pour que vous soyez vraiment le seul à avoir pensé à ça ?). Le plus important est de réaliser cette solution. Telle est votre mission. C'était pareil, pour le covoiturage temps réel. Nous nous sommes aperçus après 2 mois de travail, que l'idée d'utiliser le GPS pour localiser des voitures en temps réel à des fins de covoiturage existait et commençait à être dévelopée au niveau de certains labos de recherche. Oui je veux bien, mais que je sache on a encore rien vu de concret de ce côté là :). De plus, nous avons apporté certaines touches innovantes qui n'étaient pas présentes au niveau des autres solutions. C'est ça innover, innover c'est peut être juste ajouter une touche personelle à un concept déjà existant. Donc, SVP ne vous foutez pas trop la pression avec cette idée d'originalité, d'innovation ou d'invention..

Le plus important, par contre est de trouver LA solution au problème, et avant de trouver cette solution encore faut il comprendre le problème. Oui je dis ça, mais je vous signale que c'est pas évident. La preuve ? l'an passé, pas mal d'équipes étaient passés complètement à côté de la plaque. Et le risque que cela arrive cette année est encore très grand ! Etant donné, que le thème est un peu confus.
Analyons, ce thème un instant :
This year's theme is "Imagine a world where technology helps solve the toughest problems facing us today"
Vous le voulez en plus grand, ou ça ira comme ça ? Les gars, le thème n'est pas une union des différents thèmes des années passées mais bien de trouver une solution aux problèmes actuels.
A ce stade, on ne parle ni de santé, ni d'environment ni rien.. c'est bien ça ? Oui, mais ils sont sympas les gens d'Imagine Cup ils ont quand même donné des indices :
The United Nations has identified some of the hardest challenges in the world today in its Millennium Goals. This year the Imagine Cup uses these ambitious challenges as a guiding light to inspire change all over the world. Learn more about the eight Millennium Goals.

Qu'on s'entende bien, le thème n'est pas les objectifs du millénaire mais bel et bien de trouver une solution aux problèmes actuels qui nous font face. Les objectifs du millénaire, sont là pour vous aider, pour vous guider. Ils sont là pour dire: hey, nous sommes les 8 plus gros foutus problèmes du moment ! Libre à vous, de résoudre l'un des 8 problèmes, ou 2 ou 3 ou TOUS ! Ne vous limitez pas, laissez libre cours à votre imagination !
Vous noterez également, que le but est beaucoup plus de s'occuper des personnes vivant dans des milieux ruraus, pauvres plutôt que les autres personnes. (Je n'en dirai pas plus, mais ceux qui ont développé une solution pour rendre le traitement des dossiers médicaux plus rapide dans un hopital, devraient se poser quelques questions..). Donc, mettez vous ça dans la tête, occupez vous des pauvres !! C'est eux qu'on essaye d'aider là !

Aussi tôt l'idée trouvée, posez vous tout de suite les questions suivantes :

1/ Quels sont les utilisateurs finaux de notre solution ?
La réponse à cette question, vous permettra d'opter pour des choix technologiques/matériels raisonnables et adaptés à la situation. (indices: les habitants d'afrique sub-saharienne ont accès à quoi comme appareils ? Quels réseaux mobiles ont il ? Disposent t'ils d'une connexion haut débit? etc.). Penser à l'utilisateur final, résouts une grosse partie du problème car cela vous aidera à ne fournir la solution la plus adaptée à cet utilisateur en fonction de l'endroit où il se trouve, et des moyens financiers/matériels dont il dispose.

2/ Quel est le modèle économique associé à notre solution ?
Connaitre, votre utilisateur vous aidera également à définir le modèle économique dans lequel votre solution baignera. Oui, modèle économique. Si vous n'avez pas encore pensé à ça, croyez moi c'est le moment de lever le frein à main car vous avez de sérieux problèmes. Je vous rappelle 2secs le but de tout ce cinéma et la situation dans laquelle vous serez confrontés le jour de la finale. Le jour de la finale, vous "compétiteurs" serez en gros une potentielle start-up. Et vous, allez présenter votre projet à des membres du jury qui certes officiellement sont des jury, mais officieusement ils jouent le rôle d'investisseurs ! Vous êtes dans cette situation les gars, start-up / VC. Votre but, convaincre ces investisseurs de vous donner de l'argent pour démarrer votre projet, pour payer les ressources dont vous aurez besoin afin de lancer votre affaire. C'est ça le but de software design ! Alors à votre avis, quel est le but d'une start up ? (réponse: GAGNER DE L'ARGENT !!). Et quel est le but des investisseurs ? (réponse: Faire du bénéfice). Alors, s'il vous plait, expliquez moi comment cela se fait que plus de la moitié des équipes algeriennes ne savent pas du tout quel est le modèle économique de leurs solution? ça a un sens ça ? Les investisseurs, s'en foutent complètement que votre menu principal tourne comme un joli disque grâce à la magie de WPF. Oui c'est bien mais eux ils veulent gagner de l'argent! Prouvez leurs, que votre solution: sera utilisée par un grand nombre de personnes et génerera une quantité astronomique de bénéfices. Si vous leurs prouvez ça, c'est bon vous aurez vos fonds et vous partirez en Egypte !
Donc, s'il vous plait posez vous cette question : Comment vais je générer de l'argent ?.
Je vous donnes quelques réponses possibles (à vous de réfléchir à votre solution, et d'apdater ces quelques indices à votre projet) :

- gratuit mais avec publicité: (liens commerciaux par exemple)
- gratuit mais avec publicité ciblée. (faites attention à la notion de protection de la vie privée cela dit);
- Abonnements journaliers/mensuels/annuels.
- Payement à l'utilisation.
- Achat d'une licence d'utilisation.
- Contrat avec un partenaire industriel tiers.

etc..

Il est bien évident, que votre modèle économique dépendra du support sur lequel votre solution tournera. Est ce que votre solution est une application Desktop ? ou est ce une application SaaS/S+S (ie: tourne sur un navigateur web).

Ah oui, en parlant de navigateur web. Non, n'ayez craintes une solution qui tourne sur un navigateur web n'est pas un site web. (certains confondent sites web et applications web ce qui génère une certaine confusion entre la catégorie web dev et software design). Je pense, qu'on peut commencer à parler d'une application web dés que l'on intègre la notion de dynamicité et de traitement serveur (partie backend). Si c'est le cas de votre solution, adaptez vous au modèle économique qui vous convient le +. (la publicité fais un ravage mais faites vos comptes et cherchez quel type de pub vous convient le mieux, comment vous comptez placer votre pub sur vos pages, quel système de payement etc..).

Vous devez pendant l'étape de conception, pensez à tous les détails possibles. Même les détails les plus obsolètes mais combien importants comme l'installation. (càd, comment est ce que l'utilisateur consommera votre solution via click once? installeur windows ? sur le web ? etc..).

Un autre truc très important, concernant votre solution est la définition de celle ci. Définissez, définissez, définissez le cadre exacte dans lequel opère votre solution. Que fait votre solution exactement et comment ? ne laissez aucune zone floue ! Aucuuuune, walouu, nada, zéro ! (Je reviendrai sur cette partie lorsque je parlerai de la présentation).

Une fois cette étape passée, vous devrez commencer à imaginer physiquement votre solution, concevoir les interfaces graphiques, architecturer votre solution, faire des choix technologiques etc.. Je vous conseille personellement, de réfléchir au thème fort du moment qui est le cloud computing. Vous savez, que Microsoft a sorti l'an passé la plateforme Windows Azure permettant aux développeurs de développer une nouvelle génération de solutions complètement externalisées. (c'est la partie matériel qui est externe et qui hoste vos services). Le but ? Ne pas vous occuper de la partie matérielle, c'est à dire principalement serveurs. Avec toute la maintenance et les couts qui vont avec. Cela dit, le cloud computing aussi a un coût ! Soyez sûrs de peser le pour et le contre de votre choix et sachez argumenter ce choix le jour de la finale !
D'autres technologiques chaudes: Silverlight 2, WPF Ribbon etc.. (je suis fatigué là, mais je compléterai au fur et à mesure cette liste).

Je vous conseille également de suivre la mode des API dans le cas où votre solution est orientée web. Regardez autour de vous et posez vous la question suivante: Qu'est ce qu'ont en commun les applications sociales suivantes ? Flickr, facebook, twitter, mySpace, Youtube.. La chose en commun est justement l'API ! Qui permet aux utilisateurs, de créer de nouvelles applications et de les mettre au service des autres utilisateurs. Ainsi, votre application ne stagne pas mais évolue car les utilisateurs participent eux même à son évolution, en ajoutant du contenu dynamique c'est à dire des applications ! Si vous considérez le développement, d'une API pensez à faire le choix technologique suivant : API REST ou API SOA. Je vous laisse chercher ces termes sur votre moteur de recherche favoris avec l'accélérateur de ie 8 (faut bien s'en servir non ?^^). Personellement, j'aurais choisi une API de type REST, étant donné la facilité de mise en oeuvre et la présence de technologies permettant de le faire facilement (ADO .NET data services par exemple). En gros, REST vous permet d'envoyer des requêtes de type HTTP (GET POST PUT et DELETE) sur l'URI que vous fournirez à vos utilisateurs. Allez ne restez pas là, faites vos recherches :) (note: il est 3h28 du matin, comptez pas sur moi!).

Une fois, que la partie conception est terminée, vous devriez diviser les tâches au sein de votre équipe (2 personnes pour le code, 1 personne pour le design, et 1 personne qui fait un peu tout voir rien de technique mais qui se met au service de l'équipe au besoin: recherche de sponsors, communication, préparation du document de présentation etc.. à vous de gérer votre équipe quoi :P). Concernant, le code réfléchissez bien au design pattern que vous allez utiliser ! (MVC, n-tiers etc..) cela vous aidera à mieux répartir les tâches entre les membres de l'équipe et à être plus ou moins indépendants du designer/codeur.

Optez également, pour un SVN/CVS afin de gérer les versions de vos sources au sein de votre équipe (mon favoris est Tortoise SVN). En effet, il arrivent lors de projets collaboratifs d'écraser la version d'un code écrit par quelqu'un d'autre par inadvertance ou par ignorance :) Il vaudrait mieux éviter ce genre de problèmes.

Voilà, c'est la fin de la 1ère partie qui a porté sur la recherche de l'idée et la définition de l'idée, de son contexte et de son modèle économique.
Cette série d'articles devraient en contenir 3 (la deuxième partie portera sur l'écriture du document que vous enverez avant le 28 février et la troisième partie portera sur la finale et la présentation :)).

D'ici là, méditez bien tout ce que j'ai écrit plus haut et rappelez vous ce sont mes idées et seulement mes idées et ça n'engage que moi pas Microsoft. Je ne supporte aucune équipe, je supporte l'Algérie je veux que vos solutions soient toutes bien réalisées afin de hausser le niveau de la compétiton et que notre pays puisse rivaliser avec le reste du monde !
Stay tuned, la deuxième partie devrait arriver dés demain :).

Pour toutes remarques, questions, insultes (oui ça peut arriver) n'hésitez pas à me mailer.