Становиться лучше — это здорово, но становишься ли ты лучше в этом?

Я чертовски люблю учиться. Я всегда так делал, хотя мне нужно некоторое время, чтобы действительно освоиться с этим. Сейчас самое интересное в моей жизни — это то, сколько места у меня есть для размышлений и обучения, а именно этого я и хочу. Придя в Recurse Center, я оказался в среде, разработанной и полностью ориентированной на изучение программирования. Я как ребенок в кондитерской — кондитерской со знающими сверстниками, сознательно спроектированной средой и поддерживающими социальными нормами. Заявленная цель Recurse Center — сделать людей «значительно лучшими программистами». Итак, как мне лучше всего использовать это время?

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

  • Что происходит с линейной алгеброй?
  • Как я могу создавать более интересные модели машинного обучения?
  • Как структурировать длинные многофункциональные программы?
  • Как я могу сделать свой код красивее и лучше?
  • Могу ли я стать лучше в решении забавных алгоритмических задач?

У меня было четкое представление о том, что я получу от программы. Это выглядело так:

Таким образом, в первый день я выбрал одну из моих вещей, связанных с программированием, и начал работать над ней. Постоянные читатели знают, что это означает, что большую часть своей первой недели я провел за просмотром лекций по машинному обучению и проработкой наборов задач. Я проглотил тонну знаний и чувствовал себя прекрасно. Но в начале прошлой недели я разговаривал с чудесным Джеймсом, и он назвал мысль, которая была в глубине моего сознания.

Вы знаете, как этому научиться

Мне нужно многому научиться, чтобы достичь своих целей как программиста и специалиста по информатике. Я начал с нападок на лекции и, по сути, с изучения математики и теории компьютерных наук. Это круто и полезно, и это определенно то, что я должен знать. Но вот что касается обучения: у меня это хорошо получается. Не то чтобы я уже хорошо разбирался в машинном обучении, потому что это не так. Но! Я уверен в своей способности узнать об этом. Впитывание знаний из лекций и Википедии; развитие интуиции в отношении новых теорий; разбивать листы задач… это было моим хлебом с маслом в течение многих лет. Даже в последние несколько лет моей работы в костюме сбор и применение технических знаний — это то, чем я выделялся на фоне остальных.

Напротив, в чем у меня нет опыта, так это в обучении написанию программ. Одному недостаточно хорошо писать программы. Если у вас большие амбиции, вам нужно научиться хорошо писать программы. Это включает и никоим образом не ограничивается:

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

Для многих людей в Recurse Center изучение этих вещей счастливо совпадает с занятием их конкретной областью интересов. Но несложно заметить, что просмотр лекций и реализация сложных моделей на предварительно обработанных наборах данных, где все вспомогательные функции уже написаны, на самом деле не развивают эти навыки. И RC — отличное место, чтобы изучить вышеприведенный список! Там полно людей с совершенно другим опытом. Парное программирование и сотрудничество встроены в структуру. Почти все дружелюбны и готовы сотрудничать, и, поскольку ни у кого нет жестких сроков, мне не нужно чувствовать, что я увожу кого-то из семьи по вечерам.

Имея это в виду, моей основной целью в RC стало увеличение первой производной моих знаний по времени, dK/dT. На диаграммах:

Я думаю, что такой способ мышления о знаниях хорошо применим и к другим сферам жизни. Я давно говорил, что математика — это своего рода спортзал для вашего мозга, повышающий вашу эффективность в изучении других знаний. Оказывается, это правильно, но только для определенных парадигм передачи знаний. Изучение теории музыки и отработка гамм сделают вас музыкантом немного лучше, но настоящая польза заключается в том, что вы сможете увидеть общие закономерности в музыке, которую играете, что поможет вам получить максимальную отдачу от времени, затрачиваемого на обучение. Хороший ночной сон улучшит ваше настроение, но, что более важно, поможет вам быть лучше во всем, что вы делаете на следующий день, что делает вас счастливым. И наоборот, напиваться каждую ночь — это весело, но делает следующий день ужасным. Часто это стоит компромисса, но следует учитывать влияние на ваше общее счастье в долгосрочной перспективе.

Оценка реальной пользы потраченного времени помогает вам принимать правильные долгосрочные решения. Учиться на текущем пределе легко. Вы учитесь учиться?

Сноска: глупость

Теперь я думаю об этом, увеличение dK/dt — не единственная моя цель. Оставляя себе пространство и время для ума, я также надеюсь развивать лучшие методы обучения: хорошо питаться; физические упражнения и дисциплина сна; уверенность говоря о коде. По мере того, как я становлюсь лучше в этих вещах, скорость, с которой я могу научиться учиться, будет увеличиваться. Так что я также пытаюсь повысить свой d²K/dt².

Но насколько эффективно я буду культивировать эти лучшие методы обучения? Имеет смысл, что чем больше времени я провожу в окружении людей с разным опытом, изучая, что работает в их жизни, тем выше скорость, с которой увеличивается мой d²K/dt²… скажем, d³K/dt³ является линейной функцией d⁴K/dt⁴, постоянной плотности крутых людей. Можно даже утверждать, что эта концентрация крутых людей и есть главная цель Recurse Center. Имея это в виду, я хотел бы предложить любому читателю RC новый слоган:

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

Конечно, следует отметить, что Recurse Center как организация постоянно стремится привлекать больше крутых, интересных людей, чтобы они приходили и программировали. Таким образом, теоретически d⁴K/dt⁴ должно быть возрастающей функцией времени. Я позволю вам понять, как это повлияет на мои знания в долгосрочной перспективе, потому что у меня уже есть несколько производных от K, над которыми нужно работать.