Когда я присоединился к Atomic Object, одной из первых книг, которые я прочитал, была The Passionate Programmer Чеда Фаулера. В этой книге Фаулер делится своей коллекцией советов и приемов, как стать образцовым программистом. Как разработчик программного обеспечения начального уровня, я нашел многие из этих советов невероятно полезными, но тот, который запомнился мне больше всего, назывался Ловушка для южноиндийских обезьян.

Южноиндийская ловушка для обезьян

Южно-индийская ловушка для обезьян, описанная Фаулером, представляет собой способ ловли обезьян, который включает в себя рытье ямы в земле, следя за тем, чтобы дно ямы было больше, чем отверстие. Затем отверстие наполняется едой с намерением, чтобы любопытная обезьяна потянулась к ней. Схватив еду, обезьяна больше не сможет вытащить руку из норы. Однако он так высоко ценит еду, что не понимает, что мог бы быть бесплатным, если бы просто отпустил еду.

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

Вы можете спросить, как ловля обезьян связана с разработкой программного обеспечения, или спросить, почему Чед Фаулер включил это в свой сборник советов. Проработав в этой области всего несколько месяцев, вы, вероятно, неоднократно обсуждали с коллегами, чем язык программирования X лучше любого другого языка, особенно языка Y. Эти утверждения вполне могут быть законными, поскольку существует множество аргументов. Критерии для оценки языка программирования. Однако предположение, что существует один язык, который намного лучше и который следует использовать всегда, является ярким примером негибкости ценностей, о которой предупреждает Фаулер.

Признание того, что вы застряли в этой ловушке, — это первый шаг, но вот несколько советов, которые помогут вам избавиться от этой пищи:

1. Выполните сторонний проект на другом языке программирования.

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

Побочные проекты полезны, потому что они создают реальную проблему для решения, в отличие от приложений «Hello World» или «To-Do List», которые вы уже сделали 12 раз. Даже если это побочный проект, который вы уже выполняли раньше, изучение нового языка может вдохновить на то, как сделать его лучше и реализовать по-другому.

2. Посещайте конференции, мероприятия или встречи.

Еще в колледже меня познакомили с Common Lisp, который я, конечно, в то время ненавидел. После посещения нескольких местных мероприятий, а также Strange Loop я поговорил со многими разработчиками программного обеспечения, и все они предложили мне попробовать Clojure. Благодаря их рекомендациям я отлично провел время, изучая Clojure в свободное время, исследуя основы функционального программирования на языке на основе Lisp.

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

3. Переоценить «всемогущий» язык.

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

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

Первоначально опубликовано на spin.atomicobject.com 1 декабря 2016 г.