Непредвиденные последствия

Блог Андрея Шкуропия, программиста shareware

вторник, 31 июля 2007, 23:29

Застрахован!

Сегодня наконец-то получил карточку социального страхования.
Не прошло и двух лет ожидания после подачи заявления.
Волокита! (с)

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

вторник, 31 июля 2007, 0:16

Стереотипные программисты

Я работаю программистом.

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

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

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

Разубеждать граждан не буду, так как это бес толку. Стереотип не удается изгнать даже из сознания членов собственной семьи, что уж говорить о ком-то постороннем. Тем более, что все вышеописанное — чистая правда. Но с оговорками.

В основе всех данных утверждений лежат наблюдения непосвященных за реальными периодами работы/жизни программистов.

Чем они вообще занимаются?
Результатом  работы программистов являются компьютерные программы. Программы не видны невооруженным глазом в виде ящиков с тушенкой или выточенных на станке деталей. Даже если посмотреть в итоговые дистрибутивы, то результаты работы программистов в скомпилированном виде занимают не более нескольких Мб в парочке файлов. Стоимость работы программистов окупается не сразу, а только после внедрения программы в жизнь. Если изначальная постановка задачи была безграмотной или нечеткой, то программы могут никогда не внедриться и работа программиста может пропасть даром. Программа — это изначально нечто эфемерное, бестелесное. То, что не ощущается, то почти не существует. Именно поэтому у большинства людей вызывает недоумение тот факт, что программы стоят денег. «Как? За что? Я ведь купил компьютер за 1000$, и мне еще надо ПОКУПАТЬ ПРОГРАММЫ К НЕМУ?!» Программы воспринимаются просто как неотъемлемая часть компьютера. Поэтому ждать от людей полного осознания смысла работы программистов не следует ни сейчас, ни в будущем. Разве что в очень далеком будущем, мы не доживем.

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

Они немытые и патлатые анархисты, пьянь и рвань.
Вот она, протестантская субкультура Linux, ха-ха! Открою тайну: патлатые, неопрятные, сосущие пиво подростки, разговаривающие о компьютерах на улице и в игровых клубах, и те, кто разрабатывает для них программы — совершенно разные люди. Из таких подростков могут получиться программисты, если они не пропьют свои мозги и сохранят интерес к тому, о чем разговаривают. А больше всего о компьютерах разговаривают те, кто знает о них сравнительно мало. Конечно, некоторые программисты по умственному развитию остаются оборванными подростками на всю оставшуюся жизнь, но и профессиональные качества у них обычно соответствуют внешнему виду. А люди не замечают тех, кто молчит и особо не выделяется из толпы. Люди замечают тех, кто громко разговаривает о компьютерах и выглядит оборванным волосатым алкашом.

Я все время застаю программистов за бесцельным лазаньем по интернету.
Подходим к самому интересному, ради чего я начинал все это писать. Работа программиста — это 10% рутины вроде написания кода программы и 90% ежесекундной напряженной работы мозга над двумя мегазадачами: системный анализ и системный синтез. Системный анализ — это когда человек в голове или на бумаге дробит поставленную задачу на более мелкие подзадачи. Системный синтез — это когда мелкие задачи должны сложиться в стройную систему классов и процедур на нужном языке программирования. Непосредственно перед синтезом необходимо продумать архитектуру программы — это некая глобальная стратегия синтеза, которой надо следовать, иначе программа не сможет со временем наращивать свои функциональные возможности по желанию заказчика и помрет от старости. Задачи анализа и синтеза нетривиальны. Они действительно сложные. Они требуют не только глубоких логических размышлений, но также интуиции и таланта, а также 100% концентрации внимания человека. Не всегда анализ и синтез в голове у программиста как-то разграничиваются, они обычно идут «одним пакетом» в потоке мыслей.

Следствие всего сказанного в том, что я не могу просто сесть за компьютер и начать писать программу. Нужно одновременное совпадение нескольких условий:
1) Желание созидать.
2) Четкое знание текущей подзадачи.
3) Ничто не должно отвлекать от мыслительного процесса.
Если хотя бы одно из указанных условий не выполняется, ни о каком программировании не может быть и речи, т.к. написанный в эти моменты программный код можно будет смело выкинуть в мусорное ведро.

Если условия [2] и [3] относительно легко достижимы при минимальных усилиях, то относительно «желания созидать» не все и всегда гладко. Обычно именно ради этого желания люди идут в программисты, а вовсе не из-за того, что «программистам много платят» (хотя, поискать еще надо у нас программистов, которым платят больше, чем штукатурам). Программа — это чистый интеллектуальный продукт и лично я получаю огромное удовольствие, когда мои программы работают и решают поставленные задачи. Я-то в курсе, сколько моих сил было затрачено на их реализацию.

Проблема в том, что желание созидать заходит в мою голову со строгой периодичностью. Последние пару месяцев я решил понаблюдать за собой и вот что увидел: у меня есть периоды продуктивности, длящиеся в среднем полторы недели, и периоды «выпадения в осадок» (2—2,5 недели), когда мозг отказывается думать о чем-то более сложном, чем расчет траектории движения тела с работы домой и обратно. В такие дни я фактически не существую как программист. Я сижу за компьютером, но ни одной строчки исходного кода не выдаю. А сижу я за компьютером просто потому, что так надо по моим служебным обязанностям. Хотя с радостью в такие моменты попил бы чаёк и потрепался бы с друзьями. Вот. Хотя, ведь я же могу это сделать! Интернет — великое изобретение. Он позволяет сделать вид, что ты работаешь, усиленно стукая по клавиатуре, хотя на самом деле отстукивается сообщение в аську другому такому же коллеге, который тоже спалил все баки своего серого вещества.

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

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

Вот как они рождаются, эти стереотипы.

вторник, 17 июля 2007, 22:08

Про поп-арт

Решил сегодня во время ужина немного посмотреть телевизор. Наткнулся на музыкальный канал «М1». После 10 минут просмотра понял, что словосочетание «Массовая поп-культура» имеет неправильный порядок слов. Правильнее говорить «Массовая культура поп».

суббота, 14 июля 2007, 20:01

Стругацкие о современном образовании


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

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

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

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

А. Стругацкий, Б. Стругацкий, «Хищные вещи века» (1965)

воскресенье, 8 июля 2007, 21:32

Про писателей и программистов

У начинающего писателя все удовольствие приходится на его долю, а читатель не получает ничего.
(Эрнест Хемингуэй)

Афоризм можно запросто перефразировать для начинающих программистов и пользователей их программ.

|