среда, июня 18, 2008

Про офис

Нужен ли офис в программистской компании? Почему бы собственно программистам не сидеть дома, писать себе спокойно программы? Интернет сейчас быстрый поставить недорого. Средства обмена информацией есть в огромном количестве - недорогие и много чего умеющие. Электронная почта, телефон, разнообразные интернет-пейджеры, в том числе и поддерживающие разговоры голосом, телеконференции. Да и показать что происходит можно легко - есть и WebEx и Netmeeting и GoToMeeting и ещё масса подобных программ.

Зачем же нужен офис - за него ведь деньги платить нужно[имеется ввиду за аренду], к тому же в него нужно ездить - тратить время на дорогу.

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

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

среда, мая 07, 2008

Про письма

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

Так уж сложилось, что я уже довольно долго работаю именно в компаниях, разработка программ в которых ведется в Москве. И я бывал с обеих сторон - и с американской и с московской. Знаете, в чем состоит самая большая проблема с "той", "американской" стороны? Непрозрачность. Непонятно что происходит. Успевают ли с проектом? А если не успевают, то почему?

Есть масса вещей, способствующих непрозрачности команды программистов. Языковый барьер, который присутствует просто потому что для одних родной язык русский, а для других английский. Сам факт того что люди сидят далеко друг от друга. И ещё отсутствие писем.

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

Пишите письма!

понедельник, марта 10, 2008

Отчет об ошибке

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

Поэтому я завязываю с предисловием и перехожу к сути дела.


  1. Перед тем как добавить новый отчёт об ошибке (новый баг, CR типа дефект, называйте как хотите) необходимо убедиться что его ещё нет в системе.

  2. Уточнить о какой версии продукта (и модуля, и если нужно подмодуля) идет речь. До последней цифры, даже если их 18.

    Например: Программа Феликс, версия 4.2.1121.1356b

  3. Описать проблему в примерно таком порядке:
    1. Краткое описание
      Неправильное сложение отрицательных чисел
    2. Последовательность шагов, которую нужно проделать для того чтобы проблему воспроизвести
      • Ввести операцию сложения (ну может Феликс в польской записи работает :-) )
      • Ввести '-2' в качестве первого аргумента
      • Ввести '-3 в качестве второго аргумента
      • Нажать на кнопку получения результата
    3. Ожидаемый результат - вы думали что когда это проделаете, то получится то-то
      Ожидали получить -5
    4. Полученный результат - а на самом деле получилось ....
      Получили -1
    5. Существует ли способ получить ожидаемый результат (способ обойти ошибку)? Если да, то какой?
      Да, если сначала ввести -3, а потом -2 то сложение выполняется верно
  4. Все сообщения об ошибках должны быть обязательно приведены (желательно в виде скриншота)
    Сообщений об ошибках не выдаётся


И все ...

P.S. Зачем нужен пункт, описывающий способ обойти ошибку (если он существует)? Во-первых, для удобства приоритезации. Ошибкам обычно присваивается приоритет и часто ошибке которая не приводит к полной потере работоспособности имеет смысл присвоить более низкий приоритет. Во-вторых, часто описание способа обхода дает разработчиками ключ к пониманию того, почему же собственно программа неправильно работает.