à‰valuer ses connaissances

De l'art d'être un développeur en Objective-C chevronné (> é)



Bonjour tout l'monde.


J'réfléchissais à  la question : " Quel est mon niveau en dév' iOS ? "

Du coup, m'est venu l'idée de créer un topic qui pourra peut-être intéresser plus d'un. Il s'agit de se mettre d'accord sur les compétences minimum à  avoir. En bref, qu'est-ce que vous aimeriez que quelqu'un que vous embauchez ou votre collègue sache faire au minimum.


Je vais commencer par une liste non-exhaustive de ce que j'appellerais " Champ de connaissance ", à  laquelle toutes les remarques, suggestions ou autres idées d'ajout sont les bienvenues. L'intérêt, c'est d'aider les jeunes développeurs à  se situer sur la courbe longue du dév' iOS. Elle pourrait être transcrite en version dév' Mac OS X, voire dév' tout court, mais je vais me contenter d'iOS, car c'est ce sur quoi je bosse.


Par la suite, je pense qu'il serait également intéressant de regrouper certaines connaissances par niveau, de débutant à  expert, en passant par confirmé, etc. D'une part, cela permet à  tous les nouveaux qu'on voit arriver de se situer, mais également de savoir ce qu'il leur reste à  apprendre pour être un bon dév' en iOS, au sens du terme " j'ai tout vu, ou en tout cas les mécanismes ", car bon, si on code salement, ou qu'on ne gère pas correctement la mémoire, bien qu'on ait vu certains trucs, on peut rester un mauvais développeur. Cette liste pourrait également servir de base quand on cherche un emploi, vu qu'on peut se situer sur ce qu'il reste à  faire/connaà®tre/expérimenter.


Notez que cela ne prend pas en compte, ceux qui beaucoup comme nous, sommes passionnés et bien qu'on n'ait pas vu certains trucs, on ne se découragera pas à  les apprendre si on en a besoin.


Voici quelques propositions de niveaux afin de classer les connaissances :

[Débutant]

[Junior]

[Confirmé]

[Senior]

[DIEU]

[Optionnel]/[Bonus]


On ne parlera pas des niches avec les développeurs spécialisés, comme le traitement audio, vidéo, etc. ou en tout cas pour le moment.


Une fois qu'on a une liste un peu près complète, je suggère de créer quelques problèmes simples/explications, des checkpoints un peu plus précis en soit, ainsi que de donner un niveau de "difficulté".

Exemples :

- Qu'est-ce qu'un EXC_BAD_ACCESS et quel outil d'XCode va m'aider à  trouver ce qui le cause plus précisément ?

- Comment est-ce que je créée demain avec la date d'aujourd'hui avec des NSDateComponents ?


Donc voici comment je vois le déroulement du topic :

- Recherche des champs de connaissances

- Définition des " niveaux "

- Mettre ces niveaux sur les champs de connaissances

- Questions annexes d'exemples sur certains champs de connaissances afin de mieux cibler


- Et on pourra peut-être réorganiser ça dans l'ordre des " niveaux " plutôt que des connaissances

Les champs de connaissance :

- POO en général

À quoi ça sert ? Comment ça marche, etc. C'est du BABA, et ça peut-être repris d'autres langages

- C

Un peu de C en général, c'est pas mal

- Objective-C Litterals

C'est rapide, c'est un coup à  prendre, mais faut connaà®tre pour le (dé)coder.

- UITableView.

C'est un classique sur les applications iOS, il faut avoir vu les datasources, le delegate, les customs cells, les searchbars.

- UICollectionView

Grand frère par ses possibilités et p'tit frère par son âge des UITableView. Principalement les mêmes connaissances que sur un UITableView

- Dates

Tôt ou tard, on se verra confronter au problème. C'est assez simple, mais bon. Il faudrait donc voir NSDate, NSDateComponents, NSCalendar, les NSLocales/Décalages horaires

- NSNotifications

Avec le Notification Center

- Local/Push Notifications & APNS

Avec les notif's iOS

- Delegate & DataSource

Utilisation, création de versions customs, etc.

- Mémoire

Ici, comprendre les principes de l'ARC, savoir ce qu'il faut faire quand il n'y en a pas, quand mettre strong/week/retain, etc.

- AutoLayout

Comment l'utiliser. C'est nouveau, à  la fois facile et difficile à  comprendre/implémenter.

- Sauvegarde de données

Du simple NSUserDefaults, à  du CoreData (potentiellement via MagicalRecord), du SQL, ou du KeyChain.

- " Web "

D'une simple UIWebView, à  des NSStream, du AFNetworking (ou assimilé). En bonus, du WebService : Rest/JSON

- Touches

Du touchesBegan, IBAction (et autres certains addTarget) aux UIGestureRecognizer

- Storyboard

Bon, là , c'est surtout pour ceux qui s'en passent encore sans l'avoir réellement essayé. Car il me semble que les nouveaux développeurs l'utilisent directement.

Mais je vois régulièrement sur SO, les questions concernant le passage de données de l'un à  l'autre écran.

- Portail de dév'

Certificats, Provisionning Profiles, etc. ça peut-être un peu déroutant et début, et je conseille de l'avoir vu une fois.

Voire de la soumission, de la compréhension des rejets, des guidelines, etc.

- NSLocalizable

Jouer un peu avec les localisations, que ce soit les .strings, ou autre

- Outils de débug

Du simple NSLog, aux macros liées, en passant par les BreakPoints, la compréhension de ce qu'il se cache derrière un EXC_BAD_ACCESS, NSZombies, Memory Leaks, etc et surtout évidemment savoir comment les éviter par les " réparer ".


Donc, est-ce que ça vous intéresse de discuter de ça, ou pas du tout ?


Réponses

  • MalaMala Membre, Modérateur

    Il y aurait pour moi deux choses bien distincts pour évaluer une personne. De débutant à  confirmé, je ferais prévaloir l'intelligence liée à  la bonne compréhension du langage. Et au delà , cela vient se compléter par des connaissance plus pointues des frameworks.


     


    Personnellement, pour évaluer un candidat, je m'attache à  l'intelligence. Par exemple, passer un peu de temps à  discuter (intérêt/inconvénient) d'une notion de base comme les catégories en Objective-C est un très bon moyen de jauger la personne. A côté de ça, parler des NSNotification c'est une perte de temps.

  • CéroceCéroce Membre, Modérateur

    Larme, j'admets que ça ne m'intéresse pas trop, parce que je ne me retrouve pas là -dedans.


    Quoique dans les formations que je donne, j'essaie de trouver un tronc commun, et on retrouve pas mal de sujets que tu exposes.


     


    Mais on ne peut pas tout connaà®tre, ni être bon partout. Par exemple, vous avez sans doute remarqué que je connais très bien Core Graphics; c'est grâce à  mon travail sur PortraiMatic. Alors que, tout ce qui est réseau, je connais un peu (j'ai fait plusieurs applis clientes de webservices), mais je suis loin d'être un dieu.


     


    Par exemple, tu mets UICollectionView dans ta liste, que je n'ai utilisé qu'une fois. Alors que le Key-Value Observing n'y est pas, et que je l'utilise beaucoup sur Mac. Bref, chacun voit midi à  sa porte.


Connectez-vous ou Inscrivez-vous pour répondre.