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.