Je veux savoir, à quel point est-il important de programmer pendant votre temps libre? Est-il nécessaire de travailler votre 9-5 en tant que programmeur, puis de rentrer à la maison et de travailler sur votre passe-temps pour devenir un meilleur programmeur?
Cela dit, je sais que vous ne vous améliorez en programmation qu'en procédant à la programmation.
Les employeurs potentiels prennent-ils en compte les programmes de loisirs dans une interview ou le demandent-ils simplement par curiosité?
Je me sens coupable de ne pas avoir de projet de loisir, mais tout ce que je peux penser a déjà été fait. Donc, je suis un peu dans deux esprits à ce sujet, commencer quelque chose qui a déjà été fait ou le laisser jusqu'à ce que je trouve quelque chose d'original?
Je me sens coupable de ne pas avoir de projet de loisir
Se sentir coupable est une raison folle de se lancer dans un projet de programmation. Probablement un bon moyen de commencer à détester la programmation aussi. Travaillez sur quelque chose parce que vous voulez , pas parce que vous pensez vous êtes censé .
mais tout ce que je peux penser de faire a déjà été fait.
Bah! Qui se soucie si c'est déjà fait? Refais-le! Fais le mieux! Ou, acceptez que vous ne puissiez pas le faire mieux et le faites de toute façon. Où serait Microsoft s'ils disaient "eh bien, quelqu'un a déjà créé une base de données/feuille de calcul/traitement de texte/système d'exploitation/IDE/chef de projet/gestionnaire de fonds/langage orienté objet dynamique à héritage unique/navigateur Web/serveur Web/lecteur de musique/plateforme mobile/moteur de recherche, nous allons donc chercher autre chose à faire ... "?
Sérieusement, si vous écrivez un serveur Web, il ne va probablement pas surpasser Apache, mais vous en tirerez certainement de précieuses leçons. Il est peu probable que vous vendiez Angry Birds, mais écrire un simple petit jeu vidéo vous en apprendra beaucoup aussi.
Je pense que les projets de loisir sont importants
J'utilise des projets de passe-temps pour tester des théories, des pratiques de conception, de nouveaux cadres que je n'ai pas à faire dans mon 9-5. c.-à-d. programmation fonctionnelle, algorithmes, modèles de conception, nouveaux cadres, nouveaux langages, etc.
Cela peut signifier la différence dans la rapidité et l'efficacité avec laquelle je peux aborder un nouveau projet au travail, ou même la différence dans le fait de prendre un nouveau projet chez un client ou de le manquer parce que je ne connaissais pas assez le domaine problématique.
Seul le fait de travailler quotidiennement 9-5 peut vous stagner en tant que développeur si vous n'introduisez pas de nouvelles choses ou de nouvelles idées. Pour moi, faire des projets de loisirs est un moyen de faire de moi un développeur meilleur, plus intelligent et plus efficace.
Les intervieweurs potentiels tiennent compte des projets de passe-temps
D'après mon expérience, si vous avez réalisé un projet de passe-temps dans une technologie connexe que votre employeur utilise ou "examine" actuellement. Vous obtenez des félicitations supplémentaires pour vous être déjà familiarisé avec la technologie en question. Cela est particulièrement pertinent pour les nouvelles technologies qui viennent juste de frapper le grand public où les règles du jeu sont égales en ce qui concerne l'expérience technologique.
Le problème avec votre emploi actuel est que vous n'avez probablement besoin que d'un ensemble limité de compétences pour exécuter votre fonction. Le monde de la programmation est si vaste qu'il est facile de se retrouver coincé année après année. Par la programmation de passe-temps, vous pouvez vous diversifier et être prêt pour d'autres technologies avant l'opportunité se présente soit dans votre position actuelle, soit ailleurs.
Mais il est important de réaliser que les programmeurs amateurs ne se contentent pas de programmer.
Mais parfois, ils sont inspirés d'écrire un programme pour répondre à leurs propres besoins spécifiques; le plaisir coupable d'un programmeur car il a exactement les fonctionnalités qu'il souhaite. Et puis ils s'en lassent et le jettent. C'est le luxe d'un passe-temps!
À mon humble avis, ce ne sont pas nécessairement des projets de loisirs en soi qui vous rendent meilleurs (bien qu'ils ne fassent pas de mal à coup sûr), mais rester ouvert et passer du temps à apprendre de nouvelles choses en général. Comme l'a noté @Rick, il peut prendre de nombreuses formes différentes en dehors du codage. Vous pouvez par exemple lire des livres - mais si vous avez un ordinateur portable, même du code - tout en vous rendant au travail.
Notez également que il faut absolument garder un équilibre.
Une dernière chose: il est facile de (suggérer) de travailler sur des projets de passe-temps alors que l'on est jeune et célibataire. À des stades ultérieurs, vous pouvez avoir une famille, ce qui éliminera la plupart de votre temps libre pendant de nombreuses années (du moins si vous voulez bien le faire - et quel est le point sinon?). Vous serez donc obligé de gérer votre temps plus efficacement, afin de gagner un temps précieux pour l'apprentissage.
Faites des projets parallèles! Ne pensez pas que cela apporte quelque chose de nouveau au Web, pensez-y comme mettant en pratique vos compétences, bac à sable pour apprendre/maîtriser les technologies et les approches.
En tant qu'employeur, j'ai toujours demandé à mes collègues potentiels s'ils faisaient des projets parallèles intéressants. Et même si ce n'étaient pas des idées spectaculaires, mais leurs auteurs ont montré de l'enthousiasme à ce sujet - c'était toujours un grand pro.
Les programmeurs que je rencontre et qui ont du mal à se tenir au courant des nouvelles technologies sont ceux qui le traitent comme un travail. Leurs homologues - ceux qui font suivent les nouvelles choses sont ceux qui font les choses à la maison.
Vous dites que tout ce à quoi vous pouvez penser a déjà été fait, mais chaque outil que vous utilisez fonctionne-t-il comme vous le souhaitez? Je trouve souvent que les outils font presque, mais pas tout à fait, tout ce que je veux, et mes projets de loisirs viennent d'essayer de combler le vide. Je ne réussis pas toujours, mais j'aime essayer, et en tant qu'utilisateur final, je n'ai aucun problème de motivation ou de spécifications
Si vous avez vraiment de l'intérêt et de l'énergie pour ces projets, faites-les certainement. Mais je n'irais pas jusqu'à dire que c'est un must pour tout programmeur sérieux. Si vous travaillez à plein temps avec la programmation, le faire pendant votre temps libre n'augmentera pas nécessairement votre intérêt pour elle, cela pourrait très bien avoir l'effet inverse. Personnellement, je faisais des projets de loisir, mais je me suis arrêté. Je programmais déjà 5 jours par semaine et il me semblait plus sain de faire quelque chose de complètement différent pendant mon temps libre.
De plus, si votre employeur ne vous donne pas la possibilité de tester de nouvelles choses au travail, d'étudier et de vous améliorer continuellement, vous devriez probablement chercher un nouvel emploi plutôt que de faire ces choses pendant votre temps libre. Un bon employeur se rendra compte qu'il est dans son intérêt de maintenir ses compétences à jour, améliorées et développées.
Du point de vue de l'employeur (j'en fais partie), les projets de passe-temps seront un mérite si vous n'avez aucune expérience de travail réelle. Tous les projets de loisir et d'école seront alors très importants à mentionner comme référence lors de l'entretien.
Mais si vous avez de l'expérience, ils sont moins pertinents: bien qu'ils puissent indiquer une passion pour votre métier, ils pourraient en même temps indiquer que vous êtes un peu un nerd. D'après mon expérience personnelle, je ne peux pas vraiment trouver de lien entre les projets de passe-temps et les bons/mauvais candidats, je ne pense pas qu'ils soient particulièrement pertinents, sauf si vous êtes fraîchement sorti de l'école et postulez pour votre premier emploi.
Je suis plus dans les quiz et les petits morceaux de code similaires que dans les projets à grande échelle (bien que j'essaie de travailler sur certains projets OSS si j'ai le temps). Donc pour moi, il n'y a pas beaucoup d'excuse pour dire que je n'ai pas une bonne idée de projet. Écrivez simplement un solveur Sudoku et essayez d'implémenter quelque chose comme Dancing Links pour le rendre plus rapide.
L'importance pour vous de devenir un meilleur développeur peut dépendre de votre travail. Si cela est déjà très exigeant, vous pouvez obtenir toute la formation dont vous avez besoin. Sinon, choisir le bon projet (ou le quiz à résoudre) vous apprendra de nouvelles choses et vous gardera en contact avec un large domaine d'expertise que de nombreux emplois n'offrent pas, car vous êtes souvent limité à utiliser un petit ensemble de des outils pour un domaine clairement défini.
Et oui, certaines entreprises sont très intéressées par vos projets. À tout le moins, ils vous donnent amplement l'occasion de parler de quelque chose que vous connaissez très bien lors d'un entretien.
Les projets de passe-temps eux-mêmes ne seront pas importants dans la plupart des interviews. Il y a quelques personnes qui se soucient que vous fassiez du codage comme passe-temps, mais la plupart n'en ont pas. TOUTEFOIS, les compétences que vous acquérez dans les programmes de loisirs peuvent être importantes dans une interview!
Une programmation supplémentaire sur le côté sera certainement avantageuse dans la programmation, au point que vous vous épuisiez ... Cependant, même au-delà du problème de l'épuisement professionnel, vous devez également considérer que les employeurs recherchent souvent d'autres compétences au-delà de la programmation. Si vous programmez 24/7, vous ne développez pas ces AUTRES compétences! Équilibre... :-)
D'une part, je pense que les projets de loisirs sont importants, car sinon vous stagnerez et perdrez le plaisir.
Ma suggestion pour trouver un nouveau projet hobby:
Apprenez un nouveau langage de programmation pour réaliser votre projet de loisir. Par exemple. un bon objectif est d'essayer d'apprendre une nouvelle langue par an (cela devient beaucoup plus facile plus vous en savez)
Le mieux serait celui qui vous semble totalement bizarre. Parce que plus il vous paraît étranger, plus il élargira votre horizon.
Connaître également de nombreux langages avec une syntaxe différente vous permet de vous concentrer sur la syntaxe comme étant importante lors de la programmation. Ce n'est qu'une représentation séquentielle d'arbres de syntaxe et peu important. Cela améliore votre concentration sur la sémantique qui est beaucoup plus utile dans la pratique.
Avez-vous essayé un langage de programmation fonctionnel? Avez-vous essayé des langages de programmation distribués? Langues d'appariement de motifs?
Pour trouver de petits projets sur lesquels travailler Project Euler est très recommandable.
D'autres ont beaucoup couvert, mais je veux me concentrer sur cette partie:
Je me sens coupable de ne pas avoir de projet de loisir, mais tout ce que je peux penser a déjà été fait. Donc, je suis un peu dans deux esprits à ce sujet, commencer quelque chose qui a déjà été fait ou le laisser jusqu'à ce que je trouve quelque chose d'original?
Il me semble que cela passe à côté d'un "projet de loisir". Il est certainement vrai que de nombreux projets de loisirs sont créés pour d'autres, ou du moins en fonction de la consommation publique - ces projets nécessitent un certain travail cohérent au fil du temps, et peuvent être décourageants pour cette raison. Après tout, qui veut faire encore un autre quelque chose ou autre sous-supporté et de mauvaise qualité qui est finalement abandonné après quelques mois?
Mais , il n'y a aucune raison que votre projet de passe-temps doive faire quoi que ce soit d'utile pour quiconque. Par exemple, j'ai récemment commencé à apprendre Haskell , uniquement parce que c'est tellement différent des langages impératifs auxquels je suis habitué, et c'est très facile à configurer. Je viens aussi de commencer à apprendre le Redcode langage assembleur, utilisé dans le jeu de programmation Core War , encore une fois par curiosité.
Cela, à mon tour, m'a amené à examiner création d'un plugin Notepad ++ pour fournir de meilleures fonctionnalités de mise en évidence de la syntaxe pour Redcode, ce qui m'a amené à considérer apprentissage d'un peu de C++ . En m'appuyant sur ma familiarité relative avec .NET, je réfléchis maintenant à me mettre en place avec Visual C++ .
Et le fait est que rien de tout cela n'a vraiment "d'importance", du moins pas en tant que projet. Enfer, je ne suis pas sûr que vous puissiez même appeler ça un projet en soi, autant qu'un tas de trucs avec lesquels je suis en train de déconner parce qu'il a attiré mon attention. Je veux dire, vous aurez besoin d'un peu de temps et d'organisation pour vous assurer que vous avez réellement obtenez quelque chose, mais personne ne s'en souciera si j'arrête d'avoir du temps pour Haskell une fois l'école commencée.
Et personne ne s'en souciera s'il s'avère que le développement de plugins pour Notepad ++ est plus difficile que prévu, et j'abandonne - en effet, j'ai regardé Perl avant de plonger dans Redcode, et je l'ai abandonné assez rapidement parce que j'avais du mal à obtenir le environnement correctement configuré. Cela montre-t-il un manque de persévérance? Ouais. Mais personne ne s'en soucie, parce que c'est mon hobby, et cela signifie que je peux jouer avec tout ce que je ressens.
Donc, ne vous sentez pas obligé de choisir un projet de passe-temps qui vous enseignera des compétences commercialisables - qui transforment simplement votre temps libre en un temps de travail non rémunéré. Les compétences viennent comme un résultat de ce que vous faites, mais ce n'est pas la raison. Je comprends mieux la programmation déclarative maintenant, et comment les langages d'assemblage fonctionnent, et comment les programmes utilisent les DLL. Et j'ai appris un tas de choses sur l'invite de commande Windows, et d'autres choses que vous n'auriez pas pensé être liées à tout ce que j'ai mentionné jusqu'à présent.
Le fait est de trouver quelque chose de complètement nouveau et de voir si c'est aussi intéressant qu'il y paraît. Si c'est le cas, super, et si ce n'est pas le cas, passez à autre chose. Avez-vous déjà eu la moindre curiosité pour les compilateurs ou les interprètes? Allez voir LOLCODE . Si cela vous rend aussi heureux que moi, alors il est temps de commencer apprendre sur les compilateurs . Et bon, vous devriez peut-être revenir en arrière et penser à nouveau à la coloration syntaxique. En fait, ce sera probablement le prochain projet que je démarre.
Si ce n'est pas votre truc, essayez quelque chose de niveau inférieur à celui auquel vous êtes habitué. Ou de niveau supérieur. Ça n'a pas d'importance. La seule chose qui fait importe, c'est que quand vous regardez-le, vous pensez "Fun!"
Je suis un développeur web amateur sans formation collégiale (encore) travaillant sur mon propre projet personnel. J'ai été invité à ma première interview pour un travail de programmation il y a quelques semaines parce que je travaillais sur mon propre projet personnel.
Compte tenu de ces preuves anecdotiques, travailler sur mon projet personnel "hobby" a été la meilleure chose que j'ai faite pour faire avancer ma carrière dans le développement ... après mon inscription à l'université.
Donc, oui, les intervieweurs prennent certainement en compte vos projets personnels, sinon ils n'auraient même pas pris la peine de me parler.
Je participe à des entrevues et à l'embauche dans mon magasin. Un "projet hobby" est toujours un plus pour nous.
Avoir un projet personnel plus ou moins terminé montre que vous aimez vraiment créer des logiciels et que vous êtes motivé pour apprendre de nouvelles choses et améliorer vos compétences.
Si vous voulez faire une impression vraiment positive dans une interview, apportez un ordinateur portable avec votre projet personnel. Montrez-le à l'intervieweur, parlez-lui des défis que vous avez rencontrés lors de sa construction, laissez-le voir votre code. Dites-leur d'avance où se trouvent les aspérités et quels pourraient être vos plans futurs pour le projet.
On se souviendra de vous, dans le bon sens.
Ces projets sont indispensables pour un programmeur sérieux, surtout si vous travaillez en tant que pigiste.
Au lieu de travailler 6 jours par semaine, 1 jour de repos, vous pouvez travailler 5 jours par semaine, 1 jour pour tester de nouvelles théories et fonctionnalités et 1 jour de repos.
Il peut sembler que la journée de test est une perte de temps, mais vous en reconnaîtrez les avantages lorsque vous aurez à implémenter une nouvelle fonctionnalité dans votre langage de programmation que vous avez déjà testée au cours de l'une de ces journées.
Je trouve que la programmation dans mon temps libre a deux objectifs:
1) Cela me permet d'accomplir quelque chose de gratifiant personnellement, sans les contraintes des projets de travail. Ceci est particulièrement important lorsque je fais face à des problèmes difficiles et frustrants avec mes projets de travail.
2) Cela me donne l'occasion d'élargir et d'affiner mes compétences en programmation, car je suis libre de créer ce que je souhaite.
Tout de même, je pense qu'il est également important d'équilibrer cela avec certains passe-temps non informatiques. Pour moi, c'est l'entretien du ruisseau et des sentiers derrière ma maison.
Avoir une application pour animaux de compagnie est un excellent moyen de vous forcer à apprendre des parties de votre plate-forme actuelle auxquelles vous n'avez peut-être pas pensé. Par exemple, vous pourriez être un excellent développeur C # travaillant sur une application ASP.Net au travail. Mais si vous avez un gars dans votre équipe dédié au CSS, vous pourriez ne jamais l'apprendre correctement. Cependant, si vous avez un projet Web pour animaux de compagnie, vous devrez apprendre à faire du CSS. Cela est vrai pour une multitude de technologies que vous rencontrerez si vous avez votre propre projet dont vous êtes le seul développeur.
Pour une grande écriture sur tous les avantages des applications pour animaux de compagnie, consultez ce poste .