Je travaille en tant que développeur de logiciels depuis environ 2 ans maintenant. Il semble évident que dans un domaine qui évolue aussi rapidement que le développement de logiciels, vous devez consacrer du temps à l'apprentissage de nouvelles technologies, de nouveaux cadres, etc.
J'ai toujours pensé que je pouvais tenir pour acquis que si j'ai besoin d'apprendre quelque chose pour résoudre un problème au travail, je suis libre de passer les heures nécessaires à l'apprendre au travail également. Cependant, j'ai eu des discussions à ce sujet avec divers collègues, et nous avions des opinions très différentes, apparemment sur la durée de deux extrêmes:
Votre employeur vous paie pour savoir des choses. Vous avez été embauché pour avoir des connaissances sur le domaine d'expertise requis pour faire ce travail, et si le domaine émerge pour que vous ayez besoin d'acquérir plus de connaissances, il est naturel que vous le fassiez pendant votre temps libre.
Et l'autre être extrême
Tout ce qui me rend plus productif au travail à long terme, vaut la peine d'y consacrer du temps, car l'employeur en profitera éventuellement. Cela s'applique bien sûr à l'apprentissage de nouvelles techniques, mais aussi, par ex. apprentissage VIM pour accélérer, etc.
Mais même en discutant du temps à consacrer à quelque chose avec les gars qui tendaient au deuxième extrême, nous étions d'opinions très différentes, allant de "une heure de temps en temps, ça va" à "le temps que cela prend".
Votre lieu de travail encourage-t-il l'apprentissage de nouvelles compétences et, dans l'affirmative, quels processus ont-ils pour encourager cela? Combien de temps passez-vous à apprendre de nouvelles choses (et à ne pas écrire de code de production) pendant votre journée en tant que programmeur?
Les managers (comme moi) hésitent à spécifier des budgets de formation explicites. Selon loi de Parkinson , un tel budget serait consommé ou même épuisé quels que soient les besoins réels en matière de développement des connaissances.
Si vous appelez simplement votre temps d'apprentissage travail de projet et gardez-le dans proportion raisonnable à votre travail global et à vos réalisations globales , personne ne s'y opposera. Le pourcentage varie et dépend de votre âge, de votre expérience et de votre zone de travail. Je considérerais entre deux et 15 jours de formation par an comme normal. Les nouveaux employés ont souvent besoin de plus.
Dans un environnement très innovant, le pourcentage d'apprentissage et de recherche est généralement plus élevé que d'habitude. Nous avons un programme de mentorat pour les développeurs juniors. Chaque fois que quelqu'un change de zone de travail, une formation supplémentaire est évidemment nécessaire.
Le problème d'apprentissage est une question de auto-marketing . Aucune équipe ne tolérerait un membre qui est constamment indisponible en raison d'un auto-apprentissage démonstratif ou d'une absence prolongée dans des cours de formation exotiques. Essayez de paraître bien informé sans utiliser des ressources excessives pour votre apprentissage. Le temps nécessaire au projet pour expérimenter et apprendre est généralement traité de manière discrète. Souhaitez-vous personnellement payer un artisan pour connaître votre marque de voiture?
Pour les lacunes dans les connaissances qui sont contrairement à votre description de poste , l'engagement privé serait pris pour acquis. Exemple: Si vous êtes censé être un développeur senior Java, vous ne devez pas demander une formation de base Java.
Le problème avec faire des choses pendant votre temps libre, c'est que vous avez besoin d'avoir du temps libre. Essayez d'être un père avec un jeune bébé! Essayez de travailler 14 heures par jour, puis trouvez du temps. Prendre le temps d'apprendre de nouvelles compétences doit être équilibré avec du temps pour se détendre et recharger. Je trouve aussi qu'avoir le temps de se détendre m'aide à résoudre les problèmes au travail. Je trouve assez souvent des solutions pour faire la vaisselle!
Dans les entreprises précédentes, j'ai introduit l'idée d'un métier. L'entreprise nous a donné une heure par semaine pour apprendre et nous l'avons jumelé avec une heure de notre temps. Les entreprises sensées devraient accueillir l'opportunité pour leurs employés d'acquérir de nouvelles compétences. Dans la même entreprise, d'autres programmeurs ont introduit l'idée de sessions de "sacs bruns", où nous passerions une heure de déjeuner à découvrir de nouvelles idées et compétences.
J'ai tendance à prévoir du temps supplémentaire pour mes projets afin de faire un peu d'apprentissage. Je vois également passer du temps sur des sites comme Stackoverflow, etc. comme apprendre de nouvelles choses pour une certaine tâche.
Je ne pouvais pas mettre le doigt sur une heure par jour ou des règles comme ça. Certains jours sont très productifs et très efficaces et d'autres jours, je viens de lire les livres ou de lire des trucs. La plupart du temps, les "journées d'apprentissage" entrent dans ma phase de planification de nouveaux projets.
J'ai aussi un long trajet pour aller au travail où je lis des trucs.
Fondamentalement, essayez simplement de découvrir ce qui vous convient le mieux sans vous sentir coupable ou simplement perdre du temps au travail. Tant que vous pouvez expliquer et justifier le temps passé à ne pas programmer, cela devrait aller dans la plupart des cas. Je pense que chaque développeur ou ingénieur devrait en savoir un peu plus sur son domaine d'expertise et surtout savoir où trouver des connaissances plus approfondies en cas de besoin.
Dans le livre The Clean Coder , l'auteur, Robert C. Martin, dit que vous avez besoin d'environ 20 heures par semaine pour pratiquer et acquérir de nouvelles compétences. C'est en plus de votre travail et c'est votre responsabilité de vous former. Pourquoi? Parce que la plupart des lieux de travail ne vous formeront pas pour votre prochain poste ou même votre poste actuel. La plupart des lieux de travail ne sont pas équipés pour cela.
Comme ce billet de blog dit ,
Il est de votre responsabilité de continuer à vous former en lisant, en pratiquant et en apprenant - en fait tout ce qui vous aide à vous développer en tant que développeur de logiciels et vous aide à vous adapter aux changements constants de l'industrie.
Une note importante est que cela devrait être fait sur votre temps libre, pas sur celui de votre employeur. Ce n'est pas leur responsabilité de vous former, mais la vôtre. Cependant, ne vous méprenez pas avec cela, vous devriez faire votre travail pendant cette période. Ce temps devrait être consacré uniquement à vous et à votre propre plaisir. Vous devriez faire tout ce qui vous intéresse.
L'apprentissage au travail se divise en 3 catégories principales:
le numéro 3 est de loin le plus courant - si vous parvenez à apprendre quelque chose de nouveau à l'heure de l'entreprise, sans que le patron s'en aperçoive, alors allez-y. Sachez simplement que l'amélioration personnelle ne fait presque jamais partie de votre emploi contractuel. Vous êtes payé pour fabriquer des produits pour votre employeur, pas pour vous former. Bienvenue dans le monde de l'esclavage salarié :-)
Je pense que ce problème est trop varié pour le résumer dans un petit ensemble de règles simples, alors je vais essayer de faire quelques exemples pour montrer mon opinion. (Peut-être qu'un scénario n'est pas très réaliste, prenez-le comme une abstraction).
Cas A:
Votre projet: Développer une application Web d'entreprise J2EE quelconque
Vos connaissances: Vous connaissez "Java Enterprise", mais c'est la première fois que vous mettez la main dessus (évidemment vous êtes un Junior)
Vous devriez: passer probablement bonne quantité de temps à apprendre les meilleures pratiques de programmation et à expérimenter avant de commencer le "vrai travail"
Cas B:
Votre projet: développer un analyseur d'une langue à une autre, de manière plus ou moins trivalente
Vos connaissances: Vous êtes un spécialiste du langage formel/analyseur avec des tonnes d'expérience.
Vous devriez: probablement ne pas passer de temps (ou très peu) à étudier ce que vous savez déjà ou à apprendre d'autres choses
Cas C:
Votre projet: développer une bibliothèque p2p pour Android
Vos connaissances: vous connaissez les réseaux, les sockets et le protocole TCP, il se trouve que vous ne connaissez pas le protocole UDP
Vous devriez: Passer un moyen temps à apprendre ce qu'est le protocole UDP et comment l'utiliser, si vous savez qu'il vous aidera dans votre projet.
Je pense que dans le monde informatique, une sorte d'apprentissage en travaillant est un fait naturel dans la plupart des cas, car les technologies continuent d'évoluer , et que même si vous pouvez être un professionnel, vous ne connaissez peut-être pas toutes les technologies que vous devez utiliser ou les tâches que vous devez faire toujours à 100%, car il y a vraiment beaucoup.
L'employeur doit également être conscient que les informaticiens ne sont pas des oracles et qu'exiger le développement d'une application web e-commerce n'est pas la même chose que l'achat d'une cabine de douche (je suis sûr qu'ils le sont tous).
Cela dit, étant donné qu'un employeur a toujours un projet sur lequel travailler, je pense qu'il devrait probablement concentrer ses apprentissages et ses expériences sur le but du projet, ou au moins sur le champ du projet, afin que ses connaissances évoluent en fonction de ses réalisations.