вторник, 22 мая 2012 г.

Visual Studio 11 (2012) - 3

Update (6 июля 2012): под давлением общественности вернули возможность создания десктопных приложений в Express Edition студии. 
Update2: УРА! обещают вернуть XP для С++. Подробности здесь и здесь (C9::GoingNative Live: Kate Gregory and Steve Teixeira - Modern C++, AMP, Casablanca, C++ Renaissance) (для тех кому лень смотреть весь ролик: подробности про XP с 03:25 по 06:00 мин)
Update3: время бежит уже зарелизили саму студию и первый Update к ней.

Не смог удержаться, чтобы не добавить очередной пост про Visual Studio 2012. Предыдущие посты (первый и второй)

Сегодня едем на DevCon'12. Там будут рассказывать про наше светлое (или не очень?) будущее. В том числе и с VS11.

При этом с точки зрения разработчика (в первую очередь С++) новая студия упорно не хочет становится лучше. По прежнему фигурирует отказ от поддержки WinXP (для native приложений на C++ и для .Net 4.5), убрали возможность создания десктопных приложений (не-метро) из бесплатных версий и тд и тп. Подробности здесь. (Update: под давлением общественности вернули возможность создания десктопных приложений в Express Edition студии. Update2: УРА! обещают вернуть XP для С++. Подробности здесь и здесь (C9::GoingNative Live: Kate Gregory and Steve Teixeira - Modern C++, AMP, Casablanca, C++ Renaissance) (для тех кому лень смотреть весь ролик: подробности про XP с 03:25 по 06:00 мин))

99% комментаторов к статье не видит необходимости переходить на новую студию. Самый интересный комментарий:




Поэтому, пойду я наверно на сессии по Windows Phone, Azure и прочему. Про студию в этом виде слушать неинтересно :)

Продолжение истории здесь

пятница, 4 мая 2012 г.

Стремитесь к успеху, а не к тому, чтобы все сделать.

Не буду переводить :)

"Getting to Success Instead of Getting to Done"

Done is an endless backlog.

Done is a never ending series of requests.

Done is code that’s never perfect.

Done is test cases that still need to be refined.

The fog of “Done” can envelop the project and the minds of our teams. It obscures the truth. We’re not looking to get everything “done”. We’re looking to succeed. (отлично сказано)  Within success there is room for variation on “done”.

Почему мы выбираем неправильные технологии?

Интересная статья "Why Developers Keep Making Bad Technology Choices" про причины того, почему можно промахнуться с технологиями.

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

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

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

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

Причина 5: Неверное понимание или решение несуществующих проблем
Известно также, что разработчики склоняются к применению технологии, потому что она позволяет делать А и B, а также позволяет избавиться от C. Но на самом деле, ни того, ни другого, ни третьего нет в вашем проекте. И использование технологии оправдывается словами "а вдруг пригодится" или "у всех есть эти проблемы, значит и нам тоже надо о них думать".

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

  • Рассмотрите требования по стабильности, устойчивости к отказам, производительности и тд
  • Оцените то, что у вас используется сейчас. Насколько оно удовлетворяет вашим нуждам. Если проблем нет, то может и не надо затевать изменения?
  • Исследуйте, как другие технологии могут вам помочь. При этом обязательно учитывайте зависимости, которые принесут они за собой - бесплатного ничего не бывает, за все надо платить.
  • Выясните то, что знает ваша команда и предпочитайте то, что вы хорошо знаете.
  • Учитывайте затраты времени, стоимость и тп
  • Обсудите с командой все плюсы и минусы
Все выше сказанное не должно восприниматься как совет избегать использования новых технологий. Просто их применению должны быть причины. И постарайтесь, чтобы эти причины не входили в выше приведенный список :)