понедельник, 25 октября 2010 г.

Работа 2.0. Программист, который отвлекается

Перевод статьи бывшего лидера проекта OGRE Стива Стритинга под названием "Работа 2.0. Программист, который отвлекается" (Work 2.0 - The interruptible programmer).
Оригинал: http://www.stevestreeting.com/2010/09/04/work-2-0/

Мне 37, я (профессиональный) разработчик уже 16 лет. Вы можете подумать, что за всё это время я выработал эффективный стиль работы, который бы приводил к желаемым результатам (меньше кода, поставка программ в срок и пр.) без выбивающих из колеи ситуаций, но, к сожалению, это не так. Думаю, стиль, который я практиковал первые 15 лет своей карьеры, присущ многим разработчикам-энтузиастам: трата тонн часов. 12-16-часовые дни, марафоны программирования по вечерам и выходным, пицца на клавиатуре, тяжёлые периоды, отладка в 3 часа ночи, когда не можешь пойти спать, т.к. чувствуешь причину ошибки в двух шагах, чёрт подери, отчаянный спринт до дедлайна (deadline), когда удаётся заделать брешь как раз перед тем, как мир проваливается к чертям. Если всё это вам хорошо знакомо, вы мудро киваете головой, возможно, даже немного ухмыляетесь, вспоминая прошлые испытания и славу. Такой сумасшедшей самоотверженностью восхищаются в наших кругах и часто ожидают от любого уважающего себя разработчика.

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

Но я "в зоне"!

Итак, я хочу поговорить о самой большой проблеме, с которой столкнулся: период концентрации. Теперь я не могу безвылазно сидеть за столом более часа. Если я не встану, не пройдусь и не разомнусь немного хотя бы раз в час, то вставать позже будет намного больнее. Наверно, следующие несколько дней тоже. Теперь я не могу работать более 8 часов в день без появления боли. Проблема в том, что, как программист, за последние 15+ лет я выработал стиль работы, при котором я постепенно "погружаюсь в зону" и программирую очень долго за раз без перерыва. Это частая картина среди программистов, мы любим закрыться от внешнего мира, одев наушники, чтобы не отвлекаться и т.д.. В этом также причина того, почему мы имеем склонность плохо реагировать, когда нас прерывают. Программирование требует концентрации, и кажется, что концентрация работает как ламповая система: много времени занимает разогрев системы, а когда она запущена, не хочется её останавливать, т.к. запустить её ещё раз будет сложно.

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

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

1. Примите перерывы.

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

2. Всегда храните контекст вне головы.

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

2.1. Записывайте все свои мысли о текущей задаче.

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

2.2. Беспощадно игнорируйте косвенные задачи.

Вы, наверно, заметили, что в предыдущем пункте я использовал словосочетание "текущая задача", единственное число. Не "задачи". Не существует такой вещи, как "несколько текущих задач". Есть лишь одна текущая задача, над которой вы работаете, и отвлечения.
Вероятно, мы все используем системы отслеживания ошибок / управления задачами (bug / task trackers), но, когда работаешь над задачей, очень часто можно заметить новую ошибку, улучшение текущего кода или просто придумать новый крутой функционал. Сколькие из нас сразу же принимаются за решение этих косвенных задач, т.к. мы оказались в этой области кода, это "тривиально" или просто круто и хочется это сделать? Раньше я поступал именно так, но теперь иначе: любые косвенные задачи, не относящиеся прямо к тому, чем я сейчас занят, я записываю в систему управления задачами и сразу же забываю, пока не завершу текущую задачу, независимо от их размера, уместности и срочности. Это звучит просто и очевидно, это даже может быть официально закреплено у вас в организации, но я сомневаюсь, что большинство программистов всегда так поступают. Это выгодно, потому что даже малейшее отвлечение добавляет дополнительный уровень контекста, который нужно держать в уме, который опять же сложно собрать обратно, когда вас отвлекут. Чтобы такой подход работал, нужна быстрая и лёгкая система управления задачами, не требующая дотошного описания новой задачи. Нужно успеть за 30 секунд записать новую задачу, выгрузить новую мысль из головы без отвлечения от текущей задачи. Подробности реализации можно будет указать позже.

2.3. Всегда знайте, чем будете заниматься далее.

Этот пункт из GTD ("Следующие действия"). По возвращении к работе после перерыва вы не должны тратить время на выяснение, что же делать далее. Поможет вам в этом система управления задачами и комментарии к текущей задаче. Если вы были вынуждены заняться другим своим проектом и хранили контекст по нему вне головы, не составит труда понять, какое действие нужно делать далее по проекту. Важно иметь одно следующее действие по каждому из проектов. Если действий несколько, придётся тратить время на выбор между ними, а это потерянное время (см. следующий пункт про очерёдность). В каждый момент времени вы не только должны иметь одну текущую задачу, но и одно недвусмысленное следующее действие по этой задаче. Половина успеха эффективности работы состоит в знании следующего шага.

3. Упорядочивайте от противного.

Я упомянул следующие действия в предыдущем пункте, но как определить их очерёдность? Много времени может быть растрачено на выяснение очерёдности, и я искал способ его уменьшить. Раньше я планировал, исходя из того, что хочу выполнить всё перечисленное в списке; я просто пытался понять, какую из задач мне нужно сделать первой. Я обнаружил, что можно сократить время планирования, а также получить более хорошую и менее амбициозную очерёдность путём изменения порядка принятия решений: предположить, что я не сделаю ни одну задачу, и оценить негативные последствия невыполнения каждой из них. Так что вопрос "Какая из возможностей А или Б более важна?" превращается в "Предположим, мы выпускаем продукт без возможностей А и Б. К чему приведёт отсутствие каждой из них?". Может показаться, что разница между ними несущественна, но из своего опыта могу сказать, что оправдание реализации функционала приводит к более реалистичным оценкам, нежели попытки установить относительную очерёдность реализации, предполагая выполнение всего списка.

4. Осознайте выгоды перерывов.

Большая часть вышеизложенного касается минимизации негативных последствий перерывов, но правда такова, что они тоже полезны для работы. Держу пари, все программисты задерживались допоздна на работе, пытаясь исправить ошибку, решение которой находили либо на следующий день за 15 минут, либо в каком-либо малообещающем месте вроде душа. Это очень просто объяснить: длительные периоды концентрации кажутся продуктивными и даже могут быть таковыми для оперативного / последовательного мышления, но для всего остального вроде творческого мышления и решения задач очень часто результат прямо противоположный. Проблема не только в утомлённом мозге, который соображает менее чётко, но и в том, что решение задачи часто находится не там, где мы завязли на несколько часов, а в совершенно иной плоскости. Длительные периоды концентрации имеют тенденцию "запирать" движение мысли по одной колее, что препятствует появлению вдохновения и озарения. Творчество всегда происходит, когда вы не стараетесь. Это часто недооценённый, но жизненно важный инструмент в программировании.
Перерыв в этом движении по одной колее может оказаться очень полезным.

Я мог бы ещё добавить советов, но, думаю, пока достаточно. Надеюсь, перечисленные выше вам помогут.




Примечания переводчика

Эту статью я решил написать после прочтения книги Гранина Д. А. "Эта странная жизнь", рассказывающая о Любищеве А. А., который на протяжении 56 лет вёл учёт своего времени на жизнь. Советы Стива отчасти соответствуют подходам Любищева. Например, Любищев выучил Английский язык во время поездок в транспорте. Т.е. использовал много маленьких кусков времени.

На перевод статьи я затратил 18 календарных дней. Из них на первоначальный перевод ушло 4ч 20м, на ревизию 4ч 10м, на публикацию 1ч 5м, т.е. всего я потратил 9ч 35м своей жизни. Таким образом, я использовал много небольших кусков времени.
Хочу отметить, что использование 10- и 15-минуток довалось намного легче. Сейчас публикацию я сделал почти за один присест и чувствую утомление. Чувствую, что уже надоело заниматься этим делом. Так что короткие периоды работы ещё полезны и для сохранения бодрости духа.

Также очень интересно получилось, что не только я перевёл эту статью на Русский язык. То же сделали в этом же месяце ещё два человека, опубликовавшие свои переводы на Хабре: http://habrahabr.ru/blogs/arbeit/106523/ и http://habrahabr.ru/blogs/arbeit/106510/.

Выражаю благодарность Kai SD за указание трудночитаемых предложений. Которые смог - исправил. Некоторые позаимствовал у raacer, который сделал перевод по второй ссылке.

понедельник, 30 августа 2010 г.

Косячный штраф

Скоро у нас в отделе ПО введут штрафы за косяки.
У меня косяки случаются регулярно. В основном, из-за того, что возможности тестирования сильно ограничены или вообще отсутствуют, поэтому приходится проверять на живых абонентах. Мне ещё повезло, что от меня обычно страдают физлица, а не юрлица. Я знаю, что косяков у меня ещё будет много, поэтому данное нововведение меня огорчает.
Да и каждый мало-мальски критичный к себе человек знает, что не совершает ошибок лишь тот, кто ничего не делает.

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

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

Рома пришёл сегодня в понедельник и сказал, что за "немного тронуть базу" 5 тысяч, за сильно - 10. Так он был рассержен, когда ему сказал много приятного кто-то из тех самых юрлиц. Вообщем, его настрой можно понять.

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

В книге "Pragmatic programmer" я нашёл очень уместную вещь по этому поводу. Там говорится, что всё программное обеспечение должно снабжаться тестами, которые нужно прогонять после каждого изменения программы, дабы найти возможные появившиеся ошибки. Но не всё возможно протестировать. Не все ситуации возможно предусмотреть. В конце концов, глаз может просто замылиться. Поэтому если обнаруживается какая-либо новая ошибка, то она должна добавляться в эти самые тесты для проверки при последующих тестированиях. Лишь в данном случае она никогда не повторится больше, т.к. будет учтена.

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

Итог: надо решать проблемы, а не искать виноватых.

воскресенье, 23 мая 2010 г.

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

Понял я это 23-го мая 2010-го года после семи часов вечера, когда пришёл в клуб, где состоялась дискотека в ритмах Сальсы, Бачаты, Танго и ещё чего-то латиноамериканского. Когда я увидел настоящие танцы, я вспомнил то "месево" в школах/вузах/обычных клубах.
В латиноамериканских танцах участвуют партнёр и партнёрша. Они не тупо прыгают на ногах, машут головами, они вообще ничего тупого не делают. Они выполняют определённые "комбинации".

Т.к. в танцах участвует пара людей, то они объединяются в ритме. Они всё время контактируют. Объединение, раз. Тактильные ощущения, два.
Если кто не знает, то всем нам необходимы объятия. Маленькие дети, например, без объятий умирают. Объятия необходимы для чувства безопасности. Для того, чтобы не чувствовать себя одинокими. Это одни из базовых потребностей человека, без удовлетворения которых у каждого заводятся свои тараканы в голове.

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

Что мы имеем в обычных клубах? Тупое подражание танцам.
Люди в основном дёргаются разрозненно. Иногда трутся друг о друга по принципу "как получится". Разделение, раз.
Нет чётких ролей, кто ведёт. Мужчина не чувствует власть, женщина не чувствует силу. Не удовлетворяются базовые потребности. Отсутствует всякая иерархия и всякие правила, два.

После двух часов дискотеки у меня возник вопрос: "Почему детей не учат настоящим танцам?" Почему вообще в мире так мало показывают настоящего, ценного, нужного?

Рекомендую к прочтению отличную статью "Издержки эмансипации".
У себя размещу лишь её начало, отрывок из произведения Е. Евтушенко:

Как получиться в жизни так могло?
Забыв про смысл ее первопричинный,
Мы женщину сместили. Мы ее
Унизили до равенства с мужчиной...

четверг, 11 марта 2010 г.

Не ломайте жизнь детям переездами

Конец 2008-го года, город Кемерово. В эти дни я убивал время в локальном пиринговом чате (хаб YeOlde). В один прекрасный день там появилась необычная девушка, как в поведении, так и во взглядах. Не буду таить, и внешне очень красивая. Хотя это я узнал позже при встрече. Зовут её Алёна. В начале 2009-го года я понял, что Алёна мне не безразлична. Так получилось, что она стала наставлять меня по взаимоотношению с девушками, что я воспринял с полной готовностью. К тому моменту, мне и самому было ясно, что со мной что-то не так: с девушками не клеется. Наша дружба привела к следующему.

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

После посещения разных ступеней и разных курсов Норбекова я уже увереннее задышал жизнью. Стал больше верить в себя. Зрение, к сожалению, не восстановил, но это уже было не важно. На этих курсах я познакомился со среднего возраста мужчиной, который посещал к тому же ещё и "Русский стиль рукопашного боя". Таким образом я попал на рукопашный бой, который посещал с июня по ноябрь 2009-го.

Летом 2009-го года с группой рукопашного боя и кадетами школы милиции мы ходили в поход в Кузнецкий алатау.
До этого похода Алёна мне много раз советовала жить одному, т.к. такая возможность у меня была (и есть), но я не соглашался. По возвращении с похода я понял, что нужно начать уже жить без мамы.

В августе я стал жить отдельно. Сначала было очень одиноко, но потом привык.
Тем не менее, мне всё равно не давала покоя Алёна, её душевные муки. Очень они меня задевали (и из этой статьи станет понятно почему). Очень были мучительны для меня. Я не мог не помочь.
Поэтому я обратился именно к тому психологу, которого посещала Алёна несколько раз. К сожалению, ничего значительного почерпнуть я у него не смог. Думаю, не мой подход. Но, к счастью, он дал свою аську, поэтому я ещё несколько раз консультировался без личной встречи.

В один из моментов, когда я сильно волновался за Алёну, я опять решил спросить помощи у Евгения (психолога). И даже посмел рассказать про вопросы Алёны. Психолог сначала посетовал, но я всё равно выпрашивал у него решение, и он подсказал мне обратиться к другому психологу - Ольге Фёдоровне, которая, как я это выяснил позже, специализируется на психоанализе.
К Ольге Фёдоровне я и отправился с твёрдым намерением помочь Алёне. Где-то на втором или третьем посещении она поставила вопрос ребром, сказав, что не может помочь Алёне через меня, ей нужна именно сама Алёна. И спросила, почему помощь Алёне меня так волнует.

Я ходил к ней где-то с сентября 2009-го года раз в неделю. И хожу до сих пор, сегодня март 2010-го. И сегодня я подобрался к теме статьи. Благодаря Ольге Фёдоровне я переосмыслил много лет своей жизни, своё отношение ко всем и ко всему. И сегодня, 11-го марта 2010-го года, мы дошли до очень важного, очень больного для меня момента. Даже не только для меня, для России.

В школу я пошёл в 1993-м году в Ростове-на-Дону. Я жил с мамой в однокомнатной квартире, т.к. она развелась с отцом, когда мне было 4 года. Они поделили двухкомнатную квартиру на две однокомнатных.
В школе у меня, как я сегодня вспомнил, были друзья. Мы с ними играли после школы. В том самом и смежных дворах, где была однокомнатная квартира.
Всё было хорошо. Друзья, двор, школа.

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

Именно в этот год я попробовал курить, но один. Да и не в затяг. Это и спасло. Изоляция "спасла". Через 1.5 месяца бросил, т.к. "не вкурил".
Хотя у меня в школе появился новый друг, который жил недалеко от меня, в соседнем дворе, минут 5 ходьбы. К нему мы, бывало, ходили играть в денди перед школой, т.к. учились со второй смены. Помню даже название игры - Zen. Помню, что у него даже был компьютер, но, т.к. он был старшего брата, мы к нему не прикасались.

Но шёл уже 1998-й год. Да-да, наш любимый Ельцин. Наш любимый кризис. Теперь я уже лично ненавижу этих демократов, которые, как я теперь понял, сломали жизнь и мне, школьнику, у которого и денег-то не было. Хотя тогда ни у кого денег не было. А в 1998-м году вообще не стало.
Это был очередной переломный момент в моей жизни.
В 7-й класс я уже пошёл в городе Кемерово, в первую школу. Кризис вынудил маму приехать в Кемерово, т.к. здесь вся родня. В Ростов-на-Дону она уехала с моим отцом.
Здесь уже друзей не было. Были какие-то знакомые, но ни с кем из той школы я сейчас не общаюсь. Да и имён не помню. Кроме двух людей, с которыми я встретился позже.
Летом перед 7-м классом, когда я был тут, если не ошибаюсь, на летних каникулах у бабушки, даже писал маме письмо, в котором просил её не уезжать из Ростова, потому что... мне нравилась одна девочка...

В 8-м классе я опять пошёл в старую школу, но уже в другой класс. Мама улаживала последние дела с квартирой, чтобы навсегда свалить с Ростова. Поэтому я опять оказался в Ростове, но Ростов этот уже был совсем иной для меня.
Пошёл я в более продвинутый класс, нежели был в 6-м, в котором остался тот друг из соседнего двора, с которым мы играли в денди. Может быть, и та девочка. Не помню.
Это был очередной удар. Помню, что я тогда перед директором школы даже плакал, что не хочу в другой класс. Мне сказали, что с такими хорошими оценками мне там не место. Оценки... они думали об оценках.

В 9-м классе я жил опять у бабушки в Кемерово. Мама уже приобрела квартиру здесь в Кемерово. Именно в 9-м классе у меня начало ухудшаться зрение. К моему сожалению, я пошёл к глазному и он советовал мне не надевать очки, чтобы не испортить зрение. Я настоял на очках. И испортил зрение. Сейчас очки не ношу специально, чтобы не усугублять далее ситуацию.
Это уже была даже другая школа. Не та, в которую я пошёл в 7-м классе. Видимо, оценки "испортились" в Ростове... где у меня появился друг.

Поэтому пошёл я в 40-ю школу города Кемерово. И туда же пошёл Григорий, с которым я учился в 7-м классе в первой школе города Кемерово. С ним мы и сидели поначалу за одной партой, если не изменяет память. Потом появились ещё знакомые в школе. Даже, думаю, друзья появились, хотя с ними я сейчас не общаюсь, поэтому не могу точно сказать, друзья ли были. В 9-м классе я уже не знал, что такое дружба. Да и сейчас с трудом вспоминаю.

После 40-й школы я пошёл в КемГУ на математический. Окончил в 2008-м.
И вот, после более полугода посещения психолога я подошёл к ужасным моментам своей жизни. Которые буквально сломали меня, которые заставили меня закрыться в себе, возненавидеть мир... и прочее. Сейчас я вспоминаю эти ужасные моменты и плачу, пока набираю этот текст... Это было ужасно, это был ад. Как только я находил друзей, у меня их отбирали, меня кидали в новое место. На ум приходит лишь сравнение с морским пехотинцем. Но ребёнок не воин. Тем более в 6-м классе.

Если бы не всё это, я бы врядли был тем, кем являюсь, но у меня были бы друзья. Те самые старые добрые друзья, которых у меня теперь нет. Есть новые, но отношения, к сожалению, с ними не такие крепкие, какие мне хотелось бы иметь. Во многом, из-за того, что я сам не особо иду на контакт из-за сильных ушибов жизнью.

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

Пожалуйста, не ломайте детям жизнь переездами.

пятница, 19 февраля 2010 г.

Сор в избе

Рабочий день 12-го февраля начался необычно. Как только я пришёл на работу, сослуживец кинул мне ссылку на внутренний форум технической поддержки конторы провайдера, где я работаю. Суть темы в том, что провайдер убрал тариф "Первый+", не уведомив об этом пользователей, что положено по договору.
Весь текст темы
После прочтения этой темы я добавил следующее:

Интересно узнавать о работе других отделов из сообщений на форуме. Жаль, что даже внутри всё держится в секрете.
В связи с этим вспоминается принцип Кирхгофа:

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

Математическое обоснование честности.

После моего сообщения сослуживец добавил следующее:

Наши IT-шники предложили...

Это особенно мило... Йа "горд" за компанию

Часов в 12 я отправился на обед. По возвращении обнаружил, что наши сообщения удалили, а тему закрыли. Также мне сообщили, что со мной хотел поговорить Kir, он же генеральный директор. В итоге со мной поговорил Сергей, начальник отдела ПО. Потом он также поговорил и с сослуживцем.
Мне вменялся вынос сора из избы. "Разговор" был построен таким образом, что я должен был почувствовать себя предателем. К слову сказать, Сергей привёл интересный (и неверный) пример: "Если тебе будет изменять жена и всем об этому трубить, тебе будет приятно?".
Никому я, естественно, не изменял. Но то, что я публично высказался о внутренних проблемах конторы, меня заинтересовало самого. Я обсудил этот случай с несколькими знакомыми и с психологом.
Выяснилось, что я сделал публичное высказывание из-за того, что не доверяю начальству - Сергею, Kir'у и т.д..
Причины для этого имеются: моё мнение начальство не интересует, мои предложения тоже.
Видимо, поэтому я и захотел "отделиться" от конторы, потому что таким обманом была попрана честь всех сотрудников конторы, что меня, естественно, не устроило. Другие сослуживцы говорили, что им стыдно говорить, что они работают в этой конторе, такая у неё репутация.
Вот такие пироги...

пятница, 5 февраля 2010 г.

Mass effect 2

Today I've finished the game. It was amazing. The best game in the last 2 years. For me, "Mass effect" is "Fallout" of the beginning of 21st century.
As it has been described in various reviews the ME2 has outperformed ME1 in everything. Bioware fixed all annoying things and made the game just brilliant: it's fast, good-looking, interesting and it can teach you if you are careful enough.
The dialogs can teach. The paragon-renegade decisions let you see how people react. Some of the dialogs are deep thoughts about our real world.

The deep thought that transfered from ME1 to ME2, the thought that made "Mass effect" a unique game in my eyes. In ME1 it has been said by Sovereign, now by Legion.

Shepard: Some of the geth followed Sovereign. The "heretics".
Legion: The heretics accepted their technology.
The Old Machines [Reapers] offered to give us our future. The geth will achieve their own future.
Shepard: What difference does it make how you acquire a certain technology?
Legion: Technology is not a straight line. There are many paths to the same end.
Accepting another's path blinds you to alternatives. Nazara -- Sovereign -- said this itself:
"Your civilization is based upon the technology of the mass relays. Our technology. By using it, your society develops along the paths we desire."


Accepting another's path blinds you to alternatives.
That's why a man should learn how things work if he wants to be able not just to follow and believe, but to lead and understand.

Your civilization is based upon the technology of the mass relays. Our technology. By using it, your society develops along the paths we desire.
We live in the world of rules created by others and thus develop along the paths the 'others' desire. That's a more elaborate stage of slavery, a hidden one. You live, you work, and you think this is life. But a small amount of people own large companies and can afford almost anything in life, they are modern kings. We develop the paths they desire...

--- RU ---
Mass effect 2

Сегодня я прошёл игру. Это было замечательно. Лучшая игра за последние два года. Для меня "Mass effect" - это "Fallout" начала 21-го века. Как было описано в разнообразных обзорах, ME2 превзошёл ME1 во всём. Bioware исправили все нудные вещи и создали блестящую игру: она быстрая, хорошо выглядящая, интересная, а также она может научить уму-разуму, если Вы будете достаточно внимательны.
Диалоги могут научить. Хорошие-плохие решения позволяют увидеть, как реагируют на них люди. Некоторые диалоги являются глубокими мыслями о нашем реальном мире.

Глубокая мысль, перекочевавшая из ME1 в ME2, мысль, которая сделала "Mass effect" уникальной игрой в моих глазах. В ME1 она была произнесена Властелином (Sovereign), теперь Легионом (Legion).

Шепард: Некоторые из гетов (Geth) последовали за Властелином. "Еретики".
Легион: Еретики приняли их технологии. Старые Машины [Пожинатели (Reapers)] предложили нам наше будущее.
Геты достигнут сами своего будущего.
Шепард: Есть ли разница, каким путём достаются технологии?
Легион: Технологии не прямая линия. Существует много путей для достижения одной и той же цели. Принятие чужого пути скрывает от тебя другие пути достижения.
Назара -- Властелин -- сам сказал это:
"Ваша цивилизация основана на технологии ретрансляторов массы (Mass relays). Нашей технологии. Используя её, ваше общество развивается путём, выбранным нами".

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

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

понедельник, 1 февраля 2010 г.

Does an incorrect environment force you to an incorrect behaviour?

Today I understood my grudge against Delphi IDE and Object Pascal in general (I'm forced to use Delphi 7 at work).
One of my Delphi applications is Switch management GUI which looks like this:

The IP list is rendered within cxGrid component from DevExpress. It consists of two columns - row number and IP. I wanted to implement copying (WM_COPY) of the second column value only, but cxGrid does not allow this, because it copies the whole line, all the columns.
I did not implement handling of Ctrl+C, because there exist another standard shortcut for copying things in Windows - Ctrl+Insert. So handling concrete key bindings is wrong.
There's WM_COPY Windows message. Unfortunately, the cxGrid intercepts these messages, so I have no opportunity to handle it myself.
So I has to do one of the two bad things:
1) handle concrete key binding;
2) obey cxGrid limitation.
I chose the latter of two evils: I hid the first column. Now copying of the whole cxGrid line only copies one column value. At the same time I screwed the functionality up.

I saw the same bad pattern in Object Pascal, of which many people talked about already: interface and implementation within a single (!) file, call back functions on events, etc.. I wish I could use Qt4.

Thus I came to a question: "Does an incorrect environment force you to an incorrect behaviour?"
I'm forced to follow bad coding style, how does that affect me? Does it make my coding bad too? Does it corrupt my judgement?
I think yes. That makes me want to quit this job.

--- RU ---

Влияет ли неверное окружение к принятию неверных решений?

Сегодня я понял своё неприятие Delphi IDE и Object Pascal в принципе (я вынужден использовать Delphi 7 на работе).
Одно из моих приложений - ГУИ управления свитчами - выглядит следующим образом:

Список IP выводится в компоненте cxGrid от DevExpress. Он состоит из двух колонок - номер строки и IP. Я хотел реализовать копирование (WM_COPY) значения лишь во втором столбце, но cxGrid не позволяет это сделать, т.к. копирует всю строку, т.е. значения в обоих колонках.
Я не реализовал отлов Ctrl+C, т.к. существует ещё одно стандартное сочетание клавиш для копирования в Windows - это Ctrl+Insert. Поэтому ловить конкретные сочетания плохо.
Существует сообщение Windows WM_COPY. К сожалению, cxGrid перехватывает эти сообщения, поэтому я не могу переопределить его.
Приходится выбирать из двух неверных вещей:
1) ловить конкретные сочетания клавиш;
2) смириться с ограничениями cxGrid.
Я выбрал второе из зол: скрыл первый столбец. Теперь копирование всей строки cxGrid лишь копирует значение одной колонки. В то же время, я ухудшил функциональность.

Ту же неверную схему я наблюдаю и в Object Pascal, о которой уже говорили многие: интерфейс и реализация в пределах одного (!) файла, обратный вызов (callback) на события и т.п.. Жаль, что я не могу использовать Qt4.

Таким образом я пришёл к вопросу: "Влияет ли неверное окружение к принятию неверных решений?" Я вынужден следовать неверному стилю написания кода, как это влияет на меня? Делает ли это мой стиль написания кода неверным тоже? Искажает ли это мои суждения?
Думаю, да. Это вызывает у меня желание покинуть работу.

понедельник, 25 января 2010 г.

Avatar

On the 24th of January I've watched James Cameron's "Avatar" in 3D at "ДК Москва", a local movie theater.
Unfortunately, due to my bad eyesight I could not appreciate 3D effects, but I did appreciate some of the movie ideas.
The movie distinctly displayed the world of unity where every creature takes its part in the planet's life. I've met similar concept in Isaac Azimov's "Foundation" series.
I liked the idea of those flying creatures that you have to tame to fly on. It makes clear that the world is pretty complete, you don't need to fight it to live in, instead, you should learn how to live with it. As you learn the world you become more skilled and can tame higher level creatures like that big read flying one.
I think this is a hint for ourselves: don't fight the nature, but instead, learn it and live with it, and you may gain much higher level abilities than you would otherwise.
The other thing from the same topic sounded from the avatar that said: "Look at those people from the sky, they haven't left any green on their own planet and gonna do the same to us". That's painfully true. We traded something more precious for comfort, but I don't know what yet.
Finally, the last thought I had after watching the movie was that of the main character. When you understand something others don't understand, you're left all alone and isolated. They may even become your enemies.
So I can say "Avatar" is a great movie with great thoughts. Other people will surely find other ideas as well, because everyone sees what he wants to see :)