Le casse-tête de l'apprentissage

Lorsque j'ai commencé à travailler dans le secteur des technologies de l'information en 1989, il était assez facile de choisir une direction. Au moins dans ma région (sud de la Floride), vous êtes entré dans l’un des domaines suivants:

  • Gestion de réseau et de systèmes
  • Administration des bases de données
  • Développement de logiciels
  • Tâches liées à la gestion de projet (y compris le travail d'assurance qualité)

ColdFusion était ma technologie préférée et elle m’a duré près de dix ans..

J'ai choisi la voie du développement logiciel et pendant très longtemps, il était facile de choisir un langage de programmation sur lequel vous pourriez baser votre carrière. Dans mon cas, j’ai commencé avec Clipper (un compilateur basé sur dBase) et j’ai finalement intégré le développement client-serveur à l’aide de PowerBuilder, ce dernier étant mon outil de travail depuis presque cinq ans..

Et même lorsque je suis entré dans le développement Web, les outils et les technologies restaient faciles à choisir, principalement parce que le Web était encore si jeune et que le développement du style d'actualisation de la page côté serveur post-back était simple. ColdFusion était ma technologie préférée et elle m’a duré près de dix ans. Et plus récemment, jQuery et JavaScript sont mon objectif depuis 2008..

Il y a une raison pour laquelle je vous raconte tout ça.


La roue de hamster

J'ai eu la grande chance d'avoir choisi des technologies qui ont eu une longue durée de vie, mais récemment, j'ai remarqué un changement radical dans l'industrie. La maturation du développement Web a entraîné une explosion de nouveaux outils destinés à aider à gérer le processus complexe de création d'applications Web et de sites Web sophistiqués. C’est en fait une très bonne chose, car pendant longtemps, le développement Web était comme l’ouest sauvage. La formalisation des modèles, des processus et des meilleures pratiques est certainement une chose positive et contribuera invariablement à la mise en place de systèmes beaucoup plus stables..

Et une bonne partie de cette explosion est due à la facilité d'accès à des langages de programmation sophistiqués et à des outils, dont beaucoup sont proposés gratuitement via la communauté open source. Cela a permis aux développeurs de repenser la manière dont les choses devraient être construites et de les habiliter à construire des outils incroyables..

Cette responsabilisation, cependant, peut être une arme à double tranchant pour la communauté des développeurs, car on a l'impression d'être sur une roue de hamster sans freins qui nous permettent de nous arrêter et de prendre les choses en main. C'est un cycle d'apprentissage perpétuel où Dans de nombreux cas, ne pas se tenir au courant des dernières tendances en matière de développement peut vous mettre incroyablement en retard sur les pratiques de développement actuelles. Je sais que je l'ai ressenti plus d'une fois et en parlant avec mes pairs, cela semble être un sentiment omniprésent.


L'évolution de l'apprentissage

Je pense qu'il est juste de dire que les développeurs de logiciels ont l'un des emplois les plus complexes du monde.

Vous entendrez constamment dire que notre domaine est un domaine d’apprentissage constant et que c’est tellement vrai. Les développeurs sont aujourd'hui des stars du rock et c'est parce que nous travaillons sur des projets de pointe qui ont un impact tangible sur de larges communautés de personnes. Et ces communautés exigent davantage d’informations via des expériences utilisateur plus faciles dans de nombreux facteurs de forme. Je pense qu'il est juste de dire que les développeurs de logiciels exercent l'une des tâches les plus complexes au monde. Donc, apprendre constamment n'est plus un choix; c'est une exigeance.

C'est pourquoi je mentionnais mon cheminement de carrière à ce jour. Je pense que cela ressemble à celui de beaucoup de mes pairs, où nous pouvions dépendre confortablement de savoir quelques "choses" pendant "x" années avant de devoir commencer à nous recycler. Si vous êtes dans le monde du développement Web, ce n'est plus le cas et, à mon avis, un déménagement limitant votre carrière. Je ne dis pas que vous devez partir et apprendre chaque nouvelle bibliothèque. Honnêtement, je pense que bon nombre des bibliothèques et des outils sont expulsés:

  • Sont destinés à gratter une démangeaison très spécifique
  • Répliquer un outil existant et offre peu de valeur ajoutée
  • Sont destinés à satisfaire l'ego de quelqu'un en "regardant ce que j'ai construit"

Mais il est clairement justifié de rester à la pointe des technologies émergentes, en particulier lorsque vous voyez vos pairs en parler. Et pour être clair, je ne définis pas les pairs de manière étroite comme ceux avec qui je travaille. Je regarde de près les personnes sur Twitter, Facebook, Google+, les blogs et les forums pour évaluer où en est leur pensée. Si vous ne faites pas la même chose, vous rendez un mauvais service à votre carrière..

En vieillissant (oui, je parle d'âge), pour la plupart des gens, le "temps" devient le principal facteur limitant pour rester à jour. Je peux en témoigner. À 45 ans, avec une tonne d’engagements familiaux, je dois être extrêmement discipliné pour pouvoir consacrer le "temps" nécessaire à l’apprentissage tout en veillant à consacrer ce "temps" à ma famille (priorité numéro un). . Et je suis convaincu que je ne suis pas seul dans cette énigme. Je repense à l'époque où j'avais 20 ans et que j'écrivais pour des magazines imprimés (vous vous en souvenez, n'est-ce pas?) Et mes collègues me demandaient: "Comment avez-vous le temps de faire cela?". Eh bien, la boucle est bouclée et je me retrouve à demander la même chose à mes amis développeurs de 20 ans.

Ce que j’ai appris, c’est que je ne peux pas me comparer à une vingtaine d’années car nos priorités sont dans la plupart des cas différentes. Un jeune homme aura invariablement plus de temps pour se concentrer sur les dernières nouveautés lui permettant de bricoler et même de construire ce prochain outil formidable. Et c'est génial et je me souviens de ces jours moi-même!

Au fur et à mesure que vous avancez dans votre carrière, il est important de ne pas vous laisser aller à la complaisance et d’élaborer un plan qui vous permettra de rester à jour en sélectionnant non seulement les technologies de votre choix, mais également les objectifs que vous envisagez d'atteindre..


Choix, choix, choix

Si vous examinez les technologies actuellement disponibles, il est facile de ne pas savoir où commencer, et encore moins de choisir. Je compatis avec vous et vous n'êtes certainement pas seul. Une partie du problème tient au fait qu'en tant que développeurs, nous sommes naturellement curieux de connaître les nouvelles technologies. J'aime l'appeler le syndrome "du papillon à la flamme":

  • Oh regarde, il y a une nouvelle bibliothèque pour imiter les composants Web! (flutter, flutter, flutter)
  • Cet influenceur vient de sortir ce nouveau préprocesseur! (flutter, flutter, flutter)
  • Oh mon dieu, voici le 4e SaaS qui offre des services d’arrière-plan en temps réel! (flutter, flutter, flutter)

La liste pourrait continuer encore et encore. Ce que j'essaie de comprendre, c'est que nous souffrons parfois d'un déficit d'attention et essayons de le rationaliser en pensant que cela résoudra immédiatement un problème inexistant ou futur pour nous. Essentiellement, nous sommes des accumulateurs de technologie qui font un "juste au cas où". En réalité, il est important de rester tranquille et de déterminer ce que vous essayez d'accomplir et comment la série d'outils actuelle résout vos problèmes en fonction de votre objectif..

Une partie du problème est qu'en tant que développeurs, nous sommes naturellement curieux de connaître les nouvelles technologies..

Par exemple, j'ai entendu tant de développeurs dire qu'ils voulaient apprendre iOS uniquement pour découvrir qu'ils n'avaient pas vraiment l'intention de créer une application iOS. Si vous avez le temps de le faire pour le plaisir, plus de pouvoir pour vous mais si vous ne le faites pas, c'est le temps qu'il faut consacrer à l'apprentissage de choses réellement importantes..

Par exemple, si vous êtes un développeur Web front-end et que vous envisagez de le rester pendant un certain temps, je pense pouvoir vous assurer que vous êtes au courant des choses telles que AMD, ES6, Sass et Yeoman est bien plus important que de plonger dans IPTables, ActiveRecord, WebView ou Amazon EC2. Avant que tout le monde ne perde la raison à cause de ce que je viens de dire, soyons clairs: si vous parvenez à apprendre toutes ces choses (par exemple, un développeur full-stack), vous aurez plus de pouvoir, volonté vous rendre plus précieux.

Ce que j'essaie de faire comprendre, c'est qu'au lieu de vous laisser submerger par l'idée d'apprendre à "utiliser toute la pile", limitez la portée à des objectifs plus faciles à gérer. Déterminez où est votre objectif de carrière, identifiez quelques technologies clés sur lesquelles vous devriez être à la pointe de la technologie et concentrez-vous sur celles-ci afin de rester pertinentes dans votre objectif de carrière.

Le tract développeur frontal, par exemple, est suffisamment impliqué et rester à jour vous tiendra occupé pendant une longue période. Lou Lazaris a écrit un article en 2011 intitulé "Compétences pour les développeurs front-end" et dans de nombreux cas, il est sur place. Si vous regardez sa liste, il est spécifiquement ciblé l'extrémité avant technologies qui sont importantes pour ce rôle. Cela renforce ma conviction qu'il est préférable de réduire la portée de ce que vous apprenez en morceaux gérables dans le rôle que vous occupez. Mais il est également important de filtrer des listes comme celles-ci encore plus loin. Est-ce que je pense que CoffeeScript est essentiel à mon succès en tant que développeur front-end? Absolument pas, raison pour laquelle je n'ai pas délibérément consacré de temps à cela.

Encore une fois, je ne préconise pas de ne pas apprendre autant que vous le pouvez. Bien que je sois clairement au début du processus, je travaille actuellement à l’apprentissage de Ruby et de Rails, car j’aimerais acquérir une nouvelle pile côté serveur pour compléter mes compétences. Pour moi, cela signifie sacrifier l’apprentissage de l’utilisation de quelque chose comme Yeoman, mais j’ai pris le temps de déterminer la proposition de valeur de suivre cette voie et je pense que cela en vaut la peine pour moi..


Apprendre quelque chose

L'apprentissage vient dans différents styles. J'apprends mieux par:

  • Lire un livre (un vrai avec des pages de papier)
  • Taper des exemples de code et voir les résultats
  • Ayant un mentor je peux poser des questions de

D'autres préfèrent simplement plonger dans quelque chose et apprendre par l'école de coups durs. Quel que soit le moyen d’apprendre, disposer de bonnes ressources est un élément essentiel de l’équation..

De plus en plus, je me suis tourné vers les cours en ligne, car ils ont mûri à un point où, dans de nombreux cas, leur qualité est comparable à celle de leurs frères sur place. Ils offrent également la flexibilité de vous permettre de faire des choses selon votre propre calendrier (presque toujours) et de vous concentrer sur les technologies qui sont importantes pour vous..

Dans mon cas, je me suis récemment inscrit à One Month Rails qui m'a proposé:

  • La flexibilité: Je participe à mon emploi du temps sans avoir à sacrifier des quantités énormes de mon temps personnel
  • L'abordabilité: C'est 49 $ 99 $ et semble être bien structuré pour le prix.
  • Mentorat: Je peux contacter le créateur du cours directement et avoir le soutien de sa communauté

Quelles que soient les options d’apprentissage disponibles, si vous ne réservez pas un temps d’apprentissage dédié, cela n’est pas pertinent..

Je vois cela comme une opportunité exceptionnelle qui sera complétée par des sites tels que Nettuts + et Tuts + Premium, ainsi que par des livres et des contacts de ma communauté. Mais en fin de compte, la flexibilité et le rythme du cours me permettront d’apprendre quelque chose de nouveau en temps voulu. Le coût est certainement un facteur à peser par rapport aux avantages d'apprentissage attendus et aux compétences actualisées qui en résultent..

Le fait qu’il existe de nombreuses options d’apprentissage en ligne (dont beaucoup sont gratuites) facilite considérablement la mise à jour de vos compétences, en particulier si vous êtes méthodique sur ce que vous souhaitez apprendre (par exemple, ne soyez pas un papillon de nuit).

Mais vous devez prendre le temps d'apprendre. Quelles que soient les options d'apprentissage disponibles, si vous ne réservez pas un temps d'apprentissage dédié, cela n'a aucun sens. J'ai personnellement constaté que passer une à deux heures, deux à trois fois par semaine, immédiatement après le travail, semblait bien fonctionner, car mon esprit est toujours en mode développeur. J'ai récemment discuté avec un ami qui trouve préférable de se lever très tôt (6h du matin) et de se concentrer sur l'apprentissage au cours des premières heures de la matinée avant de commencer à travailler. De cette façon, il est frais et concentré, libre de toutes distractions et de préoccupations concernant son travail..

Mon bon ami et développeur badass, Joe McCann, a formulé ces commentaires intéressants:

"Le peu de connaissances que j'ajouterai, c'est que la première chose que j'ai apprise en étudiant la philosophie à l'université n'était pas ce que j'apprenais, mais comment j'apprenais réellement des choses. Comprendre véritablement comment on apprend, comprend, etc. est la clé pour apprendre une nouvelle compétence ou améliorer les compétences actuelles..

Si quelqu'un apprend en lisant un livre, en écrivant des notes ou en l'entendant par le biais de conférences, tout cela est disponible et peut être utilisé maintenant en ligne. Il s’agit de comprendre comment on apprend, puis de partir et de chercher le médium approprié pour le faire.."

Bien dit.


Ressources d'apprentissage

Il va sans dire que je pense que Nettuts + et les différentes propriétés d’Envato offrent certaines des meilleures options d’apprentissage en ligne. En outre, voici quelques sites d'apprentissage que j'ai utilisés et que je recommande:

  • Codeacademy: Apprenez JS, Ruby, Python et plus via leur site interactif
  • Ember 101: Ryan Florence a fait un travail extraordinaire en créant des screencasts qui vous guident tout au long du processus d'apprentissage d'Ember
  • Pourquoi Poignant Guide to Ruby: Il faut s’y habituer, mais c’est une excellente ressource pour apprendre Ruby.
  • Egghead.io: concentré presque exclusivement sur AngularJS et recommandé par de nombreux membres de la communauté
  • Le didacticiel Ruby on Rails: C’est le didacticiel de goto pour tous ceux qui débutent avec le développement Rails.

Si vous voulez quelque chose d'un peu plus structuré et hardcore, une nouvelle tendance est celle des bootcamps sur site où vous passerez beaucoup de temps à apprendre à utiliser les dernières technologies. Notez simplement que beaucoup d’entre elles exigent que vous vous déplaciez vers le lieu où le bootcamp est organisé et que vous y consacriez tout votre temps pendant plusieurs semaines. En outre, ces cours coûtent des milliers de dollars en échange d’une expérience d’apprentissage plus personnelle. J'ai personnellement participé au camp d'entraînement du Bloc.io mais je n'ai pas eu besoin de déménager. Bien que je n’aie pas pu le terminer en raison de contraintes de temps, je le recommanderais. Voici quelques exemples de bootcamps qui ont reçu beaucoup de succès:

  • Bloc.io: Cours bien structuré qui vous familiarisera avec les technologies les plus récentes et vous fournira un mentorat en ligne par e-mail, chat ou voix. Ne vous oblige pas à bouger.
  • Hacker School: Basé à New York, ce camp d'entraînement sur site vous permet d'acquérir des compétences en programmation à temps plein en ruby ​​et python.
  • The Starter League: sur site à Chicago, en Illinois, et partenariat avec 37signals (fabricants de Basecamp) pour améliorer leur expérience d'apprentissage.

Le site BootCamper a rassemblé une liste des différents camps de démarrage disponibles et en a fourni des informations de manière consultable..


Se décoller

L'essentiel est de continuer à apprendre et de le faire à un rythme raisonnable et de manière réfléchie.

Je voulais écrire quelque chose comme ça depuis un moment. C'est un peu égoïste, car cela m'a aidé à prendre conscience de ce que j'ai ressenti d'être submergé par la roue d'apprentissage des hamsters. Au fil du temps, j'ai cherché des moyens de rester au courant des choses sans m'épuiser et je me suis rendu compte qu'il est impossible de rester au courant de tout, même dans mon propre créneau. Il y a juste trop de développeurs qui construisent trop de choses refroidissent et pas assez "temps".

J'ai donc décidé de me concentrer sur des choses qui sont opportunes et pertinentes, mais qui ne sont peut-être pas à la pointe de la technologie et qui constituent le nouveau jouet cool. Je trouve que c’est un moyen d’apprentissage beaucoup plus facile à gérer pour moi. Et je pense aussi qu’il est important de revenir sur ce qui a fait ses preuves et qui n’est peut-être pas le dernier modèle de voiture mais qui peut vous réserver de belles surprises sous le capot. Je repense à l'excellent post de Jeff Atwood "Why Ruby?" où il discute de son choix d'utiliser Ruby pour construire Discourse et aborde spécifiquement la maturité et le manque de fraîcheur de Ruby.

L'essentiel est de continuer à apprendre et de le faire à un rythme raisonnable et d'une manière réfléchie. Réfléchissez vraiment à l’avenir de votre carrière, décrivez les éléments clés dans lesquels vous devriez être bon et développez un plan pour rester à jour. Il y a beaucoup de flammes là-bas et vous n'avez pas besoin de battre des ailes pour chacune d'entre elles..

J'aimerais beaucoup apprendre comment vous restez à jour, alors assurez-vous de proposer vos suggestions dans les commentaires..