Um dos meus primeiros empregos de verão como programador foi amplamente baseado em raspar telas verdes e arquivos PRN. Naquela época, eu provavelmente não me importaria de sujar as mãos no COBOL (ou seja, se eles tivessem confiado em mim o suficiente como estudante para me deixar entrar nesse código), mas não tenho certeza se me sentiria da mesma maneira sobre o mesma perspectiva hoje.
Eu não acho que o problema seja realmente com mainframes em si. É a obsessão de nossa indústria (muitas vezes justificada) pelo novo e brilhante.
Veja C. C. ainda é obviamente uma linguagem de importância crítica. Quase todo o código incorporado e a maioria dos sistemas operacionais são escritos em C. Não vai a lugar nenhum tão cedo. E, no entanto, está ficando mais difícil encontrar programadores em C. Uma rápida olhada na página de tags Stack Overflow coloca em 1/6 do tamanho [c#]
e 1/4 do tamanho [java]
. Alguém se lembra quando C era essencialmente a língua dominante, sem dúvida o único jogo na cidade?
Programadores adoram ferramentas poderosas. Talvez seja porque (SPECULATION ALERT) a maioria dos programadores são homens. Você atribui a um programador Java ou .NET a tarefa de, digamos, copiar um arquivo, e muitos, se não a maioria, ainda optarão por escrevê-lo em Java ou C # em vez de escrever um arquivo em lotes do DOS ou * shell script nix que seria 50 vezes mais rápido para escrever e implantar. Por que usar uma vara e molinete para pescar um peixe quando você tem uma rede retrátil gigantesca que pode capturar 500 peixes?
Sim, COBOL e PL / I são antigos , assim como Pascal, e ainda está vivo e chutando na forma de Delphi. A aversão ao primeiro provavelmente decorre do fato de que essas linguagens são pesadas em comparação com as ferramentas modernas. A orientação a objetos ainda é um conceito relativamente novo no mundo COBOL (ênfase em relativamente ), mas no mundo C #, LINQ e genéricos e AJAX deixaram de ser revolucionários anos atrás. Pedir a um desenvolvedor acostumado a essas ferramentas para começar a programar em mainframes é como pedir a um músico de rock que comece a tocar banjo.
É claro que também há o problema do estereótipo de autoperpetuação. Como programadores enquanto mais jovens acreditam que não há nada para eles em mainframes (se é ou não é verdade), então quaisquer jovens programadores que não optam por ir para ele vai acabar gastando a maior parte de seus dias em torno de pessoas muito mais velhas. A TI não é muito uma profissão socialmente atraente para começar, mas o desincentivo adicional de uma lacuna de geração tende a colocá-la abaixo de muitos limites de dor das pessoas. Sem querer ofender - eu pessoalmente passei a maior parte da minha vida trabalhando com pessoas muito mais velhas, mas nem todo mundo tem esse histórico ou essa capacidade.
Por fim, a maioria dos programadores não gosta de trabalhos de manutenção e quase todo o trabalho em mainframe é de manutenção. Não há muitos softwares novos sendo escritos em PL / I. Qualquer trabalho definido total ou amplamente em torno do código de manutenção inicia automaticamente com uma pontuação negativa.
Não são positivos para trabalhar em código legado ( "legacy" abrangendo mainframes e muitas outras coisas), que você provavelmente vai precisar para jogar até se você está tentando atrair um público mais jovem:
Os sistemas são, como você diz, infraestrutura crítica. Desenvolvedores mais jovens, pelo menos no mundo dos negócios (não no Google / Microsoft), geralmente não têm chance de causar impacto real . É desanimador trabalhar em um sistema que você sabe que será abandonado ou substituído após alguns meses ou anos. Os aplicativos de mainframe que já estão em execução há 50 anos provavelmente serão executados por muito mais tempo, porque não faz sentido que as empresas os reconstruam; portanto, o trabalho que você faz neles é realmente importante para muitas pessoas.
Se você é uma daquelas poucas empresas que realmente não têm uma inclinação para "upgrade", em seguida, um monte de programadores, jovens e velhos, serão atraídos por essa oportunidade, porque então há oportunidades individuais para trabalhar no código de missão crítica e flexionar alguns desses músculos C # / Java. Obviamente, nenhuma empresa sã simplesmente descartaria o mainframe e reconstruiria do zero, mas vi sistemas que (por exemplo) têm um núcleo COBOL que se integra aos componentes Java.
Finalmente, há a indispensabilidade - pelo menos, como nós os estranhos percebemos. Quando todo o seu código está no .NET, sempre há o risco de que os proprietários o troquem por um recém-formado ou, pior, uma equipe offshore, em uma tentativa equivocada de cortar custos. Não acho que isso ocorra com muita frequência no mundo do mainframe, especialmente se o que você diz é verdade e a oferta parece estar diminuindo. Obviamente, esse ponto é discutível se você não pagar o suficiente; os salários precisam ser ajustados para refletir essa oferta cada vez menor, caso contrário as pessoas não "venderão".
Tenho certeza de que existem muitos desenvolvedores mais jovens por aí que não recusariam uma oferta razoavelmente generosa de uma empresa que parecia estar se esforçando para tornar o ambiente de trabalho atraente para os funcionários mais jovens. Mas se você quiser alcançá-los, seria sensato jogar com seus pontos fortes e talvez até precise começar a fazer algum marketing; tendemos a ver os mainframes como um mundo diferente e muito estrangeiro, e tenho certeza de que não os vi na feira de empregos do campus há 10 anos trabalhando para mudar essa percepção.
Para resumir em uma única frase: nada faz com que os mainframes não sejam atraentes , é apenas que nada os torna atraentes e isso os coloca em séria desvantagem quando comparados com a margem de sangramento que nos oferece grandes aumentos de produtividade e refrigerantes gratuitos.