среда, 30 июня 2010 г.

TDD и опытные разработчики

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

На это у меня есть обкатанное решение. Достаточно просто обсудить с разработчиком самые обычные активности, которые он выполняет в процессе написания кода.

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

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

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

Опытные разработчики также не отрицают тот факт, что первый тест обычно не работает и тестирование приходится повторять вновь и вновь. Вновь и вновь.

Так вот, вывод прост - хорошие разработчики уже тратят время на тестирование, причем значительное количество своего времени. Это факт.

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

Так что пишите юнит-тесты и вам не придется сожалеть о непротестированном коде.

понедельник, 28 июня 2010 г.

Учим албанский

Разгорелась дискуссия по поводу shkoder (увага, мой домен пишется через "с" - shcoder.by). Как подсказывает гугл (клик ми, там весело) - это вовсе не то, о чем вы думаете:
Шко́дер (алб. Shkodër или Shkodra) — город в Албании, расположенный на берегу Скадарского озера в 20 км от побережья Адриатического моря, вблизи слияния рек Дрин и Буна.
Кстати, а мы были на Скадарском озере (албанцы его тоже Шкодером называют), правда, со стороны Черногории. Там круто, национальный заповедник, так что похоже не судьба мне появлятся на первых страницах гугловского поиска. Тем более, говорят, там хорошая рыбалка.

P.S. Я добавил пару кнопок, теперь можно голосовать, понравился пост или нет (я думаю, вы разберетесь, что где). А то я не совсем уверен, что спортивная тематика, к примеру, вам интересна (см. предыдущий пост).

UPD: Что-то кнопок я пока не вижу.. Видимо, жуткие баги... UPD: работает!

Pilates по-мужски

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

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

А мужики-то стесняются

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

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

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

Кстати, просто взгляните на немцев здесь - Gimnastyk nach Pilates. Да их там больше, чем тёть. (надеюсь, nach по-немецки ничего плохого не значит).

Таким образом, "женские" виды спорта - аэробика, тот же пилатес, аква-аэробика и т.п. - нужны и полезны. Не стесняйтесь :) Перекос в женскую сторону наоборот вам на руку, хотя бы эстетическое удовольствие получите от занятия. N.B. На аква-аэробику ходят в основном старушки, которым уже поздно заниматься нормальным спортом, - опять суставы виноваты. Но зато там весело.

Итак, Pilates

Итак, пилатес. Пилатес - он медленный. Дышим, медленно чего-то делаем, иногда возникают трудности с координацией (по крайней мере, у такого увальня как я), иногда статика. Большое внимание животу, все время нужно держать пресс в тонусе. Есть упражнения на растяжку.

Я думал, он будет похож на йогу. Да, есть элементы, но в целом, какая-то другая атмосфера. Наверное, это минус. Атмосфера на йоге мне нравится.

Занятие прошло быстро, даже и не устал. Было всего пару моментов, когда было тяжело. И вот, казалось бы, повод посчитать это не стоящим своего времени, если бы не одно но (ниже).

BTW, поясню свою мысль по поводу эстетического удовольствия:



Надеюсь, вы меня понимаете.

Pilates и плоскостопие

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

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

А вот плоскостопие - с этим можно бороться (вот, к примеру, раз и два). Пилатес, похоже, неплохое подспорье, потому все же буду захаживать. Не тяжко, и опять-таки есть на кого и на что глаз положить.

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

Паведамленне на роднай мове

Гэта будзе цяжка, але я паспрабую. Мы ў Беларусі зусім мала размаўляем на беларускай мове, аднак большая частка ведае яе. Гэта проста, мы вывучаем мову ў школах, але потым цалкам забываем яе, бо не карыстаемся ў паўсядзённым жыцці.

Трэба адзначыць, што мой маленькі шкодзер дапамагае мне пісаць гэтае апавяданне, таму ўсе памылкі зусім не ад таго, што я згубіў навык, – проста вынік яго “дапамог” :)

Аднак вернемся да тэмы. Таму, што мова не выкарстоўваецца, ёсць шмат спасылак. Аднак я засяроджуся на тых, якія маюць сэнс для IT. Я бачу дзве асноўныя:
  1. Бібліятэкі, якія мы скарыстоўваем штодня, звычайна на ангельскай мове, таму цяжка пісаць нешта на беларускай
  2. Ад таго, што ўсе на ангельскай, айтышнікі ужо і ня ведаюць, як вымаўляць нейкія словы не толькі на беларускай, але і на рускай мове
Што мы можам зрабіць?

Па-першае, не ўсе ведаюць, аднак праграмы можна пісаць і па-беларуску. Да, гэта значыць, што не толькі каментарыi мают быць на беларусай мове, але і сам код. Вось караценькі просценькі прыклад такога коду:

  1. using System;   
  2.   
  3. namespace МойРодныКут   
  4. {   
  5.     public enum Прыгажосць   
  6.     {   
  7.         /// <summary>   
  8.         /// Такая прыгожая, што лепш збегчы.   
  9.         /// </summary>   
  10.         СтрашнаПрыгожая,   
  11.   
  12.         /// <summary>   
  13.         /// У кожнага свае недахопы.   
  14.         /// </summary>   
  15.         АлеВумная,   
  16.   
  17.         /// <summary>   
  18.         /// Ведае, як прапатчыць KDE пад FreeBSD.   
  19.         /// </summary>   
  20.         СэксБомба   
  21.     }   
  22.   
  23.     /// <summary>   
  24.     /// Публічны шкодзер.   
  25.     /// </summary>   
  26.     public abstract class Шкодзер   
  27.     {   
  28.         /// <summary>   
  29.         /// Бывае і так!   
  30.         /// </summary>   
  31.         /// <param name="дзяўчна">Трэба дзяучына.</param>   
  32.         /// <returns>Вось дык вось.</returns>   
  33.         public МаленкіШкодзер ПагуляцьЗДзяўчынай(IТДзяучына дзяўчна)   
  34.         {   
  35.             if (дзяўчна.Прыгажосць == Прыгажосць.СтрашнаПрыгожая)   
  36.                 ПапіцьПіва();   
  37.   
  38.             if (дзяўчна.Прыгажосць == Прыгажосць.АлеВумная)   
  39.                 ПашкодзіцьУКодзе();   
  40.   
  41.             if (дзяўчна.Прыгажосць == Прыгажосць.СэксБомба)   
  42.                 return new МаленкіШкодзер();   
  43.   
  44.             return null;   
  45.         }   
  46.   
  47.         /// <summary>   
  48.         /// Гэта да. Асабліва цёмнае спадабаецца.    
  49.         /// </summary>   
  50.         public abstract void ПапіцьПіва();   
  51.   
  52.         /// <summary>   
  53.         /// А як жа інакш.   
  54.         /// </summary>   
  55.         public abstract void ПашкодзіцьУКодзе();   
  56.     }   
  57.   
  58.     /// <summary>   
  59.     /// Дзяўчыны бываюць розныя, аднак усе маюць прыгажосць.   
  60.     /// </summary>   
  61.     public interface IТДзяучына   
  62.     {   
  63.         /// <summary>   
  64.         /// Апасля макіяжа.   
  65.         /// </summary>   
  66.         public Прыгажосць Прыгажосць   
  67.         {   
  68.             get;   
  69.         }   
  70.     }   
  71.   
  72.     /// <summary>   
  73.     /// Агу-агу. Пісь-пісь.   
  74.     /// </summary>   
  75.     public class МаленкіШкодзер: Шкодзер   
  76.     {   
  77.         /// <summary>   
  78.         /// Здурэлі зусім?!?   
  79.         /// </summary>   
  80.         public void ПапіцьПіва()   
  81.         {   
  82.             throw new NotSupportedException("Сіську лепш дайце!");   
  83.         }   
  84.     }   
  85. }  

Не верыце, што тут няма памылак? Паспрабуйце праверыць у Visual Studio.

Па-другое, вось вам караценькі слоўнік. На дапамогу згубіўшымся кодзерам:
  • Скачаць – спампаваць
  • Эстимация – падлік
  • Баг – памылка
  • Билд – зборка
  • Релиз – пастаўка
Па-трэц’е, вось вам і перекладчык, калі зусім забыліся. Не ідэальна, але трымаецца дасткова добра.

Спадзяюся, што я вас неяк заахвоціў і хаця б адзін дзень у вас будзе беларускамоўным. Не губляйце свае карані :) А калі зауважылі памылкі, адзначце гэта у камЕнтарах.

четверг, 24 июня 2010 г.

Голосование

Меня сегодня подначивали по поводу моего нового домена :) Завидуют, наверное.

Так или иначе, так как пока меня все равно посещают в основном только те, кто меня знает лично, то справа опрос на эту тему. Ага, нужно будет выбраться из гугл-ридера, чтобы кликнуть, я понимаю.

Всего лишь несколько комментариев по поводу shcoder.by:
  • Нет, я не шелл кодер :)
  • Я вожу Ford, к марке Skoda я холоден
  • Да, это от кодер и шкода (бел.)
На самом деле я уже плавно перехожу в категорию кодеров, которых к коду допускать нельзя. Я, конечно, пытаюсь держать форму и даже кое-что писал как-то, показав кое-кому кое-чего, а если точнее то, что я еще ого-го!, однако, ясно, что еще пара-тройка лет, и я буду как один из моих менеджеров в начале моей девелоперской карьеры. Уж он как дорывался до кода, то за вечер столько набрасывал, что потом неделю разгребаешь и чешешь затылок - как бы это объяснить, что венгерская нотация уже не гуд.

Однако же иногда ой как хочется чуть-чуть нашкодить :) Так, что тут вам не там, и не надо нам здесь этого.

среда, 23 июня 2010 г.

Свой домен в зоне BY

Господа, свершилось и вроде бы работает - в адресной строке вы теперь должны видеть http://www.shcoder.by/.

Пару слов о процедуре. Она оказалась чуть сложнее, чем я думал (вдруг кто-то из патриотических соображений захочет поддержать отечественную зону). Для зоны BY вам нужно выполнить 3 шага:
  1. Определиться с DNS серисом, который вы будете использовать для управления своим доменом - я воспользовался http://www.zoneedit.net/; надо зарегестрироваться, вам выдадут первичный и вторичный DNS, их нужно будет указать во 2м шаге
  2. Купить домен в зоне BY - регистрируетесь на http://www.domain.by/, оплачиваете по инструкциям (79 тысяч БРБ или около 26$)
  3. Привязать домен к blogspot - здесь очень простая инструкция для zoneedit.com и blogspot; инструкция простая, но ждать, пока информация по вашему домену станет видна в DNS, придется от нескольких часов до пары дней
К слову, домен в .com вам обойдется в 2.5 раз дешевле и будет проще в использовании. Blogger сразу предлагает зарегестрировать домен за 10$ - причем вся дальнейшая настройка для blogger делается гуглом автоматически (никаких левых DNS), но это для com.

Опыт же общения с open.by (да, domain.by - это "открытый контакт") пока не очень позитивный. Для домена мне пришлось уже два раза съездить к ним в офис, причем в переписке они меня упорно величают andrw andrew. После того, как я им 2 раза на это указал, они ответили:

"Здравствуйте, andrw andrew, спасибо, мы учтем ваши замечания"

Похоже, они издеваются. Но зато наш родной BY.

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

5 почему

5 почему (Five Whys) - это одна из методик "бережливого" прозводства (Lean Software Development or Lean Manufacturing).

Методика позитивная, потому что когда что-то идет не так, то вместо того, чтобы искать виноватых, она призывает нас учиться на своих ошибках, и попытаться найти основную (основные) причины возникновения проблемы. Мягче к людям и жестче к обстоятельствам (не помню, правда, откуда этот лозунг, но согласен на 300%).
Формальное описание методики подразумевает внедрение некого процесса, однако, не вижу причин не использовать её и в повседневной жизни. Я, к примеру, еще до того как наткнуться на описание, давно заметил, что просто один раз спросить "почему" в большинстве случаев не достаточно.

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

В этом случае я использовал аналитическую часть методики "5 почему", сама же методика идет немного дальше анализа.

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

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

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

Итак, я не побрился.
  1. Почему? - Еще не разобрали тот ящик, где лежала бритва
  2. Почему? - Не хватило времени
  3. Почему? - Не могли найти ящик, в котором лежала бритва
  4. Почему? - Бритва лежала отдельно от других принадлежностей (пены с лосьоном)
  5. Почему? - Забыли про бритву, когда складывались и положили в последний ящик, когда уже не знали, где лежала пена и лосьон
С каждым вопросом "почему" мы все больше углубляемся в проблему и взрезаем очередной её слой.

Это была аналитическая часть. Далее для каждой обозначенной проблемы приводим решение.
  1. Сначала разбирать вещи первой необходимости
  2. Записать сколько требуется времени для переезда
  3. Наклеить стикеры с содержимым на ящики
  4. Сгруппировать принадлежности по ящикам, нести ящик туда, где его нужно разбирать
  5. Провести инвентаризацию, вещи будет легко группировать еще до сборов (в какой ящик что положить) и ничего не будет забыто
То есть мы не просто пытаемся решить "основную" проблему, мы выстраиваем 5 линий защиты, которые нам помогут не допустить той же самой ошибки еще раз.

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

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

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

Очередной плюс методики заключается в том, что она фокусируется только на проблемах, которые действительно вам мешают, то есть вы решаете те самые 20% проблем, которые отнимают у вас 80% процентов времени.

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

У методики есть и минусы. Красивая цепочка вопросов-ответов, приведенная выше, далась нам с женой тяжело.

Открою секрет - мы её притягивали за уши к ответам, которые у нас уже есть. Мы задали гораздо больше почему, чем приведено выше, поэтому хотелось написать только значимые с самыми красивыми выводами. Рассуждения ниже объясняют, почему так получилось. И да, после того как мы нашли бритву, я не стал чаще бриться :)

Основные недостатки заключаются в том, что:
  • если подумать, то зачастую на один вопрос почему существует много ответов; то есть получается этакое дерево ответов; в частности большая часть веток дерева, которое могло быть построено по нашей проблеме, не приводили нас к необходимости инвентаризации; ветки бывают интересными и не очень; наверное, в этом случае важно содержание, а не форма - красивая цепочка почему не самоцель
  • правильных решений проблем методика автоматически не дает, никто вас не страхует от некреативных решений - "забыли бритву?" "окей, надо в следующий раз не забывать"; хотя 5 степеней проработки все же дают лучше результат, чем поверхностный анализ (хоть где-то что-то правильное придумаете)
  • иногда анализ тяжело развить, к примеру, "забыл бритву" "почему? потому что рассеянный" "почему рассеянный? o_O? потому что с улицы бассеянной." - мы упираемся в проблему, причин которых мы не знаем; часто все же бывают решения, например, "весенний авитаминоз" с вполне понятным способом решения проблемы; также можно попробовать найти другую ветку, то есть на более ранних этапах попробовать дать другой ответ почему; и на самом деле цепочка вопросов может быть связана другими способами; в технической поддержке зачастую есть несколько уровней поддержки, проблема передается с одного уровня на другой, пока не будет решена; в этом случае вопросы могут быть "почему первая линия поддержки не решила проблему?", "почему вторая линия не решила проблему?" - опять таки важно содержание, а не форма
  • иногда 6й, 7й и т.д. вопросы вскрывают проблемы поинтереснее; наверное, это просто выражается в неудовлетворенности от ранее данных ответов, что следует воспринимать как толчок для бOльшего количества почему; то есть не надо стремится к формализму, любая методика может нуждаться в адаптации к проблеме
В целом же, любая ретроспектива и корректирующие действия лучше, чем ничего. Проблемы выше все же не настолько критичны, тем более секрет в том, что если с первого раза не удалось сразу решить что-то, то будет второй раз (если он будет), который позволит нам снова взглянуть на ту же ситуацию уже в свете прошлого анализа и корректив, сделанных ранее.

В любом случае, удачного вам анализа.

четверг, 3 июня 2010 г.

Motivation

Многие уже подозревают, но не все убеждены, что айтишники работают не за деньги, а за идею. Здесь чуть-чуть подробнее и с огоньком:



Интересно, что Scrum (ну,  для тех, кто не знает - гибкая методология разработки ПО, здесь подробнее) эксплуатирует все три упомянутых способа мотивации:
  • Self direction - самоорганизующаяся команда
  • Mastery - перерывы между итерациями разработки, когда разработчики занимаются своим собственным развитием (инженерные дни); кстати, в ролике выше это попадает также и в категорию self direction
  • Purpose - цели спринта (итерации разработки) или цели релиза

Top 10 Office 2010 Features

Пользуясь новым офисом уже как минимум несколько месяцев (начиная с беты), скажу, что улучшения заметны.

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

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

И наконеце мой top 10 (может быть попозже добавлю картинок с примерами, сейчас лень):
  1. Новый splash screen. Красиво переливается :) Настраивает на нужный лад. 
  2. Поддержка нескольких exchange servers в Outlook 2010. Ну, я не буду вдаваться в подробности, кому приходилось ранее работать более чем с одним exchange server-ом знают насколько раньше все было плохо. Причем, даже непонятно зачем MS так нас обижали отсутствием возможности нормально работать с несколькими серверами. 
  3. Outlook 2010 conversations (разговоры). Да, теперь письма группируются по subject, пусть это и не удивляет пользователей gmail. Группировка сделана аккуратно, то есть в Outlook она мне больше нравится, чем в gmail. Корректно собирает разговор из разных папок. Один нюанс - если поиск сделан только по текущей папке, то в сгруппированном разговоре останутся письма только из текущей папки (ну как бы логично, но неудобно). Решается включением в настройках по умолчанию поиска по всем папкам. Одна только проблема - у меня это работает медленно. Но писем действительно много. С другой стороны, иногда что-то полезное и из архивов появляется.
  4. Outlook 2010 Search (поиск). Появился мини-язык поисковых запросов. Удобно. При свободном вводе появляется подсказка с выбором поиска по полям From, Subject - удобно тоже.
  5. Project 2010 and Visio 2010 Ribbon Interface (новая панель инструментов введенная ранее в Office 2008 для Office, Excel и т.п.). Теперь действительно часто используемые функции удобно расположены в Ribbon-ах (в том числе контекстных), много того, что раньше было запрятано теперь легкодоступно и бросается в глаза.
  6. Outlook 2010 MailTips (подсказки). Посылая письмо еще до отправки вы видите out of office auto-reply, иногда здорово экономит время. При посылке на список (distibution list) появляется посдказка о том, сколько подписчиков в списке. Помогает образумить людей и заставляет их дважды подумать перед посылкой письма на широкую аудиторию.
  7. Project 2010 Timeline View (временная шкала). Ну, это прорыв. Простая, но удобная фича. Особенно часто на стороне заказчика я вижу, как многие пытаются построить в Excel или еще где-нибудь некие высокоуровневые таймлайны или роадмапы. Да, они нужны для презентаций, не будешь же ты топ-менеджменту показывать Gantt Chart. Важно также не просто наличие фичи, но и то, что с ней удобно работать.
  8. Project 2010: Team Planner (планировщик ресурсов). Опять-таки просто, но очень удобно. В теории помогает сделать ручное распределение ресурсов и поэтому удобно показывает, кто занят, а кто нет. На практике удобно и при автоматическом levelling.
  9. PowerPoint 2010 Smart Art (умная графика). Списки и прочее легко трансформируется в непросто списки, а к примеру визуальные workflows или круговые диаграммы. Много пресетов, помогают оживить презентацию. 
  10. Word 2010 Navigation Pane (навигационная панель). Совмещает в себе поиск и навигацию по документу. Попробуйте, ненавязчиво (просто воспринимается в новом офисе как само собой разумеющееся), но удобно.
Честно сказать, не укладываюсь я в 10ку, хочется еще добавить, например, Calendar Preview в Outlook. Интересно то, что я сам бы и не вспомнил про это улучшение - заметил его в списке у Daniel Moth, хотя пользуюсь этим каждый день. К хорошему быстро привыкаешь.

И на последок не могу не упомянуть про Visio 2010 Auto Allign. Подозреваю, что присутствовало и в предыдущих версиях, но теперь легко доступно через Ribbon, потому и было мною замечено. Да, теперь эта опция заметна, но логика её работы от этого не стала понятнее. В общем, просто возьмите некую нормально организованную диаграмму, выделите все элементы и нажмите эту кнопку. У меня все квадратики, ромбики, кубики и т.п. разбежались по всему листу как тараканы - вообще без всякой логики :) Когда я случайно показал этот фокус ребятам на проекторе, некоторые долго не могли успокоится. Взрывает мозг. Да, над этой фичой придется еще поработать.