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

Пару лет назад я наивно спросил пару друзей-информатиков, сколько времени, по их мнению, мне понадобится, чтобы научиться становиться программистом? «Знаешь, если я, вроде бы, правда усердно учился каждый день».

Их ответ: «Наверное, месяц. Вам просто нужно написать и прочитать много кода, и в конце концов вы его получите ».

Честно говоря, они были отчасти правы. Я сразу же погрузился в дело. Мне потребовалось около месяца изучения основ программирования: функций, методов, библиотек, синтаксиса, рекурсии и т. Д.

Но это понимание было иллюзорным. Все мои знания были поверхностными.

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

Итак, я удвоил свой учебный план: книги по программированию, уроки на Youtube, курсы Coursera, работы. Я хотел применить код Pythonic к данным финансовых временных рядов и решил, что с такими данными можно выполнять ограниченное количество операций.

Я постепенно понял, что изучаю уникальную эвристику решения проблем, а не композиционный язык.

Ни синтаксис, ни функции, ни методы. Я учился решать проблемы с точки зрения отдельного набора инструкций.

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

Начальный момент

Постепенно я начал увеличивать степень детализации своих запросов «как…». Я перешел от поиска «учебник по финансам python» к «пересчету часовых данных в ежедневные» или «pandas ml количественная документация». То, что произошло в этот момент, было в равной степени обнадеживающим и поразительным:

Здесь были все вопросы, которые я когда-либо задавал себе. Онлайн. Однако его (обычно) не было в руководстве по программированию. Эти скрытые жемчужины информации часто скрывались в определенных ветках на StackOverflow, историях на Medium, проектах на Kaggle или Github.

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

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

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