From Novosibirsk, Russia? Our tiny company is looking for current or future rock-star developers.

Showing posts with label thoughts. Show all posts
Showing posts with label thoughts. Show all posts

March 26, 2009

Софтовый шоппинг

Есть на свете серьёзные покупки. Например, автомобиль люди (чаще всего) покупают вдумчиво: изучают характеристики, ходят по салонам, сравнивают, изучают результаты тестов. Прямая противоположность им — рутинные покупки вроде молока и хлеба.

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

Эти три рынка совершенно различны. Важно понимать, на какой из них вы хотите попасть с вашим товаром (или мазагином).

Посмотрим на софт. Большинство разработчиков считает, что они продают автомобили: пользователь сначала обнаружит потребность, потом пойдет выбирать, проанализирует варианты и что-то одно купит.

Разумеется, часто так и бывает. Но не нужно забывать и про другие варианты. Например, возьмём MacUpdate Promo: большие (вроде 50%) скидки на программы, которые длятся один день (каждый день продают новую программу). Я подписан на их рассылку, и там регулярно пробегает софт, который очень хочется купить.

Или, например, по статистике подавляющее большинство купленных в App Store iPhone-приложений никогда не запускают второй раз. Когда Apple рекомендовали цены вроде $0,99 или $3,99, думаю, они прекрасно понимали, что делают: магазин, в котором люди будут наслаждаться покупкой, а не удовлетворять возникшие потребности.

Кто-то из блоггеров недавно сравнивал iPhone-приложения с шоколадными батончиками: люди считают нормальным потратить бакс на Snickers и съесть его за две минуты, точно так же нормально потратить бакс на игрушку и поиграться в неё пять минут.

Для шоппинга очень важен user experience, поскольку на самом-то деле у пользователя нет большой потребности. Он сбежит, если вы не будете его развлекать и удерживать. «Самое популярное», «еще часто покупают вот это», отзывы, заказ в один щелчок — всё это вводит пользователя в flow state, при котором он получает удовольствие, а вы — деньги.

В этом часть гениальности iTunes: он делает шоппинг до безобразия простым и неотделимым от прослушивания музыки. Apple успешно развивает рынок в направлении «шоппинг — часть нормального использования софта». В iPhone OS 3.0 можно покупать дополнения из самих приложений; на сцене мы видели демку Sims 3, где в процессе игры можно докупать коллекции вещей, и демку многопользовательской стрелялки, где перед боем можно купить rocket launcher и другой полезный арсенал (за реальные деньги! вы только подумайте!)

Не знаю, как вы, а я считаю это гениальным. Не пропустите возможность встроить шоппинг и в ваши программы. Может, маленькие милые плагинчики? Мелодии или темки? Что-то, что нафиг не нужно пользователю, но зацепит его с первого взгляда. И не забудьте делать некоторые товары более удачными покупками с помощью скидок, featured items, editor’s choice, рейтингов.

(Разумеется, товары не обязаны быть платными. Вы можете зарабатывать деньги за счет популярности или рекламы, или же предлагать смесь платного и бесплатного. Поэтому вас, разработчики open-source, данный метод тоже касается: ничего так не увеличивает популярность, как каталог почти никому не нужных фенечек, которые можно поставить одним кликом.)

March 09, 2009

Sneak Peak: YourSway Builder

Наша компания отличается еще и тем, что пользуется самописной системой сборки. Когда-нибудь мы доведем её до продукта и будем предлагать другим, как CrashKit, но пока что YourSway Builder — это приватное удовольствие.

Зачем писать своё, когда в мире есть BuildBot’ы и CruiseControl’ы? Чтобы не париться с их поддержкой. Каждая существующая система предполагает, что вы держите настроенный клиент и сервер, и готовы с ними возиться каждый раз, когда вам нужно изменить способ сборки или начать собирать новый проект.

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

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

На страничке в Backpack есть несколько скриншотов, а также описание нашего vision’а. Повторюсь, что в YourSway Builder’е пока есть только то, что было нам совершенно необходимо. Мы им пользуемся во всех проектах, но для публики он еще не готов.

А что вы думаете по поводу билд-систем? Чего вам в них не хватает? В каком виде YourSway Builder был бы вам интересен?

March 03, 2009

Меньше ветвлений!

Одно из правил Таранцова гласит: в программе не должно быть большого редко исполняющегося куска кода.

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

Тут есть две альтернативы. Вариант А: попытаться отправить исключение, если не удалось, записать его в файл, минут через десять считать и попробовать заново. Вариант Б: записать исключение в файл, попробовать его отправить через пару секунд; если не удалось, повторить снова еще позже.

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

1. Увеличиваются затраты на автоматизированные тесты и на QA.

2. Рано или поздно вкрадется бага, не отловленная тестами и не пойманная вашим QA-процессом. (Например, всё рушится только под Windows Vista x64, установленной на FAT32-раздел.)

3. Продукт с этой багой вы можете поставить заказчикам и не узнаете о ней, пока заказчик с ноутбуком под Windows Vista x64 на FAT32 не запустит ваш продукт вдали от Интернета.

Сравним с вариантом Б. Исключение всегда сначала записывается, потом устанавливается таймер, он срабатывает, исключение считывается и отправляется. Нормальную (частую) и ненормальную (редкую) ситуации обрабатывает один и тот же код; если он не работает, пользователи закричат об этом сразу же.

Иногда такая «унификация» кода подсказывает дополнительные возможности. Скажем, если программа начнет генерировать тысячи исключений в секунду, отложенная на пару секунд отправка поможет реже обращаться к серверу.

Из нашего правила следуют два важных практических соображения.

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

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

February 04, 2009

Совместимость

Название этой операционной системы, созданной маленькой компанией в конце 80-х и установленной сегодня на 8% компьютеров мира, программисты под Mac и iPhone регулярно вспоминают, набирая префикс NS у названий системных классов.

Nextstep 1.0 появилась в 1989 году после трех лет разработки, имела полностью объектно-ориентированное API с архитектурой model-view-controller, имела ядро Mach и была Unix’ом. Теперь она называется Mac OS X. За прошедшие 20 лет дизайн её API, теперь именующимся Cocoa, мало изменился: всё те же NSApplication, NSView, NSDocument успешно лежат в основе сегодняшних красивых анимированных Mac-приложений. Исходники GNUstep, реализующего Nextstep API 1993 года, можно в наши дни читать вместо (недоступных) исходников Cocoa.

Пользовательский интерфейс Nextstep включал богатый drag’n’drop между приложениями, Dock, инспекторы, общесистемные сервисы, позволяющие приложениям пользоваться услугами друг друга, и «бандлы» — директории, выглядящие как файлы для пользователя и содержащие приложение со всеми зависимостями, которое достаточно просто скопировать на жесткий диск для установки. Всё это знают и любят сегодняшие пользователи маков.

Как относятся в Apple к совместимости? Плохо. Первую революцию они сделали в 2001 году с выходом Mac OS X: старые приложения теперь могли запускаться только в приложенной виртуальной машине, эмулирующей Mac OS 9 (при этом, естественно, выглядели неприглядно и медленно работали). В 2005 году эмулятор почил с выходом OS X 10.4 (итого: 4 года на портирование старых приложений).

Для портирования людям был дан Carbon — C API, почти повторяющее API старой Mac OS 9. Carbon-приложения всегда оставались нежеланными гостями на компьютере: look’n’feel интерфейса OS X, как истинно объектно-ориентированной ОС, реализован в коде Cocoa (да, там можно изменить поведение стандартных элементов управления, просто унаследовавшись от них). Carbon представлял собой еще одну реализацию примерно того же самого интерфейса.

Вторую революцию Apple сделала в 2007 году: Carbon объявлен устаревшим и не будет поддерживать 64-битные приложения. Кадр года: Adobe переписывает Photoshop на Objective C. Называется, а вам слабо такое устроить?

Что приобретено взамен совместимости? Общий уровень приложений платформы: они все обновляются и соответствуют современным стандартам. Это работает по спирали: от более высокого качества приложений увеличиваются ожидания пользователей («никто не запустит программу без большой красивой иконки»), от высокого уровня ожиданий растет качество приложений. Apple создала платформу, в которой качество является более значимым (по сравнению с другими платформами) конкурентным преимуществом, и от этого создатели приложений больше инвестируют в качество.

Вернемся к Nextstep и заметим, что Cocoa является примером архитектуры, которая работает настолько хорошо, что её не нужно менять. Совместимость — не препятствие, так что эксперимент довольно чистый.

Зато NeXT/Apple серьезно относятся к преемственности навыков пользователя. Метафора пользовательского интерфейса Nextstep/OS X не меняется уже 20 лет. Внешний вид окон OS X не меняется 8 лет. Интерфейс приложений развивается эволюционно; Photoshop переписали, но выглядит и работает он так же; вышла новая версия iWork, но она только местами отличается от старой.

Что происходило всё это время в параллельном мире? 1989 год — релиз Nextstep 1.0 — вышла Windows 2.0 без перекрывающихся окон. 1995 год — вышла Windows 95, прощай, все старые навыки. 2001 год — вышла Window XP, теперь вы не узнаете свою панель управления. 2002 год — Microsoft выпускает .NET Framework 1.0, Desktop-приложения на котором до сих пор никто не пишет. Кстати, писать Desktop-приложения вообще не на чем: MFC — поганое уродство, всё остальное до жути низкоуровневое (Win32 API отличается от Cocoa как ассемблер от Питона).

2007 год — вышла Windows Vista, прощайте, привычки, теперь всё в новом месте. Зато спиздили еще чуть-чуть гуйни мака, сделали мигающий экраном костыль для безопасности приложений (на маке privilege elevation в приложениях к этому моменту уже много лет как нормально ненавязчиво работало). Вышел Office 2007, его нужно изучать заново. 2009 год — Microsoft в Windows 7 меняет Taskbar на Dock и хвалится этим достижением в блоге. Кстати, Office 2007 Ribbon Bar будет доступна всем приложениям, теперь вам придется заново изучать не только офис.

Зато вы всё еще можете запускать DOS-приложения на Windows Vista. Реймонд Чен в своём блоге высоко воспевает культуру совместимости в Microsoft. Но стоит ли она выпуска инвалидских продуктов? Всё дело в крупно-корпоративном рынке, которому его старые приложения ценнее качества ОС. Возможно, во времена Windows 95 совместимость была необходима и для пользователей: графические интерфейсы стали массовыми именно после Windows 95, и имей она проблемы, этого могло просто не произойти.

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

Мораль два: нет так быстро всё меняется в ай-ти; команды под руководством великих людей создают технологии, живущие десятилетиями.

Мораль три: культура качества — ценнейшая штука для любой платформы; без неё корпорации не способны выпускать хорошие продукты, даже если на рынке есть образцы для подражания.

November 21, 2008

Лирика или музыка?

Пять альбомов в истории Pink Floyd наполнены глубоким смыслом и эмоциями, переданными потрясающей лирикой и выдающейся музыкой. Это Dark Side Of The Moon, Wish You Were Here, Animals, The Wall и The Final Cut.

Появились они благодаря гениальности человека по имени Roger Waters, создавшего их замысел и написавшего к ним лирику. Человека такого же уровня доброты и ума, как Джон Леннон. Человека, которого можно было бы считать великим русским писателем, будь он русским писателем.

Pink Floyd распалась потому, что их музыка держалась на великом гитаристе по имени David Gilmour, идеи Waters'а которому были чужды. Gilmour хотел играть просто красивую мощную музыку в стиле светлых лет Pink Floyd, а Waters всё больше подчинял музыку своей всё более немузыкальной лирике.

The Final Cut — последний альбом Pink Floyd, созданный Waters'ом. Он даже не совсем принадлежит группе; его полное название читается «The Final Cut: A Requiem for the Post-War Dream by Roger Waters, performed by Pink Floyd».

Альбом начал свою жизнь легким завершением The Wall и должен был включать песни из его экранизации, а также некоторые песни, задумывавшиеся для, но не попавшие в «Стенку». Но после войны между Англией и Аргентиной 1982 года альбом стал тем, чем он есть — сложным тематическим завершением The Wall, использующим похожую эмоциональную структуру, но создающим реалистично-светлые чувства к концу.

The Wall — весьма попсовый альбом в смысле сложности его восприятия: он столь пропитан эмоциями, что его сложно не понять. Мелодическая структура Dark Side Of The Moon тоньше, Animals и Wish You Were Here значительно более спокойные. The Final Cut еще более некричащий, и его прослушивание требует примерно столь же развитого вкуса и умения слушать, как классическая музыка.

Тем временем, без Waters'а David Gilmour создал альбом The Devision Bell, название которому придумал Douglas Adams, а мусором который обозвал Waters. The Devision Bell нравится многим, что неудивительно: в нём наблюдается возврат к попсовому — легко воспринимаемому — звучанию. К сожалению, нет и глубокой лирики.

The Devision Bell мне напоминает культ самолётопоклонников, описанный Фейнманом. Красивая музыка, странные слова, всё сделали как надо — почему же получилось не так, как раньше? (Что мне не мешает иногда его слушать, конечно. Гилмор великий гитарист.)

«Music, when combined with a pleasurable idea, is poetry. Music without the idea is simply music.» (Edgar Allan Poe).

Все выдающиеся исполнители, взрослея, уходят от легко воспринимаемого звучания независимо от того, становится ли их музыка более простой или более сложной по структуре. Сравните ранних Beatles, поздних Beatles и сольные записи Леннона. Сравните ранних и поздних Deep Purple, и то, что они сейчас играют на концертах. Наконец, сравните раннего и позднего Waters'а. Что интересно, взросление лирики куда как менее заметно, чем взросление музыки. Быть может, потому, что писать взрослую лирику проще, чем писать немассовую музыку.

Мораль? Breathe, breathe in the air. Don't be afraid to care. Look around, choose your own ground. Long you live and high you fly, and smiles you'll give and tears you'll cry, and all you touch and all you see is all your life will ever be.

September 24, 2008

MacWorld 2009: App Store для Mac-приложений?

Позволю себе сделать прогноз на MacWorld 2009: в Mac OS X 10.6 Snow Leopard будет встроена DRM-технология, позволяющая продавать OS X-приложения через App Store наряду с iPhone-приложениями. Хотя некоторые freetards повозмущаются, для большинства это будет очередной реализованной мечтой.

Программистам — ниже барьер входа на рынок, не нужно изобретать свой веб-сайт с веб-магазином, серийники, систему лицензирования. (Страшно сказать — вообще никаких серийников. Из моего опыта с app store'ом, DRM рулит.) А пользователям — единый каталог софта, объединяющий лучшее из миров Unix (репозиторий пакетов, откуда можно ставить нужные программы в несколько клавиатурных кликов) и коммерческих приложений.

Самое приятное в этой перспективе — то, что купленные (или, для бесплатных, скаченные) программы запоминаются в iTunes App Store. Если сменить телефон, на новом тут же появятся все программы и настройки, которые были на старом. Распространение принципа на компьютеры сделает апгрейд мака полностью соответствующим известному комиксу авторства Trunks и Soto:

September 22, 2008

Смысл и внутренний мир

Сегодня ночью, читая бизнес-линч авторства Людвига Быстроновского (по ссылке можно не ходить), я просветлился и понял огромную часть закрытого мне мира. Позволю себе зацитировать:

«Чем художник отличается от иллюстратора? Художник в первую очередь выражает свой внутренний мир. Зачастую ему даже аудитория не нужна. Иллюстратор же в первую очередь призван иллюстрировать смысл.

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

Если же вы хотите выступить иллюстратором, то я вам скажу, что у вас получилась стоящая на двух ресторанных зонтах волосатая жопомясорубка с ручками. Жестокий, жестокий мир.»

Люди, пишущие и рисующие непонятный бред, занимаются тем, что выражают свой внутренний мир. Они не пытаются передать смысл, поэтому смысла и нет. Здравствуйте, ЖЖешечки, профили во вконтакте и юзерпики. Для них, художников, важна самобытность и неповторимая индивидуальность, а смысл вроде как и не важен. Может, некоторых из этих создателей бреда через пару десятилетий будут считать великими писателелями-авангардистами? Может быть, стоит не спешить с оценкой их деятельности?

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

December 16, 2007

Поломки и резервные копии

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

Например, под ёлочку в этом году я положу себе MacBook Pro 15", потому что сегодня разбил экран своего старенького MacBook'а 13". Благо, я могу себе такое позволить. Отрицательных эмоций нет. Сегодня хорошо посидели в «Жили-Были» с Юрой Бабуровым — завоевание мира всё еще запланировано, — потом выпил коньячку и хорошо поспал, проснулся совершенно счастливым. Обретенная радуга во весь экран ничуть не ухудшила настроение (естественно, работе она не мешает, ибо я работаю с подключенным внешним монитором).

Сломанный ноут мы уже нарекли новой моделью Mac mini flat. А если оторвать экран вообще, получится конструктивный аналог ZX Spectrum — клавиатура, в которую спрятан компьютер. Но, конечно, сначала я попытаюсь его сдать в сервис. Давно хотел домой второй мак.

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

Сейчас вспомнил, что вчера за'push'ал все изменения по работе на свой хостинг (приватно использую git, хотя основной репозиторий в CVS). «Вот теперь никакие катаклизмы ей не повредят», — сказал я. Очень вовремя, сегодня запросто мог накрыться жесткий диск. (А всего-то: шел с закрытым ноутом и выронил его из рук на пол.) В прошлом месяце подписался на .Mac, получил право пользоваться Apple Backup, сделал резервную копию всех фотографий на DVD. Опять же, не зря.

Мораль: резервное копирование — ваш друг. Навсегда.

September 26, 2007

Добейся результатов!

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

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

Небольшая история. Когда я перешел из 10-й гимназии в 84-й лицей, то сразу выиграл городские олимпиады по нескольким предметам. Естественно, за месяц научить чему-то особому не могли. Но зато успели сказать, что не поставят пять за семестр тем, кто не выйдет на областную олимпиаду. Успели сделать так, что приходить без победы было позором — и это имело огромное значение для результатов. По мере того, как люди добивались, от них требовали еще больше. Мне было стыдно поехать на Всероссийскую и вернуться без диплома.

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

Далее, в детстве я вполне справлялся с методом «учиться всему самому», от массы знаний про программирование до учебника высшей математики после пятого класса. Но есть проблема: книг было мало, интернета (у меня) даже близко не было, я не знал, что вообще нужно знать, и некому было мне это сказать. Всю мою жизнь бы изменили слова «Lotus Notes», произнесенные в контексте моих идей где-нибудь около 7-го класса. Заодно бы и рекомендацию прочесть все доступные книги по управлению IT-проектами и методологиям, а также пару дельных советов по тайм-менеджмету.

За сим довольно обо мне и постараемся обобщить этот опыт. (Обощать свой опыт — дело опасное, но, мне кажется, для умных людей он бы подошел.)

Как учить человека? Дайте ему реальную сложную задачу, срок и специалиста (мастера), который может контролировать прогресс / результат и отвечать на нетривиальные вопросы — вопросы, которые не найдешь в доступных источниках. Действительно помогите ему организовать свое время — например, наймите талантливого project manager'а.

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

Это применимо не только к профильным предметам. Если вам повезло учиться в хорошей школе, вас наверняка интересовало много разного; математика, физика, литература, история, английский — вот мой список. А заниматься надо пробовать вообще всем.

В школах (да и университетах) действительно заставляют заниматься всем. Но.

Первое: не дают бросить, когда понимаешь, что тебе хватит. Умному программисту интересна и история, и география, и он с удовольствием в них окунётся. А когда он решит, что узнал достаточно, нужно дать ему забыть о существовании такого предмета.

Второе: неадекватно управляют временем людей. Управление временем и проектами — сложный практический навык. Глупо ожидать, что школьники это умеют — а потому им нужна в этой области активная помощь. Возможно, project / time management следует сделать отдельным предметом. И в любом случае переключать человека между задачами — очевидная грубая ошибка в управлении. Предметы не могут чередоваться иначе, как хотя бы месячными погружениями в одно и то же дело.

Третье: мало требуют. Никакого погружения от простых задач не будет, человеку не хватит стимула глубоко копать, а в итоге он не получит удовольствия и гордости за себя, оправдывающих все старания. Задача должна казаться (неподготовленному человеку) почти неразрешимой, требовать освоения огромных объёмов информации и использования множества ресурсов, а также самых современных способов облегчения и автоматизации труда.

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

В нашем обществе людям позволено тратить время на пустые разговоры, гулянки, проделки, просмотр фильмов and whatnot, потом еще и называя это сладким словом «студенчество», видимо, втайне желая продолжать пинать балду всю жизнь. В такой ситуации нет стимула рискнуть, бросить всё и пытаться добиться результатов в каком-то одном деле. А должно быть совсем наоборот — стыдно в 18 еще не сделать чего-нибудь грандиозного.

Итак. Добейтесь результатов. Get things done. Go away and do it fucking now.

July 04, 2007

Developer's Fun

Есть среди программистов понятие, которое называется «фан». Людям, не живущим в этой среде с детства, может быть сложно понять соответствующее культурное явление.

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

Во-вторых, программисты как никто другой испытывают действие «сокращенного жизненного цикла изобретений». Можно придумать, сконструировать и запустить в массы результаты своего труда за очень короткий срок. Привычка постоянно любоваться этими результатами, живущими собственной жизнью, устанавливает очень высокий порог удовольствия. (Даже без массового распространения продукты всё равно живут сами по себе на локальном компьютере.)

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

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

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

Есть и другие факторы, мешающие творчеству, например, множество посторонних обязательств или разрозненных дел, которые скоро нужно сделать или приходится держать в голове. Поэтому среди программистов популярны подходы вроде «Getting Things Done».

Вывод: программист — не слесарь, с ним нужно работать по-другому.

А еще моя супруга готовит офигенную пиццу. Не похудеть мне сегодня. :)