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.

My first blogpost with IE 8 !




As you may guess, I just installed on my computer the new version of Internet Explorer (IE8) which is available in its release candidate version!

You can, donwload it too here. It works perfeclty, for the moment. I specially loved the accelerators that help you to do a research, to send an email or to translate a word much more faster than with any other navigator !

For example, if I am reading this blog post and I need to do a research let say for the word : "accelerators", I just have to select the word "accelerators", right click on it and select my favourite search engine. Easy and fast !!!















Another thing funny, that you really have to try if you need sometimes to translate a text is an accelerator that allows you to preview the translation without leaving the page you are working on, here is an example:













Amazing, right ? I am really, looking forward to moving from FF 3.0 to IE 8. I'll make additional tests and I'll take my decision :)
I encourage you, to consider it too :). Cuz, dude IE8 is sooo coool :).

Download it here.