понедельник, 28 ноября 2011 г.

Совершенный код

"...Если в жаpком бою испытал, что почем,- 
Значит, нужные книги ты в детстве читал!"
(В.Высоцкий)

Наконец-то я дочитал замечательную книгу Стива Макконела "Совершенный код".

Я считаю, что эта книга совершенна обязательна к прочтению любому, кто называет себя программистом.

Несмотря на свой угрожающий объем (более 700 страниц) читается она легко. Мне ни разу не довелось заскучать читая ее. Так же она всеобъемлющая. Кажется, что она про "все программирование вообще", но в конце каждой главы есть список литературы по теме. В этих списках почти все - золотая классика программирования. Так, что любой сможет удовлетворить свое любопытство в полной мере по любому описываемому вопросу. Информация в книге вообще организована очень толково. Контрольные списки, основные тезисы по каждой главе, продуманная структура оглавления. Все сделано для того, что материал усвоился максимально полно.

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

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

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

После того, как я прочел эту книгу, я больше не могу писать код как раньше. Мой код стал лучше и опрятнее.
И теперь моя жизнь разделилась на две части. "До" прочтения и "после".

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

А я желаю вам хорошего дня и хорошего кода.

четверг, 17 ноября 2011 г.

Вам, овертаймеры!

xxx: Здравствуй, милый!
yyy: дря
xxx: Уже первый час, а ты все на работе... Что-то случилось, зайка?
yyy: да б$%. Мозг уже свернул. Все что написал за выходные - не компилится и падает. Эксемели не валидируются, скрипты все с синтакс еррорами. Лайаут в жопе. А главное - ВСЕ ПРАВИЛЬНО.
yyy: Я же на выходных все отладил...
xxx: Любимый... Только не обижайся, ладно?
xxx: Возможно дело в том, что после того как ты отрубился под утро в понедельник... я взяла твой лаптоп и кое-где поменяла английские буквы "С" и "c" на русские "С" и "с"...
xxx: ПОТОМУ ЧТО НЕХУЙ РАБОТАТЬ ВЫХОДНЫМИ, ТРУДОГОЛИК ХЕРОВ
xxx: Так что приезжай домой, у нас сегодня котлетки...
yyy: Сссука бессердечная.
yyy: Выезжаю.

среда, 16 ноября 2011 г.

XDTO-пакеты. Неименованные типы

В продолжение к посту XDTO-пакеты, xml, xml schema несколько слов о неименованных типах.

Давайте посмотрим, что будет, если в конструкторе XDTO-пакета к свойству добавить определение типа и, в свою очередь, добавить туда еще свойств:

Как видите, свойства "Адрес" и "Телефон" сложного типа ("ОбъектXDTO"). А телефон еще и списковый тип (я задал "Максимальное количество" равное трем).

пятница, 11 ноября 2011 г.

XDTO-пакеты, xml, xml schema

«Гло́кая ку́здра ште́ко будлану́ла бо́кра и курдя́чит бокрёнка»
(первая ассоциация, пришедшая в голову
после прочтения "мана" о XDTO-пакетах)

Приветствую, многоуважаемый all!

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

С чего начинается?..

С чего начинаются XDTO-пакеты для неискушенного разработчика? Для меня они начались с вопроса: "А что это еще за хренотень в дереве метаданных?" И еще я знал, что это что-то про xml. Но мы начнем не с этого. А с объекта ФабрикаXDTO. Как можно догадаться из названия, это фабрика объектов (XDTO расшифровывается как XML Data Transfer Objects).

четверг, 10 ноября 2011 г.

DD/MM/YY vs MM/DD/YY

Stupid Americans! Now is 11/11/11, not 11/11/11

from lleo

среда, 9 ноября 2011 г.

вторник, 8 ноября 2011 г.

Человеку свойственно ошибаться, но чтобы провалить дело капитально, необходим компьютер.
Алан Купер says

воскресенье, 30 октября 2011 г.

Новое на доске

А еще у нас на доске обновление. Ребятам понравилась идея об "аватарках" разработчиков на тикетах. Доска стала "живее":

Вечер в офисе

Лето, конец рабочего дня. Все разошлись, в офисе непривычная тишина...


Kanban для управления проектами

Прошел замечательный тренинг "Kanban для управления проектами". Спасибо Николаю и проекту XPInjection, это был замечательно. За последние полгода это, пожалуй, был самый полезный тренинг. Он дал мне ответы на вопросы, которые меня действительно интересовали. Например, как "побороть" управление операционной деятельностью (вроде поддержки). Ни scrum, ни проектный подход для этого не подходит. Так, что зря ругают тренеров и "тренерский бизнес". Вообщем, тщательно выбирайте мероприятия, обогащайтесь знаниями и применяйте их на практике. И будет вам "щасьтье"!

Желаю вам хорошего дня и хорошего кода, а напоследок несколько фото:

пятница, 28 октября 2011 г.

Хороший код

xkcd радует:

Особенно смешно в свете того, что я сейчас дожевываю "Совершенный код" Макконела. =)

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

1С:Профессионалы

Недавно, наконец-то, пришли все сертификаты. Часть нашей замечательной команды:

Спасибо Александру за помощь (на фото слева). Впереди следующие рубежи. Нужен "1С:Специалист".

вторник, 20 сентября 2011 г.

Оперативная сводка

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

пятница, 19 августа 2011 г.

Идеалисты против реалистов

В одном интересном кейсе в сообществе HappyPM говорится о том, что некие тестировщики не хотят заполнять отчетность и саботируют ее стандартным "я забыл". Топикстартер спрашивает что делать с такой "забывчивостью".
В ответ насоветовали множество способов разной степени эффективности. Вот, например, один из типичных "по духу" комментариев:
забывают - значит, в этом для них нет ценности (низко приоритетная задача). Такая себе, ествественная автоматическая оптимизация (не срочно, не важно => вообще не делаем). "Вам, менеджмерам, надо - вы и собирайте, а мне голову не морочьте".

А если и нагрузка у тестировщиков близка к 100%, то тем более на такие "мелочи" не находят времени.

Из моего опыта (касательно test case design/review): помогает peer review with checklist (шпаргалка - что именно должно быть заполнено): таким образом за тест кейс отвечают уже не один, а два человека, причем в 1ую очередь спрашивают с peer reviewer'a: почему поля и данные (четко указанные в чеклисте), пропущены.
Плюс ревьюеры могут потом рассказать, кто лучший и кто худший в этом процессе (сколько раз возвращали они тест кейсы на доделку) - и тут адресно можно помочь людям.

Проблема не в людях, а в системе.

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

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

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

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

Вопрос на сообразительность: как вы думаете, чей способ окажется эффективнее?
И вопрос на подумать: а вы уверены, что в вашей компании вас не считают "вьетнамцем"? =)

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

Рекрутеры

Удивительно, до чего бывает полезна креативность в обыденной жизни.

воскресенье, 7 августа 2011 г.

Дизайн пользовательского интерфейса 2: Искусство мыть слона

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