Je suis développeur depuis plusieurs années. Je suis assez bon dans ce que je fais et je peux "faire le travail".
Mais il y a une différence entre "faire le travail" et "faire le travail correctement". Prenons un exemple.
Récemment, j'ai développé un site Web à partir de zéro. Le site Web fonctionne bien et je n'ai eu aucun problème. En parcourant le code, je me suis dit que j'aurais pu mieux le faire. J'aurais pu réduire mes requêtes MySQL. J'aurais pu utiliser MVC pour faciliter l'extension (il doit être étendu maintenant).
J'ai décidé de réécrire le projet en utilisant CodeIgniter. J'aime le cadre. Mais j'ai ensuite été détourné parce que pour réduire mes requêtes MySQL, j'ai dû apprendre des jointures avancées.
Et c'est ça le problème. Chaque fois que je fais un travail correctement, je suis dans une roue d'apprentissage constante. Et des sujets tels que les jointures MySQL avancées prennent du temps à apprendre, puis à mettre en œuvre.
Je ne travaille pas pour une entreprise. Je fais tout seul. J'imagine donc que si je travaillais en tant que développeur PHP pour une entreprise, il y aurait des équipes distinctes pour gérer le SQL.
Être en solo c'est difficile. Et parfois, bien que mes connaissances soient avancées, je me retrouve à poser question après question. J'ai probablement beaucoup de fierté dans mon travail. Mais si je devais travailler pour une entreprise qui s'occupe de projets complets, j'imagine que les projets prennent du temps car je devrais en apprendre de plus en plus pour satisfaire ma fierté et m'assurer que je fais les choses "correctement".
J'ai l'intention d'obtenir un emploi après la nouvelle année. J'ai besoin de la sécurité d'emploi. C'est pourquoi je pose cette question.
Quels conseils pouvez-vous donner en termes de développement personnel et d'amélioration personnelle? Dois-je moins m'inquiéter? Ou peut-être chercher un emploi en tant que développeur PHP lorsque je ne traiterai pas directement les requêtes SQL?
la source
Réponses:
Conseil: N'ayez pas peur d'apprendre de nouvelles choses - vous avez fait un bon premier pas en reconnaissant que vous pouviez faire mieux, puis vous avez fait l'effort d'apprendre comment vous pourriez faire mieux. Oui, cela prend plus de temps à l'avance, mais le gain en vaut généralement la peine à long terme. Maintenant que vous connaissez CodeIgniter, vous pouvez l'utiliser pour les prochains projets futurs. Vous pouvez le mettre sur votre CV. Maintenant que vous connaissez les techniques SQL avancées, vos futurs projets en bénéficieront. Si vous arrêtez d'apprendre, vous stagnerez.
la source
Ce que vous vivez me semble tout à fait normal. C'est ainsi que nous travaillons sur notre métier et nous améliorons de plus en plus ce que nous faisons.
la source
Bien donné ci-dessus, je pense qu'il est logique pour vous de vous concentrer sur l'amélioration de votre capacité à planifier à l'avance, à établir et à hiérarchiser la file d'attente de travail, à gérer votre temps - des trucs comme ça.
Vraiment, cela semble être la seule chose qui manque dans votre attitude. Ce que vous appelez le «détournement» est essentiellement un autre travail («apprendre les jointures avancées») qui doit être planifié, priorisé et mis en file d'attente.
la source
Être un professionnel dans ce domaine, c'est constamment se casser contre sa propre insuffisance. Faites cela du 8 au 5 du lundi au vendredi, peut-être plus si une date limite approche, passez un bon week-end et revenez pour plus lundi. Voilà le travail.
Faire des logiciels demande une certaine humilité. Si vous êtes quelqu'un qui doit avoir raison et qui doit prouver qu'il savait déjà tout, ce n'est peut-être pas le domaine pour vous.
Je ne peux pas imaginer ne pas apprendre quelque chose chaque jour. Je ne pense pas que je voudrais ce travail.
la source
Être en solo est difficile. En revanche, lorsque vous travaillez avec une équipe de développeurs, tout le monde apprend les uns des autres. En tant qu'équipe, vous allez acquérir beaucoup de connaissances en travaillant avec d'autres développeurs, et avec beaucoup moins d'efforts que lorsque vous essayez de tout comprendre par vous-même.
Cela dit, en tant que développeur, vous devez vous engager à constamment apprendre. Qu'il s'agisse de lire de la documentation pour de nouveaux cadres ou des livres sur le développement, vous devez faire un effort constant pour maintenir vos connaissances à jour et en croissance. Cependant, faire partie d'une équipe peut clarifier le domaine dans lequel vous devez en savoir le plus à un moment donné.
En ce qui concerne votre point sur la révision de votre ancien code et la réécriture: j'ai trouvé que mon propre code représente toujours le meilleur de ce que je savais au moment où je l'ai écrit. Plusieurs fois, je reviens à quelque chose que j'ai écrit il y a des années et me tape sur le front, quand je vois à quel point j'aurais pu faire mieux, compte tenu de ce que je sais maintenant . Mais c'est la nature de l'expérience, vous l'obtenez après en avoir besoin ...
Enfin, lorsque vous développez une application, vous avez toujours besoin de faire preuve de bon sens commercial, de décider quand il est préférable de couper les coins pour terminer plus rapidement et quand il est nécessaire de prendre plus de temps pour apprendre quelque chose de nouveau qui améliorerait la conception et la qualité. de la demande. Il y a un univers de choses à apprendre dans le monde du logiciel. Sans exercer ce genre de bon jugement, vous pourriez vous retrouver à tourner les roues en apprenant, en réfléchissant, en repensant, mais sans rien faire.
la source
Je pense que vos préoccupations sont valables, mais vous ne devriez pas perdre le sommeil. Je crois qu'un être technologue vient avec les bagages suivants:
En fin de compte, il semble que vous vous souciez de la création de logiciels de qualité, ce que vous ne pouvez pas apprendre . Sachez que vous devez différencier la construction d'une solution de haute qualité avec la construction de quelque chose de parfait. On dirait que tu es comme moi et que tu ne te sentiras jamais parfait. Ce serait plus inquiétant si vous ne sentiez pas que vous aviez une chance de vous améliorer et d'améliorer votre travail.
Il est difficile d'être un mec de tous les métiers (maître d'aucun), mais vous devez vraiment trouver comment identifier les choses qui vous intéressent le plus et qui vous sont les plus utiles, et vous concentrer sur elles. Trouvez la meilleure façon de «sous-traiter» d'autres travaux à d'autres personnes ou outils .
la source
Je pense que vous devez moins vous soucier de "faire les choses correctement". Efforcez-vous de la perfection, mais réalisez qu'il n'est pas vraiment possible de concevoir une solution parfaite, encore plus la première fois. Le fait que vous vous inquiétiez suffisamment de bien faire les choses pour poser cette question signifie que vous êtes déjà sur la bonne voie.
Quant à votre frustration d'apprendre de nouvelles choses, j'ai trouvé que travailler en groupe et pouvoir demander et discuter du problème avec d'autres programmeurs supprimait la douleur de découvrir ce que je devais apprendre et le remplaçait avec la joie de découvrir quelque chose de nouveau et apprendre à l'appliquer.
J'adore écrire des logiciels, mais parfois il y a effectivement de la peine à ne pas apprendre réellement quelque chose de nouveau, mais à trouver exactement ce que vous devez apprendre pour pouvoir réaliser ce que vous voulez faire.
D'après ce que je comprends, j'ai été dans une position similaire à vous. Coder quelque chose seul peut être à la fois frustrant et difficile, et gratifiant et quelque peu amusant à d'autres moments.
Faites exactement ce que vous prévoyez de faire, trouvez un emploi où vous ferez partie d'une équipe (et faites de votre mieux pour vous assurer de décrocher un emploi quelque part qui ne craint pas). Travailler avec d'autres personnes qui utilisent les mêmes technologies et conçoivent le même logiciel augmentera votre compréhension et votre application de ces technologies et modèles de conception presque du jour au lendemain.
Quant à savoir comment faire quelque chose de bien la première fois, eh bien, comment sauriez-vous qu'il y avait une meilleure façon que si vous l'aviez déjà fait d'une certaine manière la première fois? La compétence en conception de logiciels dépend souvent largement de l'expérience. Joel Spolsky est un génie logiciel, mais si vous lisez beaucoup de ses articles, vous remarquerez qu'ils sont en grande partie le résultat de l'expérience et de l'intelligence.
En ce qui concerne la partie SQL, en tant que développeur .NET, je n'ai pas encore travaillé n'importe où avec un développeur de base de données dédié, nous écrivons tous notre propre SQL, mais il y a souvent des développeurs qui sont très bons en SQL qui sont prêts à vous aider avec les trucs plus en profondeur.
Vous parlez comme un gars intelligent, je ne pense pas que vous devriez être si dur avec vous-même.
la source
C'est tout à fait normal et ce n'est pas quelque chose qui devrait vous inquiéter trop. Vous devez continuellement apprendre de nouvelles compétences, mais vous devez également apprendre à hiérarchiser et à gérer votre temps. Vous devez également éviter le piège du réaménagement inutile.
Le programmeur inexpérimenté sera souvent entraîné dans le piège du réaménagement:
Il y a un certain nombre de problèmes avec cette logique.
Il ne peut jamais faire de mal d'envisager et de planifier un réaménagement. Cela signifie que vous devez réfléchir à la façon dont vous souhaitez réécrire votre programme et tenter d'identifier les problèmes que vous rencontrerez. Dans ce cas, vous auriez identifié les `` jointures SQL avancées '' dont vous avez besoin, puis enquêter sur leur fonctionnement et en savoir plus.
Si vous pensez que vous n'auriez pas identifié le manque de connaissances avancées sur les jointures grâce à la planification (sans commencer le développement), vous devez améliorer vos compétences en planification. Essayez de penser à quelle partie du plan n'était pas suffisamment détaillée. Vous devez entrer dans les détails autant que nécessaire jusqu'à ce que vous soyez sûr que l'ensemble du système est techniquement possible.
Cette approche vous permettra d'apprendre à l' avance .
Enfin, l'apprentissage sur le tas fait partie intégrante de la programmation. Cela ne signifie toutefois pas que vous commencez une tâche et que vous réalisez ensuite que vous devez vous arrêter pendant une semaine pour en savoir plus sur, disons, le HTML de base. Vous pouvez vous arrêter quelques heures pour en savoir plus, mais votre employeur ne vous paie que pour faire le travail. Apprenez efficacement - ne lisez pas l'introduction et l'historique, juste comment cela fonctionne et comment il s'intégrera à votre programme. Si vous devez arrêter de travailler pendant des jours pour apprendre à terminer une partie du programme, vous le faites mal.
la source
Vous pouvez penser que l'apprentissage de nouvelles technologies et de nouveaux problèmes est une perte de temps. Mais ne paniquez pas. C'est normal. Cela fait partie de votre pratique en tant que programmeur d'apprendre ... sinon nous serions tous coincés avec COBOL.
Les professionnels indépendants ajustent leurs commissions en conséquence et les périodes d'apprentissage sont entre autres choses à prendre en compte dans vos estimations de temps. La prochaine fois que vous décidez d'introduire un nouveau cadre, assurez-vous de prévoir suffisamment de temps pour l'apprendre.
la source
Non, il n'y en a pas, et je pense que c'est la racine de votre problème ici. Il me semble que vous êtes trop accroché à vous soucier de faire les choses «correctement», car en tant que développeur individuel, vous ne voyez pas comment les autres fonctionnent. Mais correctement selon qui? Qui est cette personne magique qui peut décréter que ce que vous faites est «correct»? Prenez 100 des meilleurs programmeurs du monde, et je vous garantis que deux ne seront pas d'accord à 100% sur chaque sujet de programmation.
En fin de compte, ce qui compte, c'est que vos clients soient satisfaits. Si les programmes que vous créez résolvent les problèmes qu'ils sont censés résoudre et le font de manière rentable, vous le faites correctement. Il n'est pas plus intrinsèquement correct, par exemple, d'utiliser codeigniter que d'utiliser votre propre framework. Le corollaire à cela est que si vous produisez un tas de merde, vous le faites «mal» quels que soient les processus ou les «meilleures pratiques» suivis.
Que vous revisitez votre code et que vous voyez des moyens de l'améliorer est une partie normale du processus de développement. Ce n'est pas un signe que vous ne faites pas les choses «correctement». C'est un signe que vous êtes dédié à l'apprentissage et à l'amélioration. De tout ce que je vois dans votre message, vous n'avez aucun problème.
Maintenant, va donner un coup de pied * * *
la source