El desarrollo de software es un campo bastante grande. Fuera de mi cabeza en los últimos dos años, estos han ido ganando popularidad en la industria:
– Técnicas de desarrollo web del lado del cliente:
- Nuevo marcado HTML5 y declaraciones CSS3
- Nuevas funciones de JavaScript (como parte de la especificación HTML5) para cosas como geolocalización, WebSockets, trabajadores web, etc.
- Diseño responsivo, pudiendo escribir el mismo sitio para múltiples dispositivos.
- Estructuras de JavaScript MVC que realizan la representación solo en el lado del cliente (Backbone.js, Angular.js, etc.)
- Estructuras JavaScript MVC que realizan la representación tanto en el lado del cliente como en el lado del servidor, junto con Node.js (Mojito, Derby.js, etc.)
– Técnicas del lado del servidor de desarrollo web:
- WebSockets, junto con las nuevas especificaciones del lado del cliente
- Bases de datos NoSQL, y sus diferentes tipos, tales como almacenes de clave / valor, bases de datos orientadas a documentos y gráficas (demasiadas para nombrar ahora).
- Opciones basadas en SQL escalables (MemSQL y otros)
- Almacenamiento distribuido (HDFS de Hadoop, Amazon S3)
- Idiomas para aplicaciones de alta concurrencia (Node.js, Go, Erlang)
- Computación distribuida de alto rendimiento (AWS, Azure, Compute Engine)
– Aprendizaje automático (distribuido):
- ¿Dónde puede un aspirante a artista aprender a dibujar cómics en la India?
- ¿Cuál es la mejor manera de aprender más sobre el código en su dispositivo móvil?
- Cómo volverse más inteligente y más motivado para pensar.
- ¿Cuál es la mejor manera de aprender una palabra al día?
- ¿Es inteligente aprender chino cuando voy a estudiar, teniendo en cuenta que posiblemente se convierta en el “inglés” del futuro o será el inglés el idioma más importante?
- Nuevos modelos de programación para el análisis de datos (MapReduce).
- Lenguajes específicos de dominio para analizar grandes cantidades de datos distribuidos (Pig)
Como desarrollador de JavaScript, mi conocimiento es bastante basado en la web y de alto nivel, por lo que estoy seguro de que hay muchas más cosas en un nivel inferior de programación (¿C ++ 11?).
A pesar de todas estas cosas nuevas, sin embargo, es más importante tener una buena base de conceptos en lugar de simplemente subirse al último carro. Si observa la lista, hay una tendencia a volver a lo que se usó originalmente, pero de una manera más eficiente (representación del lado del cliente -> representación del lado del servidor, NoSQL -> SQL escalable).
Si conoce sus conceptos, escoger nuevas tecnologías tomará un tiempo muy corto, ya que muchos de ellos, independientemente de las exageraciones, son solo beneficios incrementales sobre lo que ya existe. No se moleste con los cursos especializados, ya que desde el momento en que se especializa en una tecnología, probablemente saldrá una mejor.