Невроз индусского программиста
Sunday, 29 May 2011 12:20Одно из важных достижений современного программирования - это паттерны проектирования, типовые решения стандартных задач. Почти на всяком собеседовании кандидатов спрашивают хотя бы о том, слыхали ли они о паттернах, часто просят перечислить самые известные или даже объяснить, как ими пользоваться.
Паттерны - хорошая и интуитивная штука. Всякий опытный программист, впервые читая о паттернах, обнаруживает, что за свою жизнь наизобретал множество личных паттернов, многие из которых совпадают с классическими.
В чём проблема с индусскими программистами? (Это, конечно, стереотип. Не только и не со всякими индусскими.)
Они не знают и не применяют ничего, кроме паттернов. В каком-то первичном эволюционном порыве они громоздят один паттерн на другой, пока не получают нужный эффект (и кучу побочных, которые никто не оговаривал в задании, потому что и представить себе не могли). Ну а эволюция - вы помните? - не приводит к самым эффективным решениям. Только к достаточным. Кое-как работает, не дохнет - и ладно.
В собственной психике каждый из нас - такой же индусский программист. В своей жизни я сталкивался со множеством кризисов, угроз и выборов. И вы тоже. Мы с ними как-то справились, раз уж мы всё ещё здесь. А найденные решения - не лучшие, но достаточные - запомнили как паттерны. Ситуации меняются, выборы уже совсем другие, а мы всё так же бездумно громоздим паттерн на паттерн. Авось сложится и как-нибудь сработает. И раз уж мы всё ещё здесь - и правда пока работает.
Это, собственно, и есть невротическое поведение.
А неиндусские программисты помнят, что каждая новая задача уникальна, и даже паттерны творчески переизобретают заново.
Паттерны - хорошая и интуитивная штука. Всякий опытный программист, впервые читая о паттернах, обнаруживает, что за свою жизнь наизобретал множество личных паттернов, многие из которых совпадают с классическими.
В чём проблема с индусскими программистами? (Это, конечно, стереотип. Не только и не со всякими индусскими.)
Они не знают и не применяют ничего, кроме паттернов. В каком-то первичном эволюционном порыве они громоздят один паттерн на другой, пока не получают нужный эффект (и кучу побочных, которые никто не оговаривал в задании, потому что и представить себе не могли). Ну а эволюция - вы помните? - не приводит к самым эффективным решениям. Только к достаточным. Кое-как работает, не дохнет - и ладно.
В собственной психике каждый из нас - такой же индусский программист. В своей жизни я сталкивался со множеством кризисов, угроз и выборов. И вы тоже. Мы с ними как-то справились, раз уж мы всё ещё здесь. А найденные решения - не лучшие, но достаточные - запомнили как паттерны. Ситуации меняются, выборы уже совсем другие, а мы всё так же бездумно громоздим паттерн на паттерн. Авось сложится и как-нибудь сработает. И раз уж мы всё ещё здесь - и правда пока работает.
Это, собственно, и есть невротическое поведение.
А неиндусские программисты помнят, что каждая новая задача уникальна, и даже паттерны творчески переизобретают заново.