Débuter avec Swift pour iOS - (2/2) Quelle méthode pour apprendre ?

Débuter avec Swift pour iOS - (2/2) Quelle méthode pour apprendre ?

Après un premier article qui tentait de vous convaincre que programmer est une activité amusante et passionnante, allons maintenant au coeur du sujet. Comment réellement apprendre Swift ? Quels sont les meilleurs cours ? Quels types de cours ? Comment vraiment progresser ?

La première difficulté quand on débute en développement – et ce n’est pas spécifique à Swift – est de se trouver confronté à une quantité pléthorique de supports pour apprendre. Faire le bon choix parmi tous ces contenus est donc le défi numéro un. Je suis passé par là, et j’ai mis quelque temps avant de trouver les supports qui me conviennent et surtout ceux qui me permettaient de progresser réellement.

Une des clés pour progresser est d’avoir un bon équilibre entre théorie et pratique. Oui, la théorie est absolument nécessaire. Vous trouverez beaucoup de tutos qui vous permettent de développer rapidement des applications. On suit les étapes pas à pas et l’on aboutit à un résultat incroyable en quelques heures. La difficulté arrive lorsque vous allez vouloir faire vos propres développements. On ne peut pas se contenter de copier-coller des bouts de code pour faire ses propres projets. Très vite, vous allez atteindre des limites qui sont liées à la compréhension de ce que vous faites réellement, non seulement des instructions en elles-mêmes, mais aussi des concepts de base indispensable. Tôt ou tard, ils vont vous manquer pour avancer. Il faut être capable d’adapter ce que l’on a appris pour ses propres besoins.

On peut se dire qu’on trouve toujours des réponses à ses problématiques sur Stackoverflow. C’est une source indispensable pour trouver des solutions et des bouts de code faits par des développeurs plus expérimentés. Il est conseillé de s’inspirer des autres, de copier du code, d’en réutiliser, mais si on ne comprend pas ce qui se passe, il sera très difficile d’adapter, de corriger ses erreurs et d’optimiser son code. Viendra alors la frustration de ne pas réellement avancer. Comme je le disais dans la première partie, programmer doit être amusant. C’est un processus créatif et c’est pour cela que c’est passionnant. Sans plaisir, pas de progression.

Les cours

Le moment est venu de parler des ressources. Les cours sont la première source pour apprendre. S’il est bien structuré, un cours permet d’avoir une progression maîtrisée de l’apprentissage tout en couvrant le maximum de concepts. Je vous en propose trois, avec des approches différentes. À vous de voir celui qui vous convient le mieux. Rien n’interdit d’ailleurs de commencer avec un cours et de l’abandonner s’il ne vous convient pas. C’est ce que j’ai fait.

iOS 13 &Swift 5 – Angela Yu – Udemy

Si vous faites sur recherche de cours sur Swift iOS, vous allez très vite tomber sur les cours d’Angela Yu sur la plateforme Udemy. La popularité de son cours iOS 13 & Swift 5 – The Complete iOS App Development Bootcamp est absolument incroyable. Près de 200 000 participants ! C’est le cours par lequel j’ai commencé. Angela est une formidable pédagogue, la progression est bien calibrée, ses explications sont claires. Les applications que l’on construit ensemble sont intéressantes, jolies et couvrent une grande partie des API Apple. Évidemment le cours est en anglais, mais il reste relativement simple à suivre. Le cours est monumental : 573 vidéos réparties en 36 sections, soit près de 60 heures de vidéo (et au moins 4 fois plus de temps pour les visionner).

La plateforme Udemy est agréable à utiliser. Il y a même une App qui m’a permis d’utiliser l’iPad pour visualiser les vidéos en utilisant le Mac pour développer en même temps. Toutes les ressources sont disponibles pour avancer et chaque leçon a son propre fil de discussion qui permet d’échanger avec les autres élèves en cas de problème de compréhension ou de mise en application.

J’en suis à la session 204 et j’ai déjà appris beaucoup de choses. En réalité, j’en suis à cette leçon depuis plusieurs semaines, car j’ai basculé sur un autre cours, laissant celui-ci de côté pour le moment.

Effectivement, la critique que l’on pourrait faire au cours d’Angela est d’être construit sur la forme de tuto : on fait en même temps qu’Angela. Il y a bien quelques vidéos « Deep Dive » de temps en temps, qui s’attardent sur des concepts théoriques au fil de l’apprentissage, mais pas de cours théorique structuré. Il manque surtout, à mon goût, de véritables exercices pratiques à effectuer seuls. Il y a des challenges au fil des vidéos pour compléter le code que l’on est en train de construire, mais arrivé à la session 200, Angela ne nous a toujours pas laissés construire une App de A à Z avec les concepts appris. La conséquence est qu’il est difficile de mesurer ses progrès, de savoir réellement ce que l’on a acquis et surtout sa capacité à faire soi-même.

Pour cette raison, ce n’est peut-être pas le cours que je conseillerais pour commencer. Par contre, je vais y revenir pour compléter mon apprentissage et certainement découvrir de nouvelles choses tout en ayant acquis l’assurance et l’autonomie.

Pour finir, à noter que le cours est payant comme la plupart sur le site Udemy. Ne l’achetez pas au prix fort (129,99€). Je n’ai pas très bien compris comment fonctionne la tarification Udemy, mais ils font régulièrement de fortes « promotions » sur leurs tarifs. Si vous créez un compte, je pense que vous allez bénéficier d’emblée de ces tarifs « préférentiels ». Il est affiché à 14,99€ en ce moment, ce qui me semble un prix raisonnable au regard de la qualité et de la quantité de contenu offert.

100 Days of Swift – Hacking with Swift

Cette assurance et cette autonomie, je pense qu’il est plus facile de l’acquérir avec les cours de Paul Hudson et plus particulièrement celui qui est destiné aux débutants : 100 Days of Swift. J’étais déjà bien avancé dans le cours d’Angela Yu lorsque j’ai découvert le site Hacking with Swift. Le principe est simple : 100 courtes leçons qui ont pour objectif de passer 1 heure par jour pendant 100 jours avec Swift. Ces leçons sont un mélange de cours, de vidéos, de lectures, de quizz et surtout d’écriture de code.

Les 12 premiers jours sont consacrés à l’acquisition des concepts de base sous la forme de courtes vidéos suivies de tests. C’est progressif, bien fait et les tests permettent de vérifier qu’on a bien compris. Je vous conseille de télécharger l’App iOS gratuite Unwrap qui couvre ces 12 premiers jours. En plus des cours, elle propose des challenges, des quizz et des tests qui permettent d’apprendre de façon ludique tout au long de la journée dès que vous avez un moment. Les 12 premiers jours m’ont permis d’apprendre beaucoup plus et de façon bien plus structurée que le cours d’Angela.

La totalité du cours est basée sur ce concept d’apprentissage suivi de révision et de mise en pratique. Ainsi, après les 12 premiers jours, comme c’est le cas après chaque bloc d’apprentissage, il y a trois jours de révision et consolidation. On commence réellement à programmer à partir du jour 16 avec trois projets très simples. Les leçons sont sous forme de vidéos accompagnées de la transcription complète, code compris. À la fin de chaque projet, un challenge est donné. Ces challenges ne sont jamais corrigés (juste quelques indices pour aider), car Paul insiste sur le fait que l’apprentissage doit être fait par soi-même. À chacun de chercher parmi ce que l’on a appris ou sur d’autres ressources. En dernier recours, si vous êtes vraiment bloqué sur un challenge vous pouvez trouver sur GitHub des développeurs qui ont mis à dispositions leurs solutions à l’ensemble des challenges. J’y ai recours en général pour voir d’autres façons de faire, mais aussi lorsque j’ai séché sur certains points. Ces nombreux challenges progressifs à faire en toute autonomie tout en étant progressifs sont vraiment la clé de la progression.

Je suis au jour 35 actuellement et j’ai réellement pris beaucoup d’assurance. Je comprends comment sont construites les instructions, car Paul fait toujours le rapprochement entre ce que nous faisons dans les tutos et la théorie. Je suis capable de faire une App simple de A à Z ce que je n’avais même pas osé tenter avec le cours d’Angela Yu, ne sachant pas trop si j’en étais capable et par quel bout commencer. J’y prends surtout beaucoup de plaisir.

C’est évidemment le cours que je vous conseille pour commencer, apprendre vite et bien. Et en plus, tout cela est gratuit. C’est d’ailleurs le cas pour la plupart des contenus de Hacking with Swift, les contenus payants étant les livres et les cours avancés. Cela ne me concerne pas pour le moment.

Stanford University – Developing Applications for iOS using SwiftUI

Les universités américaines proposent de nombreux cours en ligne. Ce sont des enregistrements de ceux donnés à leurs étudiants. Ils ne se contentent pas de mettre les vidéos en ligne, toutes les ressources pour suivre les cours sont également disponibles, permettant à chacun de suivre le même cursus que les étudiants. L’université de Stanford propose donc ce cours dédié au développement d’applications iOS. Je n’ai pas encore regardé celui-ci, mais j’avais par le passé commencé quelques leçons de Java de la Stanford University. J’avais apprécié la très grande qualité des enseignements.

Si vous préférez un enseignement guidé qui vous rappelle vos études, c’est une excellente option. Par contre, ces cours demandent un investissement personnel important. Le travail à faire en dehors des cours (apprentissages, travaux pratiques) représente une masse de travail non négligeable. C’est un excellent moyen pour apprendre. À l’inverse, en tant qu’élève à distance et isolé, vous n’aurez pas de camarades de classe pour vous aider. C’est l’école de la débrouille.

Pour ma part, je pense regarder ce cours lorsque j’aurai terminé les deux autres, pour consolider mes acquis et vérifier que je progresse. À noter également que ce cours est construit autour du framework SwiftUI. J’en parle un peu plus loin. Et c’est gratuit.

Autres ressources

Ces cours ne seront pas les seules ressources dont vous aurez besoin. Je vous livre en vrac quelques liens que j’utilise en complément :

  • Les documentations officielles du langage Swift (swift.org) et des frameworks Apple. Le site Developper d’Apple propose aussi de nombreuses autres ressources pas toujours évidentes à trouver au premier abord.
  • Stackoverflow évidemment
  • Le sub Reddit r/swift
  • Je ne recommande pas d’utiliser YouTube pour apprendre. Vous n’y trouverez que des petits bouts d’apprentissage, très peu de choses structurées. Par contre, pour des sujets précis, on trouve évidemment d’excellentes ressources, par exemple sur la chaîne de Sean Allen.
  • De nombreux blogs de développeurs proposent des articles pour les débutants. Swift by Sundell en est un bon exemple.

Mon expérience

UIKit ou SwiftUI

C’est certainement la première question que vous allez vous poser avant de commencer. Jusqu’ici, la maturité de SwiftUI rendait les développeurs frileux pour le conseiller comme première approche pour les débutants. Les dernières versions ont tellement évolué qu’il est maintenant en première ligne. Un exemple. Alors que Hacking with Swift proposait de commencer par 100 Days of Swift (UIKit) il y a encore deux mois lorsque j’ai commencé, il propose aujourd’hui dans sa page Start Here de commencer par le cours 100 Days of SwiftUI. Je continue de penser qu’il est préférable de commencer par UIKit lorsqu’on est un débutant, pour se plonger dans le code encore majoritairement utilisé pour développer. Dans un deuxième temps, il est certain que je déroulerai les 100 Days of SwiftUI.

Quelques conseils

Ayant dépassé maintenant les premiers mois d’apprentissage, je mesure mieux les écueils. Voici quelques conseils.

Le développement d’App est quelque chose de complexe, en tout cas plus complexe que je ne l’imaginais. N’imaginez pas faire votre première App avant le premier mois d’apprentissage. Cela peut être frustrant, mais voyez cela comme un indicateur de votre motivation.

Cela signifie également qu’il faut consacrer du temps à l’apprentissage. Ce temps il se mesure plus en régularité qu’en nombre d’heures par séances. Passer ne serait-ce que 30 minutes chaque jour est selon moi plus bénéfique qu’une session de 5h tous les dimanches. Cela vous permet de rester en contact avec le code et d’entretenir les acquis. C’est aussi pour cette raison que j’apprécie les 100 Days of Swift. Un peu chaque jour.

Enfin, si je ne devais donner qu’un conseil, c’est celui-ci : privilégiez un apprentissage qui vous met en situation d’écrire votre propre code assez vite, régulièrement et sans aide. Ce n’est que par les essais et les erreurs que vous apprendrez. Vous essaierez de comprendre, vous trouverez les solutions, vous progresserez.

Bien sûr, apprendre peut être intéressant par le simple plaisir de la découverte. Cela risque de s’émousser devant les difficultés. Le meilleur moyen de l’éviter est d’avoir un objectif en tête. Identifiez une idée d’App que vous aimeriez développer, même si c’est une idée qui existe déjà. Dès que vous vous sentez à l’aise, commencez à la développer, par petits morceaux. C’est la clé de la motivation.