it-swarm.it

Consiglio di carriera: rimanere con PHP o iniziare una nuova carriera in qualcos'altro (.Net?)

Sto programmando di trasferirmi a New York tra 6-12 mesi, quindi sono costretto a trovare un nuovo lavoro. Quando sto programmando di iniziare la mia vita in un'altra città, probabilmente è anche un buon momento per pensare ai cambiamenti di carriera.

Ho trovato molte opinioni diverse su PHP vs .Net vs Java e questo non è l'argomento qui. Non voglio iniziare una nuova lotta su quale lingua è migliore. Conoscere un linguaggio di programmazione non è la cosa più importante per essere uno sviluppatore di software. Per essere uno sviluppatore davvero bravo devi conoscere OOP, modelli di progettazione, test ... e una lingua è solo uno strumento per far accadere le cose.

Quindi torna alla mia domanda. Ho un'esperienza mista nell'IT - 1 anno come addetto al supporto IT (amministrazione e supporto di Windows), circa 2 anni di esperienza nella programmazione integrata (VB.Net 2005) e negli ultimi 2 anni lavoro con PHP/MySQL. Ho lavorato con il web shop Magento, ho collaborato ad alcuni progetti in Symfony, modificato alcuni Drupal siti.

Le mie principali preoccupazioni sono le seguenti:

  1. Continuo a migliorare le mie capacità in PHP ad es. per iniziare ad apprendere alcuni dei principali framework PHP come Zend, Symfony potrebbe ottenere una certificazione PHP.
  2. O inizio a imparare .NET o Java. Ho più familiarità con .NET, quindi probabilmente lo sceglierò se la scelta cade tra .NET e Java (o potresti convincermi a scegliere Java :).

Per quanto riguarda la carriera, non so quale sia la scelta migliore. Imparare un nuovo framework e una nuova lingua richiede più tempo che migliorare le mie competenze esistenti in PHP. Ma con .NET hai molte possibilità (sviluppo di Windows 7 Phone, Silverlight, WPF) e possibilmente maggiori possibilità di trovare lavori migliori.

I lavori PHP sono meno pagati di .NET, almeno, secondo la mia ricerca (correggimi se sbaglio). Ma se inizio ora con .NET sono solo un principiante e il mio stipendio sarà basso. Ho bisogno di almeno 2+ anni di esperienza in alcune lingue per cercare anche di trovare un lavoro che paghi più di $ 50-60.000 a New York. Il mio obiettivo principale nei prossimi 2-3 anni è cercare di trovare un lavoro nella categoria $ 60-80.000. Non fraintendermi, non sto solo inseguendo i soldi, ma i soldi sono un fattore importante quando stai cercando di creare una famiglia.

Ho 27 anni e sento che non c'è molto spazio per decisioni sbagliate sulla mia carriera, quindi qualsiasi consiglio sarà molto gradito.

pdate

Grazie a tutti per aver dedicato del tempo ad aiutarmi con il mio problema. Tutte le risposte e i commenti sono stati molto utili. Ho deciso di restare con PHP ma anche di imparare C # e Silverlight 4. Vedremo dove mi porterà la vita.

34
Christian P

Ho 51 anni e ho usato almeno 15 lingue e/o framework da quando ho ottenuto il mio primo concerto pagante dopo la laurea nel 1987.

Salute.

Non sono mai entrato nel management perché non volevo, ma so come programmare e so come mantenere i team motivati ​​e fornire un buon codice. Devi lavorare sulle abilità delle persone e cercare un lavoro interessante che ti allunghi. Non ho mai smesso di imparare o divertirmi, ma ci sono stati momenti in cui ero in viaggio che avrei potuto fare fermandomi - ma non programmare, viaggiare.

Finché puoi guadagnarti da vivere e rispettare i tuoi impegni personali senza compromettere i tuoi principi, purché ti piaccia quello che fai (un lusso che la generazione dei miei genitori non ha avuto) continua a continuare.

.Net e Java sono generalmente aziendali (perché sono costosi per fare cose utili, ma scalano davvero bene), PHP è generalmente l'avvio, lo faccio Ruby (di solito startup che sono uscite dagli studi di progettazione per qualche motivo) per molte persone come indipendenti. Se rimani con PHP impara OO cose, perché penso che finalmente inizierà a essere il modo in cui le persone fanno le cose, anche se è una reimplementazione leggermente migliore di ciò che hai con Java e potrebbero avere reso molto più dinamico. Le persone che fanno Python e vogliono viaggiare possono finire per fare ogni sorta di cose scientifiche e di gioco interessanti in tutto il mondo. Perl è ancora un corridore e ha un simile profilo.

Dimentica la lingua, scegli e l'industria che ti piace, scegli un'azienda gestita da esseri umani e divertiti a offrire valore alle persone che lo apprezzano. Non te ne pentirai.

64
Francis Fish

Cosa diavolo ha a che fare la scelta del linguaggio di programmazione con la tua carriera?

Questa domanda è come chiedere: "Ho due scelte per un posto di lavoro. Dovrei lavorare in quello in cui il capo ha un accento norvegese o in quello in cui il capo ha un accento spagnolo?"

Ci sono molto considerazioni di carriera più importanti.

  1. Startup o società consolidata?
  2. Azienda o azienda del prodotto in cui l'IT è una funzione di supporto?
  3. Imparerai cose nuove o ripasserai il vecchio?
  4. 9 a 5 o "lavorare ogni 80 ore che desideri?"
  5. Simpatici collaboratori o cattivi colleghi?
  6. Collaboratori intelligenti o stupidi collaboratori?
  7. Abito e cravatta o maglietta?

Questo elenco potrebbe continuare per ore. La scelta di un linguaggio di programmazione è altrettanto rilevante per la carriera di un programmatore quanto la scelta se pettinare i capelli a sinistra oa destra. È tutto sviluppo del software, indipendentemente dal dialetto del linguaggio di programmazione che stai parlando.

120
Joel Spolsky

Impara quante più lingue puoi, preferibilmente almeno una da ciascuna delle principali aree di sviluppo.

  • Linguaggi di programmazione con script (hai PHP già, prova Ruby, Python o qualcos'altro)
  • Compilato in linguaggi di macchine virtuali con framework avanzati: .Net, Mono, Java
  • Compilato in bare metal: C/C++
  • Linguaggi funzionali: LISP, F #, Haskell

Ognuno di questi ti insegnerà qualcosa sui fondamenti dello sviluppo del software. Naturalmente, oltre a ciò dovrai sperimentare diversi approcci di progettazione (OO, funzionali, basati sui dati), diversi metodi di lavoro di gruppo (agile, tdd, rispetto a tipi più rigidi), piattaforme diverse, meccanismi di distribuzione diversi (nativi , basato su framework, web). L'elenco continua. La padronanza della lingua è solo una piccola parte del tutto.

Per tutte queste cose, è necessario realizzare almeno un prodotto reale utilizzandoli per essere competenti.

Alcune persone ti diranno che devi specializzarti in una tecnologia (PHP, .Net, Java) e costruire una carriera in gran parte attorno a quella per fare progressi. Non sono affatto d'accordo. Prenderò uno sviluppatore che è stato in giro un paio di volte con piattaforme e tecnologie diverse su una che ha trascorso 10 anni a fare una cosa ogni giorno della settimana. Il motivo è che la tecnologia cambia ogni anno e lo sviluppatore che è in grado di raccogliere una nuova tecnologia, leggere l'API e applicare la propria esperienza in modi più generali rispetto alla semplice conoscenza delle funzioni della libreria a memoria, sarà molto più produttivo nel lungo termine. Ok, così il veterano di 10 anni .Net sarà fuori dai blocchi di partenza in .Net più velocemente, ma quel vantaggio iniziale andrà perso in circa un mese. È irrilevante rispetto al quadro più ampio dell'esperienza in una vasta gamma di approcci e tecnologie.

23
Steve Streeting

Suggerirei di cercare un PHP perché è quello che fai meglio.

Ti suggerirei anche di iniziare a istruirti sulle nuove tecnologie che vuoi imparare in modo da poter iniziare a cercare lavoro usando quelli, ma non farlo entro una scadenza così breve perché scoprirai che queste cose sono enormi e che i datori di lavoro si aspettano di conoscere abbastanza di questi colossi per essere produttivi. Ciò richiede tempo e pratica . Non sottovalutare la quantità di tempo e la quantità di pratica che dovrai fare.

Per darti una stima di cosa dovrebbe essere capace un potenziale dipendente "Posso programmare in Java", puoi dare un'occhiata al Sun Java Tutorial . [~ # ~] i [~ # ~] si aspetterebbe che tu abbia familiarità con almeno la metà dei concetti elencati, dove familiare significa essere in grado di usarlo in un programma scritto da te e utilizzarlo correttamente . Mi aspetto che impieghi più di 6 mesi a studiare per raggiungere quel livello.

7
user1249

Odio sembrare un troll, ma la lingua che dovresti imparare è l'inglese. Ci sono un sacco di errori nel tuo post e questo sembra solo sciatto. Se assumessi e questo fosse il tuo curriculum, non mi importerebbe di quali linguaggi di programmazione hai detto di conoscere, suppongo che la tua sciatteria con la lingua inglese si ripercuoterebbe sul tuo lavoro di programmazione.

Non sembra che tu stia arrivando all'inglese come seconda lingua (potrei, ovviamente, sbagliarmi) ma ci sono stati abbastanza errori grammaticali e di ortografia da mettere in pausa la maggior parte dei responsabili delle assunzioni. Dal momento che vedranno solo la tua Parola scritta all'inizio, devi risolverla.

La risposta a lungo termine a questa domanda è fondamentalmente ciò che hanno detto il nostro stimato Host (Joel Spolsky) e Steve Streeting. La programmazione alla base non riguarda i linguaggi che riguarda l'uso del computer per risolvere i problemi, ed è un mestiere che deve essere appreso, elaborato e pensato nel tempo. Saper codificare non rende uno un programmatore.

Ma hai chiesto un argomento pragmatico e sensibile al tempo .. cosa dovresti fare ADESSO?

Ti suggerisco di scavare in PHP fino al trasloco. Scavaci dentro, duro, davvero duro, 20 ore a settimana fuori dal lavoro duro. Con PHP esso è abbastanza facile ... ottenere un account di hosting e un dominio e iniziare a creare app. Con uno sforzo mirato, 6 mesi sono un'eternità. Nel frattempo, diventerai davvero bravo in questo. Questo ti aiuterà a trovare un buon lavoro una volta in Nuovo York, e molto probabilmente ti renderà un programmatore migliore per l'avvio.

A proposito .. se non lo sapevi già, c'è un sito di lavoro IT nella famiglia StackExchange.

ALLORA, quando la transizione della vita si è stabilizzata un po ', inizia a seguire il libro di gioco del signor Streeting e istruirti sull'arte della programmazione piuttosto che sul commercio della codifica. Usa del tempo fuori dal lavoro per leggere e fare cose su altre piattaforme e con altri strumenti.

5
tomjedrz

Breve termine; Non so quali siano le pratiche di assunzione negli Stati Uniti, ma considerando che ti trasferirai tra 6 ~ 12 mesi, per il momento, prenderei in considerazione di restare con PHP poiché hai due anni di esperienza con esso.

La mia esperienza qui (nei Paesi Bassi) è che le aziende tendono a concentrarsi a brevissimo termine sulle tecnologie e sull'esperienza quadro. Il linguaggio in realtà non è -it-, anche se chiedono "anni di esperienza in C #" intendono dire "anni di esperienza con le librerie e gli strumenti del framework/classe che sta usando con C # ".

(Altrimenti, perché vogliono assumere chiunque abbia bisogno di 3 anni per imparare la sintassi C # e le funzionalità del linguaggio è oltre me. Sembra qualcuno che non vorrei assumere.)

Imparare nuove lingue; statico, dinamico, funzionale, è di grande valore quando si tratta di ampliare le tue prospettive. Tuttavia, imparare le biblioteche di classe pertinenti e il modo di fare le cose in quella lingua richiederà esperienza.

Consiglierei di prendere una decisione scegliendo uno stack tecnologico e imparandolo a fondo. Usa gli altri ambienti come fonte d'ispirazione.

Naturalmente anche le preferenze personali entrano in gioco. Ad esempio, mentre c'è molto mercato per questo, non accetterei mai un PHP :-P scelgo uno stack e cerco una ricerca di lavoro basata su quello.

Per quanto riguarda la carriera a lungo termine, penso che dovresti guardare oltre la programmazione (alla fine si tratta di imparare e saper leggere e/o sfogliare la documentazione) e la tecnologia del giorno e cercare di più nelle competenze trasversali e simili. Le tecnologie vanno e vengono piuttosto rapidamente. Ovviamente c'è molto da imparare quando si tratta di buone pratiche e di know-how più generale, purtroppo nella mia esperienza sono raramente cercati sul mercato del lavoro.

1
Joppe

Penso che spesso le persone mescolino linguaggi di programmazione e framework/stack tecnologici. È relativamente facile imparare una nuova lingua, ma è molto più difficile con le grandi tecnologie. Concordo con alcune risposte sul fatto che la cosa più importante è la tua esperienza complessiva di programmazione/risoluzione dei problemi, ma non credo che nessuno possa CAPIRE una tecnologia completamente nuova in 1 settimana.

Certo, una gran parte degli sviluppatori non ha mai letto un singolo libro tecnico e non capisce i mattoni delle tecnologie che stanno utilizzando. Si limitano a uscire dai problemi e hanno molto "successo". Ho iniziato la mia carriera in PHP senza nemmeno capire come funziona HTTP all'inizio. Ma alcuni datori di lavoro, che rispetto di più, si aspettano una profonda comprensione di "come funzionano le cose", semplicemente perché questo tende aumentare le possibilità di successo dei loro progetti.

Il minimo che devi fare per acquisire questa comprensione è leggere un paio di BUONI libri con abbastanza tempo per prototipare soluzioni a problemi comuni in un nuovo ambiente di sviluppo non familiare. È possibile farlo in una settimana? Mi piacerebbe lavorare con persone in grado di farlo, ma non spero di vederle presto.

Alcuni datori di lavoro in realtà sono pronti a darti abbastanza tempo per acquisire questa comprensione, rispettando la tua profonda esperienza tecnica complessiva in altri stack tecnologici (se ne hai uno), ma sfortunatamente la maggior parte non lo è.

Inoltre, quando si cambiano le tecnologie, la cosa più importante è la tua personalità: quanto sei umile e curiosa spendere abbastanza tempo per capire come funzionano le cose e come vengono fatte le cose nella tua nuova area.

Quindi, per riassumere, la mia risposta sarebbe la seguente. Scegli una tecnologia, che ha un potenziale sufficiente e che (soprattutto) ti renderà felice nel tuo lavoro. Specializzato in questa tecnologia, il mercato del lavoro lo apprezzerà e ne varrà la pena qualche anno per ottenere il tuo stipendio target. Ma non essere mai troppo zelante, passare un po 'di tempo con altre tecnologie, ti renderà un PROFESSIONISTA molto migliore nel complesso.

1
Konstantin

Penso che il punto principale sia che, alla fine, un ingegnere del software dovrebbe arrivare allo stato in cui la lingua è in gran parte irrilevante rispetto al compito da svolgere, tranne nei limiti.

Indipendentemente dal fatto che tu conosca una lingua o meno, non dovrebbe fare la differenza, purché tu abbia un manuale, solo per accelerare per il primo giorno circa mentre trovi i tuoi cuscinetti.

Detto questo, le lingue proprietarie tendono ad avere meno documentazione ed esempi diffusi sul Web, e quindi sono più difficili abituarsi e porre un problema se si desidera portare a casa il proprio lavoro.

1
Orbling

Il mio consiglio è di trovare un lavoro facendo quello che ti interessa e divertirti. Se ti piace il PHP, perché non continuare a sviluppare le tue abilità PHP. È molto più facile imparare e sviluppare abilità facendo qualcosa che ti interessa.

Hai mai guardato .NET o Java prima? In caso contrario, ciò potrebbe suggerire che non sei interessato a quelle lingue, ma forse potresti passare una settimana circa a guardarle e vedere se sei interessato a entrambi.

1
cspolton

Devo essere d'accordo con Joel. Ma la sua risposta va oltre le capacità e le preferenze tecniche.

Nella mia esperienza è di solito il tuo fabbisogno di lavoro che ti indirizza verso una specifica tecnologia o un linguaggio di programmazione, non quello che vorresti usare; a meno che non sia una startup che non ha ancora definito ciò che stanno per usare. E nessuno può garantire che troverai un lavoro/un'azienda che utilizza esattamente ciò che stai cercando.

Quindi la vera domanda è: sei bravo a imparare cose nuove? puoi risolvere un problema e risolverlo in modo tempestivo, indipendentemente dal linguaggio di programmazione?

Un buon programmatore dovrebbe essere ben consapevole della costruzione del software e dei concetti di ingegneria del software. La tua domanda mi fa credere che non hai investito abbastanza tempo per apprenderli, il che probabilmente ti rende incerto delle tue capacità e quali sono i tuoi potenziali effettivi. E onestamente, se non l'hai fatto, è tempo che lo fai, perché senza quelli probabilmente non andrai lontano.

C'è un'altra cosa a cui molti di noi programmatori tendono a non prestare attenzione prima di avere più di 30 anni: le abilità di programmazione sono solo la metà delle abilità che rendono un buon programmatore. Sei un buon giocatore di squadra? Sei disposto a trasmettere la conoscenza ai colleghi con la stessa volontà con cui (o dovresti) ricevere conoscenza dagli altri? Le abilità delle persone sono sottovalutate da molti di noi, mentre in realtà sono molto importanti.

1
mspir

Non sono d'accordo con la maggior parte dei commenti elencati in questo forum.

Oltre all'apprendimento dei principi e della teoria dell'ingegneria del software, la lingua che scegli di padroneggiare è una scelta professionale. Ecco perché ci sono Java programmatori e PHP programmatori. PHP i programmatori probabilmente non funzioneranno per la NASA e Java i programmatori probabilmente non lavoreranno per un negozio web.

Se vuoi un lavoro in America aziendale, è meglio andare su Java/.Net. Un buon reddito in te può entrare ma preparati a donare la tua vita a loro (tempo saggio).

Se vuoi diventare un libero professionista indipendente e vivere nella corsia di sorpasso con la tecnologia web, con PHP farai meglio. Un sacco di lavoro qui, ma la retribuzione varia notevolmente ed essere indipendente è lavorare da solo con ogni Tom, Dick e Harry con un'idea che cerca di assumerti per pochi centesimi.

C'è qualche sovrapposizione con PHP e Java ma si vede solo nei lavori aziendali (Java REST Servizi con PHP front-end) comunque non trovare negozi online o lavoro indipendente indipendente vicino Java.

Entrambi richiedono molto tempo e dedizione se vuoi essere utile in una determinata situazione.

Per essere uno sviluppatore competente e ricercato PHP hai bisogno di una borsa piena di set di abilità. È probabile che dovresti conoscere CSS, HTML4/5 e sicuramente Javascript DOM/Ajax/Jquery oltre ad almeno un framework fattibile come Zend (scelta dell'assaggiatore americano), Codeignitor, cakePHP, ecc. E poi tu dovremo conoscere i "tre grandi" CMS: Drupal, Wordpress e Magento. Prendi questi set di abilità e sarai uno specialista PHP con la possibilità di sbarcare sul lavoro ovunque tu vada. Come puoi dire, prendere tutto questo è una devozione per una lingua e i suoi strumenti perché l'apprendimento di Perl non ti aiuterà a diventare un esperto Drupal o uno sviluppatore Zend.

Lo stesso vale per Java: OOP, J2EE, REST/SOAP, Spring/Struts, ecc. Ed è una flotta di altri strumenti che impiegano anni a padroneggiare.

Qualcuno qui ha provato a codificare Java per un anno e poi è tornato a PHP (o qualsiasi linguaggio di scripting). È difficile. Sembra imbarazzante.

Lavoro per una società di fortuna 500 e Java sviluppatori non sarebbero in grado di fare ciò che fanno PHP sviluppatori e PHP gli sviluppatori non sarebbero in grado di fare ciò che Java lo fanno gli sviluppatori. Ma entrambi funzionano bene finanziariamente perché sono specialisti nel loro campo, nella loro lingua preferita e nella quantità di strumenti che ne derivano.

1
coder3

La lingua e la piattaforma non sono così importanti. Apprendi persone solide e competenze sciistiche. Molte persone hanno detto questo ma non hanno fornito dettagli, quindi lasciami fare questo. Ecco alcune cose da imparare

  • algoritmi e strutture dati.
  • concorrenza
  • apprendimento automatico
  • programmazione a livello di sistemi
  • recupero delle informazioni e motori di ricerca
0
jshen