Antes de sumergirse en una respuesta específica, repasemos el conjunto de habilidades básicas requeridas por cualquier ingeniero de software. Estos son:
- idioma
- programación de internet (cliente y servidor)
- arquitecturas, marcos y bibliotecas asociadas
- base de datos
- metodologías de software (cómo colaboramos para construir y mantener software)
- control de versiones
A este conjunto de habilidades básicas podemos agregar:
- seguridad (cubre una amplia gama de temas, desde problemas de TI hasta estándares de la industria)
- código algorítmico (especialmente si está interesado en el aprendizaje automático)
- medios (codificación, transmisión, DRM y otros)
- Conceptos gráficos en 3D que conducen a la programación gráfica.
- diseño del juego (más o por qué esto es importante más adelante)
- análisis de flujo de trabajo
¡Más allá de estas habilidades básicas, dependerá de las áreas que más te entusiasmen!
Haskell sirve como puntero a la sintaxis lingüística futura y debería aumentar las expectativas sobre los idiomas de la próxima generación. Sin embargo, es un lenguaje funcional y débil desde una perspectiva estructural, determinista y orientada a objetos. Esto se convierte en un problema importante una vez que se habla de arquitecturas masivamente concurrentes. Así que aprende por todos los medios; solo entiendo que Haskell es solo un trampolín.
- Como nuevo estudiante de doctorado, ¿cómo podría mejorar las habilidades de presentación para conferencias o seminarios?
- ¿Qué habilidades puedes aportar al equipo como scrum master?
- Cómo mejorar mi estilo de dibujo y mis habilidades a los doce años
- ¿Cuáles son algunos de los mejores recursos para ayudarlo a mejorar sus habilidades de escritura?
- ¿Cuáles son las 3 habilidades blandas más importantes que debe poseer el vendedor digital perfecto?
Los idiomas que (personalmente) me gustan son C #, Go, Scala; sin embargo, también debe tener Java / Javascript y Python.
La programación web es vital, pero trate de apreciar el lado del servidor también, ya que la disciplina de escribir software de servidor durará más que los idiomas individuales. Para el lado del servidor, debe tener habilidades en bases de datos y comprender conceptos básicos como VPN y seguridad de red.
La base de datos es importante por varias razones; Casi todas las aplicaciones se basan en gran medida en información estructurada. El primer paso implica comprender la normalización de los datos. Más allá de eso, profundizará en la concurrencia de la base de datos (múltiples usuarios que compiten por acceder a la misma o datos superpuestos). Deberá aprender cómo se sincronizan los datos entre sistemas y máquinas, en zonas horarias y en interfaces seguras. De hecho, la base de datos es prácticamente su propia ciencia. No espero que aprenda todo esto antes de la Universidad, pero al menos se familiarice con hablar con bases de datos SQL y los conceptos básicos de la normalización de datos.
Machine Learning (ML) está dejando huella en las aplicaciones del mundo real, aunque la ciencia aún está en pañales. El aprendizaje automático NO es inteligencia artificial (IA); ML tiende a ser un problema o dominio específico, mientras que la IA está más enfocada en modelar la realidad. La IA está más estrechamente relacionada con los motores de juego que crean un sofisticado modelo virtual de realidad. ¡Ahora imagine que el modelo puede aprender y crecer solo y tendrá una verdadera IA! Es un tema divertido, pero ML es más relevante para su situación. Los algoritmos mejorarán tu razonamiento y tus habilidades analíticas.
Pero sobre todo, ¡diviértete! Si yo fuera tú, estaría construyendo robots, jugando con Raspberry Pi y el hardware asociado.
También estaría pensando cómo hacer que los programas de redes sociales sean realmente útiles. La mayoría son algo vacías porque no hay forma de tomar toda la información que pasa por sus cuentas de redes sociales y organizarla de una manera que sea útil en el futuro. Como ejemplo, me suscribo a muchos grupos de tecnología y proporciono respuestas e ideas, pero debido a que estos programas no tienen un concepto de organización de datos, ¡sigo respondiendo exactamente las mismas preguntas! ¡Aprende a pensar genuinamente fuera de la caja y verás la próxima aplicación asesina antes que nadie!