Uno de mis primeros trabajos de verano como programador se basó principalmente en eliminar pantallas verdes y archivos PRN. En aquel entonces, probablemente no me hubiera importado ensuciarme las manos en COBOL (es decir, si hubieran confiado en mí lo suficiente como estudiante para dejarme entrar en ese código), pero no estoy seguro de si sentiría lo mismo por el La misma perspectiva hoy.
No creo que el problema sea realmente con los mainframes per se. Es la obsesión de nuestra industria (a menudo justificada) con lo nuevo y brillante.
Mire C. C es obviamente un lenguaje críticamente importante. Casi todo el código incrustado y la mayoría de los sistemas operativos están escritos en C. No irá a ningún lado pronto. Y, sin embargo, cada vez es más difícil encontrar programadores en C. Un vistazo rápido en la página de etiqueta de desbordamiento de pila lo coloca a 1/6 del tamaño de [c#]
y 1/4 del tamaño de [java]
. ¿Alguien recuerda cuando C era esencialmente el lenguaje dominante, posiblemente el único juego en la ciudad?
Los programadores aman las herramientas poderosas. Tal vez sea porque (ALERTA DE ESPECULACIÓN) la mayoría de los programadores son chicos. Le da a un programador de Java o .NET la tarea de, por ejemplo, copiar un archivo, y muchos, si no la mayoría, aún elegirán escribirlo en Java o C # en lugar de escribir un archivo por lotes de DOS o un script de shell * nix que sería 50 veces más rápido de escribir y desplegar. ¿Por qué usar una caña y un carrete para atrapar un pez cuando tienes una red gigantesca retráctil que puede atrapar 500 peces?
Sí, COBOL y PL / I son viejos , pero también lo es Pascal, y todavía está vivo y pateando en forma de Delphi. La aversión a la primera probablemente se debe al hecho de que esos idiomas son difíciles de manejar en comparación con las herramientas modernas. La orientación a objetos sigue siendo un concepto relativamente nuevo en el mundo COBOL (énfasis en relativamente ), pero en el mundo C #, LINQ y los genéricos y AJAX dejaron de ser revolucionarios hace años. Pedirle a un desarrollador acostumbrado a esas herramientas que comience a programar en mainframes es como pedirle a un músico de rock que comience a tocar en un banjo.
Por supuesto, también existe el problema del estereotipo de autoperpetuación. Como siempre y cuando los programadores más jóvenes creen que no hay nada para ellos en unidades centrales (si es o no es cierto), entonces cualquier programadores jóvenes que no optan a entrar en ella va a terminar pasando la mayor parte de sus días rodeado de gente mucho mayor. Para empezar, no es una profesión socialmente atractiva, pero el desincentivo agregado de una brecha generacional tiende a colocarla por debajo de los umbrales de dolor de muchas personas. Sin ánimo de ofender, personalmente he pasado la mayor parte de mi vida trabajando con personas mucho mayores, pero no todos tienen esos antecedentes o esa capacidad.
Finalmente, la mayoría de los programadores no disfrutan el trabajo de mantenimiento, y casi todo el trabajo de mainframe es mantenimiento. No se está escribiendo mucho software nuevo en PL / I. Cualquier trabajo que se defina por completo o en gran medida en torno al código de mantenimiento comienza automáticamente con una puntuación negativa.
No son positivos a trabajar en el código heredado ( "legado" que abarcan mainframes y muchas otras cosas), que es probable que necesite para jugar arriba si usted está tratando de atraer a un público más joven:
Los sistemas son, como usted dice, infraestructura crítica. Los desarrolladores más jóvenes, al menos en el mundo de los negocios (no Google / Microsoft), a menudo no tienen la oportunidad de tener un impacto real . Es desalentador trabajar en un sistema que sabe que será abandonado o reemplazado después de unos meses o años. Las aplicaciones de mainframe que ya se han estado ejecutando durante 50 años probablemente se ejecutarán por mucho más porque no tiene sentido que las empresas las reconstruyan, por lo que el trabajo que realiza en ellas es realmente importante para mucha gente.
Si usted es una de esas pocas empresas que realmente no tienen una inclinación a "actualizar", entonces un montón de programadores, jóvenes y viejos, serán atraídos por esa oportunidad, porque entonces no son gemelas oportunidades para trabajar en código de misión crítica y flexionar algunos de esos músculos C # / Java. Obviamente, ninguna compañía sensata simplemente desecharía el mainframe y reconstruiría desde cero, pero he visto sistemas que (por ejemplo) tienen un núcleo COBOL que se integra con componentes Java.
Finalmente, está la indispensabilidad, al menos, como la percibimos los de afuera. Cuando todo su código está en .NET, siempre existe el riesgo de que los propietarios lo cambien por un graduado recién salido de la universidad o, peor aún, un equipo offshore, en un intento equivocado de reducir costos. No creo que eso ocurra muy a menudo en el mundo de mainframe, especialmente si lo que usted dice es cierto y la oferta parece estar disminuyendo. Por supuesto, este punto es discutible si no paga lo suficiente; los salarios deben ajustarse para reflejar esa disminución de la oferta, de lo contrario la gente no "venderá".
Estoy seguro de que hay muchos desarrolladores más jóvenes que no rechazarían una oferta razonablemente generosa de una compañía que parecía estar haciendo todo lo posible para que el ambiente de trabajo sea atractivo para los empleados más jóvenes. Pero si desea llegar a ellos, entonces sería prudente aprovechar sus puntos fuertes, e incluso podría tener que comenzar a hacer algo de marketing; tendemos a ver los mainframes como un mundo diferente y muy extraño, y estoy bastante seguro de que no los vi en la feria de empleo del campus hace 10 años trabajando para cambiar esa percepción.
Para resumirlo en una sola oración: nada hace que los mainframes sean poco atractivos , es solo que nada los hace atractivos tampoco, y eso los pone en una grave desventaja en comparación con el borde sangriento que nos ofrece enormes aumentos de productividad y refrescos gratuitos.