понедельник, 20 декабря 2010 г.

Интересное IT-мероприятие от Виктории Придатко

http://hr-maverick.blogspot.com/2010/12/15-it.html

В очень простом и демократичном формате, вечерком, в офисе Циклума рассказали о своей практике два человека.

Один из докладов - о том, как работают с распределенной командой:
  • Четкий, фулл-тайм график, синхронизированный со всеми. С 11 до 20.
  • Обязательные совещания КАЖДЫЙ _вечер_. [пока еще не встретилось описание успешной ораспределенной команды без них].
  • Не нанимают людей с детьми - считают что с работой это не совместимо
  • Отдают предпочтение работавшим в оперсорсе, и табу на работу с фрилансерами. Пытаются работать только с лучшими.
  • Слабые девелоперы тянут производительность _всей команды_ вниз (?)
  • Исповедуют "меритократию" - на тех. уровне должна быть иерархия авторитетов, демократия не работает. Кто-то должен иметь возможность принять окончательное решение.
  • Активно используют механизм burn-down диаграмм. Горизонт планирования до месяца, обычно меньше. Попробовали на три - фейл.
В общем для собравшихся это был довольно нестандартный подход(эдакие Джоэлевкие мотивы прослеживаются), в свете засилья киевских аутсорсеров(это стартап, получивший финансирование и уже вышедший на окупаемость).

Второй доклад более прагматичный и механический, про Зарплаты в ИТ, но через призму аутсорса:
  • По статистике при переходе подъем ЗП обычно 25%
  • У человека прыгающего по компаниям зп растет быстрее, чем у эволюционно растущего на одном месте
  • Если использовать бонусы, то не менее половины зп, иначе они не работаю/мотивируют (?)
  •  Составляющие пересмотра зп:
     - инфляционная (для $ сейчас 5%)
     - рыночная
  • Частота перемотра до мидла - раз в 2-6 месяцев, для мидлов-синьоров - раз в год
  • Один из способов обсуждения повышения - спросить у человека как он видит составляющие своей зп, и за что он хочет повышения в данном случае.
  • "шантаж уходом" - работает один раз, потом нужно увольнять(если конечно предыдущие пункты исполняются) (хотя на это звучали возражения)
  • Безпроцентный кредит - эффективный механизм мотивации. После его выплаты у сотрудника создается иллюзия повышения зп.
UPD
Вот еще одна подборочка - http://sergtk-it.blogspot.com/2010/12/it.html
Интересно, но многие вещи мы восприняли совершенно по разному :-/

UPD2 
Презентации http://hr-maverick.blogspot.com/2010/12/15.html

четверг, 18 ноября 2010 г.

"...и ждем, что они друг с другом договорятся. Они не договорятся."

Интересное интервью и цитата из него:
 
http://experience.openquality.ru/elena-sagalaeva-interview/

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

понедельник, 1 ноября 2010 г.

Высоконагруженные системы

Встретилась хорошая подборка статей про высоконагруженные системы -  http://www.insight-it.ru/highload/. Конечно очень обзорно, но есть очень интересные моменты. Рекомендую.

PS
Интересно, а что можно считать критерием сложности проекта? Ведь высокая нагрузка - это только одна сторона медали.

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

Про git на "Инструменты Agile"

Небольшая подборка выступлений по практическому использованию инструментов разработки в agile-командах (Yandex, Softline...) http://lib.custis.ru/Agile-tools-2010

И собственно цитата всего поста:

«GIT - инструмент для богов». «…После того, как мы убедились, что не все люди боги…»

среда, 5 мая 2010 г.

Тонкости внедрения

Интересная статья и замечательнейшая цитата из нее:

Я потратил на этот проект почти год своей жизни. Это много. И обидно.
А тем, кто планирует участвовать в подобных проектах, хочу сказать — ребята, в таких крупных компаниях гораздо важнее не суть дела, а правильная политика и учет клановых сил. Главное знать, кто тут на кого имеет какое влияние и с кем и в какой последовательности надо все согласовывать. А насколько хорошо то, что именно вы предлагаете, значение имеет не очень большое.
Не ново, но так за живое задевает...

среда, 28 апреля 2010 г.

Сложности общения

Встретился хороший пост про некоторые аспекты общения. С которыми не раз сам такливался на практике. Цитаты из статьи Владимира Германа “Личная неприязнь”.

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

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

понедельник, 29 марта 2010 г.

Вывод лога DUnit в файл

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

Для решения на скорую руку был набросан простенький класс (чуть более чем полностью слизанный с TextTestRunner), позволяющий логгировать все в файл - FileTestRunner

Проверен на D2009.

среда, 24 марта 2010 г.

Упрощение CheckException в DUnit с помощью анонимных функций

К сожалению, для проверки функции на возврат исключения возможен только для процедуры типа:
TTestMethod  = procedure of object;
procedure CheckException(AMethod: TTestMethod; AExceptionClass: TClass; msg :string = '');
Легким движением руки(наследником или правкой оригинального класса) для свежих версий Delphi упрощаем написание таких тестов:

TTestProc2  = reference to procedure;
TTestCase2 = class(TTestCase)
public
  procedure CheckException2(AMethod: TTestProc2; AExceptionClass: TClass; msg :string = '');
end;
Пример использования:
...
CheckException2(procedure begin DirDelete(TestDir); end, EInOutError);

понедельник, 8 марта 2010 г.

Разработка - это борьба с антивирусами

На днях, Касперский начал ругаться на один из пакетов нашей системы обновлений. В пакете (7z архив), от 11 сентября 2009 года лежал инсталятор сделанный InnosSetup, внутри которого и лежал якобы зараженный файл.

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

Но практика показала, что даже ложные сигнатуры, как те вирусы, расползаются по мелким антивирусным компаниям безо всяких проверок. Через 2 недели уже 10-ток антивирусов определяли файл как зараженный! Но при этом среди них не было ни одной крупной компании.

Приятно был поражен, что после отправки комплейна в лабораторию Касперского, ложное срабатывание было подтверждено в течение часа (и это 8-го марта!).

вторник, 2 марта 2010 г.

97 заметок архитекторам и разработчикам

Уж не знаю, откуда возник такой формат, но есть две замечательные серии статей, по 97 штук, с краткими заметками в области разработки и проектирования ПО. В оригинале они на английском, но есть частичный перевод от avl:

97 Things Every Programmer Should Know
97 Things Every Software Architect Should Know

понедельник, 1 марта 2010 г.

MindTheBird! - УпомяниПроПтица!

Как многие помнят, я, в силу исторических причин, большой любитель, и более того фанат, такого замечательного продукта, как СУБД Firebird.

В скором времени, выходит его новая версия 2.5, в которой разработчики в очередной раз радуют нас множеством вкусностей:
  • новая промежуточная архитектура SuperClassic
  • управление пользователями из SQL
  • долгожданный многими ALTER VIEW
  • автономные транзакции
  • гетерогенные запросы к внешним базам FB через EXECUTE STATEMENT
  • роль RDB$ADMIN
  • трассировка работы

    В поддержку сего события, запущен проект MindTheBird! - нацеленный на как можно более широкое освещение релиза и всего проекта в целом. Соответственно пассивным вкладом нас, разработчиков использующих эту СУБД может (а лучше должно быть) размещение баннера на сайте/блоге.

    А желающие принять более активное участи, могут заработать 500$ за работу с логотипом ФБ, или получить лицензию FastReport за привлечение новых участником.

    четверг, 18 февраля 2010 г.

    Miranda + Skype

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

    Последний я здорово уважаю за звук и конференции, и с удовольствием звоню через него, но IM в нем...

    Да много удобнее иметь на флешке шифрованную базу Миранды с логами общения за последние 5 лет, чем по меньшей мере 3 разрозненные инсталяции Скайпа.

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

    суббота, 13 февраля 2010 г.

    Desktop-интерфес на html?

    На днях, долго выбираемй мной домашний антивирус avast!, заполучил довольно симпатичный новый внешний вид(откровенно говоря старый был жутковат). Проходясь по UI в поисках возможности временного отключения резидентной защиты(кстати эта возможность появилась - правда не так удобно как в Касперском) я набрел на форму "О программе", где вычитал, что построен новый интерфейс с использованием библиотеки HTMLayout.

    Вспоминая мучения во время разработки пользовательского интерфейса на Delphi - интересная это в общем штука, позволяет привнести в мир desktop разработки все прелести html/css:
    HTMLayout – это, грубо говоря, веб-браузер, который Windows-программист может встроить в свою программу и, таким образом, построить интерфейс программы на базе DHTML

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

    Подробнее, в интервью с разработчиком, можно почитать здесь

    пятница, 12 февраля 2010 г.

    Firebird. Как определить что конект через embedded server?

    > Как определить что конект через embedded server?

    Если FB 2.1 и выше:

    SELECT 
      CASE 
        WHEN MON$REMOTE_PROTOCOL IS NULL THEN 1 ELSE 0 
      END
    FROM 
      MON$ATTACHMENTS
    WHERE 
      MON$ATTACHMENT_ID = CURRENT_CONNECTION
    
    --
    Дмитрий Еманов

    вторник, 9 февраля 2010 г.

    Упрощенный обмен метками в git

    Есть в git не очень, по меньшей мере пока, понятный и логичный момент - при пуше, созданные и измененные метки не отправляются на сервер. Из за чего, обмен изменениями с коллегами приходится проводить в 2 этапа:
    сначала делать git push, а потом еще и git push --tags. И аналогично для pull/fetch

    Но сие поведение можно задать в файле настроек, для каждого репозитария

    Или выполнить для репозитория команды:
    git config --add remote.origin.push +refs/tags/*:refs/tags/*
    git config --add remote.origin.push +refs/heads/*
    git config --add remote.origin.fetch +refs/tags/*:refs/tags/*

    четверг, 4 февраля 2010 г.

    Ant, MSBuild и расширения

    Проглядывал на днях презентацию одного доклада, про сборщик из мира java - Ant.

    В общем все стандартно, после знакомства с msbuild, кроме одной фишки, которая жутко понравилась - возможность  прямо в скрипте подключить расширение написанное на Java.

    Для Delphi и msbuild приходится извращаться, компилить промежуточные exe-шники, писать утилитки и т.п.

    Хотя наверное можно попробовать набросать какую-то мелочь на .Net - там тоже можно динамически подключить таск.

    ...после некоторых копаний...

    среда, 3 февраля 2010 г.

    Http sniffer/debugger

    Для поглядеть http траффик, что зачастую нужно для отладки, к примеру, web-сервисов, встретилась фришная утилита:

    Fiddler - http://www.fiddler2.com/fiddler2/

    Все что встречалось раньше - платное было.

    вторник, 2 февраля 2010 г.

    Командный файл в экзешник

    Иногда возникает необходимость сделать простенький экзешник, без особых усилий.

    К примеру - файл-алиас для авторана на компакт диске. Просто батник, с показом консоли и проблемой иконки не очень изящен, писать что-то отдельно - из пушки по воробьям.

    Удобная штука оказалась Bat To Exe Converter, прямо в онлайн можно из батника сгенерить экзешник.