Sugeriría que para ser un buen candidato para Google, o para ser un mejor desarrollador en general:
Visión general
- Conozca muy bien uno o dos de C ++, Java o Python (los tres se usan en Google, aunque yo, y muchos otros desarrolladores, prefiero C a C ++)
- Comprenda las fortalezas y debilidades de cada lenguaje de programación y su plataforma / API
- Sólida comprensión de los principios básicos, tales como algoritmos (clasificación, búsqueda, etc.), estructuras de datos (listas vinculadas, árboles, etc.)
- Sistema operativo sólido y comprensión de sistemas (desarrollo Unix)
- Consejos sobre preguntas de la entrevista de Google para darle una idea de lo que se espera de un desarrollador en Google (http://stackoverflow.com/questio…)
Libros
- Estructura e interpretación de programas de computadora (SICP) (http://mitpress.mit.edu/sicp/ful…)
- El lenguaje de programación C (http://en.wikipedia.org/wiki/The…
- El programador pragmático (http://www.pragprog.com/the-prag…)
- Código Completo (http://cc2e.com/)
- El manual de C ++ (http://www.amazon.com/Primer-Plu…)
- C ++ efectivo (http://www.aristeia.com/books.html)
- Patrones de diseño orientados a objetos (grupo de cuatro) (http://www.amazon.com/Design-Pat…)
- El entorno de programación de UNIX (aprender UNIX) (http://www.amazon.com/exec/obido…)
- The Art of Computer Programming (libro) (muy avanzado) (http://en.wikipedia.org/wiki/The…)
Los cursos
- ¿Es una excusa válida para decir que mi necesidad constante de dinero es lo que siempre detiene mi proceso de aprendizaje?
- ¿Cómo puedes desaprender lo que has aprendido durante la vida corporativa?
- ¿Cuál es la forma más efectiva de leer y retener una enciclopedia?
- Como aprender vietnamita
- ¿Debo aprender negocios como estudiante de informática?
- MIT OpenCourseware es un excelente recurso con diapositivas en línea, videos de conferencias, notas, etc. Obtenga una educación MIT CSCI desde su hogar.
- Introducción a la informática y la programación (Python) (http://ocw.mit.edu/courses/elect…)
- Estructura e interpretación de los programas de computadora (según el libro de arriba) (http://ocw.mit.edu/courses/elect…)
- Introducción a los algoritmos (http://ocw.mit.edu/courses/elect…)
Blogs
- Muchos de estos están inactivos, pero los archivos están llenos de excelentes publicaciones.
- Joel en Software (http://www.joelonsoftware.com/)
- Paul Graham (http://paulgraham.com/articles.html)
- Raymond Chen (http://blogs.msdn.com/b/oldnewth…)
- Google Testing Blog (http://googletesting.blogspot.com/)
- Miguel De Icaza (http://tirania.org/blog/)
- Aprendiendo C ++ (http: //learningcppisfun.blogspot…)
- Fabulosas aventuras en la codificación (http://blogs.msdn.com/b/ericlipp…)
Las comunidades
- Conoce gente de ideas afines, haz preguntas, aprende
- Noticias Hacker (http://news.ycombinator.com/)
- Desbordamiento de pila (http://stackoverflow.com)
- Progit (http://www.reddit.com/r/programming)
Para convertirse en un desarrollador por encima de la media lleva años (5-6). Ya sea un título superior en CSCI o una experiencia equivalente y un autoaprendizaje combinado con aproximadamente 3 años de experiencia en proyectos sólidos en la industria.
Estos libros y cursos le brindarán una sólida base de conocimientos, donde podrá recoger tecnologías como JavaScript (lenguaje de programación) fácilmente. Algunos también sugerirían aprender Programación Funcional como Lisp, Erlang (lenguaje de programación), Haskell (lenguaje de programación) o Scheme (lenguaje de programación), ya que es una verdadera revelación en un estilo diferente de resolución de problemas (no tiene que hacerlo). aprendelo completamente, pero al menos entiende que es y como funciona).
Nada supera la experiencia real con problemas complejos de desarrollo. Encuentre un proyecto de código abierto o inicie su propio proyecto y comience a piratear.
Lo más importante es que su aprendizaje nunca puede detenerse: la informática es un campo relativamente joven, pero es muy diverso y profundo. Encuentre un área que le interese y aprenda los fundamentos buceando en profundidad.