Программирование — это не сложно, но разочаровывает Перевод

OleStep OleStep 3 Июня 2022 (ред)

Программировать сложно или нет? Имеющиеся данные недостаточно убедительны и разнообразны, чтобы ответить на этот вопрос в целом. Более обоснованные (и, вероятно, честные) ответы: «это зависит» и «и то, и другое».

Почему же так часто говорят, что это тяжело?

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

Автор статьи опросил более 200 программистов, когда писал свою книгу Coders, и зачастую все они говорили мне одно и то же:

программирование не было особенно сложным.

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

Больше всего они отметили, что для кодирования требуется одна особая психологическая установка:

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

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

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

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

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

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

Что делает разочарование в коде особенно невыносимым, так это то, что вы не знаете, как долго оно продлится. Может быть, вы поймете ошибку через несколько минут. Может быть, это займет час или два. Или, может быть , пройдут недели или месяцы , а вы все еще не разберетесь с ошибкой, так что вы просто свяжете ее с гнездом обработчиков исключений и молитесь Богу, чтобы она вас не удивила. с новым.

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

Конечно, говорю я. Почти каждый может.

Пока вас устраивает непрекращающееся сизифово разочарование.


Теперь очевидно, что программирование — не единственное разочаровывающее занятие в жизни! Куча заданий утомляет.

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

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

Именно поэтому разочарование от программирования кажется более экзистенциально тревожным, более душераздирающим, чем разочарование, которое я испытываю в журналистике или музыке. Если у меня возникают проблемы с продвижением тематической статьи, я могу утешить себя тем, что «исследования сложны, споры с источниками сложны, написание — беспорядочно органичный процесс, а понимание не всегда приходит по требованию». То же самое происходит и с изучением новой техники игры на гитаре: ваше тело, ваша проприоцепция прогрессируют урывками.

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

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

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

Итак: программирование не обязательно сложно. Но это чертовски неприятно.

Источник: medium.com

1 Ответ

  1. Adre Adre 3 Июня 2022 (ред.)

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