Fermer

décembre 8, 2022

Oubliez les algorithmes et les modèles – apprenez d’abord à résoudre les problèmes

Oubliez les algorithmes et les modèles – apprenez d’abord à résoudre les problèmes



Presque chaque semaine, un ami ou une connaissance me demande : « Je veux apprendre à coder ; par quelle langue dois-je commencer ? Plus ou moins toutes les deux semaines, je reçois un DM sur LinkedIn commençant par : « Mon fils devrait commencer à programmer ; quelle est la meilleure langue pour lui ?

Il n’y a pas que les gens qui n’ont jamais codé auparavant. Je reçois souvent ces messages de personnes qui ont plusieurs années d’expérience codage expérience à leur actif.

Je ne dis pas ça pour me plaindre.

Je gagne la moitié de ma vie en explorant les avantages et les inconvénients de différents langages de programmation, frameworks et modèles d’IA ici sur Medium. Je profite grandement des gens qui ont de telles questions.

Les questions sont assez intuitives. Après tout, tout le monde aimerait travailler avec les meilleurs outils possibles et développer ses compétences logicielles le plus rapidement possible.

Et quand vous constatez que chaque développeur semble utiliser une pile technologique différente, il est parfaitement logique de se demander laquelle est la bonne.

Le fait est que tout dépend du problème à résoudre.

Aucune technologie en elle-même n’est bonne ou mauvaise ; tout dépend du type de problème que vous souhaitez résoudre. En fin de compte, la programmation n’est que cela : la résolution de problèmes à l’aide d’un ordinateur.

Ainsi, pour les personnes qui souhaitent commencer à programmer ou améliorer leurs compétences en développement de logiciels ou en science des données, la question ne devrait pas être : « Que dois-je utiliser, Python ou Julia? » La question devrait être : « Comment puis-je mieux résoudre les problèmes logiciels ? »

Comment résoudre les problèmes

Pour une divulgation complète, je ne suis pas un informaticien de métier. Je suis un physicien des particules qui utilise des concepts de programmation et science des données parce que je traite d’énormes quantités de données provenant de collisionneurs de particules.

Cela étant dit, les physiciens sont tout aussi recherchés que les informaticiens. Ce n’est pas à cause de leur connaissance des neutrinos ou des trous noirs ; c’est à cause de leurs capacités de résolution de problèmes.

Abraham Lincoln aurait dit : « Donnez-moi six heures pour abattre un arbre et je passerai les quatre premières à aiguiser la hache.

Pour les programmeurs et les scientifiques des données, cela signifie passer du temps à comprendre le problème et à trouver des solutions de haut niveau avant de commencer à coder. Lors d’un entretien de codage moyen, on s’attend à ce que les candidats passent moins de la moitié de leur temps à écrire du code et le reste du temps à comprendre le problème.

1. Comprendre le problème

Ne sautez pas cette étape, jamais !

La clé pour savoir si vous comprenez un problème est de savoir si vous pouvez l’expliquer à quelqu’un qui ne le connaît pas. Essayez de l’écrire dans un anglais simple ou dans votre langue maternelle ; dessinez un petit diagramme; ou parlez-en à un ami. Si votre ami ne comprend pas de quoi vous parlez, vous devez revenir à l’énoncé du problème.

Les questions clés à poser sont les suivantes :

  • Quelle est l’entrée ? Quelle est la sortie souhaitée ?
    Par exemple, l’entrée peut être un tableau de données et la sortie peut être une régression linéaire sur les données.
  • Quelles hypothèses sous-tendent le problème ?
    Par exemple, vous pouvez supposer qu’il n’y a (presque) aucune erreur de mesure dans vos données.
  • Qu’est-ce qui complique ce problème ?
    Par exemple, les données dont vous disposez peuvent être incomplètes ou l’ensemble de données peut être trop petit pour tirer des conclusions claires.

2. Décomposez le problème

Chaque gros problème consiste en beaucoup de petits problèmes. Compte tenu de notre exemple précédent avec la régression linéaire, vous voudrez peut-être considérer les sous-problèmes suivants :

  • Nettoyer les données
  • Découvrir quelles variables dans les données sont significatives pour la régression et lesquelles peuvent être négligées en toute sécurité
  • Rechercher le bon outil pour effectuer la régression (c’est là qu’intervient la vieille question sur les langages de programmation et les frameworks)
  • Évaluation de vos résultats et vérification des bogues

Décomposer le problème vous aide à établir un plan approprié pour votre travail.

C’est aussi plus motivant, car vous franchirez des étapes petites mais importantes en cours de route. C’est beaucoup plus satisfaisant que d’être assis devant une montagne de travail et d’avoir l’impression de ne pas avancer.

3. Commencez par un exemple

Le diable est toujours dans les détails.

Au lieu de commencer par l’ensemble du projet, prenez-en un petit morceau. Essayez si votre plan fonctionne ou si vous devez l’adapter en raison de difficultés imprévisibles.

Cela vous aide à comprendre les parties difficiles. De nombreux problèmes semblent simples, mais lorsque vous commencez à les construire, les obstacles se succèdent.

Dans notre exemple, au lieu d’utiliser toutes les variables pertinentes, on pourrait d’abord effectuer une régression linéaire sur quelques variables. Cela ne vous donnera aucun point pour l’achèvement du projet ; cependant, trouver des bogues dans vos scripts lorsque vous traitez encore une petite quantité de données peut vous sauver la vie.

Lorsque vous jetez toutes vos données sur la machine, que vous l’exécutez pendant des heures, puis que vous vous rendez compte que le script s’est arrêté à mi-chemin, vous serez très frustré.

Croyez-moi, cela arrive souvent !

Effectuez d’abord de petits tests et assurez-vous que votre solution fonctionne comme vous l’aviez imaginé.

4. Exécuter

C’est la partie charnue. Vous pouvez maintenant créer la solution à votre gros problème.

Jetez toutes vos données sur le code. Exécutez un modèle de fantaisie. Fais ce que tu veux.

Après avoir terminé les trois étapes précédentes, cela devrait se dérouler assez facilement !

S’il y a des erreurs, vous devrez peut-être revenir aux étapes 1 à 3 pour voir si vous avez déjà tout compris et n’avez oublié aucun bogue.

5. Réfléchissez

Ce n’est pas parce que vous avez trouvé une solution que vous avez trouvé la meilleure solution. Ne vous enfuyez pas et n’appelez pas ça un jour; réfléchissez à la façon dont vous pourriez optimiser votre solution et comment vous pourriez l’aborder différemment.

Vous voudrez peut-être échanger avec vos collègues et leur demander comment ils résoudraient le problème. Leur approche est-elle différente de la vôtre ?

Vous pouvez également essayer d’identifier les plus gros goulots d’étranglement de votre solution, c’est-à-dire les parties dont l’exécution prend le plus de temps et de ressources. Comment pouvez-vous les améliorer ?

Enfin, réfléchissez à la manière dont votre solution pourrait évoluer dans le futur. De nouveaux frameworks logiciels ou l’utilisation de l’IA amélioreraient-ils votre solution ? Comment votre solution pourrait-elle contribuer à résoudre d’autres problèmes encore plus complexes ?

Derniers mots célèbres

Les gens, y compris moi-même, ont tendance à être obsédés par différents langages de programmation et le nouveau framework qui pourrait tout rendre 1000 fois plus efficace.

Cela vaut la peine de vous rappeler que c’est moins de la moitié de ce qu’il faut pour devenir un excellent programmeur. L’autre moitié est la résolution de problèmes.

Vous n’acquérirez pas des compétences en résolution de problèmes du jour au lendemain.

Mais si vous appliquez ces étapes, posez les bonnes questions et faites cela souvent, vous êtes sur la bonne voie pour faire passer votre carrière de bonne à excellente.

Cet article a été initialement publié sur Medium. Vous pouvez le lire ici.




Source link

décembre 8, 2022