Techilm

iOS Development, Web & Technology

Débuter Dans Le Développement iOS

Comment débuter dans la programmation iOS ?

Comment débuter dans la programmation ? Plus spécifiquement dans la programmation sur iOS ? Nombreux posent la question, qu’ils aient déjà une expérience dans un autre langage ou non.

Mais il est aujourd’hui très difficile de répondre simplement. Il y a quelques années, débarquer sur un nouveau domaine dans l’informatique se résumait à quelques possibilités :

  • Acheter un (des) livre(s) et le(s) dévorer de A à Z ;
  • S’attaquer directement aux ressources officielles, en particulier à la documentation, pour peu que celle ci soit un minimum élaborée.

Et c’était à peu près tout, en tous cas pour qui voulait se former en autodidacte, nous ne parlons pas ici des environnements de formation universitaires ou professionnels.

Mais aujourd’hui, la situation à bien évolué, voici en vrac, ce que vous pouvez trouver susceptible d’attirer votre attention :

  • Tutoriels ;
  • Screencasts ;
  • iTunes U ;
  • Documentation officielle ;
  • Livres papier et eBooks d’éditeurs traditionnels ;
  • eBooks auto-édités, sous différents formats : ePub, HTML, PDF…
  • Sources d’applications libres.
  • Etc.

Et autant vous dire tout de suite qu’à ces différents vecteurs se multiplient :

  • La langue d’enseignement (dans notre cas nous nous limiterons au Français et à l’Anglais) ;
  • Le niveau réel du formateur, qui apparaitra toujours impressionnant pour le néophyte ;
  • L’approche choisie, dont l’offre est quasiment aussi diversifiée que le nombre d’auteurs.

Toutes ces solutions ne sont pas mutuellement exclusives, bien au contraires, elles sont souvent complémentaires.

Vous l’aurez compris, cela complique énormément la tâche, trop de ressources tuent la ressource, et désormais le problème n’est plus de trouver, mais plutôt de savoir quoi éliminer.

Pire encore : souvent on se lance, dans le feu de l’action sur le première ressource trouvée, et on finit par avoir perdu son temps, avoir des connaissances éronnées et être plein d’ambiguïtés.

Il n’y a pas réellement de solution universelle, car le résultat dépendra de la méthode qui vous convient et que vous ne connaissez probablement même pas. La pédagogie et l’éducation sont des sciences difficiles, et s’auto-évaluer dans ce domaine l’est encore plus. Ce qui a marché pour votre voisin ne marchera pas forcément pour vous.

Cependant, je peux essayer de vous donner des conseils, dans les grandes lignes, et les pièges les plus grossiers à éviter :

La langue

Oubliez de suite le français. C’est une très belle langue, avec des subtilités grammaticales et orthographiques charmantes et une consonance unique par rapport aux autres langues latines, mais ce n’est pas le langage des développeurs. Passez tout de suite à l’anglais, qui est le premier langage de programmation. Pour les plus réticents, vous pourrez peut être vous en sortir sans, rien n’est impossible, mais votre univers restera très limité et il n’est pas impossible qu’un jour vous vous retrouviez bloqué. De plus, dans le cas spécifique de l’Objective-C, la langage est très bavard : Souvent la méthode à elle seule exprimera ce qu’elle fait, sans même besoin de taper dans la doc. Prenons cet exemple bien connu, une méthode d’initialisation de la classe NSBitmapImageRep :

Exemple de méthode tiré de Cocoa
1
2
3
4
5
6
7
8
9
10
11
- (id)initWithBitmapDataPlanes:(unsigned char **)planes
                    pixelsWide:(NSInteger)width
                    pixelsHigh:(NSInteger)height
                 bitsPerSample:(NSInteger)bps
               samplesPerPixel:(NSInteger)spp
                      hasAlpha:(BOOL)alpha
                      isPlanar:(BOOL)isPlanar
                colorSpaceName:(NSString *)colorSpaceName
                  bitmapFormat:(NSBitmapFormat)bitmapFormat
                   bytesPerRow:(NSInteger)rowBytes
                  bitsPerPixel:(NSInteger)pixelBits

Rassurez vous, c’est un exemple extrême, mais dites vous que la convention de nommage vaut pour tous les SDK Objective-C d’Apple : Des méthodes claires, longues et explicites.

Donc passez tout de suite votre Google en langue anglaise, et prenez l’habitude de faire toutes vos recherches dans cette langue. Achetez les versions originales en anglais des livres. Visitez des sites anglophones. Celui où vous êtes actuellement est un hybride, vous pourrez trouver ici des articles en anglais comme en français, afin justement de vous passer ce message. En utilisant des ressources en anglais, vous serez à la pointe, ce qui n’est que rarement le cas sur le contenu français.

Les types de médias

Vous préférez les vidéos ? Les articles succincts ? Les longs tutoriels ? Les cours magistraux d’iTunes U ? Ce sera ici votre choix personnel. Gardez tout de même à l’esprit que :

Les supports audio/vidéo seront excellents pour introduire des notions et présenter des principes généraux en captant votre attention de manière redoutable et agréable ;

Les support écrits entreront généralement plus dans les détails et demanderont plus de concentration et d’effort de mémorisation.

Les auteurs

Renseignez vous sur les auteurs : Compétences, parcours, réalisations connues et éventuellement notoriété (Twitter est un bon indicateur parmi d’autres, mais ne vous y arretez pas, il existe des experts qui ne sont pas forcément publiquement célèbres).

Evitez les collections obscures et douteuses, les titres accrocheurs vous promettants de tout apprendre au meilleur niveau en un minimum de temps.

Il existe de grands classiques qui sont revus, mis à jour et réédités depuis des années, c’est d’une manière générale un gage de qualité. Aucun ne sera cité ici, par souci d’approche objective, et afin de vous laisser faire votre propre cheminement vers ce qu’il faut.

Lisez des extraits. Dans le cas de livres, lisez la préface où l’auteur généralement vous fera part de la méthodologie qu’il utilisera, avant de faire votre choix. Et justement…

La méthodologie

Encore une fois, c’est un domaine individuel. Hélas, vous ne connaissez peut être pas parfaitement ce qu’il vous va : Essayez de vous souvenir de vos différentes expériences d’apprentissage : Il vous est probablement arrivé de comprendre en lisant en détails un chapitre d’un livre ; une autre fois, la documentation aura suffit ; et parfois vous avez eu besoin de demander de l’aide.

Soyons clairs : Pensez vous sincèrement que cela est du uniquement à la difficulté intrisèque du sujet abordé ? Personnellement, je ne le pense pas. Le bagage personnel de chacun, l’état d’esprit actuel et un nombre considérable de paramètres auront leur mot à dire. Ce sera donc du feeling, soyez à l’écoute de vous même, prenez du recul, remettez vous en question, et maitrisez votre apprentissage, ne vous laissez pas dépasser.

Par contre, certaines erreurs connues sont à éviter. Ne vous focalisez pas sur des petits exemples de codes, ou des samples limités. Comment envoyer un mail depuis une application ? Comment faire une animation de rotation ? Comment personnaliser ses UITableViewCell ? Librairies pour parser des flux RSS ? Fonctionnement des UIViewController communs (UINavigationController, UITabBarController, UISplitViewController) ? Ce sont de bons exemples de cas d’utilisation, généralement dans d’excellents tutoriels, mais cela ne suffira pas. Le jour où vous penserez être prêt, vous lancerez Xcode, et vous serez bloqué. Vous ne saurez pas par ou commencer. Vous allez ajouter quelques vues, essayer de faire les traitements de données que vous souhaitez, et vous n’y arriverez pas.

Quelle sera la raison de cet échec ? Vous n’aurez pas vu l’architecture d’une application complète. Vous ne saurez pas comment s’emboîtent les différents composants que vous aurez appris à manipuler. Vous n’aurez aucune idée du fonctionnement des design patterns de Cocoa.

La solution est donc de trouver des cours, sous n’importe quelle forme, et pas forcément une pléthore, où une application est construite de zéro, jusqu’à être totalement fonctionnelle.

Ce n’est pas l’unique solution. Une autre la rejoignant étant de réunir les pré-requis généralement cités.

Les pré-requis

Quelques connaissances et compétences préalables vous aideront à devenir développeur iOS.

Indispensable : Connaitre la programmation de manière générale et l’algorithmique, ainsi que la Programmation Orienté Objet.

L’Objective-C est une surcouche du C. Une connaissance basique du C est indispensable, une bonne maitrise vous aidera beaucoup.

Un Mac. Il vous faut un Mac, original, avec au moins Snow Leopard (10.6) et plutôt Lion (10.7), puis l’IDE fourni par Apple : Xcode. Rendez vous à l’évidence tout de suite, cela vous fera gagner du temps. Oubliez les hackintosh. Oubliez MonoTouch, PhoneGap, Appcelerator etc.. Je ne dis pas que ces solutions sont mauvaises ou inutilisables, mais ceux qui se dirigent vers elles savent pourquoi et le font sans hésiter, et si vous vous posez la question ce n’est vraisemblablement pas le cas.

Quand à faire vos applications sous formes de Web Apps (HTML5,CSS et JavaScript), c’est une possibilité envisageable, mais ceci ne sera pas discuté ici. Gardez simplement à l’esprit que pour l’instant, les web apps sont en qualité et en quantité loin derrière les applications natives d’une manière générale.

Vous aurez remarqué que j’ai abordé les différentes sections exactement dans l’ordre inverse que celui qu’on voit d’habitude. La raison est simple, cet ordre permet de cibler de plus en plus précisément ce qui vous aidera, alors que les pré-requis obligatoires présents en fin d’article vous seront présentés à un moment où à un autre, si vous suivez cet ordre.

N’hésitez pas à poser des questions, apporter des corrections et remarques, ce sera un réel plaisir d’en discuter.

Comments