web-dev-qa-db-fra.com

Que faire lorsque le codage commence à sembler ennuyeux, comme si c'était tout simplement la même chose?

J'ai commencé la programmation à l'âge de 6 ans sur un Commodore 64. J'ai maintenant 28 ans et je dois suivre 4 cours de premier cycle en informatique.

Je commence à m'ennuyer à écrire du code après toutes ces années. J'ai suivi un cours d'informatique dans les langages informatiques théoriques et 10 ans de codage de système C dans le domaine de la sécurité des réseaux et je n'obtiens aucune stimulation en écrivant du code.

Je peux écrire du code en C, C++, Python ou quel que soit le langage que vous voulez, mais je ne peux pas me passionner pour ce que je fais. Je ne sens aucun défi. J'ai un code multi-thread écrit, un proxy HTTPS MITM et une application WSGI sans avoir besoin de compétences en algorithmes spécifiques.

Je pense que toutes ces nouveautés sont toutes identiques, avec des abstractions ou des automatisations plus simples (ou plus), mais tout me semble identique. Encore et encore. Le langage calculable est entièrement calculable par Turing, donc le codage n'est qu'une réplication d'un modèle similaire dans ce sous-ensemble d'une fonction partielle.

Dans mon travail quotidien, je me sens ennuyé même en recherchant des bogues, en effectuant des tests de performance sur du code ou en résolvant le problème avec la bibliothèque X, Y, Z.

Je suis une personne très curieuse. Je suis toujours stimulé par quelque chose. Mais je ne peux même pas quand je regarde du bon code. Je me sens plus à l'aise dans la façon dont les choses fonctionnent.

Est-il temps d'avancer dans ma carrière? Ou de faire des choses plus stimulantes en informatique? Peut-être obtenir un diplôme majeur en CS?

J'ai commencé à lire mon premier livre sur la gestion de projet "Peopleware" et je m'intéresse de plus en plus au cycle de vie du développement logiciel. Que proposez-vous de faire?

Peut-être en essayant d'entrer dans Google ou Microsoft ou Apple comme certains de mes amis l'ont fait. Ou peut-être un cheminement de carrière plus managérial. J'ai également essayé de trouver un bon livre sur les règles de communication et "les gens personnalité "pour me préparer à la possibilité d'entrer dans la gestion.

Aucune suggestion?

PS: J'ai beaucoup d'intérêt, je ne suis pas déprimé :) J'adore la montagne, le trekking, prendre des photos et je suis un grimpeur sportif, j'aime nager et faire du sport en général, parfois Je fais de la course à pied, en fait je lis un livre sur l'histoire de mon pays (Italie) d'AC à aujourd'hui et j'adore les voyages (cet été j'ai fait 4000Km pour voir beaucoup de place en Espagne et y grimper, tout ça en seulement 3 semaines , pas des vacances mais un marathon, 24 km de trekking ont fait ma hernie), j'adore le théâtre et la vie en général.


Merci à tous, réfléchir à toutes les réponses me donne l'opportunité de clarifier mon chemin.

Pour un résumé, nous pouvons généraliser sur la réponse la plus votée.

Tout d'abord, les gens votent nécessité pour faire de notre travail un soutien de votre vie et non la seule raison de rester dans la vie (ce n'est pas mon cas), donc, si vous ne raisonnez de la vie si vous travaillez, vous arrivez rapidement à une situation vraiment dépressive. Comme le dit Peopleware, Vienne ne vous attend pas :)

Après ce rappel, les gens suggèrent de:

  • augmenter la complexité technique sur laquelle je travaille actuellement pour augmenter les défis et m'ennuyer moins.
  • changer le domaine d'expertise en un domaine non technique en essayant de devenir manager ou faire progresser un soignant dans un domaine non technique lié à votre travail.
  • changer de domaine d'expertise dans un autre type de défi technique, êtes-vous programmeur système? essayez de vous ennuyer moins en développant des applications pour l'homme afin que vous puissiez vous sentir plus à l'aise en regardant les gens en utilisant votre logiciel utile
  • faire avancer votre diplôme en informatique dans votre cheminement académique

Dans mon but, la bonne réponse est de faire progresser l'informatique, car je pense que la programmation n'est pas le seul moyen d'obtenir de l'informatique et je pense que je peux me sentir mieux pour obtenir un autre chemin en informatique différent de celui du soignant en génie logiciel.

33
boos

Cela devait arriver.

Si votre intérêt principal réside dans le code, cela vous rendra fou, frustré et déprimé de temps en temps, un jour de façon permanente.

Intéressez-vous au développement de produits et profitez de voir les gens les utiliser. C'est le but ultime de l'écriture du code, non? Le code est simplement un outil pour faire quelque chose de plus grand.

49
user8685

Je répondrai à votre question par une question ...

Le travail d'un programmeur est-il de coder ou de résoudre des problèmes?

Vous dites que vous vous ennuyez parce que l'écriture de code semble être quelque chose que vous avez déjà fait, comme chaque bit de code a déjà été fait auparavant.

Mais comment en êtes-vous arrivé à la conclusion que ce code est le code qui devrait être écrit? La plupart des problèmes ont des centaines de façons de le résoudre, mais il n'y a qu'une seule façon meilleure.

Si vous ne trouvez vraiment aucun défi, curiosité ou intérêt à trouver des solutions ou à résoudre des problèmes, alors vous êtes vraiment prêt à changer. Bien que je ne sois pas sûr que ce serait la gestion du développement logiciel. Je ne voudrais pas travailler pour un gestionnaire de logiciels qui ressentait autant d'apathie pour la résolution de problèmes. Ce devrait probablement être juste une industrie différente, avec un ensemble différent de problèmes.

Si vous aimez résoudre des problèmes mais que vous n'aimez pas le codage, vous ne trouvez peut-être pas assez de problèmes à résoudre. Chaque fois que mon travail commence à être fastidieux, je pense qu'il y a un problème à résoudre. Pourquoi est-ce que je fais un travail occupé? Quelle solution puis-je trouver pour supprimer le travail chargé de mon travail? C'est la beauté de la programmation.

21
Nicole

Cela me semble que vous avez fait [~ # ~] beaucoup [~ # ~] de programmation procédurale et que vous en avez assez - ce que j'ai entièrement comprendre. Spécifier étape par étape est sensiblement le même dans tous les langages procéduraux.

Comme il semble que vous ayez beaucoup d'activités non professionnelles, je suggérerais d'apprendre certains des concepts qui ne ressemblent pas à ce que vous savez maintenant, et - oui - il y en a beaucoup, mais pour commencer, je recommanderais Haskell parce que c'est

  • fonctionnel - vous écrivez des fonctions que vous assemblez pour créer de plus grandes fonctions qui aboutiront finalement à un programme.
  • évaluation paresseuse - au lieu de spécifier étape par étape, le runtime extrait les valeurs nécessaires selon les besoins. Cela signifie qu'il est très courant de traiter des listes infinies dans vos programmes.
  • correspondance de modèles - au lieu d'avoir de grandes structures if, vous listez les modèles pour ce à quoi ressemblent les paramètres, et le runtime sélectionne le modèle approprié et exécute le code correspondant.

Voici une fonction de tri complète:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

(Voir http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding pour une explication)

Si tout cela est nouveau pour vous, je vous encourage à commencer l'aventure.

Bonne chance, amuse toi bien.

9
user1249

Les ordinateurs ennuient les consommateurs. Lorsque vous codez des interactions machine à machine toute la journée, la machine réagit de la même manière à chaque fois. Bon pour réaliser le projet, mais fastidieux après un certain temps. Cela aide vraiment à briser la monotonie avec quelque chose qui n'est pas directement lié à la machine.

J'ai trouvé l'inspiration à la fois dans la photographie et dans l'étude de l'expérience utilisateur. Pensez-y, comment se fait-il que Apple peut faire saliver des gens sur eux-mêmes pour la prochaine chose à sortir de Santa Clara lorsque d'autres vendeurs obtiennent une réponse chaleureuse? Pensez-vous sérieusement que = Android aurait obtenu une réponse aussi importante si Apple n'avait pas résisté à la libération de l'iPhone sur Verizon depuis si longtemps? Je vais vous donner un gros indice: ce n'est pas nécessairement que ces produits sont si avancés technologiquement. Il y a une énorme composante psychologique dans la manie.

Comprendre la conception des produits et l'expérience utilisateur est quelque chose que beaucoup d'entre nous ont beaucoup à apprendre. Qu'est-ce qui fait vibrer quelqu'un? Comment concevez-vous quelque chose d'assez cool pour que les gens quittent la solution établie? Comment créez-vous votre propre culte de la technologie comme Apple (pas que j'aspire à être un chef de file), ce sont toutes des questions très intéressantes et stimulantes. Elles alimentent le développement logiciel - mais maintenant votre objectif est différent.

8
Berin Loritsch

Vous n'avez probablement pas assez de défis techniques?

  • Essayez des systèmes hautement distribués. Pouvez-vous facilement coder un système pour collecter les journaux de 1000 ordinateurs dans un cluster, avec une précision en microsecondes?
  • Essayez dur en temps réel. Emballez tous vos processus en une seule rotation d'un moteur.
  • Essayez la vision par ordinateur ou le traitement d'images. Les compétences en mathématiques, les compétences en formule à coder, les compétences en optimisation sont toutes utiles.
  • Essayez l'IA. Voyez comment l'ordinateur d'IBM joue Jeopardy? Une certaine sophistication algorithmique est probablement impliquée dans ce domaine.

Etc. Bien sûr, soyez prêt à gagner initialement moins dans un domaine où les choses sont difficiles pour vous, pas ennuyeuses.

7
9000

J'ai trouvé la motivation en allant dans un domaine qui n'a pas de solutions "correctes", j'écris des outils éditoriaux et mon travail est aussi bon que les utilisateurs le trouvent utile. Je rencontre beaucoup de gens non techniques et ensemble, nous essayons de trouver des moyens d'améliorer le logiciel avec lequel ils doivent travailler, je trouve l'interaction humaine et la nécessité de changer constamment de perspective complètement agréable et soudainement, le codage n'est pas si fastidieux.

Je sais que ce n'est pas pour tout le monde cependant, certains gèrent l'insécurité de ne pas avoir une mesure objective de la qualité de votre travail plus difficile que d'autres.

Mais c'est une option qui mérite d'être envisagée.

4
biziclop

Oui, j'ai parfois l'impression que l'on écrit en réalité le même type de code encore et encore et encore. Mais non, je ne m'en ennuie pas encore. Pourquoi donc?

Parce que j'aime fondamentalement découvrir de nouvelles façons de coder et de nouvelles façons concises et élégantes d'exprimer quelque chose dans le code. Il y a deux façons possibles de procéder: apprendre de nouveaux langages de programmation ou apprendre de nouvelles bibliothèques ou frameworks.

L'apprentissage d'un nouveau langage de programmation est devenu plus facile pour moi avec chaque langage que j'ai essayé. Et après un certain temps, cela a cessé d'être très intéressant. Mais ensuite, il y a environ un ou deux ans, je suis finalement arrivé à la programmation fonctionnelle, qui en tant que paradigme de programmation est assez différent de OOP pour être un nouveau défi. Je pense que cela a vraiment enrichi mes capacités de programmation et m'a donné une nouvelle perspective à partir de laquelle je peux regarder un problème de programmation. J'essaie maintenant de découvrir différents paradigmes de programmation, au lieu de simplement différents langages de programmation. C'est un plus grand défi.

Deuxièmement, apprendre une nouvelle bibliothèque, un nouveau cadre ou une nouvelle API: comme vous l'avez dit correctement, les nouveaux cadres ne résolvent souvent pas de nouveaux problèmes; ils le résolvent simplement d'une manière différente, par exemple en ajoutant une couche supplémentaire d'abstraction. C'est peut-être possible parce que les ordinateurs d'aujourd'hui sont plus puissants que les machines antérieures; ou, peut-être, parce que dans l’ensemble, nous améliorons l’écriture de logiciels.

Ce dernier morceau a probablement besoin d'être expliqué. Je vais donner un exemple: Pendant très longtemps, tout en pratiquant mes compétences en programmation, je n'ai jamais vraiment réfléchi sérieusement à la maintenance du code que j'écrivais. Depuis que j'ai commencé à programmer sur un travail, ma perspective a changé. L'écriture de code maintenable est souvent très importante dans un environnement d'entreprise, car chaque heure que vous passez à coder coûte de l'argent réel, donc une entreprise essaiera de conserver le code existant si possible, et il y a de fortes chances que vous deviez éventuellement passer outre votre code à un successeur.

Je trouve que l'écriture de code maintenable est en fait un gros défi. Cela signifie souvent que vous n'écrirez pas de code d'assemblage super intelligent et hautement optimisé (rappelez-vous L'histoire de Mel - Un vrai programmeur , n'importe qui? ;-) Au lieu de cela, vous êtes plus susceptible d'en profiter d'abstraction. Plus vous rapprochez votre code de certaines règles métier et du domaine problématique, mieux c'est. C'est là que toutes ces nouvelles bibliothèques entrent en jeu. Si elles vous permettent d'écrire du code afin qu'il soit propre, clair, concis et facile à comprendre, alors c'est une bonne chose.

Désolé si cette réponse est assez longue. J'ai essayé de montrer d'où vient ma motivation dans la programmation ... et je serais curieux de savoir si à un certain moment vous avez ressenti la même chose, et si (et pourquoi) votre motivation a finalement disparu, de toute façon.

4
stakx

Si vous en avez assez d'écrire du code, s'il ne vous excite pas, s'il vous ennuie, il est peut-être temps de changer. Vous pourriez envisager de passer à un poste de gestion, gérer et guider d'autres codeurs avec vos années d'expérience. Ou essayez de vous déplacer latéralement dans l'architecture du système, où vous pourriez concevoir et planifier des systèmes et d'autres personnes feraient la plupart de la mise en œuvre.

Ou, vous pouvez changer complètement de carrière, vers quelque chose qui n'a absolument rien à voir avec les ordinateurs. Vous êtes-vous demandé quel serait le métier de vos rêves, si quelqu'un pouvait vous le donner?

Commencez à jouer avec les microcontrôleurs. C'est l'application la plus rafraîchissante et la plus excitante de talent de programmation à laquelle je puisse penser.

3
Rob S.

Il semble que les points de départ de nos antécédents soient similaires en ce sens que nous avons tous deux commencé à programmer vers l'âge de 6 ans sur des machines similaires et que nous avons tous les deux programmé pour différentes raisons. Aucun de mes diplômes n'a rien à voir avec la programmation - j'ai tous les diplômes en musique - bien que j'aie suivi des cours d'informatique de niveau universitaire.

Vous avez raison, je pense, en observant que les programmeurs résolvent souvent les mêmes problèmes à plusieurs reprises et que le "nouveau" est tout basé sur "l'ancien". Que vous réalisiez ce fait est à votre crédit; trop de développeurs et de gens d'affaires considèrent les nouvelles technologies comme complètement déconnectées des anciennes.

Donc, résoudre ce genre de problèmes ne vous intéresse pas. Qu'est-ce qui serait intéressant? Aimez-vous la résolution de problèmes en général? Peut-être qu'une vie en tant que développeur de logiciels "d'entreprise" n'est pas pour vous.

Je sais que j'ai fourni plus de questions que de réponses, mais j'espère que répondre à ces questions vous donnera un aperçu de la direction que vous devriez prendre.

2
Andrew

Il me semble que vous êtes coincé. Vous êtes dans une situation où vous ne voulez pas être et vous ne savez pas comment vous en sortir. Mon conseil est simple: faites quelque chose de différent juste pour faire quelque chose de différent. Même si cela ne résout pas votre problème, il vous bloquera probablement.

Je peux écrire du code en C, C++, Python ou quel que soit le langage que vous voulez, mais je ne peux pas me passionner pour ce que je fais. Je ne sens aucun défi. J'ai un code multi-thread écrit, un proxy HTTPS MITM et une application WSGI sans avoir besoin de compétences en algorithmes spécifiques.

Ne prenez pas cela dans le mauvais sens (ce sont des réalisations décentes), mais ce n'est pas une liste complète de tous les problèmes difficiles et passionnants de la programmation. Il y a encore beaucoup de problèmes difficiles à résoudre. Les problèmes les plus difficiles concernent le travail à grande échelle. Vous avez écrit une application WSGI, mais en avez-vous une capable de gérer un milliard de pages vues par jour? Vous avez écrit du code multi-thread, mais avez-vous écrit du code multi-ordinateur (avec des centaines d'ordinateurs)?

En bref, si vous voulez essayer de faire quelque chose de non technique, allez-y. Mais ne faites pas cela parce que vous sentez que vous avez résolu tous les problèmes qui doivent être résolus parce que ce n'est pas le cas.

2
Jason Baker