воскресенье, 11 июля 2010 г.

Гитарные гуру

Что это я все о работе да о работе. Давно не писал о музыке. Представляю вашему вниманию троих гитарных гуру.





суббота, 10 июля 2010 г.

Самодокументируемый код - миф или реальность ?

Для каждого проекта важно иметь документацию. Существует два уровня документации.
Уровень первый или базовый уровень - это комментарии в коде. Также существует документация в виде Wiki, это-следующий уровень. Есть люди которые убеждены что самодокументируемый код не нуждается в комментариях. Идея самодокументируемого кода в том чтобы давать названия переменным и функциям таким образом, чтобы при взгляде на код было понятно как он работает, то есть комментарии как бы не нужны. На своем опыте я убедился что эта идея не работает. Комментарии обязательно нужны. В чем-то защитники самодокументируемого кода правы - автор кода может понять как работает его код. Но другой человек все равно не поймет. Не поймет потому что самодокументируемый код может дать ответ как этот кусок работает. но не даст ответ зачем чем этот кусок был написан, какие ограничения на параметры, поэтому полной картины в голове не будет. Должен быть самодокументируемый код плюс комментарии к нему :)

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

Поэтому проверка наличия комментариев должна быть частью code review. Если нет комментариев значит, на этапе code review код должен быть забракован.

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

пятница, 9 июля 2010 г.

Линукс, Open Source и патриотизм

Три года назад на мероприятии организованном компанией Sun в Киеве выступали докладчики из Китая. В перерыве я подошел к одному китайцу и спросил, правда ли что в Китае существует государственная ОС, называется Red Flag ? Китайский специалист подтвердил что у них закон обязывает использовать Red Flag Linux в государственных учреждениях. В России тоже занимаются созданием национальной OC. Нужна ли национальная ОС государству ? Я считаю что национальная ОС необходима, потому что это гарантия суверенитета государства, такая же как и вооруженные силы. Стратегия развития государственных компьютерных сетей должна основываться на использовании государственной ОС и open source software. Почему я так считаю ? Допустим, у государства XXX все компьютеры работают под ОС W, все программное обеспечение в министерстве образования, министерстве обороны написано под W. В один прекрасный момент фирма-производитель OC W, назовем ее M, говорит что у нас уже вышла новая версия W, поддержка старой версии заканчивается через 3 года. Государство уже подсело на иглу W и через 3 года будет вынуждено заплатить M сумму денег чтобы проапгрейдить W. Далее, Государственная Налоговая Инспекция использует формат файла .PUK, который является закрытым форматом и принадлежит компании M. то есть государство попадает на деньги по схеме vendor lock-in. Значит государство будет покупать X-Office у компании M. за бюджетные. тоесть наши с тобой, читатель, денежки. Это еще цветочки. Давайте представим что у государства XXX возник конфликт с государством в котором находится компания М, назовем его YYY. До столкновения вооруженных сил пока что дело не дошло, стороны используют не боевые методы, а именно, каждый день производятся атаки на сервера. Через некоторое время все компьютеры в государстве XXX перестают работать, хакеры из министерства обороны YYY нашли уязвимость в ОС W. Возникает совершенно дикая ситуация, теперь министерство обороны страны XXX обращается в компанию M с просьбой чтобы уязвимость в OC W была устранена. Но компания M находится в государстве YYY, то есть в стране противника. В результате компьютерные системы страны XXX выведены из строя, деятельность госучреждений парализована, информация о конфликте в интернете представлена исключительно с точки зрения YYY. Все, война проиграна. Вот к каким ужасным последствиям может привести отсутствие национальной ОС. Война в киберпространстве уже стала реальностью. О современных специальных операциях как форме геополитического противоборства можно почитать тут, очень познавательно.