¿Cuál es el futuro de los trabajos de programación?

¿Quieres escuchar mi historia? Soy un desarrollador de software. Pero mi especialidad no era CS, ni siquiera relacionada con la ciencia. Comencé mi carrera como desarrollador de software a principios de este siglo porque tuve la oportunidad de realizar una pasantía en una pequeña empresa de software en mi último año de universidad. En ese momento, los idiomas como VB, PB se usaban mucho. La característica de estos idiomas es que puede crear una ventana y colocar algunos controladores, como botones, cuadros de entrada, y luego tiene una aplicación GUI. Y además, estos controladores admiten algunos eventos, por lo que si rellena algún código en los métodos de eventos de los controladores, obtendrá una aplicación GUI interactiva o un software viable que podría venderse por dinero. Básicamente, si tiene un pensamiento lógico fundamental y puede usar frases como “si más, mientras, para”, y toma un libro sobre VB y obtiene un conjunto de Visual Studio 6 y realiza algunas prácticas, ahora es un desarrollador de software. Tuve suerte porque en ese momento la empresa carecía de recursos humanos, así que me dejaron encargarme de un producto pequeño. Aprendí de ese producto y luego lo mantuve y le agregué nuevas características en varios meses, luego me convertí en un empleado de esa compañía después de dejar la escuela.

En los años siguientes, aprendí Java como mi principal lenguaje de programación y bases de datos para desarrollar el denominado software empresarial, ahora se llaman aplicaciones CRUD. He utilizado todo tipo de servidores de aplicaciones J2EE y todas las principales bases de datos que podría haber escuchado. Pero al igual que tú en este momento, estaba ansioso porque sentí que no conozco las computadoras. Bueno, puedo hacer CRUD bastante bien, conozco varios lenguajes de programación y muchos productos de bases de datos. Pero no sé nada bajo el capó. ¿Son mis habilidades lo suficientemente buenas para apoyar una carrera de por vida, especialmente en estos días de rápido desarrollo? Tal vez debería cambiar un trabajo que sea menos competitivo y que no necesite aprender constantemente.

Bueno, no estoy seguro si es una forma correcta o no todavía. Recogí libros en mis treinta años. Lo bueno de hoy es que hay muchos materiales de aprendizaje gratuitos y también tenemos Google en caso de que necesite ayuda. Así que tomé varios cursos de MIT OCW y Coursera, leí muchos libros e hice innumerables prácticas. ¿Que aprendi? Suena como un cliché, lenguajes de programación como C y C ++, sistema operativo Linux, estructuras de datos, algoritmos y matemáticas, etc. Con estos fundamentos, encuentro que hoy en día puedo aprender cosas mucho más rápido de lo que solía ser y realmente no hay. tantas cosas nuevas que necesita aprender constantemente, solo conceptos nuevos en un marco antiguo que puede obtener realmente rápido si conoce el marco. Recientemente he estado tomando algunos cursos de inteligencia artificial de Coursera, solo me están dando los mismos sentimientos. Aprendizaje automático, solo cálculo, álgebra lineal, probabilidad y sus aplicaciones. Minería de datos, solo cálculo, álgebra lineal, probabilidad y sus aplicaciones …

Entonces, si todavía tienes la oportunidad de ingresar a la universidad para aprender CS, no tienes nada de qué preocuparte. Solo haz lo mejor para aprender los cursos que tu escuela organiza para ti, estos son los verdaderos tesoros para un ingeniero de software profesional. Cosas como php, html, css, puede aprenderlas de la noche a la mañana si domina C ++.

Si necesita aprender CS por su cuenta, por supuesto, primero debe aprender Matemáticas. Pero todavía las estructuras de datos y los algoritmos son los más importantes. MIT OCW y Coursera tienen excelentes cursos sobre estos. Pero te recomiendo encarecidamente que tomes el curso “Matemáticas para Ciencias de la Computación” de MIT OCW, me gusta mucho. C y C ++ son las mejores opciones para lenguajes de programación. Hoy en día soy adicta a C ++. Aunque apenas uso C ahora, creo que debería aprender C primero, luego C ++. Estos dos libros, “The C Programming Language (The K&R C Bible)” y “Computer Systems: A Programmer’s Perspective (2nd Edition)”, forjaron mi fundación. Si puedes hacer todos los ejercicios de “K&R C”, no necesitas ningún otro libro de C en absoluto. Bueno, no realmente, este impresionante libro, “Interfaces e implementaciones en C: Técnicas para crear software reutilizable”, definitivamente vale la pena de todos tus esfuerzos. No puedes aprender C ++ de 1 libro, en realidad no puedes aprender C ++ de ni siquiera 10 libros. Aprender C ++ es un negocio a largo plazo. He leído más de 20 libros sobre C ++, pero siento que solo he arañado la superficie del lenguaje. Por lo tanto, solo recomiendo un libro introductorio para usted, “C ++ Primer”, tanto en la 4ª Edición como en la 5ª Edición.

Esperemos que esto te pueda ayudar un poco. El trabajo de programación es increíble. En realidad no creo que haya un mejor trabajo que él. Hoy, cuando miro hacia atrás, me siento tan afortunado de haber tenido la oportunidad de entrar en este campo cuando se suponía que no debía hacerlo. Y no tengas miedo de aprender. Deja que sea tu hábito y se convertirá en un placer. Si no aprendo nada o leo un par de páginas antes de irme a la cama, me siento avergonzado y perdido.

Los programas de ciencias de la computación en la universidad están diseñados para enseñar a los estudiantes habilidades fundamentales que no se vuelven obsoletas en unos pocos años. Eso puede significar que los estudiantes no están listos inmediatamente para realizar un trabajo de programación cuando se gradúan, pero el sistema ha estado funcionando razonablemente bien durante las últimas décadas. Entonces, un enfoque es comenzar con los fundamentos de CS: un lenguaje de programación, algoritmos / estructuras de datos, matemáticas discretas.

Otro enfoque es centrarse más en aprender bien un lenguaje de programación. Una vez que domines un idioma, el siguiente será más fácil (al igual que aprender idiomas naturales). Algunos fundamentos de la programación se quedan con usted en todos los idiomas.

Si no puedes decidir, ve con el enfoque del lenguaje de programación. Si no tienes un idioma favorito, ve con JavaScript o Python.

No te preocupes demasiado por los diferentes campos o temas. Para su primer trabajo, no es muy importante cuál es su origen. Nadie que esté buscando un trabajo de programación de nivel de entrada tiene mucha experiencia en el mundo real. Pero cuanto más tiempo de programación (en cualquier idioma) tenga en su haber, mejor.

Construye una base para tu carrera. Un buen primer paso es aprender cómo funcionan las computadoras y el hardware. Por ejemplo, mi primer paso en esta carrera fue convertirme en un técnico certificado en electrónica. Con esa certificación, me sentí seguro de que podría reparar, actualizar y mantener las computadoras. Entonces me interesé en la programación y comencé a aprender programación básica.
Una vez que tienes una fundación, debes prestar atención a las tendencias. Lea revistas relacionadas con la informática y la tecnología, asista a conferencias y únase a asociaciones que se ajusten a sus intereses. Cuando empieces a ver mención de nueva tecnología, investiga. Siempre hay muchas nuevas tendencias en tecnología, algunas se convierten en estándares de la industria a lo largo del tiempo, mientras que otras se desvanecen en las notas al pie.
Un gran recurso para determinar dónde considerar su enfoque y energía es el Manual de Perspectivas Ocupacionales Ocupaciones de Computación y Tecnología de la Información, publicado por el Departamento de Trabajo de los Estados Unidos, Oficina de Estadísticas Laborales. Este recurso enumera información como la perspectiva del trabajo, el salario y el entorno laboral para diversas ocupaciones. Con esta información, puede tomar decisiones basadas en el crecimiento potencial y las oportunidades de trayectorias profesionales específicas. También puede consultar O * NET OnLine, otro sitio web publicado por el Departamento de Trabajo de los EE. UU. O * Net Online es una base de datos de descripciones detalladas para cada título de trabajo imaginable. ¡Buena suerte!

No te preocupes, amigo. Ambas cosas son duras y tediosas. La inteligencia artificial es muy grande y, aunque muchas de las tareas realmente difíciles que los científicos de la computación y los especialistas de la IA dedican incontables horas a trabajar hoy en día serán triviales en el futuro, darán lugar a actividades aún más difíciles y creativas. Por ejemplo, ahora es posible con cualquier número de API de alto nivel lanzadas en el último par de años para hacer el reconocimiento de imágenes simplemente como pasar una imagen y recuperar una lista de cosas. Si bien era posible hacerlo hace 20 años cuando estaba tomando una clase de reconocimiento de imagen en la universidad. Fue muy complicado e imposible obtener buenos resultados sin casos de prueba muy específicos y mucho esfuerzo para manejar todos los diferentes casos en los que se podía analizar una imagen. Si bien eso hace mucho más trabajo para los programadores, fue tanto el trabajo que solo los productos muy especializados podían permitirse emprenderlo. Crear una API de nivel superior que funcione mejor y más simplemente abre ese problema a más personas, lo que significa que tanto los programadores que no lo pueden usar, como el resto de programadores que aún son necesarios para la personalización serán empleados. Desde que los humanos temían que la automatización reemplazara sus trabajos desde que salió la ginebra Cotten, se ha comprobado que están equivocados. Cuantos más problemas resolvamos, más nos libra para realizar tareas aún más complejas que de repente son lo suficientemente baratas como para aplicarlas a más campos.

La singularidad de la IA no está en el futuro previsible y todas esas cosas que resuelven las cosas que los programadores de computadoras ahora hacen manualmente son realmente solo oportunidades.

¡Felicidades por elegir una gran trayectoria profesional! El futuro de los trabajos de programación es brillante y su elección base en 2-3 años será la misma que la de hoy: desarrollador de software. Esa es la base de tu educación; Además de eso, puede y debe agregar una especialidad como aprendizaje automático, ciencia de datos, computación en la nube o ciberseguridad. Todos esos son buenos y en importancia. ¡Los mejores deseos!

El software siempre necesitará lo siguiente:

  • Servidores de back-end
  • Clientes frontales
  • IU
  • Seguridad
  • Arquitectura
  • Inteligencia

Sin embargo; Yo diría que los tres que serán más prominentes y evolucionarán más rápidamente son UI, seguridad e inteligencia.

Posiblemente lo más valioso será un combo de seguridad e inteligencia.

Yo diría que empiece por aprender cómo se desarrollan y se diseñan los servidores y los clientes, luego comience a moverse hacia alguna combinación de los otros 3, dependiendo de lo que más le interese.

Incluso si la mayor parte de su futuro consiste en tomar bibliotecas y marcos creados por otros y usarlos para crear software personalizado para las personas que necesitan algo muy especializado, habrá una necesidad para las personas que saben lo que están haciendo.

Aprendería al menos los conceptos básicos de cómo funciona el hardware, las redes, las aplicaciones distribuidas y la computación multihebra / paralela. Eso le ayudará a comprender la nube a un nivel más profundo que la mayoría de los usuarios finales.

Hay muchos trabajos sin completar en informática, y eso es poco probable que cambie, ya que la demanda de software y sistemas está aumentando, no disminuyendo. Dicho esto, los trabajos siempre son competitivos, ya que se ha observado que es mejor no contratar a alguien que contratar a alguien que no puede hacer el trabajo y agotará los recursos de sus otros desarrolladores / administradores / ingenieros. Se desconoce si obtendrá o no un trabajo en un área específica; la mayoría de los trabajos de inteligencia artificial requieren educación de posgrado, pero el hecho de que haya trabajos de inteligencia artificial es nuevo. Por supuesto, estos trabajos utilizan AI, en lugar de implementar AI.

También habrá más necesidades de mercado para estas habilidades. Y como estas tecnologías son difíciles de dominar, la calidad del aprendizaje es esencial.

Ahora, la mayor parte del aprendizaje se centrará en el uso de las tecnologías. Hay una ventaja para los más inteligentes, ya que pueden comenzar a interesarse en desarrollar e investigar la tecnología.

Los métodos de ML / AI formarán parte de los trabajos de programación. Los datos de poda y aseo de esos sistemas formarán parte de la programación. La construcción de software de varias piezas será incluso más común de lo que es ahora. La interfaz de usuario se moverá de Mobile, Web y Desktop a todos aquellos más VR.

Solo elige uno y comienza a aprender. Pronto descubrirás que muchas técnicas diferentes tienen conceptos básicos compartidos, y el conocimiento y la experiencia en un tema pueden ser muy útiles cuando quieres aprender otro.