Category: отзывы

усы2

Boo King dot com

В линче вышла рецензия на интерфейс букинга:

Сергей Кулинкович, арт-директор, пишет:

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

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

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

Но это не единственный способ зарабатывать деньги. Можно пугать, обманывать, путать. Эксплуатировать, в общем. Внезапно, это вполне себе бизнес-модель. Как в наперстках — чем сильнее тебя запутали, тем выгоднее организатору. Только не надо рассказывать, что вы так делаете, потому что пользовательские исследования показывают, что людям так удобнее. Выигрывает всегда казино.

усы2

Добра пост

Правда в том, что

  • Node.js это замечательная server-side платформа, очень быстрая, можно использовать общий код на клиенте и сервере, и никаких проблем с многопоточностью by design.

  • Ruby on Rails замечательный веб-фреймворк, нет ничего быстрее чтобы делать веб-приложения, огромное сообщество, библиотеки для всего, простая установка.

  • Java замечательный язык, огромное количество устоявшихся практик и рекомендаций, самый популярный язык в мире, безумное количество библиотек, хорошо защищенная и оптимизированная VM, почти не уступает C/C++ по скорости, решает проблемы с памятью без участия программиста, первоклассное ООП и многопоточность, деплоится на любую платформу, легко найти разработчиков.

  • С++ замечательный язык, очень быстрый и очень популярный, почти весь десктопный софт пишут именно на нем, базы данных, браузеры, игры. Позволяет очень тонко регулировать расход памяти и писать мало кода за счет шаблонного программирования.

  • PHP замечательный язык, очень простой в изучении и использовании, идеальный для создания веб-сайтов, весь интернет на 99,9% состоит из PHP — facebook, wikipedia, Wordpress, Flickr и т.д.

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

  • Perl это супер, очень компактная и лаконичная запись, огромное количество библиотек, везде установлен, писать код очень быстро, особенно работу с текстом и текстовыми данными.

  • C# классный язык, такой же хороший как и Java, только оптимизирован под Windows, самую популярную ОС, умеет все, что умеют самые продвинутые функциональные языки, даже декларативный доступ к БД. Очень легко делать нативные десктопные программы.

  • Objective C классный язык, разработчики на нем деньги просто лопатой загребают. Плюс на нем можно писать под iPhone.

  • Windows замечательная ОС, самая распространенная, нет проблем с драйверами, совместимостью, ни с чем. Огромный выбор программ, включая антивирусы.

  • Linux замечательная ОС, открытая, можно настраивать и менять как угодно. В современном Linux проблем почти не осталось, но если что случится, то сообщество очень огромное, любую проблему можно или найти решение в Google, или открыть исходники и самому поправить.

  • Android идеальная система, на нем одном работают телефоны, планшеты, холодильники, очки. Кому не нравится качество программ на Android может пойти и сам написать лучше, потому что система открытая, как Linux. В отличие от iPhone, телефон на Android легко использовать как флешку.

  • iPhone классный телефон потому что там все уже решено и оптимизировано производителем, и нет никаких лишних функций, то есть легко разобраться и пользоваться. Кроме того, компания Apple регулярно выпускает новые телефоны и прошивки, которые не работают на предыдущих поколениях, чтобы покупатели всегда старались иметь как можно более последний iPhone.

  • Erlang классный язык потому что он работает в кластере и очень надежный, можно посадить любого программиста писать код и через неделю он уже может выкатываться на кластер, если что и сломает, то не все. Erlang учится за 2 недели, то есть за год можно выучить до 26 Эрленгов.

  • Haskell классный язык потому что глупых программистов на нем не бывает. Его настолько сложно компилировать, что если программа скомпилировалась, то работать-то она уж точно будет.

  • Scala блестящий язык потому что очень легко найти работу в Силиконовой долине, и можно писать как угодно — хоть ООП, хоть ФП. Он очень академичный и продуманный до мелочей, по одним декларациям типов в стандартной библиотеке видно насколько тщательно и кропотливо его продумывали и сколько в него вложено труда.

  • UPD из комментов

  • Python очень простой, для него есть много библиотек, красивое оформление кода почти встроено в язык.

  • MongoDB удобная база данных, в которой не надо думать о реляциях, джоинах, каких-то формах нормализации. Просто и интуитивно, как json. Очень интуитивно, в отличие от SQL, хранить массивы, делать map-reducы и она web-scale.

  • Юзера проявляют фантазию и креативность в своих требованиях, поэтому жизнь программиста — постоянное самосовершенствование.

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

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


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

Understanding ClojureScript

Попробовал Кложускрипт (картинка), ощущения интересные — действительно, пишешь почти что на нативной Кложе, а работает всё в браузере. Все коронные плюшки для трансформации данных под рукой, никакому underscore.js не снилось. Уже даже allocation-free reducers [0] можно попробовать.

Однако, когда дело дошло до DOM-а, событий и взаимодействия с браузером, опыт оказался совсем не таким приятным. Google Closure (внимание на буквы — closure и clojure — так уж совпало) вещь не самая дружелюбная — мнгословная, избыточная, незнакомая, с тупой документацией (я больше по jQuery прикалывался, но Рич её заклеймил в презентации), да и в Кложескрипте нормального моста к ней сделали, т.е. еще и интероп в Джаваскрипт получается.

Итак, хорошей получилась Кложаскрипт или нет? Стоит ли всем на нее перебегать, в срочном порядке учить синтаксис Кложи, и т.п.? Эта статья про понимание, коммуникацию, важность наличия цели и наличия правильной цели. Мне кажется, тут закопаны нетривиальные, неочевидные, но важные вещи, которые я для себя открыл и мне хочется, чтобы вы тоже открыли.

Зачем вообще есть кактус? Хрен бы с ней, с Google Closure, почему, действительно, не взять jQuery, на котором минимум половина интернета работает? В интернете почитал таких же недовольных [1], и вроде все правильно, вроде как Рич ошибся, не понимает он в клиент-сайде, взял самое корявое, что можно было взять. Так, да не совсем так.

У Кложескрипты есть на сайте Rationale [2, 3] (и в презентации [4] Рич то же самое проговаривал), которые через бывалый интернет-мозг проскакивают почти не задерживаясь — намерения хорошие и правильные, но не достаточно «вкусные», «модные», да и все в таких вещах пишут, что всё будет хорошо, а на деле у кого что получается. Ну, короче, не показатель, люди вы хорошие, давайте посмотрим, а что вы сделали. Ууууу, неудобно-то как. Пойду выплесну.

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

Рич когда-то сказал [5] очень умную вещь, когда его про Custom reader literals спрашивали, а хрен ли в Кложе нельзя ридер хакать, какой же это Лисп получается? Ответ был, что ему хочется сделать хороший библиотечный язык, чтобы вещи, создаваемые разными разработчиками на Кложе, стыковались в конечном счете друг с другом. Кастомный ридер эту идею намертво бы похоронил, как с оригинальным Лиспом и случилось, все разбежались по своим углам и каждый ковырял свой мотоцикл.

Кложаскрипт, как младшая сестра большой Кложи, эти цели унаследовала. Сегодня разработка на Джаваскрипте — это такое ковбойство, Дикий запад, кто на что горазд. Coffeescript, например, ничего в этом смысле принципиально не решает — упрощая синтаксисис и подстеливая соломки поверх очевидно опасных ям, он оставляет семантику нетронутой.

Кложаскрипт, к примеру, дает namespaces, а значит, библиотеки совершенно разных людей можно будет собрать и заставить работать вместе. (most boring feature ever, как было в одной презентации [6] — Kevin Lynagh нашел всего три упоминания неймспейсов на ХакерНьюз, мало кто видит их важность).

Дальше, оптимизирующий компилятор из Google Closure — если ты тянешь библиотеку ради одной-двух функций, то ты только их и получишь в итоговом коде. Поклонники jQuery, думающие, что их это не касается, вспомните, как jQueryUI в силу своего размера столкнулись ровно с этой проблемой, пришлось писать себе велосипед. Но самое главное, что неймспейсы и зависимости встроены в семантику языка — то есть ковбойство закончилось, один стандартный способ уже есть.

Дальше, мол, критикуют за то, что кто её знает, Google Closure эту, все на jQuery пишут. Это действительно так, но штука в том, что Кложаскрипт не создавалась ни для какой из существующих ниш — она нацелена на создание новой, еще никем не заполненной ниши — большие и сложные, десктопного класса приложения в браузере, где скоро возникнет потребность в инструментах. Действительно, jQuery удобен для маленьких сайтов, но есть ли примеры его масштабирования до приложений уровня GMail/Google Docs? У Google Closure, получается, есть. И во-вторых, очень правильно открывать новые горизонты для браузерных приложений, это гораздо важнее, чем топтаться по сто лет назад истоптанной земле кнопочко-фреймворков и маленьких сайтов. С маленькими сайтами проблем уже нет, давайте смотреть, где настоящие, нерешенные проблемы еще остались.

То есть, пока обычные люди видят проблемы Джаваскрипта в том, что можно написать == вместо === и получить приведение типов (баги, производительность), хипстеры — в неудобном синтаксисе записи классов (кто бы еще объяснил, зачем они вообще нужны, однако все их переизобретают заново), Рич пилит свой велосипед в сторону объединения усилий разработчиков, которые сейчас тянут телеги в разные стороны, и в сторону расширения возможностей браузерных приложений. Лично я в восторге от того, какой железной рукой он ведет Кложу[скрипт] к цели, которую прекрасно осознает и может сформулировать. Если бы этот человек в свое время придумывал Джаваскрипт, мы сегодня жили бы в куда лучшем мире, поверьте мне. Самое обидное, что мало кто понимает, в чем реальное достижение Кложескрипты состоит.

[0] Пост про allocation-free reducers, еще один.
[1] Обсуждение «недостатков» Кложескрипты. Цитата из топика, Рич:
Seriously, this is like being disappointed an action movie was an action movie instead of a comedy. Your expectations are a complete mismatch for the intentions of ClojureScript.
...
ClojureScript is an action movie, and we're interested in helping people kick butt.
[2] Rationale Кложескрипты
[3] Rationale использования Google Closure
[4] Первая презентация ClojureScript, где моменты из Rationale перечисляются еще раз
[5] Интервью про Clojure 1.4, extensible reader, в котором говорится про «библиотечную» ориентированность Кложи
[6] Выступление Kevin Lynagh про использование Кложескрипт в жизни.

P.S. Передача знаний о работе с Джаваскриптом подрастающему поколению: