it-swarm.dev

Est-il préférable de se spécialiser dans un seul domaine que j'aime ou de s'étendre à d'autres domaines pour élargir mes horizons?

C'est un dilemme auquel je réfléchis depuis longtemps.

Je suis un étudiant diplômé et mes sujets d'intérêt sont la conception de langage de programmation, l'analyse de code, la compilation, etc. Jusqu'à présent, ce domaine a été très intéressant et gratifiant pour moi, donc je pensais à trouver un emploi dans ce domaine et continuer de s'y spécialiser. J'ai l'impression que c'est un domaine relativement solide qui ne "se démodera" pas de si tôt. J'ai toujours pensé que dans des domaines aussi complexes, il vaut mieux être un vrai expert que juste un autre gars qui comprend superficiellement ce dont parlent les experts.

D'un autre côté, je pense qu'en me spécialisant de cette façon, je limite vraiment mon option future. J'ai toujours été un fervent partisan des approches multidisciplinaires des problèmes. Peut-être que je devrais aller chercher un travail de programmation générale dans lequel je pourrais acquérir de l'expérience dans d'autres domaines, ainsi que de temps en temps appliquer mon domaine préféré pour résoudre des problèmes. Se spécialiser dans un ou deux domaines seulement peut m'empêcher de sortir des sentiers battus et provoquer une stagnation.

J'aimerais vraiment entendre plus d'opinions sur ce choix. La vérité est que je penche déjà vers l'un des choix, donc la psychologie de base dit que rien ne changera d'avis, mais j'aimerais quand même entendre des commentaires.

31
Oak

Spécialisez si vous l'appréciez

Comme vous le savez, si vous vous spécialisez, vous encourez automatiquement un coût d'opportunité dans la mesure où vous ne serez pas immédiatement éligible pour d'autres technologies (par exemple Java ne sont pas souvent immédiatement acceptés pour l'optimisation du compilateur) Cependant, vous devez équilibrer cela avec votre amour de la complexité inhérente à votre discipline choisie.

Vous dites que vous voulez être un expert - allez-y et prenez le temps d'apprendre la discipline que vous avez choisie. En tant que communauté, nous avons toujours besoin de nouveaux experts. Cependant, mon conseil est de suivre la recommandation pragmatique du programmeur de "Apprendre une nouvelle langue chaque année". De cette façon, pendant que vous vous lancez dans une analyse lexicale approfondie de l'encodage algorithmique, vous pouvez également créer une petite application iPhone qui vous intéresse sur le côté. Vous ne savez jamais, la pollinisation croisée de différents paradigmes peut vous donner un aperçu qui étendra votre spécialisation dans de nouveaux domaines.

21
Gary Rowe

Je pense que cela dépend de ce que vous attendez de votre carrière ...

Sur le plan technique: Être un jack de tous les métiers signifie que vous pouvez postuler pour une plus grande variété de rôles que quelqu'un qui est extrêmement spécialisé. Si vous voulez être adaptable et vous déplacer sans être lié à un créneau particulier, ce n'est probablement pas trop mal. Cependant, l'inconvénient est que vous serez probablement confiné à un niveau relativement junior/intermédiaire de rôles, sauf si vous approfondissez un domaine particulier.

Se spécialiser dans un domaine donné est à peu près le contraire de ce qui précède. Vous serez probablement en mesure d'obtenir un statut et des revenus plus élevés (si vous êtes dans un bon créneau avec une forte demande bien sûr), mais vous risquez de devenir un pigeonnier dans cette spécialité dans une large mesure.

Donc, au sens large, ces deux sont les choix au niveau technique.

Au niveau politique: Si vous parlez de "progression de carrière" en termes de passage à la gestion et autres, alors peu importe ce que vous faites techniquement. Pratiquement tous ceux que je connais qui sont passés à la direction après avoir occupé un poste de programmeur l'ont fait en apprenant très bien à connaître les personnes et les processus métier dans leur organisation. Certains étaient des spécialistes et d'autres étaient des généralistes (en termes de technologie avec laquelle ils travaillaient) - mais TOUS étaient très profondément ancrés dans l'organisation, connaissaient bien les personnes et les processus, et il était simplement devenu logique pour eux de commencer à assumer ces responsabilités.

Donc, dans un sens de base, si vous voulez faire progresser votre carrière en termes de progression dans la hiérarchie de gestion, il s'agit de jouer à la politique. Être un généraliste ou un spécialiste n'a pas autant d'importance (seulement peut-être devenir un peu spécialiste des processus et de la technologie que vous allez gérer).

20
Bobby Tables

Tout d'abord, les offres d'emploi exagèrent souvent le niveau de spécialisation requis. Aucune entreprise ne met "nous avons besoin d'un gars qui connaît un peu Javascript parce que nous ne savons rien" dans une offre d'emploi; ils ont mis "Javascript expert" là-dessus parce que, toutes choses étant égales par ailleurs, ils aimeraient avoir quelqu'un qui était en fait un expert. Cela ne signifie pas nécessairement que seuls les experts sont qualifiés pour tout ce que cette entreprise doit faire en Javascript (et vous seriez surpris de voir combien de fois ils ne savent même pas ce qu'ils doivent faire). Alors ne vous inquiétez pas trop d'être un "expert"; postulez pour des emplois où vous maîtrisez les compétences annoncées et voyez comment les choses se passent dans l'entretien. Être bon dans un travail, c'est bien plus que simplement combien d'années de [insérer la langue] vous avez sous votre ceinture. Et si le travail est gratifiant, vous pourriez devenir un expert.

Il s'agit de "trouver" un emploi; pour "garder" un emploi, être JOAT peut être merveilleux. Si votre entreprise commence à explorer différentes langues et plates-formes, vous serez en avance sur le jeu. Si votre entreprise basée sur MS a soudainement besoin d'un gars UNIX pour quelque chose, vous serez son go-to (pour être ce type ou gérer l'embauche d'un "expert"). Garder un emploi, c'est être indispensable quoi qu'il arrive, et JOAT est un bon moyen d'être ce type.

De plus, cela rend beaucoup plus facile de trouver un nouvel emploi lorsque votre entreprise fait faillite :)

10
E.Z. Hart

Eh bien, oui et non. Le problème est que vous ne serez jamais une rock star. Vous ne serez jamais ce type qui peut faire des choses avec C que personne d'autre ne peut faire. Votre manque de concentration empêche ce genre d'excellence.

D'un autre côté, lorsque la direction décide qu'elle ne peut pas se permettre une tonne de programmeurs, elle ne tire pas vous, pour garder lui. La flexibilité a ses avantages.

Je suis Jack et mon département a connu une réduction de 80% au cours des 4 dernières années. Pourtant, je suis là. C'est en partie parce que je suis plus flou que la plupart. I comme se voir confier une tâche dont je ne sais rien, et mes patrons aiment le fait que je dis "Bien sûr!" peu importe la merde de cul qu'ils viennent. Et, quand vous comprenez la situation dans son ensemble, c'est une sorte de rockstardom que la plupart des spécialistes n'atteignent jamais, et cela peut être lucratif.

Donc, si vous cherchez à être une rock star, vous devez vous concentrer, car personne ne peut être meilleur que tout le monde. Mais si vous recherchez la stabilité, choisissez la flexibilité, car être flexible est plus commercialisable que d'être un mauvais cul.

7
Satanicpuppy

Cela dépend de votre carrière. Je pense que cela devrait aider votre carrière si vous voulez être consultant général, démarrer votre propre entreprise, travailler pour une petite entreprise ou dans toute autre situation où ce type de flexibilité est un atout reconnu. Je suis dans la même situation et travaille actuellement en tant que consultant, bien que je poursuive une spécialisation en .NET/C #/SQL/ASP.

Dans la même veine, est-il possible de faire carrière en étant polyvalent avec la technologie, ayant un large éventail (quoique peu profond) d'expérience, mais sans se spécialiser dans une technologie particulière?

Oui, je pense que vous pourriez rechercher des petites entreprises qui ne peuvent pas embaucher quelqu'un pour chaque domaine de spécialisation, ou être consultant.

(Ce n'est pas non plus une mauvaise idée de choisir un domaine dans lequel vous allez vous spécialiser, en plus de maintenir vos compétences plus générales.)

3
vjones

Generalist vs. Specialist est un article de CIO.com mais il existe probablement des dizaines d'articles similaires ou de blogues de personnes essayant de voir si l'un est meilleur que l'autre. Chacun a ses avantages et désavantages. Quiconque veut dire que l'un l'emporte totalement sur l'autre peut très bien être biaisé dans une certaine mesure.

N'oubliez pas qu'il y a une illusion possible de chaque côté de votre choix. Ce que vous voyez comme une spécialisation peut avoir différentes saveurs. Par exemple, considéreriez-vous les développeurs Web dans leur ensemble comme des spécialistes ou des généralistes? Certains pourraient voir cela comme une spécialisation et d'autres peuvent encore le voir comme étant assez large car de nombreuses applications basées sur le Web peuvent de nos jours avoir toutes sortes de composants qui peuvent nécessiter une expertise différente dans une certaine mesure.

Bien que les domaines que vous énumérez me feraient penser que vous vouliez travailler pour une société de logiciels, certaines parties des technologies de l'information pourraient utiliser des compétences similaires d'une certaine manière. Vous pouvez savoir dans quelle mesure la personnalisation est effectuée sur divers logiciels standard pour le faire fonctionner et dans quelle mesure est-ce un investissement pour la plupart des entreprises de donner un exemple standard.

3
JB King

D'un autre côté, je pense qu'en me spécialisant de cette façon, je limite vraiment mon option future.

Rappelles toi. Votre avenir s'étend sur des décennies.

La technologie actuelle aura considérablement disparu à mesure que de nouvelles opportunités se présenteront.

La spécialisation ne fait aucun mal.

Je me suis spécialisé dans le poinçonnage de cartes papier pour écrire des programmes COBOL. Maintenant, j'écris Python et je n'ai pas touché une carte en papier perforé depuis des décennies.

La technologie va et vient. Tout ce que vous vous spécialisez maintenant aura disparu dans une décennie et vous vous spécialiserez dans autre chose. Ou vous deviendrez obsolète.

S'inquiéter de "l'expérience dans d'autres domaines" est une perte de temps. Vous obtiendrez cette expérience, que vous le vouliez ou non.

3
S.Lott

Lorsque j'engage des développeurs, je privilégie les personnes ayant de la force et de l'expérience dans les compétences particulières que je recherche. Les recruteurs vont amplifier considérablement ce biais. Cela signifie que même si je pourrais vous embaucher (et j'aime les personnes ayant de vastes compétences et de bonnes connaissances fondamentales qui peuvent apprendre), je ne vais probablement jamais vous parler.

Moi-même, j'ai toujours été un homme à tout faire et j'ai eu beaucoup de titres de fonction différents dans la même entreprise où j'ai travaillé la majeure partie de ma carrière. Pourtant, je redoute en quelque sorte la perspective de devoir chercher un emploi et je ne pense pas que je pourrais facilement décrocher un autre emploi à mon salaire actuel (ce qui est largement satisfaisant, mais les gens ici me connaissent).

2
Jeremy

comme d'habitude...

Ça dépend

Cela dépend de ce que vous entendez par "carrière". Plus précisément, cela dépend de ce que vous pensez que vous entendez par "carrière".

Ces jours-ci, je travaille beaucoup avec des applications Web. Quand j'ai commencé cette carrière, le World Wide Web n'existait pas. Donc, dans une très large mesure, la réponse de @ Satanicpuppy est dans le mille.

Il y a quatre avantages qui viennent avec le territoire jack-of-all-trades (JOT):

  1. La volonté et la capacité d'apprendre tout ce qui est nécessaire pour faire le travail
  2. La sagesse de savoir ce que vous ne savez pas
  3. L'humilité de le dire et de demander de l'aide en cas de besoin.
  4. Un grand sac de trucs à travers plusieurs frontières de domaine

Le principal inconvénient est: cela prend beaucoup, beaucoup plus de temps pour Excel, car vous poussez la courbe d'apprentissage sur plusieurs fronts.

Suis-je aussi bon DBA que certains amis qui n'ont rien fait d'autre que ça depuis 15 ans? Bien sûr que non. Puis-je voir en un instant des solutions qu'ils n'imagineront jamais en quinze jours? Oui.

Le meilleur conseil, je pense, est de continuer à être un JOT jusqu'à ce que vous trouviez quelque chose de si fascinant, si convaincant que vous voulez le faire et seulement jusqu'à la fin des temps. Ce "ça" sera votre spécialité.

J'aime résoudre de nouveaux problèmes difficiles, rechercher des innovations pour tuer le banal et apprendre continuellement - c'est mon "ça", et c'est la raison pour laquelle j'aime I.T.

Être généraliste est ma carrière.

2
Steven A. Lowe

Je pense que l'une des raisons pour lesquelles les entreprises recherchent et apprécient davantage les personnes spécialisées remonte à abstractions qui fuient . Le problème est qu'au cours des 30 dernières années environ, les ingénieurs logiciels ont augmenté le nombre de couches d'abstraction de façon exponentielle et autant que nous aimerions nous assurer qu'il n'y a pas d'effets secondaires, ils surgissent toujours. Et ce sont les idiosyncrasies non documentées qui ont tendance à vous attraper.

Vous pouvez peut-être commencer à utiliser rapidement les nouvelles technologies en lisant les spécifications et les exemples en ligne, mais avez-vous déjà remarqué que lorsque vous démarrez quelque chose de nouveau, vous passez 20% de votre temps à écrire du code pour une fonctionnalité et 80% de votre temps à rechercher le bug le plus étrange tu as déjà vu? Lorsque vous devenez un expert dans un domaine, cette ration passe de 20/80 à 95/5 (je compose des chiffres, mais en général ils sont probablement proches) spécifiquement dans ce domaine. Ce qui signifie que vous pouvez fournir du travail beaucoup plus rapidement et éviter les pièges/bugs courants avant même qu'ils ne se produisent. Par exemple, plus tôt dans la journée, l'un de nos ingénieurs principaux (nouveau dans l'équipe/produit) a passé plus d'une demi-journée à rechercher un problème de corruption de pile qui m'a pris 5 minutes à identifier car il s'agissait de mon propre terrain.

En devenant un expert dans votre domaine, vous deviendrez plus visible et plus précieux pour la direction. Je ne connais pas les autres entreprises, mais dans celles où j'ai travaillé, votre rémunération (au moins en partie) dépend de l'importance de vos responsabilités. JOAT n'a généralement pas de responsabilités permanentes. Au lieu de cela, les managers les utilisent comme des ressources mobiles/interchangeables (notre VP les appelle des couteaux de l'armée suisse) qui peuvent être déplacés d'une équipe à l'autre en fonction de la demande. Vous pouvez donc rester dans l'entreprise pendant 10 ans, puis regarder en arrière et vous rendre compte que vous n'avez jamais acquis une seule responsabilité. J'ai un très bon ami (qui est également un excellent développeur C++/C #, mais qui est aussi un très bon JOAT car il prendra n'importe quel travail) qui a été transformé en un tel rôle. Je sais qu'il n'est pas content parce que même si j'ai un morceau très important et amusant du produit comme terrain de jeu, il est principalement un invité temporaire dans la terre de quelqu'un d'autre. Mais maintenant, il ne peut plus s'en sortir.

Cela dit, avoir les compétences de JOAT est tout aussi important, donc même si je n'essayerais pas nécessairement de me positionner comme JOAT, je pense qu'il est important de continuer à lire/étudier/apprendre de nouvelles choses parce que la technologie évolue et même si vous êtes un expert aujourd'hui, vous devrez peut-être devenir un expert dans quelque chose de complètement différent demain.

2
DXM

je dirais absolument.

Mais vous allez devoir aller le chercher, il ne sera pas affiché dans un journal ou une offre d'emploi en ligne (la probabilité est faible). Donc, au lieu de chercher des emplois spécialisés, vous devriez peut-être chercher des emplois qui correspondent à votre variété de forces. "Marginally well" est subjectif, peut-être que vous êtes trop dur avec vous-même, modeste aussi, mais c'est une bonne chose (-:

De plus, bien que vos expériences et votre expertise soient importantes, les employeurs sont plus intéressés par votre capacité à produire des résultats. Demandez-vous: Que puis-je faire avec ma variété de connaissances et d'expériences qui améliore les résultats de cette entreprise ? Sans voir votre curriculum vitae, certains titres que je peux penser du haut de ma tête sont Ingénieur Solutions, Architecte (Réseau, Application, etc.), ou même un CTO.

Enfin, mon conseil est de faire carrière de ce que vous aimez. Vous devrez le faire pendant plus de 8 heures par jour pendant de nombreuses années, et vous pourriez aussi bien aimer ce que vous faites à ce rythme ( -;

HTH, et meilleurs voeux,

KM

1
KM.

Il est vrai que la plupart des offres d'emploi jouent contre eux en étant trop spécifiques ou trop exigeants. Ils sont écrits comme des publicités (probablement pour montrer à quel point ils sont puissants), mais cela empêche certains grands profils de s'appliquer en raison des raisons que vous énoncez dans votre question.

Voici l'offre d'emploi que j'utilise:

Description du poste et de la personne

Au moins 4 ans d'expérience avec .NET Framework. La connaissance de technologies spécifiques n'est pas requise. Les candidats doivent être des apprenants rapides et être capables de démontrer un enthousiasme pour apprendre de nouvelles choses. Nous voulons des gens qui:

  • sont intéressés par les médias numériques
  • voir les difficultés comme des opportunités
  • faire avancer les choses et ne sont pas pilotés par CV sont
  • intéressé par le côté commercial de
  • leur travail a l'esprit startup. Langue: français OR anglais

Compétences (non requises mais chacune sera un atout):

  • .NET Framework 4.0
  • nHibernate ou Entity Framework
  • Composants DevExpress
  • LINQ
  • WCF
  • HTML/CSS/Javascript
  • ExtJs

Comme vous le voyez, à l'exception de l'expérience globale avec .NET, aucune autre connaissance n'est vraiment requise. Cependant, ce qui est requis, c'est la capacité de se pencher sur de nouvelles choses.

Étant donné que vous ne pouvez pas contrôler la façon dont les entreprises rédigent leur description de poste, vous devez les considérer comme des opportunités d'apprentissage.

Quand je vois une offre d'emploi très exigeante, je vois cela comme une opportunité d'apprendre de nouvelles choses. Pendant l'entrevue (si je comprends), j'explique que puisque ma motivation est d'apprendre et de faire avancer les choses, je ne serais pas trop affecté par le manque d'expérience dans l'une des technologies énumérées.

En fait, c'est comme ça que j'ai appris si vite: en choisissant des emplois exigeants.

1
user2567