Présentation de Mori
Bonjour à tous,
Cela fait très longtemps que je m'intéresse à la programmation Mac-iOS, à laquelle je me suis initié grâce aux livres du Big Nerd Ranch (que je recommande ). Malheureusement, n'étant pas dans le milieu informatique et étant réservé socialement, une fois le livre fini, je n'arrivais pas à poursuivre.
C'est ce qui c'est passé avec la sortie de Swift, où je m'étais dit que c'était le bon moment pour (re)prendre le train en marche (et à l'époque m'inscrire sur votre forum).
Je suis de nouveau dans cette dynamique. Je viens de finir la première partie du MOOC sur la programmation iOS sur edX, avec le professeur Kordon (que quelques uns d'entre vous ont suivis aussi apparemment), et comme la deuxième ne commence qu'en septembre, je me dis que ce serait bien de ne pas laisser retomber l'enthousiasme en bricolant quelques applis.
Ma principale difficulté est dans les choix d'architecture de mes applis (je ne sais pas si c'est le terme correct). J'aurais quelques fois besoin d'être orienté, parce que je me sens souvent bloqué par mes choix de départ.
Sur le MOOC, on pouvait soumettre le code source de son projet sur le forum pour avoir des critiques/avis/conseils. Est-ce que c'est possible ici aussi ? Peut-être à travers un projet sur Github ? (Je ne connais pas, mais je suis là pour apprendre...)
Au plaisir d'échanger avec vous,
Mori / Pierre
Réponses
Bienvenue Mori / Pierre !
J'ai également suivi ce MOOC.
Si je peux te donner un conseil: quand tu n'as jamais touché à une techno ou framework, crée un petit projet de test. ça permet de dégrossir le sujet, de voir les limites et si tu as bien compris l'architecture. Avoir un projet à part permet de ne pas se noyer dans les détails, car ça n'a pas d'importance si les choses ne sont pas dans les règles de l'art, et on peut vite réécrire entièrement un bout si besoin.
Par exemple, disons qu'on n'a jamais utilisé UITableView. On peut créer un premier projet pour présenter un Modèle fixe. ça permet déjà de comprendre comment fonctionne UITableViewDataSource.
Hello, Mori la Pierre.
Sympa ce MOOC, hein ? Je me suis bien amusé avec certains exercices. Beaucoup moins à écrire des contraintes à la chaà®ne.
Tu n'es pas le seul a avoir des problèmes d'architecture. Ma solution personnelle c'est de découper l'application en classes génériques, indépendantes les unes des autres. Au lieu de me dire "je construit" une maison, je me concentre sur la fabrication d'une "porte", d'une "fenêtre", d'un "couloir", d'une "pièce". Cela me permet de les assembler ensuite pour créer une première maison, voir ce qui ne vas pas et modifier l'architecture en conséquence. Il faut penser "modulaire", comme des briques de légos.
Si tu as téléchargé mes exercices du MOOC (pseudo IceDraken), tu peux voir qu'ils sont plus long et possède plus de classes que ceux des autres participants. C'est à cause de cette approche modulaire, avec plusieurs couches d'objets :
- d'abord penser aux portes, aux fenêtre aux murs, sol
- ensuite à une pièce générique en assemblant les pièces détachés (sol, murs, plomberie, électricité)
- puis créer les pièces spécifiques (salle à manger, cuisine, chambre, salon, etc..)
- Puis créer des maisons sur mesure en assemblant les pièces
Quand je commence un projet je n'ai aucune idée de son architecture final, me contentant de fabriquer l'un des objets de base. Puis un autre, et un autre. Ensuite je les assemble. Le premier jet est généralement mauvais, mais cela me permet de voir ce qui ne vas pas. Et je fait un nouvel assemblage.
Je précise que je suis un autodidacte en programmation. Ce n'est pas mon corps de métier. Je n'ai jamais suivis de cours, à part la lecture de nombreux ouvrages, et le MOOC du professeur Kordon. Mon approche est peut-être un brin trop "artistique" et "intuitif" pour les honorables informaticiens fréquentant ce café. ::)
C'est toi le Eric_37 du MOOC ?
Oui
1.400 participants. Tu fait partie de la dizaine de personnes à finir l'exercice final du MOOC. Félicitation !
Même si ta variante manque un peu de fantaisie à mon gout. Tu as pensé quoi de la mienne ?
En fait pour chaque exercice j'ai essayé de faire strictement ce qui était demandé, effectivement sans fantaisie.
Ta version par contre est complètement différente.
Je l'ai essayé mais sans regarder encore le code.
J'attends la version finale mais le début semble prometteur...
Je m'y colle ce WE ! * croise les doigts *
Il ne reste que des choses casses-pieds à faire. Le plus amusant tourne déjà .
Le problème des MOOC, tels que j'ai pu les pratiquer, c'est la courbe d'apprentissage plutôt raide et l'optimisme des organisateurs sur le temps nécessaire pour regarder les vidéos, comprendre les explications et surtout accomplir les exercices. Le professeur Kordon parle de 5 heures par semaine, c'est carrément utopique. Un novice a besoin du double, voir du triple ..
De mon point de vue, les créateurs de MOOC cherchent à expliquer trop de choses en trop peu de temps. J'ai participé à un MOOC de FUN sur la littérature médiévale-fantastique. Il y avait des exercices à réaliser en "quelques heures" avec des outils de narration interactifs. Des outils pas spécialement intuitifs.. rien que pour comprendre la logique d'utilisation il fallait dépenser le "budget temps théorique".
J'ai fait remonter la même chose dans ma fiche d'appréciation de fin de MOOC. Avec déjà quelques bases, j'ai passé beaucoup plus de temps que les 5 heures annoncées, et sans chercher à faire des choses révolutionnaires.
Cordialement
Nicolas (aka Ni78 )
On est deux, alors .. Pour les remarques sur la fiche d'appréciation et le temps passé ..
On est aussi les deux seuls à avoir utilisé UIDynamic pour l'exercice final. Bravo pour ton application et pour les bananes noix de coco !
Merci à tous pour votre accueil !![:) :)](https://cocoacafe.fr/resources/emoji/smile.png)
Pour l'architecture, je sens bien que c'est une question d'expérience. En programmation, il est souvent répété qu'il y a toujours plusieurs manière pour résoudre un problème, et chacun utilise sa propre solution. D'où l'intérêt d'aller voir ailleurs comment les autres font.
Je pensais par exemple sur l'intérêt d'utiliser un singleton ou pas, un navigation controller ou une toolbar, utiliser CoreData ou pas, etc...
L'analogie avec la construction d'une maison est intéressante. J'essaie de faire la même chose. Simplement partir sur une maison de plein pied, ou sur une maison avec 2 étages, ce n'est pas la même chose. Comme un chauffage par plancher chauffant ou radiateurs. Difficile parfois de passer de l'un à l'autre en cours de route, il faut faire le bon choix dès le départ.
Bon, en même temps, je sais que beaucoup de mes questionnements viennent de mon côté perfectionniste et curieux, et du fait que je développe en amateur. Les impératifs professionnels m'obligeraient à faire un choix, et à m'y tenir. Et ne pas chercher à améliorer en permanence la même maison, mais simplement de faire en sorte que la prochaine soit mieux pensée que la précédente.
Je trouve aussi que ce MOOC est assez hard. Heureusement que j'ai fait les livres du Big Nerd Ranch avant. C'est bien écrit que c'est de niveau master universitaire, mais je n'avais pas perçu la difficulté. Ce n'est pas vraiment au niveau des notions abordées, que je connaissais, mais effectivement par rapport à la densité et la vitesse. J'ai aussi passé chaque semaine sur les cours/exercices bien plus que les 5 heures annoncées.
Ce n'est clairement pas pour les novices. Il me semble que c'est pour des " professionnels " qui veulent découvrir l'environnement iOS. Ce devrait peut-être être plus mis en avant. Le MOOC de Standford est hard aussi (mais il a un avantage je trouve c'est que l'instructeur code en live). Pour les novices, les livres ou les formations en ligne telles que celles de Udemy ou StackSkills me semblent beaucoup mieux indiquées. Et il n'y a pas d'impératif de temps, on peut aller au rythme que l'on veut.