¿Qué tipo de programador faltará en el futuro?

Como mencionan otras respuestas, los desarrolladores senior seguirán teniendo una gran demanda. El desarrollo aún requiere mucho tiempo para aprender, y he leído algunas indicaciones de que estamos capacitando a las personas lo suficientemente rápido para satisfacer la creciente demanda.

Para ser más específicos, diría que los desarrolladores senior de JavaScript serán una apuesta bastante segura. Esto es, por supuesto, un sesgo de confirmación extremo que habla aquí (ya que soy uno), pero el gráfico a continuación me apoya con algún tipo de datos. JavaScript es realmente fácil de aprender, pero su extraordinaria plasticidad crea una demanda masiva para las personas que saben cómo construir con él aplicaciones reales y bien estructuradas, una demanda que sospecho que ni siquiera estará cerca de ser satisfecha en los próximos años. JavaScript avanzado aún no ha llegado a la academia correctamente todavía.

Al aire libre
Al aire libre

Gracias a Donnie Berkholz en Twitter por el gráfico. (Nota: Este gráfico tiene muchos problemas estadísticos serios, pero considero que el bache de JavaScript es tan grande que no puede ser simplemente una anomalía estadística).

Si se me permite especular de manera más desenfrenada, sin datos (porque el lenguaje es muy nuevo) y fuera de mi propio ámbito de desarrollo, diría que Rust, financiada por la Fundación Mozilla (http: //www.rust-lang. org) es un contendiente muy fuerte como el nuevo lenguaje del gran sistema, y ​​uno que muchos consideran como el posible sucesor del reinado aparentemente inmortal de C ++. Muchos de los desarrolladores de alto nivel de C ++ que me rodean hablan muy bien de Rust, y no hablan mucho de muchas cosas, especialmente de aquellas que buscan reemplazar a C ++. El lenguaje ha estado en desarrollo desde 2009, la especificación se ha movido como loca en los últimos años, haciendo que no sea factible para el desarrollo de la producción, pero está empezando a estabilizarse y está programada para ser 1.0 en marzo de 2015. Sospecho que estará fumigando arcoiris


Enchufe desvergonzado: si te gustan mis divagaciones sobre la programación en Quora, puedes disfrutar de mi programa de YouTube: Fun Fun Function

En este momento parece que necesitaremos 3 tipos de personas en grandes números en la programación:

  1. Personas que pueden analizar datos. En este espacio, las personas que estudian el aprendizaje automático, el análisis predictivo, etc. no tienen precio ahora. Esto también incluye a las personas que estarán “en la espalda” para IoT. Incorporo todas las bases de datos aquí también. Los principales sistemas aquí son las bases de datos NoSQL, Spark / Ignite, Python, R, Julia y similares.
  2. Personas que entienden los sistemas de “aprendizaje”. Los sistemas que “aprenden” son sistemas que pueden adquirir información, procesarla muy rápidamente y generar respuestas a ella. Esto es muy importante. Son los rudimentos de la IA y son la base de cosas como los vehículos sin conductor. El aprendizaje profundo también es importante, pero considero que son diferentes, más algoritmos genéticos que las ciencias del aprendizaje. Los principales sistemas aquí son redes neuronales, modelos generativos probabilísticos, KR (Representación del conocimiento) y similares. Una gran cantidad de trabajo aquí continúa en C #, Python e incluso cosas como Lisp.
  3. Red / personas transaccionales. Esto incluye cosas como pagos, fintech y similares, pero también incluye todo lo que tiene que ir de un lugar a otro de una manera segura y confiable. La seguridad podría caer bajo este título. Los principales sistemas aquí son herramientas de transacción, OLAP, reducción de mapas y tecnología relacionada.

Durante años, la ingeniería de JavaScript fue despreciada. Era para la validación de formas, y animaciones tontas. Algo que un niño podría hacer. Así, los ingenieros “reales” lo evitaban. Durante ese tiempo, sin embargo, cada vez se esperaba más interactividad en los sitios web. La web se convirtió no solo en un lugar para leer información, sino en un panorama de aplicaciones ricas e interactividad. Las cosas que solían ser únicamente la provincia del escritorio ahora se habían movido a la web. Y ahora que esta es la nueva normalidad, todos necesitan ingenieros experimentados en JavaScript. Pero debido a que había sido tan ridiculizado durante tanto tiempo, somos muy pocos los que tenemos antecedentes reales de ingeniería.

Los buenos ingenieros de JavaScript están en alta demanda en este momento.

Los mejores desarrolladores son mucho más que un idioma u otro. Si bien los diferentes lenguajes de programación que aprendes son extremadamente importantes, hay muchas otras habilidades y cualidades que traes al trabajo que son muy difíciles de encontrar ahora y en el futuro.

Los programadores y desarrolladores más valorados son aquellos apasionados por la calidad , que priorizan las necesidades del cliente y entienden que trabajamos juntos en un mundo empresarial más amplio .

La mala calidad mata la vibra del equipo, crea una deuda técnica y termina costando mucho dinero para arreglarlo. La mala calidad enajena al cliente. ¡El desarrollador que prioriza la calidad siempre será difícil de encontrar, porque el instinto humano parece ser cortar esquinas! Además, el desarrollador que puede explicar convincentemente a la administración por qué la calidad es importante se convertirá en un líder en su campo elegido que puede traducir entre el equipo de desarrollo y el equipo de administración. ¿Por qué molestarse en venir al trabajo si vamos a hacer algo feo?

Un desarrollador senior brillante sabe que hay una persona en el otro lado del producto, y esa es la razón por la que existimos . Este desarrollador intentará anticipar cómo se comportará el usuario, los tratará con amabilidad y apoyo, decidiendo a propósito hacer que toda la funcionalidad sea simple, clara, ordenada y utilizable. Debajo de las cubiertas, el brillante desarrollador se preocupa por la utilidad, la seguridad, la elegancia y el rendimiento, sabiendo que la experiencia de los seres humanos cuenta mucho para el éxito del software. Si no nos preocupamos por ellos, los clientes no van a comprar nuestro software.

Los mejores desarrolladores entienden que trabajan en una empresa , para una empresa y con otras empresas. Traen experiencia comercial, inteligencia de la calle, conocimiento de lo que hacen los competidores y una comprensión de los costos de administrar un negocio. Los mejores desarrolladores saben que cuesta una bomba hacer un software hermoso y que todos tenemos que trabajar juntos de forma cooperativa, comunicándonos de manera efectiva, documentando nuestro trabajo y sin perder el tiempo corriendo por caminos secundarios.

Buenos programadores. Estoy siendo serio. Los buenos programadores siempre han tenido escasez, y siempre lo harán.

En lo que creo que es el espíritu de la pregunta, diré que los programadores de bajo nivel tendrán una mayor escasez en el futuro. Eventualmente, la oferta satisfará la demanda, pero habrá una escasez por un tiempo.

¿Por qué? Durante los últimos 40 años, la programación se ha vuelto cada vez más abstracta. Esto es más un efecto secundario de la “Ley de Moore” que cualquier otra cosa. Ahora, la “Ley de Moore” está en su lecho de muerte. Intel ahora tiene un grosor de compuerta de 14nm. Muy pronto, la deriva de partículas y la tunelización cuántica comienzan a desordenar la longevidad y la precisión de los transistores. Entonces, a menos que haya un avance en la ciencia de los materiales (que no veo en el horizonte), las computadoras están estancadas. Habrá muchas oportunidades en los próximos 50 a 100 años para hacer que el código sea más eficiente, y la forma de hacerlo es programando en un nivel inferior. Más y más se hará en C. Lo que no es, supongo, comenzará a pasar de cosas como JVM a LLVM. El presagio de todo esto es la computación de GPU.

No hay escasez de programadores, y no habrá escasez de buenos programadores. Pero siempre habrá una escasez de programadores socialmente validados .

Independientemente de la cantidad de programadores que haya, solo un número fijo de estudiantes universitarios puede ir a las mejores escuelas y obtener pasantías de primer nivel. Si no tienes ese pedigrí, es difícil ser entrevistado en las mejores empresas como un nuevo graduado, incluso si eres muy bueno. De manera similar, hay O (1) espacios en las principales empresas, y trabajar en un lugar mediocre ahora hará que sea más difícil obtener un trabajo de primer nivel más adelante.

Por supuesto, hay muchas maneras de probarte a ti mismo, y no todas involucran la educación o el empleo. Pero generalmente requieren mucha iniciativa, por lo que el número de programadores socialmente validados sigue siendo pequeño.

– Los programadores / científicos de datos de algoritmos de big data tienen una gran demanda y eso seguirá creciendo rápidamente.
Los trabajos de más rápido crecimiento de los últimos 3 años
Resumen de STEM: Los empleos de más rápido crecimiento están en STEM – US News

– GoLang, Rust parece estar activo y con un gran potencial y conocimiento de NoSql, Docker, Node JS / cosas de esa naturaleza asegurarán su alta demanda ya que la capacitación es muy escasa.

– Personas que realmente entienden el diseño modular y la construcción escalable. Los “programadores” que crean sitios web y saben cómo piratear cosas aleatorias con jQuery como titular de una mano son una moneda de diez centavos por docena.

Creo que muy pocas personas mencionaron aquí la importancia del conocimiento del dominio (solo he visto una respuesta que sí lo hace).

Aparte de ser un buen programador o no, la mayoría de los programadores que conozco no tienen mucho conocimiento de nada más que de “habilidades de codificación en bruto” (lo que puede ser difícil de adquirir, no me malinterpreten).

Por ejemplo, mira esto => http://c2.com/cgi/wiki?WhyIsPayr

Este es un artículo que habla sobre por qué construir un sistema de nómina es difícil. Observe cómo se centra en el conocimiento del dominio que la lista es. Tener un buen conocimiento del dominio lo ayuda a concentrarse en sus habilidades de codificación para construir lo correcto. Sabrás más sobre lo que importa y lo que no, etc.

Los sistemas de nómina no son realmente mi dominio (no puedo decir que tengo uno), así que no puedo entrar en detalles sobre ellos.

Es fácil pensar en los sistemas de nómina como un ejemplo de un dominio, pero obviamente hay muchos otros. Un ejemplo es el desarrollo de juegos, que incluirá matemáticas, gráficos de computadora, inteligencia artificial, optimización de programas de bajo nivel, gpus, opengl (hay formas específicas de usar opengl para sacar lo mejor del gpu), etc. Otro ejemplo son los sistemas embebidos.

Y, para ser claros, el conocimiento del dominio es sobre el tipo de conocimiento necesario para construir un tipo de software algo específico (como los juegos). Puede implicar conocimientos relacionados con la programación, como con los sistemas integrados que puede necesitar saber cómo escribir software eficiente. El conocimiento del dominio no está separado al 100% del conocimiento de programación.

Por lo que he leído, los programadores que han demostrado tener conocimiento de dominio ya están en escasez. Es mi opinión que esto no cambiará pronto.

De ninguna manera, sin embargo, creo que es el único tipo de programador que estará en escasez. Solo escribí esto porque no vi muchas otras respuestas al hacerlo.

La pregunta era qué tipo de programador estará en escasez, no qué será en gran demanda.

Y la respuesta a esta pregunta es COBOL. Hay una gran cantidad de sistemas que todavía ejecutan millones de líneas de código COBOL antiguo y los programadores que pueden mantenerlos son en su mayoría mayores de 45 años, muchos de ellos llegan a la edad de jubilación y muy pocos están capacitados para reemplazarlos. Hay una escasez ahora, y va a empeorar, mucho peor. Y estos son sistemas críticos, como los administrados por el Internal Revenue Service y la Administración de la Seguridad Social, donde la migración a otra cosa que se ejecutaría con la misma confiabilidad sería bastante costosa y difícil, y la actitud hacia ellos es “si es que lo es”. Se rompió, no lo arregles, solo mantenlo “.

¿En busca de un trabajo? ¿Cómo está tu COBOL?
El drenaje cerebral de Cobol
Los CIO deberían prepararse para la falta de desarrolladores de Cobol (Sí, Cobol)
Página en blog.stafflink.ca

Me sorprenden las pocas personas que hablan de tecnología aquí.

Programadores de PHP , cuanto más se va y más juega un papel importante.
Programadores C
Programadores de C ++
(porque esos dos idiomas son portátiles para hacer un software para PC, una aplicación de Android, una aplicación de Iphone o una aplicación de Windows Phone)

Los de menor demanda en el futuro:

  • asp.net | vb.net porque php se considera una opción barata de robustez. asp.net es demasiado lento en comparación con php

El que desaparecerá:

  • Actionscript (idioma de Adobe flash reemplazado por HTML5)
  • Delphi
  • Perl

No tengo idea de javascript porque no es mi campo.

La mayor escasez será la gente que pueda manejar tanto el hardware como el software. El desarrollo de hardware requiere mucha más diligencia, ya que el hardware de depuración que maneja, se integra en su ropa o se sienta en otro planeta. El problema no es solo la depuración, sino también la comprensión de los principios físicos que impulsan los sensores, los actuadores y la comunicación.

Considere un auto autónomo, por ejemplo. Los programadores no solo tendrán que entender cómo encontrar la ruta más corta en un gráfico para ir de A a B, sino también cómo la velocidad de las ruedas y el ángulo de la dirección se relacionan con la traducción, y finalmente lidiar con la probabilidad, ya que todos los sensores reales solo proporcionan probabilística salida. Todas estas cosas son muy difíciles de abstraer y entenderlas realmente requerirá un título universitario que esté fuertemente basado en ingeniería.

Teniendo en cuenta la tendencia reciente de los avances en la automatización del desarrollo de software y otras actividades relacionadas con TI, incluida la inteligencia artificial y el aprendizaje automático (y, especialmente, el aprendizaje profundo ), esto es lo que pienso. Creo que en el futuro habrá una escasez de programadores (sin embargo, los títulos probablemente sean ingenieros de software, analistas de TI y similares), que:

1) son más generalistas que especialistas ;
2) son adaptables a la naturaleza dinámica del ambiente de trabajo / industria;
3) son capaces de ver el panorama general ( arquitectura empresarial en lugar de arquitectura de software o arquitectura de sistema );
4) son capaces de adquirir rápidamente conocimiento del dominio del tema que no es de TI;
5) tener rasgos personales flexibles y agradables para adaptarse a la cultura organizacional .

Soy desarrollador de software, y durante mis 13 años de carrera, he trabajado en muchas industrias en proyectos grandes y pequeños. O bien he sido consultor, o he estado trabajando en mis propias empresas de nueva creación.

Les diré esto: es muy difícil encontrar desarrolladores de software competentes, y no veo que eso cambie. Eche un vistazo a esto: ¿Por qué los programadores no pueden … Programa?

De hecho, he tenido días en los que literalmente nadie que se presentó a las entrevistas sabía cómo codificar. (Eso fue antes de leer Smart And Gets Things Done de Joel Spolsky, donde aprendí a llamar a la pantalla al 90% de los solicitantes, entre otras cosas). Debido a la escasez de talento, la demanda es extremadamente alta y, como resultado, los buenos programadores casi nunca se encuentran entre los trabajos.

Hoy, como consultor independiente, tengo un control fantástico sobre con quién elijo trabajar, cómo trabajo, cuándo trabajo, etc. Para mí, este es un trabajo de ensueño. No hay muchas trayectorias profesionales que sean más estables en este momento.

Para responder a su pregunta directamente, casi todos los tipos de programadores que saben cómo hacer las cosas estarán en demanda. Una vez que sabes lo que estás haciendo, cambiar de plataforma es solo una parte de la carrera, me parece que me sucede cada 3-4 años. Pero el desarrollo web y móvil de Run of the Mill tiene una demanda excepcional en este momento, por lo que lenguajes de alto nivel como C #, Java, Ruby, JavaScript / Node, Python, etc. No lo piense demasiado, céntrese en los fundamentos de la codificación. como en Learn Python the Hard Way … Una vez que desarrolles la memoria muscular para resolver problemas con el código, encontrarás tu nicho.

Por lo que puedo decir, siempre ha habido y siempre habrá una escasez de programadores “científicos”. Por eso me refiero
– programadores que entienden (o pueden aprender rápidamente) la “ciencia” utilizada en los programas (por ejemplo, modelos estadísticos o dif. Eq.)
– programadores que son al menos un tanto agnósticos del lenguaje (al menos dentro de un paradigma de programación). Por ejemplo, no debería importar si algún programa debe escribirse en C, C ++ directo, Fortran, Python, Matlab, …
– programadores que pueden manejar la optimización / paralelización

Puntos de bonificación para
– una comprensión más profunda de las cuestiones numéricas
– Matemática ‘madurez’
– comprender correctamente los problemas algorítmicos (complejidad tiempo / espacio, diseño)

Algunas buenas respuestas interesantes hasta ahora … la robótica, el conocimiento del dominio son importantes. No me importa qué idioma, herramienta, técnica o plataforma. El futuro requerirá programadores que puedan tomar un pedazo de conocimiento y codificarlo en código ejecutable con una interfaz de usuario atractiva que ayude al usuario a abordar una pregunta o problema específico. Cualquiera que sea la herramienta o el método, la llamada inteligencia artificial debería ser un componente creciente de las aplicaciones futuras. Cualquier campo basado en el conocimiento es demasiado vasto para que cualquiera pueda entenderlo en su totalidad … pero a medida que ese campo se codifique y se pueda navegar por la navegación, en tiempo real, en el conocimiento actual … los codificadores de la lógica del conocimiento del campo serán en gran demanda. Imagine poder tener una conversación tipo google sobre un campo de conocimiento esotérico y recibir un conocimiento sensible, inteligente y actual (resumido) sobre un tema específico.

Los programadores de Fortran que conocen los métodos numéricos estarán en escasez.
Existe un mercado limitado, pero aún así, la comunidad de programación científica se apoya en una cantidad absolutamente enorme de código Fortran numérico que ya se ha escrito, probado y sigue siendo confiable después de producir resultados correctos por más de 20 años.
Estos programas pronostican el clima, simulan la Tierra y tabulan los cielos; siempre que muchos graduados recientes de CS reaccionen con “¿Quieres que programe en qué ?!?”, habrá una gran apertura para los programadores que están menos preocupados por la belleza conceptual de su solución, y más con el número de útiles. resultados que produce.

Un programador que puede duplicar la calidad o reducir a la mitad el precio de un producto digital.

He visto muchas respuestas muy buenas. Algunos se refieren a “AI”, otros dicen “¡Javascript!”. Wow, eso es muy específico! No me gusta predecir el futuro (claro, puedo predecir que moriré en algún momento en el futuro, pero eso no es muy específico). Porque no me gustan las cosas que no funcionan, y nosotros, como seres humanos, no somos muy buenos para predecir el futuro (solo mire todos los “grandes” consejos sobre acciones que hay). Pero estoy bastante convencido de que los siguientes dos tipos de programadores siempre estarán en escasez:

El programador que puede duplicar la calidad de un producto digital.

Eche un vistazo profundo al ganador de cualquier competencia digital. El factor clave de su éxito es la calidad . Esto simplemente significa que pueden entregar un producto digital (software), que puede hacer un cierto trabajo más seguro , más robusto y más conveniente . Los programadores que tienen un buen sentido de la calidad son muy raros. No he visto muchos (y probablemente he conocido más programadores que nadie en este planeta).

El programador que puede reducir a la mitad el precio de un producto digital.

60MB es el precio para un archivo de audio crudo de 3 minutos. 3MB es el precio para un archivo de audio de 3 minutos desde que los programadores de todo el mundo inspiraron el formato mp3 para desarrollar nuevas formas de consumir música en la palabra digital (y muchas aplicaciones para compartir archivos que eventualmente presionaron a la industria de la música para que admitiera Spotify y Soundcloud). , que redujo el precio del consumo de música a una pequeña fracción de lo que era hace 20 años). Misma calidad, menor precio: siempre una apuesta segura.

Programadores que están familiarizados con el funcionamiento interno de las computadoras. Cada vez menos personas conocen idiomas de nivel inferior, como C y ensamblaje. Si está familiarizado con el feo funcionamiento interno de las computadoras, encontrará muchos trabajos disponibles.

¿El futuro como en dos años?

Parece que hay una escasez insaciable de ingenieros de Internet de empresa. Ya sea JEE o ASP. RED. Ingenieros de integración de procesos de software, familiarizados con los protocolos de red, a través de Spring Framework, TIBCO o su. NET equivalente.

Sin embargo, en un futuro no muy lejano, los nano mecanismos de varias movilidades serán programados, configurados y desplegados para gestionar nanoestructuras.

  • El rey fabricante de tecnologías será la compactación de las fuentes de energía. Puedo imaginar el despliegue de tales nano-mecanismos para permitir la viabilidad de los nanotubos como un almacenamiento de energía extremadamente compacto, que explotaría diversos medios y avenidas para reponer su reserva de energía.
  • Estos son stembots (como en las células madre), donde su programación y configuración los diferenciarán y especializarán. Deben especializarse en programación y configuración, ya que sus tamaños minúsculos no les ofrecen el lujo de ser todo un oficio.
  • Estos serán masivamente multihilo. Un subproceso de proceso se llevaría a cabo no por una sola celda, sino por una combinación de celdas de varias configuraciones. El resultado de las acciones de cada celda puede contribuir a unos pocos hilos de proceso. Nuestra programación implicará aumentar o disminuir la probabilidad de que una célula contribuya a un proceso en particular, así como la contención de recursos compartidos.
  • La ciencia informática tendrá que revolucionar las perspectivas de programación como lo que Spring Framework ha hecho, para simplificar, o al menos para agrupar actividades en descriptores de flujo de procesos comprensibles y tangibles para programadores.
  • Los mecanismos nano o subnano programables son una nueva revolución, quizás de hecho una nueva etapa de la evolución humana, como un medio controlado para invadir los órganos y las estructuras celulares de nuestros cuerpos, mejorar nuestro rendimiento o apariencia y prolongar nuestras vidas.
  • Quiero decir, ¿cuántos de nosotros comprendemos completamente lo que está sucediendo detrás de nuestras acciones Spring o TIBCO que habíamos programado o configurado? Del mismo modo, habrá enfoques empaquetados para los nano-mecanismos. Todo comenzó cuando alguien dijo “programación modular” tal vez hace medio siglo.

Solo hay una escasez de talento real y ese es el talento para contratar programadores competentes. Nada solucionará esta escasez más que hacer que el entorno empresarial sea más competitivo o, debo decir, menos anticompetitivo. Siempre que el modelo de inversión comercial principal sea la búsqueda de rentas (piense que los efectos de red como los que hicieron que los derechos de autor de MS-DOS pasen de una valoración de 6 cifras a una valoración de 10 cifras en el momento en que IBM lo distribuya con su primera PC) terminarán Con los buscadores de alquileres haciendo la contratación.