Suis-je fait pour l’informatique ?


Je'ne suis pas totalement sûr que je'sois qualifié pour répondre à cette question, mais j'ai eu quelques réflexions donc j'ai pensé que cela pourrait s'avérer utile.

Premièrement, je pense qu'il y a une énorme différence entre la CS académique et la CS industrielle. Si vous aimez le CLRS, trouvez que cela vous démange de prouver les temps d'exécution les plus défavorables de divers algorithmes ou de développer des méthodes plus rapides de recherche et d'optimisation, la CS académique est plus votre penchant. Cependant, la plupart des personnes que je connais qui font de la CS ont souvent ressenti une légère excitation à l'égard de ces sujets, par curiosité intellectuelle générale, mais ont simplement suivi un cours sur les algorithmes et les structures de données parce que c'était une exigence de leur spécialisation. Pour autant que je sache, aucune de ces personnes n'a eu de difficulté à trouver des stages ou des expériences professionnelles intéressants et satisfaisants parce qu'elles n'ont pas réussi à apprécier chaque page imprimée de la SRPC, et je doute sincèrement que beaucoup des meilleurs programmeurs aient fait de la SRPC leur premier amour. Cela étant dit, j'ai entendu dire qu'un texte comme CLRS devient plus gratifiant la deuxième ou même la troisième fois, après avoir construit une expérience de codage dans le monde réel qui se rapporte aux sujets abordés dans le livre, donc je n'abandonnerais pas encore tout espoir.


Deuxièmement, j'affirmerais également que même dans l'industrie, il y a une variété d'activités que les personnes "CS" poursuivent, qu'il s'agisse de développer et de publier des applications comme vous l'avez déjà fait, de construire sur des projets existants chez Google ou Microsoft, ou d'analyser des données à grande échelle dans des entreprises de toutes sortes de nos jours. Plus important encore, beaucoup d'entre eux travaillent dans des start-ups qui développent généralement des produits de type "software-as-a-service". Pour toutes ces vocations, et en particulier pour la dernière, la maîtrise et la compréhension approfondie des langages en question semblent être un bien meilleur indicateur de plaisir et de réussite que l'amour des SRLC. Bien entendu, vous devez être familier avec les idées abordées dans les algorithmes et la façon dont elles sont liées entre elles (du tri à la recherche en largeur et en premier, en passant par les algorithmes de graphes, la randomisation, etc.) ; surtout, vous devez comprendre comment ces algorithmes sont souvent mis en œuvre et utilisés pour résoudre divers problèmes auxquels sont confrontés les développeurs. Cela n'implique pas, cependant, que vous trouviez à prouver l'invariant de boucle d'un certain algorithme.


Personnellement, je ne suis pas tant un ingénieur logiciel qu'un scientifique faisant usage de la CS et des outils informatiques pour manipuler et donner un sens aux grandes données. En ce sens, je'n'ai pas eu à mettre en œuvre beaucoup des algorithmes que j'ai utilisés ; la plupart des langages populaires ont des implémentations plus efficaces que toutes celles que je pourrais coder sur un coup de tête. Pourtant, il m'a été utile de comprendre à la fois leur fonctionnement et, surtout, l'étendue des diverses utilisations auxquelles chaque algorithme peut être soumis. Ce dernier point, je crois, est la partie la plus cruciale de l'apprentissage de n'importe quel sujet dans CLRS (ou, on peut le dire, de beaucoup de choses au niveau universitaire) ; savoir comment chaque algorithme, ou, vraiment, une façon de résoudre les problèmes, peut fournir une perspective différente sur la résolution d'un problème épineux a été extrêmement utile à la fois pour développer du code et pour faire le meilleur usage du code des autres&apos ;.