Débuter avec Swift pour iOS - (1/2) Pourquoi apprendre à développer ?

Débuter avec Swift pour iOS - (1/2) Pourquoi apprendre à développer ?

Comme si je n’étais pas suffisamment dispersé dans mes activités1, j’ai décidé d’en ajouter une à ma panoplie de zappeur. Depuis plusieurs semaines, j’essaie d’apprendre à développer des applications mobiles avec Swift pour iOS. J’en suis au stade où j’ai le sentiment de progresser dans mon apprentissage, fort de mes erreurs, mais aussi des premiers résultats positifs. Il me paraissait intéressant de partager mon expérience de débutant, si vous aussi vous pensez vous lancer.

Avant de passer aux outils, méthodes et astuces pour apprendre, je vous propose dans cette première partie de voir ce qui peut motiver pour apprendre à programmer.

Comment j’en suis arrivé là

Pour être tout à fait honnête, je ne suis pas un total débutant. Ma formation initiale en informatique m’a amené, au début de ma carrière, à faire un peu de développement. C’étaient les prémices de la programmation évènementielle, une nouvelle façon de concevoir les logiciels très éloignée de la programmation linéaire qui était la norme à l’époque. Les plus nostalgiques (ou les plus anciens !) se souviennent certainement de Borland Paradox. J’ai très peu développé, mais je garde en mémoire des moments d’intense exhaltation. Inévitablement, un jour, cela s’est rappelé à moi.

L’inventivité des développeurs d’applications mobiles est tout simplement stupéfiante. En quelques années, des fonctionnalités que l’on rangeait dans la catégorie « science fiction » sont devenues réalité. Les mettre en œuvre est aujourd’hui à la portée de chacun, si l’on fait l’effort d’apprentissage. La richesse de l’écosystème mobile en fait une plateforme aux possibilités infinies. Vouloir explorer ces possibilités, c’est un peu comme entrer dans un nouvel univers. C’est à la fois intrigant et passionnant.

Pourquoi apprendre à développer

Le développement logiciel est généralement perçu comme une compétence professionnelle. Aux deux extrémités des clichés, on imagine le millénial qui développe la future grande idée d’une startup ou bien le développeur chevronné qui code, bit à bit, le micrologiciel de la climatisation de votre voiture. Le fantasme du développeur est plus proche de la première catégorie, l’ultime cliché étant le développeur indépendant qui a eu une idée de génie et qui voit son application truster les premières places du classement de l’AppStore.

Il y a une autre voie. Une autre motivation. Développer peut être un loisir, quelque chose de ludique, une passion.

Développer c’est créer

Le côté créatif du développement est clairement ce qui m’attire le plus. J’ai toujours aimé fabriquer des choses, utiles ou artistiques, aboutir à une chose tangible qui sort de mes mains ou de mon esprit. Le développement d’applications possède ses deux facettes : on fabrique quelque chose avec des outils et des matériaux (le langage de programmation) tout en concrétisant des idées (les fonctionnalités, le design). Au final, le produit peut être beau, à regarder ou à utiliser.

Développer c’est écrire

Si vous aimez écrire, développer devrait vous passionner. Le processus d’écriture est très proche du développement logiciel : vous devez assembler des idées, utiliser une grammaire, une syntaxe pour former quelque chose de compréhensible. Apprendre un langage de programmation c’est comme apprendre une nouvelle langue. La progression est similaire : on commence avec des phrases simples utilisant les mots de base du langage. Petit à petit, on enrichit son vocabulaire et l’on prend plaisir à former des phrases complexes dans un style agréable et efficace. On parle même de développeurs qui écrivent bien, même si leur application fait la même chose qu’une autre écrite dans un style plus rudimentaire.

Être tout simplement devant son clavier, voire les mots se former à l’écran est motivant quand on écrit. On retrouve cette même motivation quand on écrit du code.

Développer c’est inspirant

Si vous avez déjà vu des développeurs, vous avez sans doute remarqué à quel point ils étaient immergés dans leur activité. Une attitude qui a injustement donné leur réputation d’asocial aux développeurs. En réalité, c’est un autre phénomène qui entre en jeu ici : la notion de flow telle que l’a décrite pour la première fois Mihaly Csikszentmihalyi dans son formidable livre Vivre, la psychologie du bonheur. Le flow est un état de fluidité mental que l’on atteint en faisant des activités qui occupent tout notre esprit. On perd généralement la notion du temps et l’on est dans une intense concentration. Mihaly Csikszentmihalyi avance que la succession de ces expériences est une des sources de l’équilibre et du bonheur. J’adhère à cette idée.

Chacun a pu vivre ces moments et en ressortir revigoré, plein d’énergie positive et de satisfaction d’avoir fait quelque chose d’enrichissant pour soi-même. Pour ma part, c’est le souvenir que j’ai de mes longues séances de développement.

Développer c’est ludique

Quand on développe on est souvent à la recherche d’une énigme. Parfois, cette énigme est de trouver la solution pour implémenter une idée. C’est un jeu de piste et d’exploration souvent amusant. Il faut bien l’avouer, la plupart du temps l’énigme consiste à rechercher pourquoi ça ne fonctionne pas. Assez paradoxalement, cette recherche de solutions à ses propres bugs est aussi ludique que la partie créative.

Je n’ai pas suffisamment de référence de gamer pour en parler longuement moi-même, mais les développeurs rapprochent souvent les deux activités : développer c’est comme jouer aux jeux vidéos. Être immergé dans son activité, trouver des solutions, interagir avec l’écran, arriver au bout d’une quête. Ce n’est d’ailleurs peut-être pas un hasard si développeurs et gamers sont souvent les mêmes personnes.

Développer c’est apprendre

Évidemment. On commence par apprendre un nouveau langage. Au-delà du langage, on apprend surtout de nouveaux concepts. Les débutants en Swift savent de quoi je parle si j’avance le mot « closure ». Si l’on aime apprendre et découvrir, on est servis. Chaque jour est une nouvelle découverte.

Développer permet aussi de mieux comprendre comment fonctionne les applications que l’on utilise. Si vous êtes curieux, apprendre un langage, c’est comme soulever le capot d’une voiture.

Développer c’est s’ouvrir de nouveaux horizons

En arrivant au terme de cette liste de motifs, on pourrait croire que l’on peut développer juste pour la beauté du geste. Si cela peut être motivant pour débuter, il faut rapidement y trouver un objectif plus concret. C’est un conseil largement partagé : la pratique est le seul moyen de progresser. Il est indispensable de se fixer des objectifs pour mettre en œuvre ce que l’on apprend.

Fixer ces objectifs, c’est aussi s’ouvrir de nouveaux horizons. Vous avez peut-être une idée d’application à développer. C’est peut-être juste un utilitaire pour votre propre besoin. C’est peut-être quelque chose de plus ambitieux, mais il faut bien commencer par les bases.

Vous avez peut-être envie de commencer une nouvelle carrière. Certes, apprendre seul en quelques mois ne fera pas de vous un développeur professionnel, mais cela vous permettra de mieux comprendre le métier. Savoir si cela vous plait vraiment et si vous devez aller plus loin.

Pourquoi développer en Swift pour iOS

Si je me suis tourné vers Swift, c’est simplement par logique personnelle, l’écosystème que j’utilise étant celui d’Apple. C’est simplement ma préférence personnelle. Les motivations pour apprendre à développer s’appliquent naturellement à tout type de langage et toute plateforme.

Dans mon cas, Swift présente l’intérêt d’être un langage relativement répandu (du moins dans le monde Apple). C’est le gage de pouvoir trouver facilement de l’aide pour apprendre. La richesse des possibilités offertes par la bibliothèque de composants d’Apple permet d’imaginer toutes sortes d’applications : des utilitaires, des jeux, manipuler de l’audio ou de la vidéo, de la réalité augmentée, la géolocalisation, etc. Les possibilités sont immenses. Je sais que je ne serai jamais limité par le framework.

Les limites sont simplement celles de mes compétences en développement. Et ça, c’est le moteur n° 1 pour apprendre encore et encore pour enfin matérialiser mes idées.

Dans la deuxième partie, je partagerai les ressources que j’utilise pour apprendre et les quelques leçons que j’ai apprises de mes premiers essais.

  1. Fred, tu ferais mieux de te tenir à un rythme régulier sur tes articles de blog, ta newsletter et ton podcast. Et aussi traiter tes street-photo qui dorment par centaines sur ton disque dur.