Dois-je me concentrer sur la profondeur ou la largeur [fermé]

10

Je suis développeur professionnel depuis un peu plus de six mois et j'ai été étonné de voir à quel point le monde est vraiment hors de l'université. J'ai continué à apprendre pendant mon temps libre mais je me demande où dois-je me concentrer?

FOCUS 1) La pile de développement utilisée par mon entreprise. Le gain le plus rapide dans mon développement quotidien. #Deepest

FOCUS 2) Une langue différente avec le même paradigme. Voyez si je peux généraliser mes connaissances et ma façon de penser.

FOCUS 3) Langage différent, paradigme différent. Élargissez mes frontières et apprenez de nouvelles façons de faire. #Broadest

Si quelqu'un a un objectif différent, n'hésitez pas à le faire.

Bob Roberts
la source

Réponses:

18

Oui.

Je dirais que vous devez faire les deux. Commencez avec le n ° 1 car cela a un gain immédiat, et vous ne faites pas cela depuis très longtemps. Mais vous devez absolument faire certaines des étapes 2 et 3.

Marcie
la source
Bon plan, me rendre immédiatement plus utile augmentera ma valeur dans l'entreprise tandis que les deux derniers augmenteront ma valeur en tant que développeur en général.
Bob Roberts
Exactement. Bien que je pense que vous le constaterez au cours de votre carrière, vous valoriser en tant que développeur en général augmentera également votre valeur dans l'entreprise. Le gain peut cependant être de quelques années.
Marcie
1
Peut-être que la réponse devrait être "Les deux" au lieu de "Oui". En regardant le titre de la question et la réponse, je suis confus.
Amr
1
J'ai découvert qu'en apprenant une nouvelle langue ou un nouveau paradigme, je deviens plus efficace au n ° 1 - je pense que c'est parce que le fait d'avoir une expérience plus large vous donne différentes perspectives sur la façon de résoudre un problème particulier. Même leçon apprise que: Si vous n'avez qu'un marteau, chaque problème commence à ressembler à un clou.
Bryan Rehbein
25

Lorsque les gens me demandent des conseils de carrière, votre question est l'une des premières que je leur pose. Je ne pense pas que quiconque puisse répondre à cette question pour vous; Je pense que vous devez décider par vous-même si vous concentrer sur la profondeur ou l'étendue est plus susceptible d'atteindre vos objectifs de carrière.

La dernière fois que j'ai changé d'équipe, j'ai eu deux opportunités: travailler sur l'équipe des outils de développement XBOX, ou travailler sur l'équipe du compilateur C #. J'ai réalisé que cela se résumait à une largeur vs une profondeur. Au sein de l'équipe XBOX, je pourrais travailler un jour sur les systèmes de sécurité, les systèmes audio le lendemain, la vidéo, la mise en réseau, l'interface matérielle, vous l'appelez. Bien sûr, certaines personnes sont des experts, mais tout le monde doit savoir un peu tout. Dans l'équipe du compilateur C #, je pouvais plonger dans un langage et un compilateur et vraiment comprendre le tout en profondeur.

J'y ai beaucoup réfléchi et j'ai décidé que j'étais plus apte à être tempéramental à être un expert sur une chose plutôt qu'un dilettante sur plusieurs. C'était un bon choix pour moi, mais ce n'est peut-être pas pour vous. Certaines personnes ont beaucoup de succès en sachant un peu de tout.

Mon conseil est donc de renverser la question. Déterminez quel type de personne vous êtes, puis voyez si votre entreprise a des opportunités pour quelqu'un comme vous. Sinon, trouvez-en un qui le fait.

Eric Lippert
la source
Avec le recul de qui vous êtes, ce post est vraiment épique. :)
ashes999
12

Être spécialiste peut vous coûter plus cher. Mais les opportunités d'emploi nécessitant un tel niveau seront limitées, tant en nombre qu'en zone géographique.

Être un généraliste paie peut-être moins, mais vous ouvre une grande variété de possibilités d'emploi, potentiellement dans le monde entier.

Pour les emplois de niveau supérieur et de gestion, il est préférable d'avoir une personne expérimentée dans une variété de choses, de techniques et de technologies. Connaître les bords et être capable de voir une vue d'ensemble fait de vous un atout précieux.


la source
Oh, je n'ai même pas pensé au-delà de mon emploi actuel (même si j'espère que ce sera un séjour à long terme).
Bob Roberts
3

Je pense qu'à votre stade de développement, obtenir une certaine profondeur est la première priorité. Je vois trop de gens qui en savent un peu sur un tas de choses mais qui ne peuvent pas passer le niveau d'entrée parce que toutes leurs connaissances sont au niveau d'entrée.

Si je voulais être un spécialiste, clairement, la profondeur de construction est le meilleur premier choix.

Si je veux être généraliste, créez d'abord la profondeur (atteignez au moins le niveau intermédiaire) dans une pile, puis dérivez-vous vers d'autres langues. Si vous développez d'abord une certaine profondeur, vous trouverez peut-être plus facile de développer la profondeur dans plusieurs langues, car vous avez plus de concepts à votre disposition et en savez plus sur ce que vous voudrez peut-être apprendre. Ensuite, je me ramifiais un peu dans autre chose. Revenez ensuite et augmentez la profondeur au niveau avancé, puis ramifiez-vous et apprenez plus de choses très différentes de ce que vous savez déjà. Ensuite, augmentez cette profondeur dans une zone différente à un niveau intermédiaire, réapprenez quelque chose d'autre, etc.

Attention - je suis un spécialiste donc je suis clairement en faveur de la profondeur des connaissances

HLGEM
la source
1

Les deux options ont leur place. Se concentrer sur la pile de développement utilisée par votre entreprise vous aidera dans votre travail, mais l'apprentissage d'autres technologies vous aidera dans votre carrière.

À la fin des années 1990, les compétences COBOL étaient très demandées par les entreprises qui devaient préparer leurs logiciels pour l'an 2000. Mais quiconque ne connaît encore que COBOL aujourd'hui aura beaucoup plus de mal à trouver du travail.

De la même manière, la technologie d'aujourd'hui sera obsolète bien avant que la plupart d'entre nous ne soient prêts à prendre leur retraite, il est donc essentiel d'apprendre de nouvelles compétences et technologies.

Bruce Alderman
la source
0

Allez-y et apprenez quelque chose comme Haskell ou un Lisp. L'apprentissage d'un langage fonctionnel m'a vraiment obligé à découpler mon code, ce qui rend le débogage plus simple. Le seul problème que vous pourriez rencontrer est que vous ne voulez pas revenir en arrière.

http://book.realworldhaskell.org/read/

http://lisperati.com/haskell/

http://learnyouahaskell.com/

Theo Belaire
la source
C'est correct, apprenez la programmation fonctionnelle, quant à moi, je vote pour OCaml ou F #
0xFF
F # s'intégrerait bien avec C # ou d'autres choses .net sur lesquelles vous travaillez. Juste quelque chose à garder à l'esprit. Clojure fonctionne bien avec Java.
Theo Belaire