Au cours des derniers mois, j'ai appris à écrire des applications iOS en Objective-C, et je commence enfin à mettre de l'ordre dans mes idées. C'était bien plus difficile que je ne l'imaginais et cela a pris beaucoup trop de temps.
Je rencontrais souvent des difficultés et je me sentais frustré, et corriger les bugs prenait bien plus de temps que l'écriture réelle du code. Mais il y a une sensation incroyable à jouer avec une application sur mon téléphone que j'ai créée de toutes pièces.
J'ai beaucoup appris de cette façon, non seulement sur le développement d'applications iOS, mais aussi sur la programmation en général. J'ai aussi rencontré certains problèmes que j'aurais peut-être évités si j'avais appris Objective-C différemment.
Avec le recul, si je devais apprendre la programmation aujourd'hui, je ferais certaines choses différemment.

Trouvez un partenaire de programmation
J'ai aussi trouvé une méthode d'apprentissage qui fonctionne : avoir une personne réelle, vivante, à qui parler.
Mon cofondateur Josh, qui fait principalement du développement Python, a en fait appris Objective-C à mes côtés et a répondu à beaucoup de mes questions sur la théorie de la programmation (« Comment faire fonctionner à nouveau une instruction if ? »), et m'a aidé à déboguer quand j'étais vraiment bloqué.
Avoir un partenaire de programmation extrêmement patient qui pouvait expliquer les principes de base de la programmation a été d'une aide énorme. Josh m'a souvent aidé à réfléchir à l'essentiel de la logique de résolution d'un problème avant que je ne travaille sur les détails spécifiques en Objective-C.
Faites bon usage des ressources
Si vous n'avez pas la chance d'avoir un programmeur patient à proximité pour répondre à vos questions, il existe d'autres endroits où vous pouvez obtenir de l'aide de vraies personnes :
Pour les questions sur une syntaxe ou une implémentation spécifiques, Stack Overflow est l'un des sites que je consulte le plus ces derniers temps. Je n'y ai pas posé de questions moi-même (j'ai été prudent avant de poser des questions, même si la communauté est assez bienveillante envers les débutants), parce que j'en ai rarement besoin — en parcourant les réponses aux questions des autres, la plupart de mes problèmes se résolvent.
Treehouse enseigne la programmation au moyen de leçons vidéo et dispose aussi d'un forum communautaire où vous pouvez discuter des bugs difficiles ou des exercices spécifiques que vous rencontrez pendant les cours.
Lorsque vous avez besoin d'aide, askadev vous permet d'entrer en contact avec des développeurs expérimentés. Je n'ai pas encore essayé ce service, donc je ne sais pas à quel point il est utile ni s'il couvre tous les langages de programmation, mais il est gratuit, alors autant l'essayer la prochaine fois que vous avez besoin d'aide.
Si vous voulez payer des développeurs expérimentés pour obtenir de l'aide, Codementor vous met en relation avec des personnes qui connaissent le langage que vous apprenez. La plateforme couvre Android, iOS, HTML, CSS, PHP, Python et de nombreuses autres technologies.
Résolution de problèmes avec un canard en caoutchouc
Si vous ne l'avez jamais vu, l'article de blog « Résolution de problèmes avec un canard en caoutchouc » est très utile. L'idée est la suivante : expliquez votre problème à voix haute à un canard en caoutchouc ou à un autre objet inanimé, comme un grille-pain. Le fait de parler du problème à voix haute vous aide souvent à trouver la réponse par vous-même (ou au moins à comprendre où les choses ont mal tourné). J'ai constaté que parler de mon code à voix haute est une habitude incroyablement bonne, et j'essaie de le faire chaque fois avant de demander de l'aide à quelqu'un.
Apprenez les normes
Ce qui m'a le plus affecté pendant mon apprentissage de la programmation, c'était de mal comprendre et de ne pas connaître la technologie que j'utilisais. Par exemple, travailler avec des API signifiait que je devais comprendre comment fonctionnent les API, comment utiliser les requêtes POST et GET, comment analyser des données JSON, et même que je devais gérer la réception de données JSON.
Apprendre Objective-C n'est pas tout ce qu'il faut savoir pour développer des applications iOS — du moins, pas le genre que je voulais développer. J'ai fait l'erreur de penser que simplement connaître Objective-C suffirait. Pire encore, je rencontrais souvent des difficultés parce que les personnes qui répondaient aux questions sur Stack Overflow, les tutoriels en ligne et les chapitres de livres expliquaient tous comment développer en Objective-C tout en passant complètement sous silence les principes web que je devais connaître, en supposant que je les connaissais déjà.
Si je devais recommencer aujourd'hui, je commencerais par développer mes connaissances en HTML et CSS. Lorsque je tombais sur de nouvelles technologies que je ne connaissais pas bien, j'en acquérais une compréhension générale avant d'essayer de les implémenter en Objective-C.
Vous pouvez commencer avec n'importe quel langage
Si vous n'êtes vraiment pas sûr de savoir où commencer, ni ce que vous voulez développer, ne laissez pas cela vous arrêter. Même si j'ai passé du temps à apprendre Ruby et Python sans réaliser aucun projet avec eux, je ne considère pas ce temps comme perdu.
Un point de départ courant pour les débutants est d'apprendre le HTML et le CSS pour développer des sites web. Ce sont en fait des langages de balisage, donc si vous voulez développer des applications mobiles ou web, apprendre le HTML et le CSS peut sembler une perte de temps. Mais dans ce cas, vous acquerrez des connaissances et de l'expérience qui vous aideront à mesure que vous continuez à apprendre des langages de programmation.
Si vous êtes impatient de commencer à apprendre la programmation mais que vous ne savez pas par où commencer, choisissez simplement un livre, un tutoriel ou un cours en ligne — ce qui vous plaît — et suivez-le jusqu'au bout ! Une fois que vous aurez une meilleure idée de ce que vous voulez construire, vous pourrez toujours choisir d'apprendre un autre langage.
Trouvez un projet qui vous tient vraiment à cœur
Pour moi, la plus grande difficulté d'apprentissage a probablement été de trouver la motivation pour continuer à apprendre à coder. J'ai essayé plusieurs fois par le passé : apprendre le HTML et le CSS étant enfant, apprendre les bases de Ruby quelques années plus tard, et apprendre Python plus récemment.
J'ai décidé d'apprendre l'Objective-C non pas parce que je l'appréciais plus que Ruby ou Python, et non pas parce que je connaissais des gens qui apprenaient l'Objective-C, mais simplement parce que j'avais une liste d'idées d'applications iOS que je voulais réaliser — je voulais vraiment les construire.
Ma motivation pour apprendre l'Objective-C était plus forte que pour tout autre langage que j'avais appris auparavant, parce que j'avais des projets personnels que je voulais développer, ce qui me motivait.
Plus important encore, à mesure que la difficulté augmentait, que je me sentais frustré et que je rencontrais des problèmes, je n'ai pas abandonné — parce que je développais un projet qui me tenait vraiment à cœur. Chaque fois que je parvenais à implémenter une nouvelle fonctionnalité et qu'elle fonctionnait bien, la récompense était encore meilleure parce que cela faisait partie d'un projet qui me passionnait.
Si vous envisagez d'apprendre la programmation et que vous n'avez aucune contrainte sur le choix du langage ou de la plateforme, je vous conseille vivement de choisir un projet qui vous passionne vraiment, et cela posera les bases du choix du langage requis par le projet.
Chacun apprend différemment, donc votre expérience peut être différente de la mienne, mais si vous débutez ou envisagez d'apprendre à programmer, j'espère que mes expériences et mes erreurs pourront vous aider à apprendre plus vite.
- Remarque : la méthode de débogage du petit canard jaune, aussi appelée débogage au canard en caoutchouc ou débogage au canard jaune (Rubber Duck Debugging), est l'une des méthodes de débogage de code utilisées en génie logiciel. Elle consiste à expliquer patiemment à un petit canard jaune l'objectif de chaque ligne de code lors du débogage, de la correction d'erreurs ou des tests d'un programme, afin de susciter l'inspiration.
Source de l'article :www.labazhou.net
Texte original anglais :Ce que je ferais différemment si j'apprenais à coder aujourd'hui