пятница, января 19, 2007

Думайте о безопасности

Вот здесь находится очень поучительный рассказ про то, как человек получил Platinum Pass на выставку MacWorld, из-за того что организаторы не очень сильно задумывались о том, как обеспечить безопасность сайта регистрации.

Пара замечаний:

  1. Platinum Pass давал возможность занимать лучшие места, а также доступ на выступление Steve Jobs
  2. John The Ripper - программа подбора паролей
Я узнал про эту статью из блога Michael Howard, который является одним из основных "security guys" в Microsoft, автором книги о написании безопасного кода: Writing Secure Codeи всемирно известным экспертом в этой области.

четверг, января 11, 2007

[Карьерная] Лестница в небо

Добрый день,

Сегодня хочется поговорить о так называемых "карьерных" лестницах. В приложении к разработчикам программного обеспечения, а также компаниям, в которых они работают.

Очень часто и в форумах, и просто в разговорах приходится обсуждать вопрос о том что кто-то там стал "Senior Developer", а кто-то даже "Team Lead", а некоторые вообще "Ахитекторами" ((с) Матрица). Тут же кто-то обязательно выскажется по поводу того, что формальные названия должностей не имеют значения, а важно что за человек и как он делает свою работу. И что уж лично он-то, ну тот который высказывается хоть и является простым программистом, но получает больше любого другого. Вот об этом и будет разговор.

Во всех фирмах, компаниях, организациях, конторах - называйте как хотите - существует штатное расписание. Иногда все красивые названия в нем прописаны, иногда (в основном по разного рода бухгалтерским соображениям) - нет. Что же там написано и зачем все это нужно? Я буду смотреть на вопрос НЕ с точки зрения конституции, трудового кодекса и бухгалтерии. Я буду смотреть на вопрос примерно так как вроде бы надо расследовать преступления - пытаясь ответить на вопрос "Кому это выгодно?".

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

Немного демагогии

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

  1. Управленческий

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

  2. Технический

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

С другой стороны, отсутствие подобного пути может стать серьёзной отталкивающей силой, поскольку часто бывает так что управленческие позиции уже заняты, а значит отсутствует ЛЮБАЯ возможность "карьерного" продвижения, чтобы в это понятие не вкладывалось.

Примеры

Рассмотрим теперь несколько примеров лестниц. Очень во многих фирмах есть специальные технические лестницы.

  • В статье Fog Creek Compensation Joel Spolsky описывает техническую лестницу, которая существовала на тот момент в его компании Fog Creek Software.

  • На самом деле, и в этом признается сам Joel, его система была позаимствована у компании Construx (основанной, кстати известным автором многих бестселлеров, посвященных программированию и управлению проектами, таких как Code Complete или Software Project Survival Guide ). В Construx есть собственная лестница, описанная подробно на web_сайте компании.
  • Компания Microsoft также использует "лестницу" оценки разработчиков. К сожалению у меня нет информации про современное состояние их лестницы, но есть данные из замечательной книги Microsoft Secrets. Лестница состоит из 5 ступеней - начиная с 9 и 10 уровней для выпускников колледжей и заканчивая 15 уровенем, который получают только люди, чья высокая компетентность лично отмечена Биллом Гейтсом
Если вы решили не ходить по ссылкам, а дочитали до этого места, то я очень кратенько опишу вам все эти "лестницы". На самом деле они все (и ещё некоторые с которыми я знаком, но которые не опубликованы) примерно одинаковые. Итак:
  1. Есть несколько уровней, у каждого уровня есть номер и известно какой уровень самый высшмй
  2. Есть правила перехода с уровня на уровень. Иногда - это правила формальные (например - прочел такие-то книжки, сдал такой-то тест/экзамен), а иногда неформальные - например начальник взял да и сменил твой уровень по своим собственным соображениям.
  3. Есть правила привязки уровня к зарплате/бонусу. Опять же, правила бывают разные, но они есть. Иногда правило может быть совсем формальным - то есть уровень участвует в расчете формулы зарплаты или бонуса как коэффициент где-то.
А зачем она нужна?

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

Внедренцы лестниц чаще всего мотивируют необходимость их наличия следующим:
  1. Возможность адекватного вознаграждения сотрудникам - каждому по заслугам.
  2. Возможность корректного сравнения уровня сотрудников и соответственно возможность для начальства правильно подобрать персонал для той или иной задачи. (ты можешь легко выбрать сотрудника соответствующей квалификации).
  3. Наличие карьерной лестницы технического типа является притягивающей силой - человек видит, что ему есть куда расти, это повышает мотивацию.
Взгляд тех, кому раздают уровни может совпадать с вышеизложенным, а может и не совпадать. Например, ощущения от лестниц и правил переход могут быть такие:
  1. Я работаю лучше всех, делаю всю работу, но платят мне меньше потому что я не успел прочитать какую-то книжку, которая требуется для перехода с уровня на уровень. Я читал другую книжку, которая в сто раз лучше этой, но это никого не волнует!
  2. Начальство заводит любимчиков
  3. Вот приняли только что человека - за что ему дали сразу более высокий уровень?
Мне кажется, карьерная лестница должна существовать, и в первую очередь потому что это отличная мотивация. Однако, для её успешного внедрения требуется как минимум:
  • Внедрить "справедливые" и формализованные правила перехода с уровня на уровень.
  • Внедрить методики оценки вновь приходящих сотрудников для их адекватного позиционирования по уровням
  • Обязательно создать "лестницы" для не-разработчиков - тестировщиков, технических писателей и других специалистов. А также установить соответствие уровней в разных лестницах (например - 10 уровень разработчиков это примерно тоже, что 11 уровень тестировщиков). Кстати говоря, в Microsoft это сделано.
  • Предусмотреть возможность смены правил перехода. Те, кто составляет критерии перехода - тоже совершают ошибки. Более того, технологии меняются, пишутся новые книги и так далее. Необходима возможность смена правил перехода с уровня на уровень
  • Знать меру - не всегда те методики, что хороши для компаний в которых работают сотни человек, хороши для компаний где работают 10 человек. Не стоит позволять процессам и формальным методам подменять собой саму работу.

воскресенье, января 07, 2007

TotalCommander 6.56 - bugfix release



Добрый день,

Вооще-то у меня не новостной блог, но случилась важная новость - вышла новая версия моего любимого файлового менеджера - TotalCommander 6.56.

Смысл её в том, что она лечит неприятный баг:

Total Commander 6.56 corrects a major problem with re-
packing of RAR archives directly to another archive,
using external RAR for unpacking. Under very special
conditions, it can lead to data loss anywhere on the
harddisk. We strongly recommend that you update
immediately, and do NOT try to reproduce this error.

Я сам, честно говоря, давно пользуюсь 7.0 public beta 2, но и в ней, и в предыдущей бете, также присутствует этот баг. Так что будьте бдительны!