Как стать программистом: руководство от Google
Это руководство позволит студентам вузов приступить к самостоятельному развитию своих технических навыков, чтобы стать программистом.
Онлайн-курсы, перечисленные в этом руководстве, не заменяют учебную программу вашего вуза. Тем не менее, они станут прекрасным дополнительным инструментом для вашего самообучения или для ознакомления с конкретной дисциплиной.
Использование руководства:
- Используйте руководство по своему усмотрению
- Есть множество вещей, не перечисленных здесь, которые стоит изучить — вперёд!
- Даже если вы изучите это руководство вдоль и поперёк, это не гарантирует вам трудоустройство в Google
- Руководство постоянно пополняется — проверяйте обновления
Следите за страницей Google+ для студентов, на которой публикуются дополнительные советы и ресурсы, и где можно пообщаться с другими заинтересованными студентами.
Рекомендации для теоретического изучения
Познакомьтесь с вводным курсом Computer Science
Примечание: Прослушайте начальный курс Computer Science, в котором представлены основы программирования. Полученные знания будут полезны в любом направлении.
Онлайн-ресурсы: Udacity — Введение в Computer Science, Coursera — Computer Science 101, CS50. Основы программирования
Попробуйте программировать хотя бы на одном объектно-ориентированном языке: C++, Java или Python
Примечание: Объектно-ориентированное программирование дает возможность создавать расширяемые системы (extensible systems). Это одно из самых значительных достоинств ООП и именно оно отличает данный подход от традиционных методов программирования. Расширяемость (extensibility) означает, что существующую систему можно заставить работать с новыми компонентами, причем без внесения в нее каких-либо изменений.
Онлайн-ресурсы для новичков: Coursera — Учимся программировать: Основы, Введение от МТИ в программирование на Java, Урок по Python от Google, Coursera — Введение в Python, Электронная книга по Python в открытом доступе
От нас: подборки по C++, Java, Python
Онлайн-ресурсы для продолжающих изучение: Udacity: Проектирование компьютерных программ, Coursera — Учимся программировать: Пишем качественный код, Coursera — Языки программирования, Университет Брауна — Введение в языки программирования
Изучите другие языки программирования и технологии
Примечание: Добавьте в свой репертуар JavaScript, CSS, HTML, Ruby, PHP, C, Perl, Shell, Lisp, Scheme. Каждый новый язык, который Вы выучите даёт новые возможности решения задач.
Онлайн-ресурсы: Руководство по HTML от w3school.com, CodeAcademy.com
От нас: каталог книг, видеолекции
Тестируйте свой код
Примечание: Любой проект без надлежащего покрытия тестами обречен рано или поздно быть переписанным с нуля. Научитесь отыскивать баги, создавать тесты и взламывать собственное ПО.
Онлайн-ресурсы: Udacity — Методы тестирования ПО, Udacity — Дебаггинг ПО
Развивайте логическое мышление и изучите дискретную математику
Примечание: Программирование состоит из разного рода задач, которые на 70% состоят из математики.
Онлайн-ресурсы: Математика для Computer Science от МТИ, Coursera — Введение в логику, Coursera — Линейная и дискретная оптимизация, Coursera — Вероятностные графовые модели, Coursera — Теория игр
Развивайте сильное понимание алгоритмов и структур данных
Примечание: Изучите фундаментальные типы данных (массивы, записи, кортежи), сортировочные алгоритмы (быстрая сортировка, сортировка слиянием, пирамидальная сортировка) и структуры данных (бинарные древа поиска, красно-чёрные деревья, таблицы хеширования), большое «О».
Онлайн-ресусры: Введение в алгоритмы от МТИ, Coursera — Введение в алгоритмы: Часть 1 и Часть 2, Список алгоритмов, Список структур данных, Книга: Руководство по разработке алгоритмов
От нас: подборка материалов по алгоритмам, структурам данных и дискретной математике
Развивайте свои знания операционных систем
Примечание: Знание операционных систем даст возможность писать максимально оптимизированные программы.
Онлайн-ресурсы: Computer Science вместе с университетом Беркли
Изучите онлайн-ресурсы по искусственному интеллекту
Примечание: Отрасль развивается очень быстро. Например, алгоритмы поиска Google используют ИИ.
Стэнфордский университет: Введение в робототехнику, Машинное обучение
Научитесь строить компиляторы
Примечание: Для того чтобы стать хорошим программистом, нужно понимать, что происходит внутри высокоуровневого языка программирования.
Онлайн-ресурсы: Coursera — Компиляторы
Изучите криптографию
Примечание: Большое количество технологий основано на криптографии. Например, Blockchain.
Онлайн-ресурсы: Coursera — Криптография, Udacity — Прикладная криптография
Изучите параллельное программирование
Примечание:
Онлайн-ресурсы: Coursera — Гетерогенное параллельное программирование
Рекомендации для практического изучения
Поработайте над своим проектом
Примечание: создайте и обеспечьте работоспособность сайта, сервера или, например, постройте простого робота.
Онлайн-ресурсы: Список проектов Apache, Лето кода от Google, Сообщество разработчиков Google
Займитесь опенсорсом
Примечание: Github — отличный способ читать код других людей или внести вклад в существующий проект.
Поработайте над проектом с другими программистами
Примечание: Это улучшит ваши навыки работы в команде и поможет вам научиться учиться у других.
Практикуйте свои знания алгоритмов и программирования
Примечание: Знание алгоритмов отлично тренируется в соревнованиях по программированию.
Онлайн-ресурсы: CodeJam, ACM ICPC
Научите чему-нибудь других
Примечание: Помогая учиться другим, вы углубляете свои собственные знания.
Станьте участником программы стажировки
Примечание: Старайтесь подавать заявки на программы стажировки заранее. Как правило, заявки начинают приниматься за несколько месяцев до начала программы.
Онлайн-ресурсы: Вакансии Google
Другие статьи по теме
Как не провалить дистанционное техническое собеседование
Как стать Junior-разработчиком и устроиться на работу за 4 месяца