вторник, 29 марта 2011 г.

Про что директора не говорят своим менеджерам

Что-то, меня, уже в какой раз, потянуло на чтение мыслей по управлению процессами, проходящими в IT-компаниях...  Попались на глаза, и решил перепечатать у себя в блоге, тезисы из книги "Чёрная книга менеджера" Панкратова В.

В первую очередь это отличный личный мотиватор, я нарочно не привожу никаких линков на его ресурс, так как это не реклама, кому нужно — сможет найти самостоятельно.

  1. Работа. Если ты сказал, что что-то невозможно, а потом сделал – кого волнует, что ты скажешь в следующий раз? Дела не делаются у одних и тех же людей, независимо от компании или проекта. Когда понимаешь, что ошибся, нормальному человеку хочется делать ещё и ещё. “Сделал или не сделал” не имеет никакого отношения к “знал или не знал”.
  2. Опыт. Ты чего-то стоишь, пока ты в этой конторе, а за ее пределами ты снова идешь искать работу, чтобы продать свои навыки и продолжать верить в иллюзию, что твои навыки ценны сами по себе. Твой навык не самостоятелен, на рынке он будет конвертироваться в бабло, только если кто-то даст тебе проект, заказчика и людей.
  3. Деньги. Если тебя от бизнеса нужны только бабки и в голове у тебя только “дай”, то откуда у меня будет по отношению к тебе хоть полграмма уважения? С чего ты тогда удивляешься, что получая прибавку к зарплате, ты автоматически продвигаешься в очереди на увольнение? Если человек самостоятельно делает хотя бы 80% поставленных ему задач, значит мы ему платим среднюю ЗП по рынку. Если около 100% – то платим выше рынка и думаем, как его голову приложить еще. Если человек делает все на автомате, его надо заменить кем-то попроще и включить его голову туда, где не хватает головы.
  4. Люди. У твоего сотрудника есть вещи поважнее тебя и твоих планов.
  5. Мотивация. Как твои люди будут относиться к делу, к компании, к Заказчику и друг-другу если ты им талдычишь что вокруг все плохо и все полные урюки? Откуда у твоих людей возьмется мотивация что-то делать, если ты сам этого не хочешь? Если человек не делает, его надо учить, если не помогает – тогда лечить, если все равно не помогает – тогда мочить. Увольнять и идти дальше, даже урезанным составом. Пусть работает трое, чем не работает четверо.
  6. Время. Приходить вовремя – это такой знак уважения. Уважения, к которому ты не привык, потому что еще сам не стоишь ничего, а демонстрируя неуважение, ты дешевеешь прямо на глазах. Как менеджер, трать время на управление людьми, а не на исследование технологий и т.п., ибо: а) тебе платят не за это; б) ты всё равно не станешь лучше своих подчинённых, которые занимаются работой в режиме нон-стоп.
  7. Опоздания. Перезванивай, если опаздываешь. Предупреждай, если сроки проекта сдвигаются. У заказчика тоже могут быть планы, он может терять реальные деньги или с трудом построенную репутацию, которая может стоить дороже, чем весь твой отдел с потрохами.
  8. Уважение. Если ты не уважаешь, значит ты еще сам не заработал и не испытал уважения. С такими не договариваются, таким просто говорят что надо делать. Нервный, это тот, кто кричит на своего шефа, а тот кто кричит на подчиненных, тот просто хам. Самые серьезные вещи говорятся тихо и спокойно. Да, иногда не теми словами, но очень спокойно. Уважение к заказчику строится на том простом факте, что нам он платит бабки, которые уже успел заработать сам.
  9. Проблемы. Решая вопрос, решай проблему, а не человека. Любая задача решается множеством способов, если только ты не дотянул ее до проблемы и не решаешь свои комплексы, вместо того, чтобы делать дело с помощью тех умных и талантливых людей, которые тебе доверил бизнес, надеясь что ты сможешь или научишся делать дело.
     

Такая словесная шоковая терапия, в первую очередь неплохо прочищает мысли и чакры. Как сказал автор в предисловии, "Эта книга — неприятная прививка от заносчивости и звезд в глазах, которыми иногда болеем мы как ИТ-шники...".

True

четверг, 3 марта 2011 г.

Совещения - реальная альтернатива работе

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

Гибкая методология разработки (англ. Agile software development) — это концептуальный каркас, в рамках которого выполняется разработка программного обеспечения...

Основные идеи, которые продвигает agile методология, можно свести к следующим пунктам:

  • Личности и их взаимодействия важнее, чем процессы и инструменты;
  • Работающее программное обеспечение важнее, чем полная документация;
  • Сотрудничество с заказчиком важнее, чем контрактные обязательства;
  • Реакция на изменения важнее, чем следование плану.

Ну как такое может работать в типичной команде разработчиков?! Где каждый ленится написать строчку кода, добавить комментарий к функции или задокументировать сложную логику, продумать тест-кейсы... Сразу хочется распечатать и повесить весёлый плакат, замечательно иллюстрирующий это:

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

среда, 2 марта 2011 г.

Графическая интерпретация тригонометрических функций (graphical interpretation of trigonometric functions)

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

Совершенно случайно, напоролся на замечательную иллюстрацию, показывающую численные значения тригонометрических функций угла α в тригонометрической окружности с радиусом, равным единице:

Графическая интерпретация тригонометрических функций

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

вторник, 1 марта 2011 г.

Простой RSS-ридер на PHP (Simple RSS reader using PHP)

Думаю, что такое RSS все знают, это базовый XML формат для публикации сводной информации по сайту. Сама аббревиатура RSS как раз это и раскрывает: Really Simple Syndication (RSS 2.x), что дословно переводится как «очень простой сбор сводной информации».

Допустим, у нас есть главный сайт и отдельно блог с новостями, они разнесены на разные поддомены и работают с разными БД, на разных CMS. Нам необходимо встроить в новостной блок на главной странице последние новости, опубликованные в блоге. Для этого нам вовсе не понадобится писать функций импорта, который будет обращаться к другой БД, разбираться со структурой таблиц, например, движка WordPress. Есть более простой путь это реализовать – сделать экспорт-импорт через RSS.

Функцию экспорта краткой версии новостей (постов из блога) нам писать не придётся, RSS-каналы есть в любом блоггерском движке. А вот написать клиентскую часть, на PHP, тоже не составит труда, для этого надо написать простой парсер RSS-канала.

Что же представляет из себя RSS-канал, давайте рассмотрим. Корневой элемент RSS-документа содержит единый элемент channel. Элемент channel содержит метаданные о канале, включая интересующие нас title (заголовок), language (язык), pubDate (дата обновления канала) и link (URL блога). Так же внутри содержатся статьи, заключённые в тег item. Каждый item имеет элемент link, с URL на статью, ну и непосредственно заголовок title и описание description, которые содержат простой текст.

PHP5 имеет достаточно «жирные» инструменты, для доступа к различным узлам XML, а всё благодаря SimpleXML API. Есть прекрасная функция simplexml_load_file(), которая и делает всю работу. Она не только загружает документ из указанного URL, парсит (разбирает) документ, но и ставит указатель на корневой элемент документа, которым выступает у нас 'rss'.

Приведу пример простого RSS-ридера на PHP используя SimpleXML API:

<?php
$items_to_display = 2;
$url = "http://webaurum.blogspot.com/feeds/posts/default";
$rss = simplexml_load_file($url);
if ($rss)
{
  echo '<h1>' . $rss->channel->title . '</h1>';
  echo '<br/>' . $rss->channel->pubDate . '<br/>';
  $items = $rss->channel->item;
  $item_count = 0;
  foreach($items as $item)
  {
    $title = $item->title;
    $link = $item->link;
    $ts = strtotime($item->pubDate);
    $published_on = date("Y-m-d", $ts);
    $description = $item->description;
    echo '<h3><a href="' . $link . '">' . $title . '</a></h3>';
    echo '<span>' . $published_on . '</span>';
    echo '<p>' . $description . '</p>';
    if(++$item_count >= $items_to_display)
      break;
  }
}
?>

Скрипт обращается по адресу указанному в переменной $url, считывает RSS feed, парсит документ, и выводит количество записей, ограниченных количеством, заданном в переменной $items_to_display.

Такой скрипт вообще можно положить отдельным файлом на сервере, и делать простой SSI include в обычную статичную html страницу, во всех местах, где нужен этот блок новостей.

Рекоммендую

Попробуйте надёжный хостинг от Scala Hosting