Uno dei miei primi lavori estivi come programmatore si basava principalmente sulla raschiatura di schermi verdi e file PRN. Allora probabilmente non mi sarebbe dispiaciuto sporcarmi le mani in COBOL (cioè se mi avessero abbastanza fidato di me come studente per farmi entrare in quel codice), ma non sono sicuro che mi sentirei allo stesso modo riguardo al stessa prospettiva oggi.
Non credo che il problema riguardi davvero i mainframe in sé. È l'ossessione (spesso giustificata) del nostro settore per il nuovo e brillante.
Guardare C. C è ancora ovviamente un linguaggio di fondamentale importanza. Quasi tutto il codice incorporato e la maggior parte dei sistemi operativi sono scritti in C. Non andrà da nessuna parte presto. Eppure è sempre più difficile trovare programmatori C. Un rapido sguardo alla pagina del tag Stack Overflow lo posiziona a 1/6 della dimensione di [c#]
e 1/4 della dimensione di [java]
. Qualcuno ricorda quando C era essenzialmente la lingua dominante, probabilmente l'unico gioco in città?
I programmatori amano strumenti potenti. Forse perché (ALLARME SPECULAZIONE) la maggior parte dei programmatori sono ragazzi. Dai a un programmatore Java o .NET il compito di, per esempio, copiare un file e molti, se non la maggior parte, sceglieranno ancora di scriverlo in Java o C # invece di scrivere un file batch DOS o uno script shell * nix che sarebbe 50 volte più veloce da scrivere e distribuire. Perché usare una canna e un mulinello per catturare un pesce quando hai una gigantesca rete retrattile che può catturare 500 pesci?
Sì, COBOL e PL / I sono vecchi , ma lo è anche Pascal, ed è ancora vivo e vegeto sotto forma di Delphi. L'avversione al primo deriva probabilmente dal fatto che quelle lingue sono ingombranti rispetto agli strumenti moderni. L'orientamento agli oggetti è ancora un concetto relativamente nuovo nel mondo COBOL (enfasi su relativamente ), ma nel mondo C #, LINQ e generici e AJAX hanno smesso di essere rivoluzionari anni fa. Chiedere a uno sviluppatore abituato a quegli strumenti di iniziare a programmare su mainframe è come chiedere a un musicista rock di iniziare a suonare su un banjo.
Naturalmente c'è anche il problema dello stereotipo che si autoalimenta. Mentre i programmatori Finché più giovani ritengono che non c'è nulla per loro nel mainframe (anche se non è vero), allora qualsiasi giovani programmatori che non scelgono di andare in esso finirà per spendere la maggior parte delle loro giornate in mezzo alla gente molto più vecchio. All'inizio l'IT non è una professione socialmente attraente, ma l'ulteriore disincentivo di un gap generazionale tende a portarlo al di sotto di molte soglie di dolore. Senza offesa, ho personalmente passato gran parte della mia vita a lavorare con persone molto più anziane, ma non tutti hanno quel background o quella capacità.
Infine, alla maggior parte dei programmatori non piace il lavoro di manutenzione e quasi tutto il lavoro del mainframe è la manutenzione. Non ci sono molti nuovi software scritti in PL / I. Qualsiasi lavoro definito interamente o in gran parte attorno al codice di manutenzione inizia automaticamente con un punteggio negativo.
Ci sono aspetti positivi nel lavorare su un codice legacy ("legacy" che comprende mainframe e molte altre cose), che probabilmente dovrai riprodurre se stai cercando di attirare un pubblico più giovane:
I sistemi sono, come dici tu, un'infrastruttura critica. Gli sviluppatori più giovani, almeno nel mondo degli affari (non Google / Microsoft), spesso non hanno la possibilità di avere un impatto reale . È scoraggiante lavorare su un sistema che sai verrà abbandonato o sostituito dopo pochi mesi o anni. Le app mainframe che funzionano già da 50 anni probabilmente funzioneranno molto di più perché non ha senso per le aziende ricostruirle, quindi il lavoro che svolgi al loro interno è in realtà importante per molte persone.
Se siete una di quelle poche aziende che in realtà non hanno una tendenza a "upgrade", poi un sacco di programmatori, giovani e meno giovani, saranno attratti da questa opportunità, perché poi ci sono gemelli opportunità di lavorare su codice mission-critical e per flettere alcuni di quei muscoli C # / Java. Ovviamente nessuna azienda sana avrebbe semplicemente demolito il mainframe e ricostruito da zero, ma ho visto sistemi che (per esempio) hanno un core COBOL che si integra con i componenti Java.
Infine, c'è l'indispensabilità - almeno, come la percepiamo noi estranei. Quando tutto il tuo codice è in .NET, c'è sempre il rischio che i proprietari ti scambino per un neolaureato o peggio ancora, una squadra offshore, nel tentativo sbagliato di tagliare i costi. Non penso che ciò accada molto spesso nel mondo dei mainframe, specialmente se ciò che dici è vero e l'offerta sembra diminuire. Naturalmente, questo punto è discutibile se non paghi abbastanza bene; gli stipendi devono essere adeguati per riflettere la riduzione dell'offerta, altrimenti le persone non "venderanno".
Sono sicuro che ci sono un sacco di giovani sviluppatori là fuori che non rifiuterebbero un'offerta ragionevolmente generosa da un'azienda che sembrava fare di tutto per rendere l'ambiente di lavoro attraente per i dipendenti più giovani. Ma se vuoi raggiungerli, allora saresti saggio giocare sui tuoi punti di forza e potresti anche dover iniziare a fare un po 'di marketing; tendiamo a vedere i mainframe come un mondo diverso e molto straniero, e sono abbastanza sicuro di non aver visto voi ragazzi alla fiera del lavoro del campus 10 anni fa lavorando per cambiare quella percezione.
In poche parole: niente rende i mainframe poco attraenti , è solo che nulla li rende attraenti e ciò li mette in grave svantaggio rispetto al bordo sanguinante che ci offre enormi incrementi di produttività e bevande analcoliche gratuite.