jeudi 30 octobre 2014

Développement Android: certaines choses que vous devriez savoir avant de débuter Part 1


Ha! Android, ce système d'exploitation à la mode dont on entend parler partout et qui fait fantasmer les jeunes développeurs du Sénégal et d'ailleurs. Nombreux sont ceux qui veulent se lancer, nombreux sont ceux qui hésitent encore et très nombreux sont ceux qui se lancent qui se cassent la gueule et abandonnent ;) Et bien sûr il y a ceux qui se lancent se cassent la gueule mais persévèrent et qui finissent par devenir des DÉVELOPPEURS ANDROID. Mais alors pourquoi mon ami Babacar arrive t-il a bien maîtriser le développement Android alors que moi depuis que j'essai j'ai du mal à avancer?

D'abord la vérité
Cela fait un peu plus d'un an que j'ai commencé le développement d'applications sur Android je dois avouer qu'au début c'était galère. Je me suis lancé avec l'intention d'avoir une bonne maîtrise de la chose au bout d'un mois finalement l'apprentissage de base a duré trois mois et je vous mentirais si je vous disais qu'à ce jour j'ai cessé d'apprendre.
Triste constat fait au Sénégal nombreux sont ceux qui prétendent être intéressés par le développement Android mais très peu nombreux sont ceux qui développent réellement sous Android. Résultat, trouver un vrai développeur Android au Sénégal n'est pas facile d'ailleurs vous pouvez simplement commencer par compter les applications d'origine Sénégalaise sur Google Play et vous verrez.

Les mythes et idées reçues
Les gens ont souvent des idées arrêtées sur Android avant même de  se lancer dans le développement d'applications. Nombreuses de ces idées sont fausses et il vaut mieux ne pas se lancer avec ces idées en tête pour ne pas être surpris. Voici quelques unes des ces idées qui reviennent souvent:
  • Android c'est JAVA: Je l'ai entendu plus d'une fois celle là. Que ce soit clair Android n'est pas un langage de programmation mais plutôt un système d'exploitation pour smartphones et tablettes à la base. Il est utilisé aujourd'hui sur des voitures, des TV et des objets connectés. Il est vrai que Android utilise JAVA dans toute sa puissance mais lorsque vous apprenez à développer sur Android on considère que vous maîtriser parfaitement votre JAVA et on vous apprend de nouveaux concepts qui sont propres au mobile. Ensuite ce sont ces concepts que vous implémentez en JAVA.
  • Android c'est Linux"Android is built on the Linux kernel, but Android is not Linux" cherchez le pdf "anatomy physiology of an android runtime walkthrough" de Google si vous ne me croyez pas.
  • Créer des applications Cross-plateform fait de vous un développeur Android: Je suis désolé mais ce n'est pas vrai et je suis sûr que tous les développeurs Android qui liront cet article conviendront avec moi. Conventionnellement les applications Android sont créees avec le SDK Android ce qui vous permet de créer vos applications en JAVA. À coté il y a le NDK qui vous permet de créer vos applications en C++. Les deux sont fournis par Google. Par contre les outils cross-plateforme sont des solutions vous permettant de créer des apps qui tournerons sur toutes les plateformes (Android, iOs, Windows Phone) mais cela n'en fait pas des apps natives de ces plateformes. N'allez donc pas dire que vous êtes développeur Android si vous créez vos applications avec Apache Cordova (ex PhoneGap). Pourquoi? Simplement parce que pour Android et même pour les autres, les applications doivent respecter certaines règles qu'on appellent communément les guidelines. Ces guidelines vous indiquent les designs patterns et les UI patterns propres à Android. En d'autres termes Google vous indique comment est ce que vous devriez créer votre application quels sont les briques de base de votre application, comment les disposer et aussi quel éléments graphiques utiliser dans tel ou tel contexte. Les applications cross-plateforme ne vous permettent pas de respecter les guidelines. J'irais même plus loin en disant que si vous faites ça alors vous ne savez presque rien  à Android :'(
Ce qu'il est important de savoir
En plus des idées reçues, il y a des choses que vous ignorer mais qui sont très importantes à savoir avant même de commencer à apprendre afin d'éviter quelques incompréhensions
  • Vous développez pour mobile par pour ordinateur: et oui! gardez bien en tête que vous ne faites plus du Web ni du Desktop, les choses vont devoir changer un peu. Les smartphones sont peut être aujourd'hui très puissants, mais on ne doit pas oublier qu'à l'origine les téléphones portables n'étaient que des systèmes embarqués comme les autres et il continue de l'être. Cela veut dire que les smartphones sont soumis au même contraintes que les systèmes embarqués (contraintes d'énergie, de mémoire, de temps réel etc...). Vous devez donc tenir compte des ces contraintes dans vos développements, vous devez garder à l'esprit la consommation de la batterie, la consommation de la mémoire et le temps de réponse de vos applications qui doit être le plus  court possible. Cela vous permettra de mieux comprendre certains concepts lors de votre apprentissage.
La passion: l'ingrédient secret pour être un vrai DÉVELOPPEUR ANDROID

Cela va vous paraître un peu cliché mais je vais quand même vous le dire et vous allez comprendre pourquoi. Vous ne serez jamais un développeur Android digne de ce nom si vous n'êtes pas un passionné. Attention ici je ne vous parle pas d'être un passionné de technologie mais plutot d'être passionné par Android. Je vais déjà commencer par dire que si vous avez le choix et que vous préférez de loin achetez   l'iPhone 6 plutôt que le Nexus 6 alors il serait peut être mieux pour vous de faire du développement iOs au lieu de faire du développement Android. Vous comprenez? Non? Ce que je veux dire c'est qu'un développeur Android est avant tout un irréversible amoureux de la plateforme Android et de tout ce qui va avec. Il connait l'histoire d'Android, il est capable de citer toutes les versions d'Android de Cupkake ( version 1.5) à Lollipop (version 5.0) en passant par Froyo (version 2.2) et les autres. Il est informé des dernières nouveautés dans le monde Android  et c'est  comme ça qu'il sait par exemple qu’à partir de la version 4.4 la nouvelle machine virtuelle d'Android nommée ART a été proposé en remplacement de l'ancienne nommée Dalvik. Bon ok je m'égare un peu mais vous avez saisi l'idée.




Il ne suffit pas de pas de savoir écrire du code ça tout le monde peut le faire, mais connaitre la plateforme comme si elle était faite pour vous, en parler avec une lueur dans les yeux, la défendre de toutes vos forces au point d'égorger le premier qui osera la profaner ça ce n'est pas tout le monde qui peut le faire (Bon OK vous pouvez oublier la partie égorgement 3:) ).

Mon conseil le plus capital pour ceux qui débutent c'est de s'informer. Consulter les sites dédiés à Android comme phonadroid.comfrandroid.com, ou androidcentral.com (en Anglais). Likez leur pages sur Facebook, suivez les sur Google+ et Twitter. En plus suivez les bonnes personnes, si vous faites une bonne petite recherche sur Android dans le milieu francophone, vous tomberez à coup sûr sur certains noms célèbres comme Cyril Mottier et beh suivez le sur Google Plus ou sur Twitter et faites en de même avec les autres. Abonnez vous à des chaînes Youtube qui parlent d'Android du genre Android Central (In English of corse) etc.

Euh... et au Sénégal?
Croyez moi au pays de la Téranga aussi on trouve d'excellents développeurs Android. Ils ne sont peut être pas très nombreux mais ils sont excellents. Je ne vais pas les citer dans cet article mais je vais vous demander de vous abonner au Google Developer Group de Dakar sur Google plus et de garder un oeil sur son blog. Ah oui j'allais oublier la page meetup de Mobile Innovation Dakar. De cette manière, vous saurez quels sont les personnes les plus actives dans le domaine Android à Dakar et de la même manière vous restez informé de tous les événements, événements aux quels je vous conseille vivement de participer.

Voilà! ce fut long mais ainsi se termine cette première partie des choses à savoir avant de se lancer. Dans la partie 2 nous parlerons code ;) , des concepts qui peuvent déranger. Je vous parlerais de quelques outils cool et je vous fournirais un nombre (in)calculables de liens qui vous sauveront la vie dans votre quotidien de développeur Android. Stay tuned guys!