Все, что вам нужно знать о программировании, от директора по исследованиям Google и эксперта по искусственному интеллекту

Он является автором самой читаемой книги об искусственном интеллекте.

Последние 20 лет он работал исследователем и консультантом Google.

Он был одним из главных разработчиков их поисковой системы, которая в то время считалась одной из лучших поисковых систем.

Питер Норвиг — американский компьютерный эксперт, наиболее известный своими исследованиями и работой с алгоритмами в Google. Он работал в НАСА, написал исчерпывающие книги по искусственному интеллекту и обучил сотни тысяч студентов на массовых открытых онлайн-классах (MOOCS).

Если мы можем серьезно отнестись к теме искусственного интеллекта, то это он.

Он человек с большим опытом — не пропустите, что он хочет вам сказать!

Делай это, потому что это весело

Норвиг:заинтересуйтесь программированием и займитесь чем-нибудь, потому что это весело. Следите за тем, чтобы вам было достаточно весело, чтобы вы были готовы потратить свои десять лет/10 000 часов.

В разделе Как стать великим программистом я упомянул, что обучение программированию не требует много времени, но требует много времени!

Путь от нуля к мастерству может показаться долгим, но это не так, если вы будете получать от этого удовольствие.

«Жизнь — это либо дерзкое приключение, либо вообще ничего».

— Хелен Келлер

Делать что-либо только ради денег никогда не принесет удовлетворения — это только разочарует вас.

Убедитесь, что вы занимаетесь любимым делом. Тебе это так нравится, дело не в деньгах.

Потому что деньги не решат всех ваших проблем, они решат только все ваши денежные проблемы.

Однажды ты умрешь, и все это не будет иметь значения. Так что наслаждайтесь. Делайте что-то важное для вас — получайте удовольствие на этом пути.

Обучение — это не гонка: чем лучше книга, тем медленнее она должна усваиваться. Больше часов не обязательно превратится в больше знаний.

Лучше сосредоточиться на производительности.

Распределите темы в чанке и старайтесь обрабатывать по одной за раз.

Кроме того, помните, что обучение кодированию — это не конечная цель, в жизни будет еще много вещей.

Твоя жизнь - мерцание светлячка в ночи. Вы здесь на такой короткий срок.

Убедитесь, что вам это нравится, потому что здесь нет наследия. Нечего оставлять. Мы все уйдем. Наших детей не станет. Наши дела превратятся в прах.

Учитесь на практике — практикуйтесь осознанно

«Всегда есть чему поучиться, даже мастеру».

- Мастер Шифу.

Norvig:Лучший вид обучения — обучение на практике. Говоря более технически, максимальный уровень производительности для людей в данной области не достигается автоматически в результате длительного опыта, но уровень производительности может быть повышен даже очень опытными людьми в результате преднамеренных усилий по улучшению. .”

Если вы не практикуете сознательно, вы тратите свое время впустую. Это просто!

Спросите себя: «Почему я выполняю эту задачу?» и ваш ответ «выполнить задачу», то вы не занимаетесь преднамеренной практикой.

Никто не стал хорошим программистом, читая статьи и просматривая видео. Возможно, мы сможем вспомнить факты о программировании, но не сможем создать ничего интересного.

Единственный способ добиться хороших результатов в программировании — это Осознанная практика.

Прочитайте это, если вы хотите узнать, как выполнять Преднамеренную практику.

Читать, читать и читать!

«У хорошего путешественника нет фиксированных планов, и он не намерен прибывать».

Лао-цзы

Norvig: общайтесь с другими программистами; читать другие программы. Это важнее любой книги или учебного курса.

Вы не поверите, насколько лучше вы станете, просто читая код.

Общение с другими программистами многому вас научит.

Вы должны быть готовы читать чужой код, писать свой собственный, а затем проверять ваш код другими.

Вы должны хотеть быть частью этого удивительного цикла обратной связи, когда профессионалы мирового класса сообщают вам, что вы делаете неправильно.

В этом суть открытого исходного кода. Вы будете расти намного быстрее, если научитесь этому, а не будете делать все самостоятельно.

Есть много доступных дискорд-каналов, иди и посмотри!

Делайте то, что работает для вас

Норвиг: Если хотите, проучитесь четыре года в колледже (или больше в аспирантуре). Это даст вам доступ к некоторым профессиям, требующим учетных данных, и даст вам более глубокое понимание области, но если вам не нравится учеба, вы можете (при некотором усердии) получить аналогичный опыт самостоятельно или на работа. В любом случае, одного изучения книг будет недостаточно.

«Образование в области информатики не может сделать кого-либо опытным программистом, так же как изучение кистей и пигментов не может сделать кого-то опытным художником»

— Эрик Рэймонд

Норвиг: один из лучших программистов, которых я когда-либо нанимал, имел только высшее образование; он создал много отличного программного обеспечения, имеет собственную группу новостей и заработал на опционах на акции достаточно, чтобы купить собственный ночной клуб.

Научитесь работать в группах

«Если все движутся вперед вместе, то успех позаботится о себе сам».

- Генри Форд

Norvig подчеркивает важность совместной работы программистов над проектами. «Стань лучшим программистом в некоторых проектах», говорит он. «Будь худшим в отношениях с другими. Когда вы лучший, вы можете проверить свои способности, чтобы возглавить проект и вдохновить других своим видением. Когда ты худший, ты узнаешь, что делают мастера».

Работа в группе позволяет вам общаться с большим количеством людей, которые умнее вас. Это учит вас многому о том, как общаться.

Вы можете извлечь лучшее из каждого из них и стать лучшей версией себя. Есть много способов работать в группе, включая мобильность, парное программирование, групповое программирование, открытый исходный код и так далее.

Norvig: работайте над проектами после других программистов. Понять программу, написанную кем-то другим. Посмотрите, что нужно, чтобы понять и исправить это, когда оригинальных программистов нет рядом. Подумайте, как спроектировать свои программы, чтобы облегчить их работу тем, кто будет поддерживать их после вас.

Видите ли, разработка программного обеспечения — это больше, чем просто написание кода и его работа. Многое зависит от совместной работы в группах и создания вещей вместе.

Изучайте языки программирования разных парадигм

Norvig: Изучите не менее полдюжины языков программирования. Включите один язык, который делает упор на абстракции классов (например, Java или C++), один, который делает упор на функциональную абстракцию (например, Lisp, ML или Haskell), один, который поддерживает синтаксическую абстракцию (например, Lisp), один, который поддерживает декларативные спецификации (например, шаблоны Prolog или C++). , и тот, который делает упор на параллелизм (например, Clojure или Go)

C был моим первым языком. Меня привлек его синтаксис. Потом появился LISP/Scheme, и все изменилось. Все!

JavaScript, на мой взгляд, является одним из таких языков, который дает вам представление о C и Lisp.

Обучение программированию в различных парадигмах облегчит вам выбор подходящих инструментов и методов для решения задачи.

В противном случае вы будете использовать один и тот же инструмент для всего.

Это ничем не отличается от случая плотника, у которого есть несколько разных типов молотков, и он не будет использовать кувалду, когда более подходящим может быть простой молоток с когтями.

Ноу-хау вещи работают под капотом

Norvig: Помните, что в "информатике" есть слово "компьютер". Узнайте, сколько времени требуется вашему компьютеру для выполнения инструкции, извлечения слова из памяти (с промахом кэша и без него), чтения последовательных слов с диска и поиска нового места на диске.

Великие программисты — это те, кто ясно мыслит. — У них отличное понимание основ.

Вам лучше хорошо понимать основы, чем запоминать всевозможные сложные понятия, которые вы не можете сшить воедино и не можете извлечь из основ.

Твердое понимание основ избавит вас от синдрома самозванца.

Если вы не можете извлекать понятия из основ по мере необходимости, вы проиграли.

Вы просто запоминаете.

Я считаю Код: скрытый язык компьютерного оборудования и программного обеспечения хорошей книгой для понимания того, как все работает внутри компьютера.

Заключение

До рождения моего первого ребенка я прочитал все практические руководства и до сих пор чувствовал себя невежественным новичком. 30 месяцев спустя, когда должен был родиться мой второй ребенок, вернулся ли я к книгам, чтобы освежить знания? Нет. Вместо этого я полагался на свой личный опыт, который оказался для меня гораздо полезнее и убедительнее, чем тысячи страниц, написанных экспертами.

— Питер Норвиг

Требуется время, чтобы улучшить кодирование .

Требуется время, чтобы выучить новые языки.

Для создания приложений требуется время.

Требуется время, чтобы изучить рекомендации.

Требуется время, чтобы делать ошибки, а затем учиться на них.

Требуется время, чтобы потерпеть неудачу, а затем учиться на своих ошибках.

Для практики требуется время. Требуется время, чтобы стать лучше. Требуется время, чтобы стать отличным программистом.

Самое важное, что нужно помнить, это то, что это требует времени!

Если вы только начинаете, не беспокойтесь о том, насколько быстро или медленно вы учитесь.

Учитесь в своем собственном темпе и получайте от этого удовольствие.

Если вам нужна помощь, то попросите ее.

Обращение за помощью — это не признак слабости. Это признак роста. Это показывает, что вы готовы выйти за пределы своих нынешних ограничений.

Примечание благодарности

Я хотел воспользоваться этой последней возможностью, чтобы сказать спасибо.

Спасибо, что вы здесь! Я бы не смог делать то, что я делаю, без таких людей, как вы, которые следуют за мной и совершают этот прыжок веры, чтобы прочитать мой пост.

Я надеюсь, что вы присоединитесь ко мне в мой будущей записи в блоге и останетесь здесь, потому что у нас есть кое-что интересное.

И я надеюсь, что буду помогать вам в вашей карьере еще много лет!

Увидимся в следующий раз. Пока!

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку здесь.