3й подкаст Петербургской группы Alt.Net

Литература для .Net-разработчика

Участники: dnesteruk & butaji

Non-.Net

Domain-specific books:

Подкасты Петерубргской Группы Alt.Net

Подкасты Петерубргской Группы Alt.Net

Подкасты о разработке в среде .Net. Ключевые слова: C#, F#, Boo, Visual Studio, .Net, PostSharp, Asp.Net
личная подкаст-лента Петербургская Группа Alt.NetПетербургская Группа Alt.Net (подробнееRSS-поток)

Реклама

Руководство по UI дизайну для программистов

VectorBitmapExample[1] Сегодня немного обучался работе с векторной графикой, вспомнил, что Спольски написал по этому поводу книгу:

Большинство известных мне программистов, работающих на С++, с большой опаской относятся к созданию пользовательских интерфейсов (UI). Меня это, признаться, удивляет, поскольку программирование UI, на мой взгляд,- дело простое, очевидное и увлекательное.

Простое — потому, что самый сложный алгоритм, который вам может потребоваться,- алгоритм отцентровки одного прямоугольника в другом. Очевидное — потому, что, сделав ошибку, вы можете ее немедленно увидеть и исправить. Увлекательное — потому, что вы можете сразу же увидеть результаты вашей работы. Работа по UI дизайну сродни работе скульптора: вы непосредственно ваяете программу.

поэтому я сходил на http://russian.joelonsoftware.com/index.html и собрал для себя книжку, если кому-то интересно (получилось 44 страницы), можете скачать и прочитать её.


Премировать? Не премировать?

Частичный перевод статьи Thanks or No Thanks by Joel Spolsky.

В начальных строках статьи рассказывается, как пару лет назад Noah Weiss, который проходил летнюю практику в Fog Creek Software, пришел к Джоэлю с бизнес-идеей: запустить на компанейском блоге публикацию предложений работы. Его аргументы: сайт посещается тысячами программистов-профессионалов в месяц; запустить систему публикаций будет несложно; к сайту Fog Creek уже прикручена система оплаты кредитными карточками, печати квитанций и т.п. В общем, проект не займет много времени и сил.

Сначала я сопротивлялся. Я никогда не крутил рекламу на сайте, и мне нравилась идея продолжать держать сайт свободным от всякой коммерции.

Однако Noah продолжать спорить: «Эти парни с 37signals размещают у себя 50 реклам в месяц. По $250 каждая, так что в сумме…»

Секундочку, прервал я его. Они берут по $250 за каждую рекламу? Я представлял себе, что потолок цены за показ вакансии должен быть, ну максимум, не знаю, скажем, $4, нет?

Это так, подтвердил Noah. Но они берут по $250 за опубликованную вакансию. «Кроме того», добавил он, «список вакансий – это не совсем реклама, это, скорее, социальный сервис».

bonus Dilbert Wally

К тому времени я его уже практически не слышал. Маленькие шестеренки закрутились в моем мозгу. $250 помножить на 50 вакансий помножить на 12 месяцев… Такой доход позволит мне нанять еще одного программиста! Вот так мы и добавили рекламу на сайт. Noah написал черновой вариант кода за пару недель, еще за две недели я заполировал и отладил этот код. Общее время на постройку сервиса предложений работы составило приблизительно 1 месяц.

Вместо того, чтобы брать за одну публикуемую вакансию $250, мы решили брать $350. Почему нет? Я решил, что мы вполне можем позиционировать наш продукт как продукт класса «Премиум» уже хотя бы потому, что продаём его по цене класса «Премиум». При отсутствии другой информации потребители зачастую используют цену в качестве критерия оценки качества продукта. А я хотел, чтобы наш сайт был Lexus-ом среди сайтов, размещающих объявления об имеющихся вакансиях. Несколько месяцев спустя 37signals подняли свою цену до $300.

К тому моменту, когда вы читаете это, маленький четырёхнедельный проектик сделал для Fog Creek Software 1 миллион долларов – почти всё это чистая прибыль.

Неизбежно возникает вопрос: как бы так, должным образом, вознаградить сотрудника, который принёс свою сногсшибательную идею стоимостью в 1 миллион долларов? С одной стороны, вы могли бы сказать, что вы не обязаны: бизнес программного обеспечения – это, по существу, фабрика идей. Мы уже платим Noah за его идеи. Это заложено в его договор с компанией. Зачем, спрашивается, платить дважды?

eliminate bonuses Dilbert

Однако я чувствовал, что мы должны сделать что-нибудь еще, чтобы выразить нашу благодарность. Может, купить ему Xbox 360? Заплатить бонус наличными? А может, вручить ему в торжественной обстановке почётную грамоту, красиво отпечатанную на плотной бумаге с тиснением? Или, может, подарить ему футболку с надписью «Я придумал дело стоимостью в миллион. За это босс наградил меня этой вшивой футболкой»? Мы были озадачены.

А что насчет остальных сотрудников Fog Creek? Всех тех людей, которые просто делают свою работу. То, что одна идея одного из программистов явно и непосредственно превратилась в кучу денег, еще не означает, что все другие члены команды не внесли свой соизмеримый вклад в бизнес компании, хотя и не таким прямым образом. В то время как Noah пришел со своей идеей размещать рекламу на сайте, большинство моих сотрудников упорно трудились над 6-ой версией FogBugz, выход которой практически удвоил наши месячные продажи.

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

Психологи говорят о двух типах мотивации: внутренней (intrinsic) и внешней (extrinsic). Внутренняя мотивация – это то, что заставляет вас делать нечто, независимо от того, получите вы за это вознаграждение или нет. Почему вы потратили час, очищая внутренние поверхности своей микроволновки? Никто туда не смотрит. Ваша внутренняя мотивация заставила вас основательно потрудиться. Она есть у всех – фактически, большинство людей начинают дело с горячим желанием сделать его на «отлично». Внешняя мотивация вынуждает вас делать что-то именно из-за того, что вы ожидаете получить вознаграждение за это. Из двух мотиваций внешняя – слабее.

Интересный момент. Согласно психологам, внешняя мотивация вытесняет внутреннюю. Сам факт вознаграждения работников за хорошо сделанную работу ведёт к тому, что они начинают работать только за вознаграждение; если вознаграждения прекращаются, прекращается и хорошая работа. А если вознаграждение чересчур низкое, работники начинают думать: «Ёлки-палки! Оно мне надо – напрягаться». Они забывают своё врожденное, внутреннее желание работать хорошо.


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

И недовольные правы: невозможно точно определить, больше или меньше для Fog Creek стоит исправление бага, которое сделал David во вторник, по сравнению с кодом, написанным Ted-ом в среду. У нас тут не конвейерное производство по ручной пошивке собачьих курточек, на котором David пошил 5, а Ted пошил 7, и очевидно, что Ted принес компании на 40% больше денег.

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

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

За время моей карьеры я заметил, что компании, имеющие формализованные системы вознаграждения, в которых денежные премии привязаны к результатам, приходят к тому, что большая часть их персонала имеет плохое настроение и несчастна. Помню, когда я работал в Microsoft, один из моих друзей получил очень низкую оценку во время ежегодного обзора; эта оценка не была ни честной, ни правильной. Его боссы оценили его, глядя на 5% его работы – на его нечастое общение с ними. Вместо того чтобы обратить внимание на 95% его работы, где он был образцом для подражания – его постоянное общение с заказчиками. {…}

raise Dilbert

Возвращаясь к Noah, парню с миллионно-долларовой идеей. Хотя мы и не верим в премии за выдающиеся результаты, мы по-прежнему хотели бы как-то отметить его вклад. Мы решили дать Noah 10,000 акций компании – при условии, что он вернется к нам работать после окончания университета. Поскольку Fog Creek – это частная компания, и цену акции определить сложно, то мы могли бы сказать: «Это будет справедливо, парень, если ты будешь иметь свою долю в компании». Не потратив при этом ни одного настоящего доллара. Это было не идеальное решение, но все думали, что оно имеет смысл.

Noah казался довольным, и мы надеялись, что эти акции поспособствуют его решению вернуться к нам на фирму после учебы. А он взял… и не вернулся. Google сделал ему лучшее предложение. Еще одна проблема с вознаграждением, основанным на оценке результатов: вашему конкуренту проще перебить вашу ставку.

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

Благодарность

 

За этот пост отдельная благодарность http://mazanu.com/2009/01/blog-post_17.html

А так же обращаюсь с читателям с предложением почитать так же замечательные книги Джоела Спольски:


Лоуренс Морони "Введение в Silverlight2"

image Ребята из команды Microsoft Россия подготовили нам новогодний подарок, и перевели книжку Лоуренса Морони «Введение в Silverlight2». Скачать её можно здесь.

Думаю стоит прочитать её, освежить свои знания по SL, тем более в следующем году предстоит с ним плотненько поработать.


Мартин Фаулер «Рефакторинг: улучшение существующего кода»

Рефакторинг: улучшение существующего кода

Оригинал книги:

«Refactoring: Improving the Design of Existing Code» by Martin Fowler датируется 2000 годом, но хотелось бы заметить, что книга ничуть не потеряла своей актуальности и по сей день.

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

Автор выделяет и подробно рассматривает порядка 30 видов рефакторингов, а так же подробно описывает методологию проведения рефакторинга.

После прочтения невольно сел и поправил несколько мест в своём коде, которые «попахивали» описанным в книге «душком кода». Думаю буду делать это и впредь, чего и всем советую.


Scrum и XP: заметки с передовой

Ребята с сайта Scrum in action 4 месяца назад взялись за перевод книги Scrum and XP from the Trenches (How We Do Scrum) by Henrik Kniberg, и наконец-то сделали это, за что им огромная благодарность! Книга просто незаменима для тех, кто хочет начать практиковать гибкие методологии, а теперь она просто незаменима для того подмножества, у кого не очень хорошо с английским языком 😉

Вообщем, чего тут говорить, надо качать и читать.


Отличная подборка книг

Было бы классно найти все в электронном виде:

http://agileconsulting.ru/wiki/index.php?title=Books