jeudi 20 septembre 2012

Concours de Programmation (Programming Competition)

Les concours de programmation (Hacking ou Programming Contest) sont des compétitions créés autour de la programmation des ordinateurs, des algorithmes, des structures ou des traitements de données.

Les candidats (hackers, competitors, coders) participent à ces concours pour différentes raisons mais tout le monde s'accorde à dire que le principal apport de ces activités consiste en l'apprentissage et la maîtrise de la programmation informatique. Cette forme d'activité présente un double aspect, à savoir, le côté éducatif et le côté professionnel: elle permet de faire valider, au niveau international et en toute transparence, ses compétences en programmation informatique.

Parmi les retombées positives de la participation à ces activités, on peut notamment citer :

  • La communauté : les plateformes permettent d'échanger, communiquer avec tous les programmeurs du monde entier- dont les meilleurs mondiaux ou ceux travaillant pour les plus grandes entreprises. 
  • Les opportunités professionnelles : la validation de la compétence au niveau de ces concours permet à ses participants de faire valoir leurs réussites- qui peuvent être confirmées publiquement et en toute transparence au niveau des plateformes- dans leurs activités professionnelles : recrutement, justification de compétences pour les clients. 
  • Les ressources : l'accès aux différentes plateformes dotent les participants d'une source de documentation importante et exclusives à la communauté. 
  • Les récompenses : l'attribution des récompenses pourrait représenter le meilleur attrait pour ce genre d'activité. La portée et l'ouverture mondiale des compétitions peuvent néanmoins décourager les moins téméraires: beaucoup de candidats mais très peu d'élus
Sur le plan pratique, les concours de programmation sont généralement ouverts, disponible en ligne et acceptent un grand nombre de language de programmation. Je vous présente ici quelques unes de ces plateformes (celles auxquelles je participe) : 


TopCoder est la plus grande communauté de professionnel du web du monde entier. Elle est d'ailleurs la meilleure implémentation du concept "Open Innovation",où l'innovation est mise en valeur par le mode de compétition. Les concours organisés sur cette plateforme concernent tous les aspects de l'ingénierie web et pour la programmation, il expose principalement deux types de concouts : les SRM (Single Round Match)- concours de courte durée (75 min)- et les MM (Marathon Match), des concours plus élaborés portés sur l'analyse de données, la programmation, l'intelligence artificielle ou encore les Learning Machines. 

CodeChef est une plateforme installée en Inde et propose mensuellement deux types de concours : les Long Contest (10jours)- généralement du premier au dix du mois- et les Short Contest (Cook-Off, 2h30min), vers la troisième semaine. 
Les problèmes ne sont pas classées ni notés selon leurs difficultés, contrairement à la pratique générale des autres plateformes. 

CodeForces, disponible en version anglaise et russe, représente en quelque sorte la mise en oeuvre du modèle Programming Competition par la très grande et impressionnante communauté russe en matière de programmation informatique. Elle organise régulièrement des compétitions de courte durée (2h). 

InterviewStreet est une startup d'origine indienne, propulsée par YCombinator, qui propose une plateforme pour mettre en relation les programmeurs et les recruteurs (Startups, compagnies informatiques) en mettant en oeuvre des concours de programmation réguliers destinés à évaluer les codeurs. Elle met à la disposition permanente des codeurs une série de Challenges pour des solutions élaborées, et organise des CodeSprint (2h-1j) selon les besoins précis des recruteurs. 

HackerRank est un autre produit de InterviewStreet, et diffère de ce dernier par le fait qu'elle accorde une importance particulière à la compétition entre programmeurs. Il s'agit de problèmes de programmation aucours desquels chaque programmeur-ou plus précisémment, ses codes-est amené à affronter les travaux des autres programmeurs. 


SPOJ présente la plateforme qui supporte le plus nombre de language de programmation, et se distingue par le nombre important de problèmes disponibles : Classics, pour les problèmes à résultats précis, Challenges qui requierent des solutions plus élaborées, ainsi que des Tutoriaux particulièrement éducatifs. 

ProjectEuler est une plateforme de programmation qui met un accent particulier aux connaissances mathémathiques. Il souffre néanmoins d'un principal handicap dans la mesure où les candidats n'ont pas l'obligation de présenter ou tester leurs codes. 

Google Code Jam (GCJ) est une compétition annuelle organisée par Google sous la forme d'un concours de courte durée (2h-5h), en plusieurs étapes en ligne et dont la phase Finale se déroule pendant un évènement réel. 

Facebook HackerCup est organisé annuellement par Facebook, sur le même modèle et le même fonctionnement que Google Code Jam. 

Les plateformes proposent généralement un modèle de classement et de notation des codeurs- ainsi que des classements individuels, par équipe ou par pays. Madagascar est assez faiblement représenté au niveau de ces plateformes.

J'ai rédigé cet article essentiellement pour inciter, informer les développeurs de Madagascar quant à la nécessité de mettre en valeur et en commun, des talents et compétences qui ne sont pas des moindres. N'hésitez pas à partager, commenter si la participation à ces compétitions vous intéresse.
Bonne lecture à toutes et à tous ! 

vendredi 14 septembre 2012

Rakotoniaina Onjanirina

Bienvenue,

Je suis Rakotoniaina Onjanirina, concepteur et développeur d'applications web, installé à Madagascar.
Ce blog publiera des articles sur mes activités personnelles et professionnelles, notamment sur la conception et la programmation web, les languages et algorithmes, les concours de programmation (hacking contest/competition), les plateformes, réseaux et jeux sociaux ainsi que sur les produits Google (Google Apps, AppEngine, Google Chrome).

Designer et Développeur (Developer) web
Je propose un service de Conception/Développement/Production d'applications web.
Mes services incluent, non seulement les travaux relatifs à la mise en oeuvre d'un projet web, mais aussi une offre complète qui a pour objet d'assister le client dans sa démarche web à travers la gestion d'un domaine sous Google Apps : nom de domaine, mails ainsi que les autres produits associés (Agenda, Gestion des contacts, Documents et fichiers en ligne, Sites Intranet).
Pour découvrir mes services, visitez http://www.onjanirina.pro/

Hacker, Programming Competition
La programmation est à la base de tout le web. La mise en oeuvre de n'importe quel concept ne saurait y échapper. Plus particulièrement dans un environnement où la quantité des données est sans cesse grandissante et la complexité des systèmes croissante. La programmation constitue à la fois, pour moi personnellement, une passion et un avantage que je mets à la disposition de mes clients dans mes prestations.
La participation régulière à des concours de programmation (Hacking Competition) représente autant une occasion d'améliorer quotidiennement mes capacités qu'un moyen pour se tenir informé des dernières évolutions en la matière. Je suis actuellement classé au sein des plateformes suivantes :

Réseaux et Jeux sociaux, Open source
Passioné des jeux et réseaux sociaux, et adeptes des principes et philosophies Open Source, j'entretien des projets personnels Open Source autour des jeux sociaux, notamment des applications Facebook et des extensions Google Chrome.
Je partage avec d'autres passionnés d'informatique un espace de collaboration en ligne destiné à acceuillir toutes sortes de projets informatiques.
Ce service est basé sur Redmine, une solution Open Source de gestion de projet et fournit à ses utilisateurs tous les modules standards nécéssaires à la conduite d'un projet collaboratif, privé ou public (Issue Tracker, Gantt, Documents, Wiki, Forums).
Pour créer et installer un projet sur ce site, veuillez me contacter directement à travers mes profils web ou mails.

Labs : http://labs.onjanirina.pro/
Codes Sources : http://git.onjanirina.pro/

Intégration, Plateformes, API
L'intégration constitue une des avancées majeures des technologies liées au web de ces dernières années. Mes intérêts dans ce domaine concerne les principales plateformes telles que Facebook, Google+, ainsi que d'autres formes d'intégration telles que les APIs, OpenID, etc.

En attendant mes premiers articles, je vous souhaite déjà une bonne lecture à travers ce blog !