Esto es algo que he encontrado en la página web de la Guía técnica de Google y creo que es relevante. Su tipo de paquete general teniendo en cuenta todas las habilidades requeridas por un buen programador / desarrollador de software (AFAIK):
Tome un curso de “Introducción a CS”
Centrarse en las instrucciones básicas de codificación
Recursos en línea:
- ¿Cuál es el mejor libro para aprender estructuras de datos en C?
- ¿Cuál es el libro más influyente que todo programador debería leer?
- ¿Qué libros de matemáticas se deben leer para convertirse en un experto en informática?
- ¿Cuál es el mejor libro para aprender los conceptos de programación orientada a objetos?
- ¿Qué es más efectivo como medio de lectura para un programador (estudiante de SE): un libro impreso o un dispositivo electrónico?
- Udacity – Introducción a la informática
- Coursera – Informática 101
Codifique (al menos) UN lenguaje de programación orientado a objetos (C ++, Java®, Python®)
Recursos en línea para principiantes:
- Coursera – Aprender a programar: los fundamentos
- Introducción del MIT a la programación en Java
- Clase Python de Google
- Coursera – Introducción a Python, Python Open Source E-Book
Recursos en línea intermedios:
- Diseño de programas informáticos de Udacity
- Coursera – Learn to Program: Crafting Quality Code, Coursera – Lenguajes de programación
- Brown University – Introducción al lenguaje de programación
Aprende otros lenguajes de programación
Añadir a su repertorio:
- JavaScript®
- CSS y HTML
- Ruby®
- PHP®
- C®
- Perl®
- Script de Shell®
- Lisp®
- Scheme®
Recursos en línea:
- Codecademy
- Udacity – Desarrollo web móvil
- Udacity – Desarrollo de juegos HTML5
Prueba tu código
Aprenda a detectar errores, crear pruebas y romper su software
Recursos en línea:
- Udacity – Métodos de prueba de software
- Udacity – Depuración de software
Desarrollar razonamiento lógico y conocimiento de matemáticas discretas.
Recursos en línea:
- MIT Matemáticas para Informática
- Coursera – Introducción a la lógica
- Coursera – Optimización lineal y discreta
- Coursera – Modelos gráficos probabilísticos
- Coursera – Teoría de juegos
Desarrollar una sólida comprensión de algoritmos y estructuras de datos.
Aprenda sobre los tipos de datos fundamentales (pila, colas y bolsas), algoritmos de clasificación (ordenación rápida, combinación, ordenación), estructuras de datos (árboles de búsqueda binarios, árboles rojo-negros, tablas hash) y Big O.
Recursos en línea:
- Introducción a los algoritmos del MIT
- Coursera – Introducción a los algoritmos Parte 1 y Parte 2
- Coursera – Lista de algoritmos
- Coursera – Lista de estructuras de datos
- Coursera – Libro: El manual de diseño de algoritmos
Desarrollar un sólido conocimiento de los sistemas operativos.
Recursos en línea:
Aprende diseño UX
Recursos en línea:
Udacity – Diseño UX para desarrolladores móviles
Aprende inteligencia artificial
Recursos en línea:
- Universidad de Stanford – Introducción a la robótica
- Universidad de Stanford – Procesamiento del lenguaje natural
- Universidad de Stanford – Aprendizaje automático
Aprende a construir compiladores
Recursos en línea:
Coursera – Compiladores
Aprende criptografía
Recursos en línea:
- Coursera – Criptografía
- Udacity – Criptografía Aplicada
Aprende programación paralela
Recursos en línea:
Coursera – Programación paralela heterogénea
Trabajar en proyectos fuera del aula.
Cree y mantenga un sitio web, cree su propio servidor o cree un robot
Recursos en línea:
- Lista de proyectos de Apache
- Google Summer of Code
- Grupo de desarrolladores de Google
Trabaje en una pequeña parte de un sistema grande (base de código), lea y comprenda el código existente, rastree la documentación y depure
GitHub es una excelente manera de leer el código de otras personas o contribuir a un proyecto
Recursos en línea:
- GitHub®
- Kiln ™
Trabaja en proyectos con otros programadores.
Esto lo ayudará a mejorar su capacidad de trabajar bien en equipo y le permitirá aprender de los demás.
Practica tus conocimientos algorítmicos y habilidades de codificación
Practique su conocimiento algorítmico a través de competencias de codificación como CodeJam o el Concurso Internacional de Programación Colegiada de ACM.
Recursos en línea:
- CodeJam
- ACM ICPC
Fuente: Estudiantes – Guía de desarrollo técnico – Google Careers.
Sigue aprendiendo y mantente motivado. Salud !!