web-dev-qa-db-fra.com

Conseil de carrière: restez avec PHP ou commencez une nouvelle carrière dans autre chose (.Net?)

Je prévois de déménager à New York dans les 6 à 12 mois, donc je suis obligé de trouver un nouvel emploi. Quand je prévois commencer ma vie dans une autre ville, c'est aussi probablement le bon moment pour penser à des changements de carrière.

J'ai trouvé beaucoup d'opinions différentes sur PHP vs .Net vs Java et ce n'est pas le sujet ici. Je ne veux pas commencer un nouveau combat pour savoir quelle langue est meilleure. Connaître un langage de programmation n'est pas la chose la plus importante pour être développeur de logiciels. Pour être un très bon développeur, vous devez connaître la POO, les modèles de conception, les tests ... et un langage n'est qu'un outil pour faire bouger les choses.

Revenons donc à ma question. J'ai une expérience mixte en informatique - 1 an en tant que support informatique (administration et support Windows), environ 2 ans d'expérience en programmation embarquée (VB.Net 2005) et depuis 2 ans je travaille avec PHP/MySQL. J'ai travaillé avec la boutique Web de Magento, aidé dans certains projets dans Symfony, modifié quelques sites Drupal.

Mes principales préoccupations sont les suivantes:

  1. Dois-je continuer à améliorer mes compétences en PHP par exemple pour commencer à apprendre un framework PHP majeur comme Zend, Symfony peut obtenir une certification PHP.
  2. Ou dois-je commencer à apprendre .NET ou Java. Je suis plus familier avec .NET, donc je le choisirai probablement si le choix se situe entre .NET et Java (ou vous pourriez me convaincre de choisir Java :).

Côté carrière, je ne sais pas quel est le meilleur choix. Apprendre un nouveau framework et un nouveau langage prend plus de temps que d'améliorer mes compétences existantes en PHP. Mais avec .NET, vous avez beaucoup de possibilités (développement de Windows 7 Phone, Silverlight, WPF) et possiblement plus de chances de trouver de meilleurs emplois.

Les emplois PHP sont moins bien payés que .NET, du moins, selon mes recherches (corrigez-moi si je me trompe). Mais si je commence maintenant avec .NET, je ne suis qu'un débutant et mon salaire sera bas. J'ai besoin d'au moins 2+ années d'expérience dans une langue pour même essayer de trouver un emploi qui paie plus de 50 à 60 000 $ à New York. Mon objectif principal au cours des 2-3 prochaines années est d'essayer de trouver un emploi dans la catégorie 60-80k $. Ne vous méprenez pas, je ne cherche pas seulement de l'argent, mais l'argent est un facteur important lorsque vous essayez de fonder une famille.

J'ai 27 ans et je pense qu'il n'y a pas beaucoup de place pour de mauvaises décisions concernant ma carrière, donc tout conseil sera le bienvenu.

Mise à jour

Merci à tous d'avoir passé du temps pour m'aider avec mon problème. Toutes les réponses et commentaires ont été très utiles. J'ai décidé de rester avec PHP mais aussi d'apprendre C # et Silverlight 4. Nous verrons où la vie m'emmènera.

34
Christian P

J'ai 51 ans et j'ai utilisé au moins 15 langues et/ou frameworks depuis mon premier concert payant après l'obtention du diplôme en 1987.

Soyez bénis.

Je ne suis jamais entré dans la gestion parce que je ne le voulais pas, mais je sais programmer et je sais comment garder les équipes motivées et délivrer un bon code. Vous devez travailler sur les compétences des personnes et rechercher un travail intéressant qui vous étire. Je n'ai jamais cessé d'apprendre ou de m'amuser, mais il y avait des moments où j'étais sur la route que j'aurais pu arrêter - mais pas coder, voyager.

Tant que vous pouvez gagner votre vie et respecter vos engagements personnels sans compromettre vos principes, tant que vous aimez ce que vous faites (un luxe que la génération de mes parents n'a pas eu), continuez à continuer.

.Net et Java sont généralement des entreprises (car elles coûtent cher à faire des choses utiles, mais évoluent très bien), PHP est généralement le démarrage, je fais Ruby (généralement des startups qui sont sorties des studios de design pour une raison quelconque) pour beaucoup de gens en tant qu'indépendant. Si vous vous en tenez à PHP apprenez le OO stuff, parce que je pense que ça va finalement commencer à être la façon dont les gens font les choses, même si c'est une réimplémentation légèrement meilleure de ce que vous avez avec Java et ils pourraient avoir l'a rendu beaucoup plus dynamique. Les gens qui font Python et qui veulent voyager peuvent finir par faire toutes sortes de trucs scientifiques et de jeux intéressants partout dans le monde. Perl est toujours un coureur aussi et a un profil.

Oubliez la langue, choisissez et l'industrie que vous aimez, choisissez une entreprise gérée par des êtres humains et amusez-vous à offrir de la valeur aux personnes qui l'apprécient. Vous ne le regretterez pas.

64
Francis Fish

Qu'est-ce que le choix du langage de programmation a quoi que ce soit à voir avec votre carrière?

Cette question revient à demander: "J'ai deux choix pour un lieu de travail. Dois-je travailler à celui où le patron a un accent norvégien ou à celui où le patron a un accent espagnol?

Il y a beaucoup des considérations de carrière plus importantes.

  1. Démarrage ou entreprise établie?
  2. Entreprise de produits ou entreprise où l'informatique est une fonction de support?
  3. Allez-vous apprendre de nouvelles choses ou ressasser les anciennes?
  4. 9 à 5 ou "travailler 80 heures que vous voulez?"
  5. Bons collègues ou méchants collègues?
  6. Des collègues intelligents ou des collègues stupides?
  7. Costume et cravate ou t-shirt?

Cette liste pourrait durer des heures. Le choix d'un langage de programmation est à peu près aussi pertinent pour la carrière d'un programmeur que le choix de peigner ses cheveux vers la gauche ou vers la droite. C'est tout le développement de logiciels, quel que soit le dialecte du langage de programmation que vous parlez.

120
Joel Spolsky

Apprenez autant de langues que possible, de préférence au moins une de chaque domaine majeur de développement.

  • Langages de programmation scriptés (vous avez déjà PHP déjà, essayez Ruby, Python ou autre))
  • Compilé dans des langages de machine virtuelle avec des cadres riches: .Net, Mono, Java
  • Compilé au bare-metal: C/C++
  • Langages fonctionnels: LISP, F #, Haskell

Chacun d'eux vous apprendra quelque chose sur les principes fondamentaux du développement logiciel. Bien sûr, en plus de cela, vous devrez expérimenter différentes approches de conception (OO, fonctionnelles, pilotées par les données), différentes méthodes de travail en équipe (agile, tdd, par rapport aux types plus rigides), différentes plates-formes, différents mécanismes de déploiement (natif , basé sur un framework, web). La liste continue. La maîtrise de la langue n'est qu'une infime partie de l'ensemble.

Pour toutes ces choses, vous devez créer au moins un vrai produit en les utilisant pour être compétent.

Certaines personnes vous diront que vous devez vous spécialiser dans une technologie (PHP, .Net, Java) et construire une carrière largement autour de celle-ci pour progresser. Je ne suis pas du tout d'accord avec cela. Je prendrai un développeur qui a fait le tour du bloc à plusieurs reprises avec différentes plates-formes et technologies sur un qui a passé 10 ans à faire une chose n'importe quel jour de la semaine. La raison en est que la technologie change chaque année, et le développeur qui est capable de choisir une nouvelle technologie, de lire l'API et d'appliquer leur expérience de manière plus générale que de simplement connaître par cœur les fonctions de la bibliothèque, sera beaucoup plus productif dans le long terme. Ok, donc ce vétéran de .Net de 10 ans sera plus rapidement hors des blocs de départ dans .Net, mais cette avance précoce est perdue dans environ un mois. Ce n'est pas pertinent par rapport à l'image plus large d'être expérimenté dans une gamme d'approches et de technologies.

23
Steve Streeting

Je suggérerais de chercher un travail PHP parce que c'est ce que vous faites le mieux.

Je vous suggère également de commencer à vous renseigner sur les nouvelles technologies que vous souhaitez apprendre afin que vous puissiez éventuellement commencer à chercher des emplois en utilisant celles-ci, mais ne le faites pas dans un délai si court car vous constaterez que ces choses sont énormes et que les employeurs attendent vous en savez assez sur ces géants pour être productif. Cela nécessite du temps et de la pratique . Ne sous-estimez pas le temps et la quantité de pratique que vous aurez à faire.

Pour vous donner une estimation de ce dont "je peux programmer en Java", l'employé potentiel devrait être capable, vous pouvez jeter un œil au Sun Java Tutorial . [~ # ~] i [~ # ~] s'attendrait à ce que vous connaissiez au moins la moitié des concepts énumérés, où familier signifie pouvoir l'utiliser dans un programme écrit par vous et utilisez-le correctement . Je m'attendrais à ce qu'il prenne plus de 6 mois de temps libre pour étudier pour atteindre ce niveau.

7
user1249

Je déteste ressembler à un troll, mais la langue que vous devez apprendre est l'anglais. Il y a un tas d'erreurs dans votre message et cela semble bâclé. Si j'embauchais et que c'était votre curriculum vitae, peu m'importe les langages de programmation que vous disiez connaître, je supposerais que votre négligence avec la langue anglaise se répercuterait sur votre travail de programmation.

Il ne semble pas que vous arriviez à l'anglais comme langue seconde (je pourrais bien sûr me tromper), mais il y avait suffisamment d'erreurs grammaticales et d'orthographe pour donner à la plupart des gestionnaires d'embauche une pause. Puisqu'ils ne verront que votre mot écrit au début, vous devez le corriger.

6

La réponse à long terme à cette question est essentiellement ce que nos estimés hôtes (Joel Spolsky) et Steve Streeting ont dit. La programmation dans son cœur ne concerne pas les langages, il s'agit d'utiliser l'ordinateur pour résoudre des problèmes, et c'est un métier qui doit être appris et travaillé et réfléchi au fil du temps. Savoir coder ne fait pas d'un programmeur.

Mais vous avez posé un sujet pragmatique et sensible au temps .. que devez-vous faire MAINTENANT?

Je vous suggère de creuser dans PHP jusqu'au déménagement. Creusez dedans, dur, vraiment dur, 20 heures par semaine en dehors du travail dur. Avec PHP it est assez facile .. obtenir un compte d'hébergement et un domaine et commencer à créer des applications. Avec un effort ciblé, 6 mois est une éternité. Pendant ce temps, soyez vraiment bon dans ce domaine. Cela vous aidera à trouver un bon emploi une fois dans New York, et fera très probablement de vous un meilleur programmeur pour démarrer.

BTW .. si vous ne le saviez pas déjà, il y a site d'emploi informatique dans la famille StackExchange.

ALORS, lorsque la transition de la vie s'est un peu calmée, commencez à suivre le manuel de M. Streeting et à vous renseigner sur l'art de la programmation plutôt que sur le commerce du codage. Utilisez du temps en dehors du travail pour lire et faire des choses sur d'autres plates-formes et avec d'autres outils.

5
tomjedrz

Court terme; Je ne sais pas quelles sont les pratiques d'embauche aux États-Unis, mais étant donné que vous déménagez dans 6 à 12 mois, je voudrais, pour le moment, envisager de rester avec PHP puisque vous avez deux ans d'expérience avec elle.

Mon expérience ici (aux Pays-Bas) est que les entreprises ont tendance à se concentrer à très court terme sur les technologies et l'expérience cadre. Le langage n'est vraiment pas -il-, même s'ils demandent "ans d'expérience C #" ils veulent dire "ans d'expérience avec les bibliothèques de framework/class et les outils que vous ' d utiliser avec C # ".

(Sinon, pourquoi ils veulent embaucher quelqu'un qui a besoin de 3 ans pour apprendre la syntaxe C # et les fonctionnalités du langage me dépasse. Cela ressemble à quelqu'un que je ne voudrais pas embaucher.)

Apprendre de nouvelles langues; statique, dynamique, fonctionnel, est d'une grande valeur lorsqu'il s'agit d'élargir vos perspectives. Cependant, apprendre les bibliothèques de classe pertinentes et la façon de faire les choses dans cette langue nécessitera de l'expérience.

Je recommanderais de prendre une décision en choisissant une pile technologique et en l'apprenant profondément. Utilisez les autres environnements pour vous inspirer.

Bien sûr, les préférences personnelles entrent également en jeu. Par exemple, bien qu'il y ait beaucoup de marché pour cela, je n'accepterais jamais un travail PHP :-P Je choisis une pile et je recherche un emploi en fonction de cela.

Quant à faire carrière, à long terme, je pense que vous devriez regarder au-delà du codage (en fin de compte, il s'agit d'apprendre et de pouvoir lire et/ou parcourir la documentation) et la technologie du jour et de vous pencher davantage sur les compétences générales et autres. Les technologies vont et viennent assez rapidement. Bien sûr, il y a beaucoup à apprendre en matière de bonnes pratiques et de savoir-faire plus général, malheureusement elles sont rarement recherchées sur le marché du travail d'après mon expérience.

1
Joppe

Je pense que souvent les gens mélangent des langages de programmation et des frameworks/piles technologiques. Il est relativement facile d'apprendre une nouvelle langue, mais c'est beaucoup plus difficile avec les grandes technologies. Je suis d'accord avec certaines réponses que ce qui est le plus important est votre expérience globale de programmation/résolution de problèmes, mais je ne pense pas que quiconque puisse COMPRENDRE une technologie complètement nouvelle en 1 semaine.

Bien sûr, une grande partie des développeurs n'ont jamais lu un seul livre technique et ne comprennent pas les éléments constitutifs des technologies qu'ils utilisent. Ils se contentent de se frayer un chemin pour sortir des problèmes et sont très "efficaces". J'ai moi-même commencé ma carrière en PHP sans même comprendre comment HTTP fonctionne au début. Mais certains employeurs, que je respecte le plus, s'attendent à une compréhension approfondie de "comment les choses fonctionnent", simplement parce que cela tend à pour augmenter les chances de réussite de leurs projets.

Le moins que vous ayez à faire pour acquérir cette compréhension est de lire quelques bons livres avec suffisamment de temps pour créer des solutions aux problèmes courants dans un nouvel environnement de développement inconnu. Est-il possible de faire en une semaine? J'adorerais travailler avec des gens qui sont capables de cela, mais je n'espère pas voir de telles personnes de si tôt.

Certains employeurs sont en fait prêts à vous donner suffisamment de temps pour acquérir cette compréhension, en respectant votre expérience technique approfondie dans d'autres piles technologiques (si vous en avez une), mais malheureusement la plupart ne le sont pas.

De plus, lorsque vous changez de technologie, le plus important est votre personnalité - à quel point vous êtes humble et curieux de passer suffisamment de temps pour comprendre comment les choses fonctionnent et comment les choses se font dans votre nouveau domaine.

Donc, pour résumer, ma réponse serait la suivante. Choisissez une technologie qui a suffisamment de potentiel et qui (le plus important) vous rendra heureux dans votre travail. Spécialisé dans cette technologie, le marché du travail valorisera cela et quelques années nécessaires pour obtenir votre salaire cible en valent la peine. Mais ne soyez jamais trop zélé, passez du temps avec d'autres technologies, cela vous rendra un bien meilleur PROFESSIONNEL dans l'ensemble.

1
Konstantin

Je pense que le point principal est, finalement, un ingénieur logiciel devrait arriver à l'état où le langage est largement immatériel à la tâche à accomplir, sauf dans ses limites.

Que vous connaissiez ou non une langue ne devrait pas faire de différence, à condition d'avoir un manuel, pour accélérer le premier jour environ pendant que vous trouvez vos repères.

Cela dit, les langages propriétaires ont tendance à avoir moins de documentation et d'exemples répartis sur le Web, et sont donc plus difficiles à s'habituer et à poser un problème si vous souhaitez emporter votre travail avec vous.

1
Orbling

Mon conseil est de trouver un travail en faisant ce qui vous intéresse et de faire plaisir. Si vous aimez PHP, pourquoi ne pas continuer à développer vos compétences PHP. Il est beaucoup plus facile d'apprendre et de développer des compétences en faisant quelque chose qui vous intéresse.

Avez-vous déjà regardé .NET ou Java avant? Sinon, cela pourrait suggérer que vous n'êtes pas intéressé par ces langues, mais peut-être pourriez-vous passer une semaine environ à les regarder et voir pour vous-même si vous êtes intéressé par l'un ou l'autre.

1
cspolton

Je dois être d'accord avec Joel. Mais sa réponse va au-delà des compétences techniques et des préférences.

D'après mon expérience, ce sont généralement vos exigences professionnelles qui vous dirigent vers une technologie ou un langage de programmation spécifique, et non ce que vous aimeriez utiliser; à moins que ce soit une startup qui n'ait pas encore défini ce qu'ils vont utiliser. Et personne ne peut garantir que vous trouverez un emploi/une entreprise utilisant exactement ce que vous recherchez.

La vraie question est donc: êtes-vous doué pour apprendre de nouvelles choses? pouvez-vous résoudre un problème et le résoudre en temps opportun, quel que soit le langage de programmation?

Un bon programmeur doit bien connaître les concepts de construction et d'ingénierie logicielle. Votre question me fait croire que vous n'avez pas investi suffisamment de temps pour les apprendre, ce qui vous rend probablement incertain de vos compétences et de vos potentiels réels. Et honnêtement, si vous ne l'avez pas fait, il est temps que vous le fassiez, car sans ceux-ci, vous n'irez probablement pas loin.

Il y a une autre chose à laquelle la plupart d'entre nous, programmeurs, n'accordons pas d'attention avant d'avoir plus de 30 ans: les compétences en programmation ne représentent que la moitié des compétences qui font un bon programmeur. Êtes-vous un bon joueur d'équipe? Êtes-vous prêt à transmettre des connaissances à vos collègues aussi volontiers que vous (ou devriez) recevoir des connaissances des autres? Beaucoup d'entre nous sous-estiment les compétences relationnelles, alors qu'elles sont en réalité très importantes.

1
mspir

Je suis en désaccord avec la plupart des commentaires figurant sur ce forum.

Outre l'apprentissage des principes et de la théorie du génie logiciel, la langue que vous choisissez de maîtriser est un choix de carrière. C'est pourquoi il y a Java programmeurs et PHP programmeurs. PHP les programmeurs ne travailleront probablement pas pour la NASA et Java les programmeurs ne travailleront probablement pas pour une boutique en ligne.

Si vous voulez un emploi dans les entreprises américaines, vous feriez mieux d'aller sur Java/.Net. Un bon revenu en vous peut entrer mais soyez prêt à leur donner votre vie (en termes de temps).

Si vous voulez être un pigiste indépendant et vivre sur la voie rapide avec la technologie Web, vous êtes mieux avec PHP. Beaucoup de travail ici, mais le salaire varie considérablement et être indépendant, c'est travailler avec chaque Tom, Dick et Harry avec une idée qui essaie de vous embaucher pour quelques sous.

Il y a un certain chevauchement avec PHP et Java mais seulement visible dans les emplois d'entreprise (Java REST Services avec PHP front-end) mais vous le ferez ne trouve pas de boutiques en ligne ou de travail indépendant indépendant près de Java.

Les deux nécessitent beaucoup de temps et de dévouement si vous voulez être utile dans une situation donnée.

Pour être un développeur PHP compétent et recherché, vous avez besoin d'un sac rempli de compétences. On s'attend à ce que vous connaissiez CSS, HTML4/5, et certainement Javascript DOM/Ajax/Jquery, ainsi qu'au moins un cadre viable tel que Zend (le choix du goûteur de l'Amérique), Codeignitor, cakePHP, etc. et ensuite vous 'ai besoin de connaître les "trois grands" CMS: Drupal, Wordpress et Magento. Obtenez ces compétences sous votre ceinture et vous serez un PHP spécialiste avec la possibilité de décrocher du travail partout où vous allez. Comme vous pouvez le constater, tout cela est une dévotion pour un langage et ce sont des outils car apprendre Perl ne vous aidera pas à être un expert Drupal ou développeur Zend.

Il en va de même pour Java: OOP, J2EE, REST/SOAP, Spring/Struts, etc. et c'est une flotte d'autres outils qui prennent des années aux maîtres.

Est-ce que quelqu'un ici a essayé de coder Java pendant un an, puis est revenu à PHP (ou à tout autre langage de script). C'est difficile. C'est gênant.

Je travaille pour une entreprise Fortune 500 et les développeurs de Java ne pourraient pas faire ce que les développeurs de PHP font et les développeurs de PHP ne pourraient pas faire ce que Java les développeurs le font. Mais ils réussissent tous les deux financièrement, car ils sont spécialistes dans leur domaine, dans leur langue de prédilection et dans la panoplie d'outils qui l'accompagnent.

1
coder3

La langue et la plateforme ne sont pas si importantes. Apprenez des personnes solides et des compétences en science-fiction. Beaucoup de gens l'ont dit mais n'ont pas donné de détails alors laissez-moi le faire. Voici quelques trucs à apprendre

  • algorithmes et structures de données.
  • simultanéité
  • apprentissage automatique
  • programmation au niveau des systèmes
  • recherche d'informations et moteurs de recherche
0
jshen