# Понедельник 112 твитов
В Финляндии неожиданно началось лето, а тут начался @freiksenet. Привет уютному чату!
5:56Меня зовут Михаил Новиков, в интернете я везде freiksenet. Я разработчик, в основном на JS. Живу в Финляндии уже 12 лет, переехал из СПб.
5:57Я работаю в своём стартапе, https.//reindex.io. Мы делаем BaaS для реакта на основе GraphQL. Пишем на node + hapi + rethinkdb.
5:59Планы на неделю - поговорить о GraphQL и Relay, про жизнь и IT в Финляндии, пофлеймить про то что я не люблю - например Angular, gulp/grunt
6:01Я мог бы поговорить про реакт, но после @dan_abramov, @andreypopp и @deepsweet мне сложно что-то добавить. Реакт крутой, юзайте его :)
6:03"Just say no" to `babel?stage=0` in production.
На выходных в английском твиттере было аж два срача - сначала про babel и использование stage 0 преобразований mobile.twitter.com/ryanflorence/s….
"Just say no" to `babel?stage=0` in production.
6:10
@codinghorror @jeffkibuule @tomdale safari is still the king of real-world perf.
Второй про то достаточно ли V8 оптимизирует "реальный код", а не только микробенчмарки. mobile.twitter.com/wycats/status/…
@codinghorror @jeffkibuule @tomdale safari is still the king of real-world perf.
6:13
@jsunderhood вы начали стартап после выхода спеки по графклу или после презентации идеи графкла?6:13
Ну хз, 2 основных проекта на реакте в ff что-то тормозят сильно :( может у меня что-то с компьютерами?!)6:14Я мог бы поговорить про реакт, но после @dan_abramov, @andreypopp и @deepsweet мне сложно что-то добавить. Реакт крутой, юзайте его :)
@jsunderhood ну и оффтоп: как убедить бизнес вложить деньги в подобные идеи? "БааС для такой стрёмной идеи? Этим хоть пользоваться будут?"6:28
@jsunderhood как попал в программирование ? Важно ли спец. образование ?6:31
Про babel - мы юзаем и на клиенте и на сервере, stage 1. async/await это невероятно удобно при работе с базами данных.
6:37@jsunderhood Остальное это просто удобный сахар, но очень добавляет удовольствия при написании кода, например spreadы и destructuring.
6:40@jsunderhood а мы плотно подсели на `stage: 0`: Class Properties (странно, если их уберут) и даже Function Bind (по началу казалось ужасом)6:45
@jsunderhood к слову, актуальная таблица github.com/tc39/ecma2626:48
aahhh so much better pic.twitter.com/bA4SdwmOoB
Милый трюк с console.log и function bind в бабеле.
aahhh so much better pic.twitter.com/bA4SdwmOoB
6:50
@jsunderhood Расскажи про скорость Реакта. Рендеринг на сервере, на клиенте, инициализация js и тп. @dan_abramov @andreypopp @deepsweet7:14
Расскажу про GraphQL и почему он нам так нравится. Меня можно назвать не модным уже именем full-stack developer или модным product developer
7:36Я пишу фронтенд, часто я так же писал и бакенд. Как минимум я правил бакенд или пинал бакендеров, чтобы они его правили.
7:36Очень частая история - сделал REST API, все чистенько и по спеку. Начал писать фронтенд - нужны еще эти связанные данные или это поле.
7:37Начинаешь править бакенд, эндпоинты становятся намного менее чистыми и с кучей странных параметров. Или просто толстыми и возвращают все.
7:38Еще веселее ситуация, когда бакенд команда отделена от команды которая делает приложения. Каждый запрос на новую фичу вызывает недовольство
7:39В итоге хачишь workaround-ы на фронтенде и все глючит и тормозит.
7:39Фейсбук (и например Netflix) решили что хватит это терпеть и придумали, соответственно GraphQL и Falcor.
7:40GraphQL позволяет на сервере описать все данные, которые доступны и их связи. Клиентское приложение может одним запросом взять что ему надо.
7:41Поменялись требования или компонент? Просто добавь или удали поле в запросе.
7:41А бакендеры написали один ендпоинт и просто добавляют туда фичи, когда они становятся доступны.
7:42Несколько ссылок - introduction от FB.
facebook.github.io/react/blog/201…
Программный пост от нас.
reindex.io/blog/how-faceb…
Референс имплементация
github.com/graphql/graphq…
Вот только что запостил гайд, как писать простой сервер на надо юзая reference implementation.
reindex.io/blog/building-…
@jsunderhood На ноде, естественно.
7:50на мой вкус @jsunderhood на этой неделе — огонь.7:53
Я понял что я неправильно отвечал на вопросы. Woe on me! Можете почитать все в tweets and replies. Теперь буду старатся правильно.
8:07@jsunderhood Мне наоборот так больше нра. Интересное ретвитнул - я кликнул и почитал ответы. Не интересное - не кликаю. Чище лента.8:13
Все до этого по-другому делали. Вопрос к @shuvalov_anton. @ap_savin
8:14Это было в ответах, но вынесу сюда. Мы начали стартап почти сразу после первого talk-а на конференции про GraphQL.
8:15Ловили GraphQL запросы из мобильных приложений FB, читали блог посты, сделали свою имплементацию до выхода спека.
8:16@jsunderhood @shuvalov_anton @ap_savin ретвитить, отчасти нужно также для того, чтобы вопросы попадали в архив твоей недели8:16
Что вы делали крутое не-веб в своей карьере? Я работал в zenrobotics.com, писал код для роботов сортирующих мусор на clojure.
10:02Если что - сортирующих мусор физически, IRL. Я не про garbage collection :D
10:03@jsunderhood Можно пример с позиционными и индексными ключами?10:06
Первое сделает un-mount и mount если список поменятся. Второе скорее сделает апдейт и поменяет contents.
gist.github.com/freiksenet/f96… @astralian
@jsunderhood работал на заводе, которые авиадвижки делает, в отделе не разрушаемого контроля :)10:10
@jsunderhood удел clojure — роботы, сортирующие мусор. :)10:11
@jsunderhood там проверяются диски, в которые лопатки вставляются. Каждый около 1kk$ стоит. А проверить на дефекты их архи важно :)10:12
@jsunderhood писал софт для TV-приставок, правда всё на тех же веб-технологиях: в приставку был встроен webkit.10:17
@jsunderhood чо бы все понимали что это такое - вот фотография :)10:19
instagram.com/p/y413-exPyZ/
@jsunderhood этот вопрос сделал мой день. НИ-ЧЕ-ГО.10:23
@jsunderhood недолго работал в ГКНПЦ им.Хруничева, где Протоны собирают. Не то чтобы круто, но тогда было интересно.10:31
@jsunderhood сигнализацию проектировал для школ, судов и прочих гос. учреждений.10:39
@jsunderhood как отлаживать / профилировать комплексные GrahpQL запросы?10:55
Очень зависит от того как хранятся данные, можно например записывать все вызовы к БД сделанные одним запросом и по этому смотреть @snejink
10:58@jsunderhood на примере с блогом всё просто. А есть примеры простых решений для сложных кейсов?11:27
@jsunderhood например, обновление нескольких связанных объектов. Проверка прав доступа при доступе к части данных.11:27
Про первое - в отличии от запросов, GraphQL особо не задает то как должны делатся мутации. @snejink
11:28Так что надо будет просто написать такой Mutation который правильно изменяет несколько обьектов.
11:29Вообще GraphQL не отвечает на эти вопросы напрямую. Главная идея что ты написал свои типы данных и связал их с базой данной @snejink
11:31Потом клиент уже просто этим пользуется, тебе не надо ничего менять.
11:32Но при этом то как ты решишь у себя внутри проблему с permissions - это не то что GraphQL решает, это решает твой бакенд.
11:32В этом прелесть GraphQL - он не навязывает как тебе все сделать, только как это показывать клиенту и как клиент это будет запрашивать.
11:33Надеюсь нормально обьяснил, запутанно получилось.
11:34Важно понять про GraphQL, что это не SQL. Это намного ближе к WSDL, чем к SQL, такой WSDL для хипстеров)
11:46Это не общий язык для запросов данных. Скорее язык для описания удобных для использования RPC серверов.
11:47Ну и язык для использования этих RPC серверов, да.
11:47@jsunderhood хотя бы того же Relay – лично меня очень интересует как выглядят мутации с точки зрения компонента.12:12
Я попробую про Relay поспекулировать, но к сожалению я тут на твоем уровне, все что знаю - из докладов. @deepsweet
12:13Они немного раскрыли тему в личных разговорах, плюс мы читали де-минифицированный код, но деталей про интересные вещи не очень много.
12:14Итак Relay - клиентская библиотека от ФБ, должна очень круто работать с реактом и graphql.
12:16Еще не вышла :( Базовая идея - компоненты сами описывают свои требования кусками GraphQL запросов, Relay их умеет собирать и запрашивать.
12:16Relay обещает делать кеш, pagination (судя по всему больная проблема в ФБ), и оптимистичные модификации на клиенте.
12:17Если про первые две вещи все в целом ясно, то про клиентские мутации известно только то, что у них будет клиентский id :)
12:18Кеш будет сделан через уникальный id для каждого обьетка возвращаемого relay-compatible сервером. id похоже будет содержать в себе тип.
12:19Pagination - для страничных вещей, для каждого обьекта возвращается курсор - непрозрачный id, который можно дальше передавь для листания.
12:20Вероятно в курсоре будет хранится тип и текущая сортировка (или/и фильтр).
12:21@jsunderhood speakerdeck.com/laneyk/mutatio… – вот здесь как обычно много слов и мало примеров кода, но в целом концепцию уловить можно.12:21
Самый подробный набор примеров про Relay
facebook.github.io/react/blog/201…
Про relay и мутации - раз у нас есть уникальный кеш, мы можем даже при мутациях которые меняют несколько обьектов обновить наше состояние.
12:25Достаточно денормализовать данные полученные с сервера и обновить наше представление по id для каждого отдельного элемента из этих данных.
12:26Что пока не понятно - это как именно происходит оптимистичное обновление до этого.
12:26Спасибо @deepsweet, забыл совсем про эту презентацию. Немного больше всего известно про мутации, чем я сказал сначала)
12:27tl/dr - Relay заменит flux, GraphQL заменит REST и всем нам будет нирвана и полный React. :)
12:28@jsunderhood что мне нравится в GraphQL – с точки зрения клиента есть один источник данных, который отдаёт именно и только то, что просят.12:34
@jsunderhood в моём мире это очень укладывается в концепцию иммутабельных глобальных деревьев состояния, только тут такое же но на сервере.12:34
@jsunderhood и общение клиент-сервер сводится просто к синхронизации дерева.12:34
@jsunderhood огромный плюс – отсутствие процессинга данных перед рендером на клиенте. данные даже хранятся в идентичных структуре и виде.12:35
Ну вот в Relay будет какой-то процессинг, хотя бы денормализация для кеширования. @deepsweet
12:35@jsunderhood ну, это чуть про другое. наверное :) я скорей про "чистые данные как чистое состояние".12:39
Бесстыжая реклама - reindex.io будет поддерживать relay как только relay выйдет :)
12:40@jsunderhood relay не заменит flux, так как не все состояние диктовано базой данных.12:43
Возможно. Может в Relay будет возможность хранить такое состояние. @vslinko. В любом случае клиентское состояние это намного проще.
12:48@jsunderhood не обязательно с бд. Мы пилим внутренее апи с подобной идеей. В половине случае объект смотрит не в базу, а кэши/другие бекенды12:53
Прелесть GraphQL что можно смотреть куда тебе удобно, это implementation detail @MaximSukharev
12:54@jsunderhood только я не понял зачем fb понадобился свой формат. У нас всё отлично легло на обычный json со схемами.12:59
Может им показалось что так удобнее писать. JSON не самый удобный формат для программирования. @MaximSukharev
13:00Начитался @jsunderhood теперь у меня в продакшене React, Babel и WebPack. И об этом никто не знает.13:42
@Barlog_M @jsunderhood Есть легенда, что существует разработчик, который пишет на React+Babel+Webpack и не твердит об этом за каждым углом.13:52
@jsunderhood вопрос к сообществу: а какую либу сейчас лучше всего использовать для работы с canvas на клиенте?14:57
@greybax @jsunderhood нет. Лучше сказать "инфографику".14:57
@oelifantiev @jsunderhood Оч расплывчатый запрос. Для объектной абстракции paper.js хорош. Для игр pixi.js.14:59
@xgrommx @jsunderhood @oelifantiev Изрядно но в том же списке Paper обходит всех,а если смотреть на примеры - там даже сравнивать бесполезно15:17
Несмотря на твиттер, день прошёл продуктивно. Ребейзнул и починил бранч с аутентификацией на версию с graphql-js. А что вы сегодня сделали?
16:09@jsunderhood как быстро можно перевести проект с полусотней эндпоинтов на graphql-подобное решение?17:29
Нет пока простых решений, увы ( Вручную надо переводить. @roman01la
17:33@jsunderhood меня интересуют любые решение, переход руками — это нормально17:38
Если нода - берешь graphql-js и переводишь. Начинаешь просто с того что задаешь свои типы и связи между ними. @roman01la
17:42Я смотрел, это имхо ещё не готово. Но в целом генерить типы это правильный подход, мы так же делаем. @roman01la
17:47Но это зависит от того что за база данных, я бы например mongoose выбросил и написал типы заново, а из sql базы генерил.
17:50В любом случае надо генерить побочные типы, типа InputObjectType или Connection. @roman01la
18:05# Вторник 139 твитов
@jsunderhood GraphQL это что-то типа API Gateway microservices.io/patterns/apiga…?5:43
Нет, совсем не это. GraphQL на другом уровне концептуалтно, API gateway может иметь graphql endpoint. @vladimore
5:45Доброе утро уютный чатик! Сегодня у нас день срачей :) По просьбе @vladimore я расскажу почему я не люблю Angular.
5:52Начну издалека, люблю истории. Вот реакт многие засирают за jsx, типа html в коде, фу. И это при том что jsx это трансформ в js.
5:53А в ангулар магический код в виде html атрибутов, который запускается чуть ли не eval, который не отдебажить и который не js, но это ок %)
5:55Да, я про filter и иже с ними.
5:56Реакт очень активно заставляет программиста делить все на компоненты. refы намерено имеют минимальный функционал, чтобы даже не пытались.
5:57В ангулар туториалы предлагают писать толстые контроллеры, а интерфейс написания директив (компонентов) как будто намеренно ужасен.
5:59Заметьте я ещё ни разу не сказал 'ангулар тормозит'. Все чисто с точки зрения программиста.
6:00Дальше - у ангулара свои модули, своя система DI, свои тесты, свое все. Какая-то фабрика велосипедов.
6:01DI это отдельная история, мне иногда кажется что оно в ангуларе, чтобы пугать людей и заставлять думать что раз так сложно то видимо круто.
6:02@jsunderhood хотел сказать чисто с точки зрения программиста тормозит?)6:05
Ну что программист с ангуларом тормозит и это плохо. @a_lithium
6:05Но я отдам ангулару должное, формочки в нем делать быстро и просто. В реакте до сих пор нет хорошей и простой либы для форм. :(
6:11Но SPA в современном мире это не только формы и это ограничивает использование ангулара.
6:12@jsunderhood чем ужасен интерфейс директив? не докапываюсь мне просто реально сравнить не с чем.6:32
Меня пугают магические заклинания restrict: 'X' с волшебными буквами :) @vladimore
6:33@jsunderhood я делю все фичи на компоненты и директивы мне помогают в этом.6:33
Ты молодец и хороший программист! Я считаю что ангулар не делает достаточно чтобы продвигать такой стиль. @vladimore
6:34@jsunderhood фронтенд за последние годы сильно продвинулся и логично, что angular устарел, но это не делает его плохим, а делает устаревшим.6:34
Ну он плохой по сравнению с текущими альтернативами. @beshkenadze
6:35Прекрасный коммент про N+1 и GraphQL. reddit.com/r/reactjs/comm…
6:39@jsunderhood это да, но разве это не помогает проще принимать решения о том как организовать процесс и о том как писать код?6:39
Да, но проблема в том что надо выучить как в ангуларе принимаются такие решения и потом этот опыт не переводится на другие либы @vladimore
6:40@jsunderhood @beshkenadze может так и лучше сравнивать? Например вот такие-то штуки лучше в плане модульности, биндинга, моделей, etc.6:46
Ну я и старался на контрасте с реактом. @vladimore @beshkenadze
6:46Ну я заметил что я слишком часто начинаю ответы с ну. :)
6:47@jsunderhood ангулар же наоборот, для тех, кто не хочет и готов просто верить, учить устав и делать (:7:09
@jsunderhood ни то ни другое не плохо ни хорошо. просто разные подходы. всё зависит от выбора людей.7:09
@jsunderhood что изображено на твоей аватарке?7:09
Был или есть в Питере клуб, не помню названия уже. Там статуя собаки из кожи и противогаза. Голова этой статуи на аватарке. @deepsweet
7:11Мирно закончили срач про ангулар, но не волнуйтесь, у меня ещё несколько срачей запланировано на сегодня :)
7:12@jsunderhood @vladimore в реакте все компонентно, а в ангуларе директиву лишний раз писать не хочется, вот все и в шаблонах находится.7:15
@jsunderhood текущий angular, это версия 2, остальное Legacy.7:22
Ты ведь не сравниваешь chrome и ie6?
Насколько народ юзает 2.0? Мне кажется legacy не стремятся переводить на 2.0, чую как с питоном 3 и перл 6 будет :) @beshkenadze
7:23@beshkenadze альфа-статус ничего не значит? не думаю, что 2-й ангуляр кто-то использует в продакшене @jsunderhood7:28
Наброшу - а angular вообще кто-нибудь серьезный и большой использует в продакшене? Ну типа Google или Twitter :P @mistadikay @beshkenadze
7:29То есть кто-нибудь с миллионами пользователей. Я знаю что ангулар очень популярен в кровавом энтерпрайзе.
7:29Самый простой троллинг ангулара - спросить почему гугл сами до сих пор его не юзают :P С реактом к ФБ такого нет, они едят свой dogfood.
7:31@jsunderhood магический фреймворк в магическом ентерпрайзе7:32
@jsunderhood @mistadikay @beshkenadze Elisa использует. Но лучше бы она этого не делала :-)7:32
Мало энтерпрайза кровавее чем элиза :) @toivonens @mistadikay @beshkenadze
7:32Для тех кто в танке - Elisa это местный большой телеоператор. Кстати я там отдельно взятый проект таки перевел на реакт.
7:33@jsunderhood у Google много команд разработки, в отличии от FB.7:33
Ну это не правда же. У ФБ очень много разных проектов. @beshkenadze
7:34@jsunderhood напиши пост о том как дёшево и сердито перебраться на реакт с ангулара. Если действительно дёшево.7:36
Я же не упоротый :) Никак дешево ни на что не перейти. @vladimore
7:38@jsunderhood пруф: img.ctrlv.in/img/15/08/04/5… . Так что троллинг не обоснован7:38
Естественно если был выбран ангулар когда-то и на нем тысячи кода, то надо пилить на нем. Перепись всего заново и с нуля редко оправдана.
7:39@jsunderhood @vladimore у нас есть проекты на ангуляре, для перехода надо переписывать полностью.7:40
Я просто предлагаю взглянуть на альтернативы когда будете начинать новый проект.
7:40@jsunderhood я думаю, что стоит про реакт что-то плохое написать, тогда точно будет огненное шоу пуканов))7:41
А-то. Нам js-хипстерам палец в рот не клади, отгрызем и заменин на react/babel/webpack. @ZhivotvorevNik
7:42@jsunderhood в случае если ваша компания решила что angular deprecated, новый код писать с ним неоправдано7:42
Иногда для поддержки старого проекта надо писать новый код, пусть даже на deprecated технологии :( @RusAlexander
7:43@RusAlexander @jsunderhood пока очень похоже, что сделать angular deprecated могут только HR'ы.7:44
@jsunderhood а какой стек сейчас лучше взять для нового проекта типа-энтерпрайза (таблицы-формочки). Для фронтенд-части7:44
@jsunderhood @ZhivotvorevNik Стоп, то есть реакт уже для хипстеров?7:47
@jsunderhood а как же перцы которые их вместе использую якобы для скорости рендера интерфейсов?7:47
Слышал про такое. Думаю эти проекты совмещают скорость angular-а и глубокий model-layer реакта. @vladimore :)
7:48@ilavriv @jsunderhood @ZhivotvorevNik И про Backbone забывать не стоит7:50
Вот кстати с backbone на реакт просто. На одном из проектов просто переписали все view как компоненты. @iamale_ru @ilavriv @ZhivotvorevNik
7:50@iamale_ru ну, в акке @jsunderhood , "только и разговоров, что о <strike>море</strike> React'е и о закате"8:04
Новая тема для срача - coding style. Какое самое срачеобразующее правило в вашем coding style? У нас, например, обязательные trailing comma.
8:09Заодно скиньте ваш .eslintrc/.jscsrc/.jshintrc etc. Вот наш. gist.github.com/freiksenet/464…
8:10Trailing comma, кстати, чтобы диффы были красивые. :)
8:11@jsunderhood ставить точку с запятой после return или не ставить8:15
Точку с запятой ставить всегда :) @naorunaoru
8:15@jsunderhood очевидно, что spaces vs tabs8:18
Я думал только go-любы юзают табы в современном мире @iamstarkov
8:18@ilavriv @jsunderhood я вот когда-то продавливал, что не надо — типа, и так понятно. но редко встречаю любителей подобной ерунды8:18
Всегда бесило что ; опциональна, нелюблю такой код. Всегда надо думать нужна она или нет. Легче всегда ставить. @naorunaoru @ilavriv
8:19@jsunderhood @naorunaoru *brofist*8:19
Что думаешь насчёт Standard style? (Помимо того, что там ; нет) github.com/feross/standard
Что он нифига не standard. @iamale_ru @naorunaoru
8:19Лучший аргумент за ; это правило в standard style - 'never start a line with ( or ['. Правило, чтобы исправить что ты натворил в предыдущем.
8:21@jsunderhood 2 или 4 пробела8:21
@jsunderhood @iamale_ru @naorunaoru вот я тоже так думаю, и @sindresorhus сделал JavaScript happiness style ❤️ XOXO github.com/sindresorhus/xo8:23
@igor_shubovych @jsunderhood 2 пробела и никаких табов!8:23
Самый sensible 'общий' стиль который я видел это airbnb. Почти все по делу. github.com/airbnb/javascr…
8:24@jsunderhood @iamstarkov А как быть с тем что кто-то любит в 2 пробела отступ, кто-то в 4?8:37
Кто СТО тот и решает :) @maksim_valiev @iamstarkov
8:37@jsunderhood @iamstarkov Главное чтобы у всей команды было одинаково хорошее/плохое зрение?)8:44
Естественный отбор :) :D @maksim_valiev @iamstarkov
8:44@jsunderhood кстати, я вот считаю, что объявление переменных через запятую — плохо. дискасс?8:58
Помню делал консалтинг в стартапе, где был кофескрипт и 4 пробела индент.
9:02@naorunaoru @jsunderhood Ушли от этого. Одна переменная - одна строка и свой var, хоть и рябит от них иногда9:02
@jsunderhood @maksim_valiev @iamstarkov решает не СТО, а тимлид.9:04
Это ты в больно большой компании работаешь :) @beshkenadze @maksim_valiev @iamstarkov
9:04@jsunderhood по поводу кодстайла в целом – нужно почаще спрашивать себя не делаешь ли ты случаем работу UglifyJS.9:59
@jsunderhood знаю лично людей, которые часто называют переменные одной буквой, помимо `i` или `e`.9:59
Мой ко-фаундер даже на `e` ругается переодически :) А вообще, читабельные названия переменных - наше всё.
10:00@jsunderhood и здесь опять же React со своими `shouldComponentUpdate` и `componentDidMount` задаёт хороший тон.10:02
@jsunderhood аминь! Переменная внятно должна отвечать на вопрос "что?"10:03
@jsunderhood моё любимое – `dangerouslySetInnerHTML` facebook.github.io/react/tips/dan…10:03
Мне кажется они намеренно, чтобы люди не юзали) @deepsweet
10:03@vladimore @jsunderhood в былые времена были и `l`, и `m`, и даже `n` во вложенных циклах-перециклах :)10:09
В такие моменты хочется включить лимит на cyclomatic complexity. @deepsweet @vladimore
10:09@jsunderhood @vladimore кстати, есть что-нибудь живое ("babel") кроме github.com/es-analysis и eslint.org/docs/rules/com…?10:13
Не знаю, никогда не думал о том чтобы серьезно это включать, обычно такое на code review ловится. @deepsweet @vladimore
10:14@jsunderhood когда-то была забавная идея github.com/deepsweet/dba, я даже на мелких штуках пару раз юзал :)10:17
Кстати мы очень любим code review. Мне кажется это очень помогает, чтобы код катился в легаси медленнее.
10:18@jsunderhood кстати, а что вы используете для документирования кода? начиная от стиля/"методологии" и заканчивая инструментами.10:18
Хороший вопрос! Есть ли альтернатива jsdoc? @deepsweet
10:19@jsunderhood я уже упоминал github.com/codemix/babel-… пока вёл свою неделю, т.е. заменить jsdoc на flow annotations + обычные комменты.10:22
flow как документация это хорошо, но не достаточно. Не подходит для описания API или деталей как что-то концептуально работает. @deepsweet
10:23@deepsweet @jsunderhood исповедуем методу "читай код".10:25
@deepsweet @jsunderhood вот тут мужик рассказывает как писать меньше доков youtube.com/watch?feature=…10:33
@jsunderhood code review, но это дорого.10:42
Кривой код в продакшене - дороже. @beshkenadze
10:43@jsunderhood Если код работает, то дорогой будет поддержка, но это отложенные траты.10:45
Ну ясно что это trade off. Мы выбрали более дорогой код сейчас, чем более дорогая поддержка потом. @beshkenadze
10:46@beshkenadze @jsunderhood цена поддержки важнее стоимости разработки. Пускай последняя и кажется выше.10:46
@jsunderhood сложно обосновать заказчику эти траты, он всегда откладывает на потом.10:47
Ну у нас мы сами заказчики. @beshkenadze
10:47@jsunderhood а code style в пре-коммит/пуш хуках проверяются. Или есть менее жесткие пути?10:47
RE: code review i.imgur.com/eBBAUct.jpg
11:31@jsunderhood поговорим об организации хранения изображений? Кто как подключает SVG: файлом, в html, base64? Как можно автоматизировать?11:54
Помню мой кофоундер для iconic сделал webpack loader который грузил svg inline. К сожалению так и не дошли руки опенсорснуть. @neonick
11:55Сейчас уже поздно, это было у одного из клиентов.
11:56@neonick @jsunderhood Используем стеки bit.ly/1DpROQl12:16
@neonick @jsunderhood Вкратце, клеим всё в виде строк в svg-icons.js, а на странице создаём элемент и в нужном месте вставляем в DOM12:16
@neonick @jsunderhood у нас @mista_k сделал такое github.com/mistakster/gru… . пользуемся в проектах. удобно.12:23
Тонны плюсов в карму @Denis_dp за использование @firefox #DevEdition Берите пример - в канари-версиях браузеров полно плюшек для вебдева!12:57
@MaximSukharev @jsunderhood в некоторых проектах используем github.com/christianalfon…15:18
@jsunderhood Привет, подскажи какой js фреймворк мне лучше выбрать если я хочу сделать что-то вроде twitter meets youtube16:54
Это в смысле vine или coub? @verylazydreamer
16:54Нашествие любителя Ember в ответах. Все что он говорит про Эмбер я могу сказать про Реакт.
19:26Надо брать что лучше знаешь или что больше понравилось после туториала. Ember хороший фреймворк. React для меня лучше.
19:28@jsunderhood Твиттер - не самое удобное средство для таких обсуждений, и я бы с удовольствием обсудил эту тему.19:43
@jsunderhood кстати вопрос к адептам реакта, почему lifecycle methods в реакт имеют такие длинные имена?19:58
@jsunderhood например вместо ComponentDidMount не было бы лучше afterMount ?19:58
Почему нет? Точно сразу понятно что это за метод. @verylazydreamer
19:59Экономия на длинне переменных - головная боль для читателя в будущем. Пишешь один раз, читаешь 100.
20:00@jsunderhood поэтому названия должны быть выразительные и однозначные, а не длинные/короткие20:02
@jsunderhood чем afterMount не понятен? И при этом он короче. Мне просто интересно чем они руководствовались когда называли20:02
С префиксом component они все одинаково начинаются, удобно группировать.
20:03# Среда 106 твитов
Доброе утро! Сегодня у нас эмигрансткий день. Как я говорил, я в Финляндии 12 лет из 28, живу здесь всю учебу и карьеру.
5:44Язык я знаю плохо. В IT тут не надо язык знать если ты нормальный программист, но базу знать полезно чтобы заполнять формы и читать ценники.
5:45В Финляндии хорошо если ты любишь единение с природой и когда мало людей. Хельсинки пытается быть хоть немного городом, но фейлит.
5:46Тут безопастно, отличное образование, хорошая медицина, очень хорошее все для размножения. Но бывает скучно, концерты сюда не приедут.
5:46Стартапы сюда доходят медленно, разнобразие *всего* тут намного меньше чем в Мск или в Питере. Например доставка еды только щас развивается.
5:47В принципе IT развито, есть достатчно хорошее стартап комьюнити, проходят конференции, есть местные инвесторы и не-местные знают про нас.
5:50Налоги тут высокие, но если смотреть на все Европу, то достаточно средние для развитых стран. В Дании, например, выше. В Чехии сильно ниже.
5:52Интересный факт, который вымораживает русских - зп тут называется до налогов, тк налоги это твое дело и твой рабодатель про них не знает.
5:52Так что ждите получить 3к евро чистыми после названной зп в 5к.
5:53Русские в IT и науке тут бывают (иногда) нормальные, остальные эмигранты больше любят Путина, чем самый ватный ватник в России.
5:54Я кончил, можете задавать вопросы.
5:55@jsunderhood не хочется разводить политосрач, но почему они тогда уезжают? :D5:58
По тем же причинам что и все остальные - работа, семья или учеба) Почему-то эмиграция некоторых больно бьет по голове. @7rulnik
5:59@jsunderhood как местные относятся к it-эмигрантам?6:08
@jsunderhood @azbykov а в целом к русским?6:16
Я лично дискриминации не чувствовал. Кто сам этого хочет всегда может её себе придумать. @vecmezoni @azbykov
6:17Про дискриминацию, заранее отвечу - нет, тут не отминают детей просто так, как в целом, так и у русских.
6:24@jsunderhood ну, зато открыть свой стартап можно :)6:53
Рынок маленький очень) @beshkenadze
6:53В YC точно не возьмут :D @beshkenadze
6:54Ну и у меня тоже тащемта ;) Я про то что стартап нацеленный на финский рынок это фигня. @yuritkachenko @beshkenadze @sorgoz
7:01@jsunderhood как раз через три недели переезжаю) самый важный вопрос: сколько нужно бабла для более-менее комфортной жизни?)))7:17
Сложный вопрос, сколько ни зарабатывал, всегда хочется больше :) Самое дорогое квартира. Мы снимаем недалеко от центра, 1300€ @smashercosmo
7:18Это евро-двушка. В спальных районах можно найти за 700€. В остальном - алкоголь очень дорогой. Остальное по-моему окей. @smashercosmo
7:19Вообще, думаю одному можно достойно жить на 2000 чистыми (~3300 до налогов), вдвоем на 3000 (~4500). @smashercosmo
7:23@jsunderhood «достойно» включает путешествия/накопления/крупные покупки? @smashercosmo7:26
Зависит от того насколько достойно вести жизнь в остальное время) Мне сложно судить, я буржуй и не умею копить) @mistadikay @smashercosmo
7:27@verylazydreamer live reload / hot reload. Hot-reload - это замена компонентов на странице без ее перезагрузки. @jsunderhood @alex_ivantsov7:50
Hot reload меня прям возвращает во времена когда я писал Common Lisp. @listochkin @verylazydreamer @alex_ivantsov
7:51От 3000 евро до налога уже можно жить. На семью с ребенком нужно от 4100e - впрочем, все индивидуально очень @smashercosmo @jsunderhood7:55
@jsunderhood я часто замечал, что украинцы, которые переехали в Россию, тоже «ватнее» многих. Наверняка для этого синдрома есть название :)7:58
@ilnurkhalilov @jsunderhood вы аккаунтом не ошиблись? Тут, вроде, про разработку было.8:02
Тема эмиграции это вполне про разработку) @ZhivotvorevNik @ilnurkhalilov
8:03@jsunderhood @cssunderhood а как вы думаете, нужен ли современному разработчику свой блог? Полезно это аль нет?8:08
Если нравится писать - то пиши. Есть много способов получить репутацию и без блога, например опен сорс. @mr_skriming @cssunderhood
8:08@jsunderhood Зато намного больше чем во многих других местах Европы. Культура потребления тут нормальная. Не Америка, но жить можно.8:16
Тут хуже с потреблением чем в Германии, UK, Бенелюксе или остальной Скандинавии. @toivonens
8:18@jsunderhood Нет :-) Задача из жизни: ты живешь в Голландии, хочешь после работы забежать в магазин купить нитки для вышивки. Не получится.8:20
В Голландии есть amazon.nl и amazon.de с доставкой за 3 евро, а не 25 :) @toivonens
8:21@jsunderhood Те же самые магазины есть и в Финляндии. Интернет везде работает. Но не всё можно купить там.8:25
Сойдемся на том, что за потреблением надо ехать в США :) @toivonens
8:25@jsunderhood 10 твитов можно заменить одним: “Я живу в Финляндии 12 лет, а вы все неудачники!”10:03
Закончим с политотой, перейдем к пятиминутке ненависти. Ненавижу когда просят чтото установить глобально (типа npm install -g).
10:04Это отличная дорога в ад из-за несовместимых версий тулзов в проектах. Есть ./node_modules/.bin и npm scripts. Только локальная установка!
10:05Кстати npm scripts еще может заменить ненужный gulp/grunt. gulp/gruntfile это всегда каша. webpack для сборки, npm scripts для запуска.
10:07@jsunderhood пример конфига в студию)10:12
Сейчас в вебпаке вроде можно удобнее переопределять конфиги. gist.github.com/freiksenet/d46… @ZhivotvorevNik
10:13Это кстати еще до выхода babel конфиг. Старые добрые времена.
10:15@jsunderhood Почему же, всякие CLI нужны глобально. Да и в принципе довольно сложно запутаться в локальных/глобальных модулях.10:15
Поэтому они *все* должны быть локальными. Никогда не было проблем из-за разных версий, например, karma? @antonfrolovsky
10:16@jsunderhood Если есть локальная karma то дергается именно она :) если её нету то глобальная. Не вижу сложности держать 2 штуки.10:25
А зачем тогда вообще глобальная? @antonfrolovsky
10:25Еще пример scripts с большим количеством вещей:
gist.github.com/freiksenet/773…
Всё большое можно перенести в отдельные скрипты, либо баш либо просто js. Гарантирую что будет чище чем писaть это gulp-ом.
10:30@jsunderhood прямо чувствуется негативный или даже травматичный опыт с галпом10:35
@jsunderhood ну как сказать, без глобального npm и bower далеко не уедешь, ну и еще без npm-check-updates. для остального согласен10:50
Вот npm это исключение которое может быть глобальным. Bower кстати не нужен вообще :) @playpausenstop
10:51@jsunderhood эх, реальность порою бывает не такой радостной. в моем случае битва за ненужность bower все еще продолжается10:54
Будь мужиком, откажись от bower, блеять) @playpausenstop
10:54@jsunderhood @playpausenstop а что вместо bower?11:02
Все через npm. @touzoku @playpausenstop
11:02@jsunderhood как это? Не знает, но вычитает их с тебя?11:05
Ты сам разбираешься с налоговой, работодатель получает только твой процент. Поэтому при обсуждении зп ты говоришь о зп до налогов. @kuksikus
11:06@jsunderhood @kuksikus а если при этом проживаешь в другой стране, то как это происходит?11:14
В смысле если ты не в Финляндии, а работодатель финский? Платишь налоги по законам страны проживания. @Sigiller @kuksikus
11:15@jsunderhood В России зарплату тоже до налогов указывают11:15
Я слышал принято компенсировать налоги конвертом. Мопед не мой, я никогда не работал в России. @toivonens
11:16@_sashashakun @jsunderhood В Финляндии тоже есть налоги "до зарплаты". Про них никто не говорит, говорят про подходный.11:21
О них не говорят, так как они не зависят от твоей налоговой карты и тебе они не должны быть интересны. @toivonens @_sashashakun
11:22@jsunderhood @toivonens указывание зарплаты до налогов считается попыткой обмануть, поэтому, как правило, так не делают.11:23
@toivonens @jsunderhood по-моему это индивидуально обговаривается. Плюс традиционные 13% это же не все налоги.11:23
@Sigiller @jsunderhood Я всегда обсуждала с потенциальными сотрудниками зарплату до налогов. Никто не говорил, что я обманываю.11:23
И самое главное они не часть твоей зарплаты, тк они не часть твоего налогооблагаемого дохода. @toivonens @_sashashakun
11:24@jsunderhood @toivonens я немного запутался. Еслт мы говорим о налогам, которые платит работодатель, то будь они меньше, часть этих денег...11:29
Работодатель в Финляндии платит свои налоги на зарплату сотрудников, например часть соц страховки. @_sashashakun @toivonens
11:30@jsunderhood на определенном этапе это становится ужасно неудобным. Makefile практичнее будет.12:37
Makefile ценен, когда есть входы и выходы. По-моему нет разницы Makefile из 100 PHONY тасков или такой же npm scripts. @alexeyraspopov
12:38@alexeyraspopov @jsunderhood мне кажется npm scripts и Makefile это вспомогательные вещи, а не взаимозамещающие gist.github.com/playpauseandst…12:40
Различия чисто визуальные, зачем еще один тул? @playpausenstop @alexeyraspopov
12:40@jsunderhood @alexeyraspopov ну JSом на многих проектах стэк не заканчивается :) и вот здесь Makefile идеален12:42
@playpausenstop @jsunderhood @alexeyraspopov и это сразу перестаёт работать на винде13:14
Ты так говоришь, будто это что-то плохое :) @iamstarkov @playpausenstop @alexeyraspopov
13:15@jsunderhood @playpausenstop @alexeyraspopov безумно плохо, кросс-платформенный nodejs, а ваши проекты всё ещё не работают на винде13:39
Деплой будет на линуксе, разрабы на линуксе или маке, зачем старатся? @iamstarkov @playpausenstop @alexeyraspopov
13:40К тому же для Make есть cygwin. @iamstarkov @playpausenstop @alexeyraspopov
13:40Давайте поговорим о дискриминации. Кто из мужчин-программистов нравится вам внешне?13:43
Lee Byron из ФБ по-моему очень милый :) @toivonens avatars1.githubusercontent.com/u/50130?v=3&s=…
13:44@toivonens @jsunderhood bobuk? :-D13:45
@toivonens Мне нравился Пол Айриш, особенно то что он немного похож на хирурга из Nip Tuck. А потом он женился, и я обиделась.13:46
@iamstarkov @jsunderhood @playpausenstop предлагаю слово "верстальщик" считать матерным.13:56
@alexeyraspopov @jsunderhood @playpausenstop не соглашусь, из много на рынке и это нормально, а не «матерно»14:00
Не понимаю эту профессию, это те кто темы для вордпресс делают? @iamstarkov @alexeyraspopov @playpausenstop
14:01Не представляю что будет делать верстальщик в проекте с реактом. @iamstarkov @alexeyraspopov @playpausenstop
14:02Мне кажется это отголосок прошлого, когда не было фронтенда, а были темплейты. @iamstarkov @alexeyraspopov @playpausenstop
14:03@jsunderhood тоже что и всегда. Сверстает и отдаст на имплементацию. @iamstarkov @alexeyraspopov @playpausenstop14:04
Какая-то лишняя работа получается. Мне все равно переписать после этого. @SilentImp @iamstarkov @alexeyraspopov @playpausenstop
14:05@jsunderhood Ну вот я например не умею верстать. Чтобы сделать продукт, мне нужен верстальщик в помощь.14:06
Вау. Я удивлён :) Я всегда это делал сам и не ожидал что не все фронтендеры это делают. @toivonens
14:07@jsunderhood Сейчас я не вижу смысла доучиваться. Сверстать за меня может любой коллега, я лучше сделаю что-то, что другие не могут/не хотят14:11
@jsunderhood а используешь ли в работе каким-нибудь Livereoad'ом?14:21
@jsunderhood @iamstarkov @alexeyraspopov На последних двух работах были версталы и js раздельно. Ваше "матерно" очень некрасиво выглядит.15:02
@jsunderhood об актуальности разделения вёрстки и логики говорит активность в аккаунте @cssunderhood15:51
@alexeyraspopov @iamstarkov @jsunderhood @playpausenstop у нас верстальщики пишут jsx. В начале было тяжело, со временем стало норм.16:42
# Четверг 106 твитов
Доброе утро! Сегодня мы поговорим про Webpack и почему это наш выбор для сборки фронтенда.
6:29Начну опять издалека. У фронтенд ассетов есть некая дихтомия, javascript уже давно собирается каким-то способом, а все остальное нет.
6:30И к js модулям все привыкли, тут миллионы решений, от того же webpack-а до require.js до browserify. Все модули на любой вкус.
6:30С css-ом или например картинками или шрифтами все поступали более грубо. Возможно был список файлов и гулп или грунт делали над ним магию.
6:31Очень просто было забыть что-то добавить. Оч!ень просто было налажать с путями на другие файлы из css. Очень тяжко было добалять либы с css.
6:32webpack решает эту проблему убирая это различие между js-м с модулями и другими ассетами. CSS это такая же зависимость проекта как и js.
6:32Шрифты, картинки, все что угодно - это зависимости и их можно require так же как javascript. Нет больше независимого списка файлов.
6:33Дальше больше - url внутри css-a это такой же require. Можно не думать о том что ты перепутаешь путь в сервере.
6:34В собранном css-е будет ссылка на (возможно захешированный) файл с картинкой или шрифтом. Просто отдавай весь build folder и будет счастье.
6:35Темплейты - такие же зависимости. Просто requirе и пользуйся. Никаких магических путей в твоем коде, никаких кривых поделок типа icanhaz.
6:36Кстати такая модель с зависимостями отлично ложится на реакт. Один компонент, один css/less файл.
6:39Oстальные плюшки webpack-а, типа hot reload, code splitting - вишенка на торте. Главное - возможность все выражать через зависимости.
6:40@jsunderhood как раз вчера хотел холивар начать webpack vs browserify)6:41
@jsunderhood А как вы взаимодействуете с дизайнерами и верстальщиками?6:42
Всегда верстал сам, никогда не работал с верстальщиками. Дизайнеры присылают макеты в виде картинок или подобного. @volyihin
6:43@jsunderhood есть такой БЭМ стек с возможностью выражать все через зависимости. Его не поняли и за это не любили... А тут наоборот (6:59
БЭМ пугал когда он вышел. Там была простыня текста в документации на не очень прямом английском про философию. @voischev
7:00Но я не спорю что БЭМ (был?) крут и имел в себе кучу правильных идей. Я в БЭМ стиле CSS/LESS всегда пишу. @voischev
7:01Что я имел ввиду - авторы БЭМ не смогли его продать. В том числе из-за сложной и не очень удобной документации, ИМХО. @voischev
7:06И из-за того что это все было ориентированно на русское сообщество, а на западе об этом до сих пор не очень знают. @voischev
7:06@jsunderhood то есть ты можешь и @jsunderhood и @cssunderhood ))7:09
@jsunderhood @voischev БЕГИ7:09
Это больная тема и священная корова? @deepsweet @voischev
7:09@jsunderhood оооо ща набегут боты на ключевые слова @voischev7:09
@jsunderhood но для тех кто понял он вполне себе работает7:10
@jsunderhood @voischev просто больная7:11
Люблю запах флейма по утрам :) @deepsweet @voischev
7:11@jsunderhood @voischev Пока просто лайкну. Отвечу потом.7:19
Иногда мне кажется что аудитория jsunderhood на 90% состоит из бывших сотрудников яндекса и соответственно бывших БЭМ разработчиков.
7:20Яндекс это как Нокия у вас? Если не работал на прямую, то как минимум заляпался через консалтинг?
7:20У нас до развала Нокии половина IT индустрии на нее работало. Очень рад что она сдохла, народ хоть делать что-то начал свое.
7:23@jsunderhood очень смешно :-)7:30
В Гугле работать - это наверное как в Макдаке? Сначала хозяюшкой на устраиваешься, потом через 3 повышения уже стажёр-разработчтк?7:39
Почти так, только остаешься хозяюшкой всю карьеру, если тебя не зовут Гуйдо ван Россум или Роб Пайк :) @toivonens
7:40@jsunderhood а я вот не умею красиво верстать( есть какие то мануалы для тех кто уже знает что-то о CSS но в кучу собрать все не может?)7:42
Сейчас удивительное время, когда верстать уже не так страшно как раньше, особенно если без ИЕ9. Научись flexbox и лепи) @markbaraban
7:42@jsunderhood в точку. я уже забыл когда о чём-то таком всерьёз парился. чё-то там про flexbox ляп сюда, ляп туда, и лайаут готов.7:47
@jsunderhood @markbaraban Дада, без flex уже не жизнь.7:48
@jsunderhood щас ещё дополнительно набегут те, кто обижается на реальность "верстальщики уже почти не нужны".7:48
Про это я вчера уже нафлеймил) @deepsweet
7:48@deepsweet @jsunderhood не ну пол беды layout, а что бы ну прям full stack. там дали диз, ты такой оп и все красиво)или flexbox как панацея?7:48
Внезапно это панацея для 99% того что раньше было сложно и хачно. @markbaraban @deepsweet
7:49То есть конечно есть другие вещи которые надо знать как делать. Но стало в миллионы раз проще. @markbaraban @deepsweet
7:50Мне уже не снятся кошмары про двойной padding и zoom:1 @markbaraban @deepsweet
7:51@jsunderhood @markbaraban "хачно" – 99% крутоты бывших CSS ниндзей и прочих джедаев.7:51
ИМХО сейчас в стилях сейчас важнее сделать все модульно и чтобы поддерживать просто было. А с этим программисты обычно лучше справляются.
7:52@jsunderhood сейчас забавная ситуация, когда верстальщиками стали вчерашние дизайнеры, а разработчиками вчерашние верстальщики.7:53
@jsunderhood но остались ещё потерянные "верстальщики", которые реально и ни туда, и ни сюда. и пишут в блоги про то, как подлючать шрифты.7:54
@jsunderhood Чем ты дебажишь NodeJS приложения?7:54
Я консервативен, я все дебажу console.log :( @toivonens
7:55В теории надо научится дебагерам, но пока не было проблемы которую не найти хорошим добрым логом. @toivonens
7:56@toivonens @jsunderhood А чем можно нормально дебажить ES2015-приложения на Node.js? Сумел настроить Webstorm, но всё равно неудобно.7:57
@toivonens @jsunderhood Попробуй WebStorm :—) Он офигенно крут в работе с Node.js.7:58
Не люблю IDE. Я даже с емакса еле перебрался на atom. @gxoptg_ @toivonens
7:59@toivonens @jsunderhood Мой процесс: билдю код в ES5 с Babel в отдельную папку, добавляю соурсмапы, ставлю точки останова в сбилденном коде7:59
@toivonens @jsunderhood И запускаю на отладку. Когда срабатывает точка в сбилденном коде, вебшторм показывает исходный.8:01
@jsunderhood а jspm как альтернативу веб паку никто не пробовал?8:01
А потом удивляются, откуда у них reflow ползет8:04Сейчас удивительное время, когда верстать уже не так страшно как раньше, особенно если без ИЕ9. Научись flexbox и лепи) @markbaraban
Это смотря как сделать. @from_anywhere
8:04@toivonens @jsunderhood а как же github.com/node-inspector… и аналоги ? Я им пользовался ровно один раз, но он мне здорово помог8:04
@jsunderhood да, умеет цсс, шрифты и тд. Если что то не хватает, можно плагинчик дописать8:06
@gxoptg_ @toivonens @jsunderhood Вот только адски глючит, если дебажить код, пропущенный через babel/register, в отличие от node-inspector.8:18
С емакса на атом? Но зачем?9:15Не люблю IDE. Я даже с емакса еле перебрался на atom. @gxoptg_ @toivonens
@jsunderhood вот уж загадка, Atom как-то вообще поделие непонятное. Тормозит адово, каких-то иконок-спецэффектов навертели, лучше саблайм уж9:23
@jsunderhood толку, если он на проекте среднего размера загибается9:24
@slonoed @jsunderhood месяц назад пробовал с ним снова поиграться — не завелось. Тормозит сильнее рубимайна.9:29
На этой неделе самый чёткий @jsunderhood именно по мировозрению, адназначна!9:34
@jsunderhood а чем atom лучше sublime text?9:49
Больше старается быть умным редактором для программирования, а не просто текстовым редактором. @medvezhopok
9:50@veged @iamstarkov @voischev @jsunderhood Я вроде спрашивала пару месяцев назад и его не было. Можно ссылку?11:05
Мифические инструменты для зависимостей :) @toivonens @veged @iamstarkov @voischev
11:05@jsunderhood это адово тупиковый спор, ведущий только в обречённость некоторых технологий. уводи тему куда-нибудь :)11:27
Ты про так и не разгоревшийся диалог про БЕМ? @deepsweet
11:27JSON все-таки убогий формат, жаль что мы так широко его используем.
11:39@jsunderhood А yml?11:41
Я скорее что хотелось бы формат со схемой, который бы стал массовым. @toivonens
11:41Как-бы ты не сериализовал, рано или поздно нужна будет схема, даже для сериализации. Почему бы не начать с формата в котором она есть?
11:45Появился у тебя datetime в json, сразу у тебя кастамный код на клиенте и на сервере чтобы правильно его (де)сериализовать.
11:46@jsunderhood альтернативы?11:49
Не знаю, менять профессию :) Слишком наш js мир завязан на json чтобы что-то нормально поменять. @dpolyakov
11:49@jsunderhood @dpolyakov transit крутая штука github.com/cognitect/tran…11:53
Вот кстати да, transit норм, хоть и schema-less. @roman01la @dpolyakov
11:53В JSON многих подкупает что типа сериализации without any effort. Вообще это неправда, любая сериализация требует обработки твоих данных.
12:03Если ты просто делаешь JSON.stringify на свои объекты, ты не сериализируешь, а блюешь своими данными наружу.
12:03Это особенно заметная проблема в js или например в питоне, в Java или Haskell (де)сериализация обычно domain-specific.
12:04@jsunderhood @dpolyakov кастомные сериализаторы/десериализаторы – вещь! github.com/cognitect/tran…12:30
Как научится хорошо делать code review? Мне повезло с коллегами, на всех прошлых работах с code review были такие, кто это делал круто.
13:22Наверно надо быть садистом с OCD, чтобы это делать правильно. Но это реально работает. Переодически очень бесит, но код реально лучше.
13:23У меня вот редко получается так тщательно делать code review, больно добрый может.
13:23@jsunderhood для начала настроить линтеры, чтобы не делать их работу и проверять уже код, а не код-стайл13:25
Ну линтеры конечно у нас настроены и это очень помогает. @iamstarkov
13:26@jsunderhood часто ревьюиться самому, ревьюиться перекрестно13:46
@from_anywhere @jsunderhood перекрестный code review: mgoblog.com/sites/mgoblog.…13:52
@jsunderhood а кто мешает на объекте объявить toJSON метод? или я не правильно понял14:07
toJSON окей, а как from? @sevaisnotcow
14:07@jsunderhood смотреть не на код, а на логику. “Здесь ты делаешь лишнюю работу” “А ты учел то-то?” “а у нас есть такой-то API” и т.д.14:35
Тут много кто ответил про JSON. Я не говорю что нет решений, я говорю что надо делать решение. Схема, кастамная десереиализация.
14:36Просто json не решает этой задачи. Надо писать свою сериатлизацию на основе json, json просто так это не решит.
14:37@jsunderhood так всегда придется же, если ты хочешь скрыть какие то поля или раскрыть только какието поля, ну14:50
В этом и поинт, стоит ли городить такое решение или просто перейти на транспорт со схемой? @sevaisnotcow
14:50Думается мне, что @jsunderhood агитирует за JSON+Схема+Транспорт только для того, чтобы потом заявить, что и это решение говно.14:55
# Пятница 207 твитов
Давайте поговорим о дискриминации. m.geektimes.ru/post/259762/ Знаете красивых девушек программистов?5:54
@backendsecret Да. Только большинство во фронте. Бэк так жесток, что не каждая девушка выдержит его.5:55
Фронтендеры, эти смешные бакендеры считают свою профессию сложнее :D @dcromster @backendsecret
5:55Кстати такие заявления и есть дискриминация. "Фронтенд простой, это женское дело, настоящие мужики пилят бэк." @dcromster @backendsecret
6:03@jsunderhood Мой вопрос почему-то игнорируют. Но реально же в Европе девушек-фронтендеров мало, а бекендеры есть @dcromster @backendsecret6:06
@jsunderhood @dcromster @backendsecret Яков Файн утверждал что бэк может каждый, а красивый фронт в эру балованых юзеров - нет)6:10
Вообще я такого не замечал. Хотя бы тут знаю примерно поровну фронт и бэк. @toivonens @dcromster @backendsecret
6:11@jsunderhood некоторые компании думают, что место женщины — под столом pic.twitter.com/ObxspcSeYb6:47
@jsunderhood @skygrach співбесідував веб девів для однієї компанії у львові , рекрутер попереджала, що їхні деви не дуже добрі до дівчат7:09
@skygrach @toivonens @jsunderhood я наивна или такой рекрутинг должен был как минимум вызвать некий резонанс? гугл ничего на тему не выдает7:16
@tishkova @skygrach @jsunderhood Это русскоязычная реклама. Я не думаю, что они 100% вызывают резонанс.7:16
Было бы на западе - вызвало бы. В России сексизм и вообще -изм это норма. @toivonens @tishkova @skygrach
7:16@toivonens @skygrach @jsunderhood Варя, но это же пиздец! У нас бы их уже линчевали в прессе7:19
@olyapka @tishkova @skygrach @jsunderhood Шок? На моей 1й работе у начальника на столе был вибратор, который угрожалось "применить" за баги7:22
@jsunderhood @olyapka @tishkova @skygrach Серьёзно! Это был сайт Photofile.ru Это была 1я работа, я думала что везде так и часть культуры7:23
Тоооооолсто :) @yuritkachenko @toivonens @cssunderhood
7:29С такими историями в русском IT, я не удивлен что местные порывы боротся с неявным сексизмом вызывают удивление. Явный бы побороть %)
7:31@tishkova @toivonens @jsunderhood это норма. на фб больше 100 расшариваний и НИКТО не обратил на это внимания facebook.com/photo.php?fbid…7:31
Да какое побороть - признать что есть проблема, хотя бы.
7:32@ilavriv @jsunderhood @skygrach в былые времена у меня работали 3 девушки программиста (Бэк, фронт, фуллстек) все было супер7:37
Ну не стоит всё загонять под одну гребёнку. Это же Авиасейлз: их кредо — эпатаж @jsunderhood @toivonens @tishkova @skygrach7:56
Это не оправдание. Не вижу массового осуждения, наоборот как будто "хорошая шутка". @ilnurkhalilov @toivonens @tishkova @skygrach
7:57@jsunderhood @ilnurkhalilov @toivonens @tishkova @skygrach между эпатажем и обычным мудачеством очень тонкая грань и они её не чуют7:59
@ilnurkhalilov @jsunderhood @tishkova @skygrach Так о том и речь: они пошлют. А хотелось бы, чтобы их все послали.7:59
Ну достаточно публично отказаться от их продуктов. Я никогда их сервисом не пользовался. @toivonens @jsunderhood @tishkova @skygrach8:02
Ты молодец, а мне в ответы шлют что проблемы нет. @ilnurkhalilov @toivonens @tishkova @skygrach
8:02Какой же занудный на этой неделе @jsunderhood. Прямо на зубах скрипит.8:04
@jsunderhood @backendsecret классно шутка зацепила :) Был как-то на перловой конфе - 2 девушки. Был на фронтовой: ~40%.8:06
Тут вопрос в чем причина - в том что девушки не любят бэканд или конференции полные бэкандеров :) @dcromster @backendsecret
8:07@verkholantsev а по-моему один из лучших so far @jsunderhood8:07
@mistadikay @jsunderhood Эта отвратительная тема гендерной дифференциации разработчиков, этот флейм не по делу — фу.8:09
Я говорю о том что мне интересно. Технические топики были всю неделю, пора поговорить о не-технической части. @verkholantsev @mistadikay
8:10@mistadikay @jsunderhood Потому что в профессии важны профессиональные качества, а не гендерные.8:12
А кто тут говорит обратное? Проблема именно в том что наличия яиц в индустрии бывает важнее проф качеств. @verkholantsev @mistadikay
8:12@jsunderhood гендерную политику компании определяет руководитель, а не разработчики, тут индустрия ни при чем @verkholantsev @mistadikay8:15
Разработчики могут голосовать ногами. Мы таки не на заводах работаем чтобы выбора не было. @Seleckis @verkholantsev @mistadikay
8:16Я бы не пошел в компанию с такими руководителями. Если человек сексист то он 90% и в остальном говно. @Seleckis @verkholantsev @mistadikay
8:17@jsunderhood где вы видели, чтобы люди уходили с работы, только потому, что рядом работает человек другого пола? @verkholantsev @mistadikay8:17
Я имею ввиду обратную ситуацию. Не идит работать в @aviasales и подобные гадюшники. @Seleckis @verkholantsev @mistadikay
8:18@backendsecret а также на днях случилось очень крутое, «Правила поведения на конференциях» были переведёны на русский ru.confcodeofconduct.com8:19
@jsunderhood насчет рекламы в @aviasales думаю, что здесь стоит применить бритву Хенлона @verkholantsev @mistadikay8:20
Злого умысла нет, а damage is done. @Seleckis @aviasales @verkholantsev @mistadikay
8:21В пятницу я таки порвал пуканы. Даже наезды на Яндекс и БЭМ не вызвали такой реакции. Надо к вечеру еще за геев выступить, для закрепления.
8:23Чтобы люди поумнели? @Seleckis @aviasales
8:24@jsunderhood ДАЖЕ, Карл!8:24
@jsunderhood поверьте русскому человеку — у нас в крови не признавать ошибки, упереться рогом и доказывать свою правоту @aviasales8:26
Да у всех это в крови. Это не значит что надо молчать и не указывать на ошибки) @Seleckis @aviasales
8:26@jsunderhood когда коту делать нехера, он яйца вылизывает. Когда разработчик неумен, он о надуманном "сексизме" вещает с умным видом8:26
Бугага. Читайте @jsunderhood. Политика, сексизм и геи. "Все, что вы хотели знать о мире frontend"8:27
Delicious ad hominem. @svenyurgensson
8:28@jsunderhood соглашусь. @aviasales вы не правы.8:29
@jsunderhood любой, поющий про сексизм может сходить в ЛЮБУЮ картинную галерею и найти хотя бы 10 художников-женщин. Обратное - роддомы8:30
Самое лучшее выходит из людей. Все женщины в роддом. @svenyurgensson
8:31@jsunderhood @toivonens @tishkova @skygrach нет там сексизма, вы чего, в Таиланде местные шлюхи сами такое предлагают за 500 бат.8:36
Буду теперь на сайте @jsunderhood почитывать эту неделю, когда накатит настроение "А не вернуться ли в Россию?"8:39
@jsunderhood @ilnurkhalilov @toivonens @tishkova @skygrach мудаки шлют. Спасибо за поднятую тему.8:42
@svenyurgensson @jsunderhood бггг, кажется, тут кто-то не различает корреляцию и причинность. А ещё там нет картин африканских художников…8:46
@svenyurgensson @jsunderhood …наверное, потому, что эти чёртовы чёрные все тупые, да? Или всё-таки есть какие-то социальные причины?8:46
@jsunderhood вот ещё норм тема для вброса, ящетаю8:51Немного о нашем профессиональном слоне в комнате: я надеюсь, все понимают, что политика "не хайрим друг у друга" это преступление?
И правда, давайте переведем тему. @lambdadmitry
8:52@lambdadmitry @jsunderhood а в чем именно?8:58
Стараются удерживать рост зарплат. Самый простой способ получить больше денег - уйти на другую работу. @SelenIT2 @lambdadmitry
8:59Вообще про зп, большая проблема что они сильно зависят от того как хорошо человек выбивает себе зарплату на интервью.
9:01Поэтому я за четкие формулы по которым высчитывают эти зарплаты и за то чтобы все зарплаты в фирме были публичными.
9:01@jsunderhood это связано с тем, что большинство разработчиков - интроверты и им мирские радости не очень интересны )9:03
Это не повод этим пользоватся для экономии) В итоге все разузнают зп друг и друга и будет грустно. @__fro
9:03Статья про формулы для зп
open.bufferapp.com/introducing-op…
Buffer вообще дальше идут, у них все публично даже наружу, не только внутри компании.
9:05@jsunderhood никто и не говорит, что это хорошо. Просто в процессе участвуют 2 стороны и надо учитывать их особенности )9:05
Ну со стороны нанимателя там будет какой-нибудь CEO или HR, у них преимущество над интровертным программистом.@__fro
9:06@jsunderhood не знаю, мне никогда не было особо интересно, кто сколько получает. Мне достаточно средней цифры.9:07
Тебе будет приятно узнать, что твой коллега с такой же должностью и опытом получает сильно больше тебя? @__fro
9:07Может казатся что я борюсь за права программиста, но at the end начальству выгодно чтобы люди были счастливы и не уходили из компании.
9:10В долгой перспективе наябывать своих сотрудников вредно для компании. Прозрачность - один из способов не наябывать сотрудников.
9:10Причем я не говорю что начальство *хочет* наебать программистов. Начальство может просто не понимать, что оно делает чтото плохое.
9:11Я был в двух VC-backed стартапах, в обоих начальство вызывало своими действиями много фрустрации у сотрудников. Всё с лучшими побуждениями.
9:12@rusgautama я работаю у вас уже год, отлично справляюсь, профессионально росту, считаю что достоин большей зарплаты @jsunderhood @__fro9:17
Для многих это большой стресс, по разным причинам. Когда все изначально честно - все намного проще. @Seleckis @rusgautama @__fro
9:17@jsunderhood спорный тезис. есть долгоживущие конторы, которые живут на дешевых уходящих студентах. есть начальники, боящиеся подсиживания.9:18
@jsunderhood что такое «честно»? )) @rusgautama @__fro9:19
Прозрачно, по формуле которую все знают и с которой все согласно. Без сделок за спиной. @Seleckis @rusgautama @__fro
9:19@jsunderhood @mktoid в стартапах нужно давать опцион9:20
@jsunderhood и как рассчитать формулу? По количеству коммитов за единицу времени? Это уже проходили в Индии ))) @rusgautama @__fro9:20
Смотри пример в статье раньше в истории. @Seleckis @rusgautama @__fro
9:21@roman01la @jsunderhood @__fro самое крутое нанимать людей на больше денег чем ты получаешь9:23
@jsunderhood все равно тут тоже играет не всегда объективный человеческий фактор @rusgautama @__fro9:25
Конечно. Но лучше убрать его хотя бы на какую то часть, чем 100% рассчитывать на него. @Seleckis @rusgautama @__fro
9:25@jsunderhood Должно ли выражаться в зарплате культурное совпадение? То есть банальное "более приятный человек". На бизнес это же влияет.9:27
Культурное совпадение это вообще хорошая тема. Что лучше, компания похожих друзей или лучше разные люди? @toivonens
9:28Считаем что все профи и не настолько различные чтобы постоянно сраться. @toivonens
9:29@jsunderhood короче, я считаю, что зарплата должна быть достаточной, чтобы разработчик о ней не думал.9:30
@jsunderhood Все равно ситуация со временем будет меняться, тут формулы не выведешь, только индивидуальный подход.9:30
Я и не говорил что это просто. Это сложно и об этом надо думать а не давать это на откуп в hr. @__fro
9:31@jsunderhood Для стартапов это ИМХО важно. Там нужна мотивация для того чтобы все навалились и быстренько сделали.9:31
Некоторые говорят что diversity типа не даёт стартапу застрять на одних идеях. @toivonens
9:31@jsunderhood @Seleckis @__fro я работал в компании, где у всех разработчиков одного грейда плюс-минус одинаково. Это плохо и привет СССР.9:36
Почему? @rusgautama @Seleckis @__fro
9:37@jsunderhood @Seleckis @__fro она еще и была низкая, а если хочешь больше - повышай грейд, что невозможно не поработав пару лет там.9:41
Проблема тут что она была низкая а не одинаковая. @rusgautama @Seleckis @__fro
9:42@jsunderhood @rusgautama @Seleckis и таки да, если у вас будет супер-пупер формула, она будет всячески убивать креатив9:42
Ну это какой-то очень притяннутый вывод. Формула для зп убивает креативность? @__fro @rusgautama @Seleckis
9:43@jsunderhood @rusgautama @Seleckis именно, потому что все будут дро**ть на эту формулу, вместо того, чтобы создавать добавочную стоимость9:45
Ты слишком плохо думаешь о людях :) Наоборот не будут грузится что зп меньше коллеги. @__fro @rusgautama @Seleckis
9:45@jsunderhood это хорошая практика, но её внедрение даже на старте существования компании требует определённых усилий со стороны руководства9:46
@jsunderhood а перевести на такие рельсы компанию с большим количеством работников и длинной историей может оказаться непосильной задачей9:47
Да, о таком надо думать заранее. Многие основатели компаний вообще не думают о таких вещах и потом начинаются проблемы. @Sigiller
9:49@jsunderhood если сразу об этом задуматься и нанять толкового HR, который всю эту схему сможет разработать, а она чертовски непроста9:50
@suxxes @jsunderhood @__fro в России опционы напрямую запрещены ТК, а судиться в Делавере и британских юрисдикциях не каждый девелпр потянет9:53
@jsunderhood вот оценка, в этом контексте, мне видится наиболее сложной частью. потому что открыть зарплаты дело-то нехитрое9:54
@jsunderhood то есть система оценки должна быть при этом относительно простой, чтобы люди её понимали и в ней не было бы тёмных пятен9:55
@jsunderhood Потому что нет регулирующих эти понятия законов. По сути понятие опционов просто не работает в России. @mktoid @__fro9:55
@jsunderhood Ну, ОК, мы неверно выразились. Это не нелегально, а не работает и в суд с договором не пойдешь. @mktoid @__fro9:56
@jsunderhood И по большей степени все обещания опционов, даже документально подтвержденные — это вопрос доверия. @mktoid @__fro9:56
@jsunderhood @suxxes @__fro РВК и ФРИИ рассказывали, непрямую слова опционы нет, но попадает под то, как платить работникам ТК запрещает9:58
@jsunderhood Опцион — это не деньги, а обещание возможности покупки. @mktoid @__fro10:00
@jsunderhood Опционы и акции с вестингом — суть разные вещи. @mktoid @__fro10:01
@Seleckis @PaulColomiets @__fro @jsunderhood или когда оборот у компании 1,5 млрд, а зарплатный фонд 50 млн на 1К сотрудников - ненормально.10:02
Кстати про stock options, по-моему многие переоценивают их и соглашаются на слишком большое понижение зп.
10:09At the end, это лотерея и тебе просто дается возможность в будущем купить лотерейный билет. Даже не сам билет, просто возможность, Карл!
10:09А при покупке этого билета за тобой еще и налоговая придет, кстати.
10:10@jsunderhood вот мне это всегда казалось больше инструментом привязать работника к компании, чем каким-то поощрением.10:21
Да, конечно. Я про то что обладатели оных придает им слишком большую цену, неоправданно большую. @Sigiller
10:22@jsunderhood ну всем хочется верить, что выстрелит и что всё не напрасно)10:24
Мне теперь немного стыдно, что я разжег такой срач про сексизм. Это важная тема и я рад что поднял ее, но троллить стоило меньше.
10:33Поговорим про менеджеров. Я нахожу модель которая (была?) в Гитхабе и есть в Valve очень привлекательной, то есть когда менеджеров нет.
10:44Гитхаб - zachholman.com/posts/how-gith…
10:45Идея в том что если вы набрали себе команду талантливых, амбициозных и мотивированных людей, то ставить над ними менеджера контрпродуктивно.
10:46Даже цель им можно не ставить - они талантливые, амбиционзные и мотивированные, они придумают что надо сделать чтобы компании стало лучше.
10:47Кто-то говорит что программисты аутисты для которых нужен переводчик, чтобы они поняли что клиентам надо.
10:47По-моему проблема именно в том, что программисты не могут нормально общатся с клиентов или кастомером из-за менеджера.
10:48@jsunderhood цель разговора с клиентом не нормально поговорить, а продать услугу. :)10:49
Считай что продажа уже была совешенна и надо сделать клиенту хорошо. @VasyaRomashova
10:49Особенно хорошо такая модель работает в компаниях которые делают продукты, а не в консалтинге, конечно. Поэтому гитхаб и валв так хороши.
10:51@jsunderhood с другой стороны, клиент деньги отдает за конечный продукт и только тогда процесс купли-продажи считается завершенным.10:52
Ну это если продукт в коробке. Хорошие консультанты после заключения контракта стараются понять что клиенту надо. @VasyaRomashova
10:52@jsunderhood если клиенту дать прямой доступ к программеру, то программер толькл на него и будет работать, а убытки на вас лягут10:53
Билишь по часам и все ок. :) @al_yolkin
10:53@jsunderhood обячно оплата оговаривается заранее, поэтому не получится так10:54
В Финл почти всегда консалтинг по часам/дням/неделям. @al_yolkin
10:54@jsunderhood если над проектом работает больше одного человека, кто-то один должен поговорить с клиентом и объяснить остальным что делать.10:55
Или все могут поговорить с клиентом и реально понять что надо. А то будет сломанный телефон и проваленный проект :) @Sigiller
10:55Мы уходим от темы, зря я сюда конслатинг добавил. Компании с продуктами намного интереснее, тк они продают продукт а не продаются клиенту.
10:56Конслатинг, оговорка по фройду. @jsunderhood
10:56@jsunderhood по сути менеджер должен выяснить бизнес-цели клиента и превратить их в конкретные задачи для разработчиков.10:57
Мне кажется менеджер всегда либо поймет либо передаст неправильно. Ну или хотя бы шанс этого выше. @Sigiller
10:58@jsunderhood маркетинговые исследования ведутся параллельно с разработкой продуктов и каждый клиент для них - статистические данные.11:16
@jsunderhood тут Valve например не очень хороший пример компании без менеджеров, потому что они работают с конкретной аудиторией и ничего11:16
Что мешает другим компания вести исследования и знать свою клиентскую базу? @VasyaRomashova
11:17@jsunderhood @VasyaRomashova так все все знают, но не считают важным, доносить до тех, кто непосредственно занимается продуктом.11:21
Ну вот от этого же мы и can't have nice things. Опять отсутствие прозрачности. @__fro @VasyaRomashova
11:22Опять же оба стартапа развалились из-за того что до тех команды не то доносили что надо кастомерам. @__fro @VasyaRomashova
11:22@jsunderhood @__fro @VasyaRomashova "оба стартапа" - это какие?11:28
Вообще оба живые, но ИМХО потенциала не достигли. hdmessaging.com zenrobotics.com @Sigiller @__fro @VasyaRomashova
11:29ZR еще может и достигнет, HDm продан бездушной корпорации ) @Sigiller @__fro @VasyaRomashova
11:29@Sigiller @jsunderhood под целью, я имею ввиду именно “бизнес-цель”. Она должна держаться у всех в голове, а не методы достижения11:30
Вот да, каждый в компании должен понимать что и зачем они делают как компания. @__fro @Sigiller
11:31Большая дискуссия про ТЗ в ответах. Ни разу не видел ТЗ который бы не устаревал дольше чем за неделю разработки.
11:36@jsunderhood @__fro проблема подобных проектов в том, что аудитория слишком широкая, настолько, что достигает пределов всего человечества.11:37
Нет проектов для всех, это эго говорит когда продукт для всех :) @VasyaRomashova @__fro
11:38У всего должен быть target audience. @VasyaRomashova @__fro
11:38@__fro @jsunderhood это какие-то неправильные менеджеры и они делают неправильные ТЗ12:01
@__fro @jsunderhood это просто глупо, хотя бы потому что так менеджер делает больше (ненужной) работы и несёт больше ответственности12:02
Еще я очень не люблю митинги. 99% митингов имеют слишком много участников, лог в них ведется лажово и говорит в них один человек.
12:04А не работают при них все участники. Надо старатся быть асинхронным и не думать что твоя проблема такая сложная что ее не решить имейлом.
12:05Зато в больших корпорация митинги позволяют бесполезному народу чувствовать себя полезным. Весь день занят на митингах, значит нужен.
12:07@jsunderhood Ага, у нас как-то была проблема с перенасыщением митингами. Ну и что - провели митинг об оптимизации митингов :))12:08
Вот вроде dilbert-esque ситуация, но как-то скорее грустно, чем смешно, тк это реальность ) @RReverser
12:09@jsunderhood рассуждениям о корпоративных культурах можно было бы выделить отдельный день.12:15
Я и собирался, срач про сексизм был спонтанным. @VasyaRomashova
12:15@Sigiller @jsunderhood как и гуманность. В большинстве крупных компаний построена система, в которой не выгодно быть инициативным12:21
@__fro @jsunderhood ну мне кажется, в таких менеджерских проблемах больше глупости, чем какого-то злого умысла12:23
@jsunderhood мы начали с no-meetings-Wednesdays, а потом это распространилось на каждый день. часто все вопросы через чат решаются15:21
Несмотря на всю дикую активность в твиттере, неделя выдалась очень продуктивной. Надо наверно начать тоже активно вести :)
17:28Надеюсь вам я тоже поднял продуктивность, а не убил её :)
17:30@jsunderhood вечер пятницы, а ты уже больше всех наотвечал и стремишься взять ачивку «больше всего написал» =) jsunderhood.ru/stats/17:43
Рекорды @listochkin мне не побить :) @iamstarkov
17:45@iamstarkov мне пришлось замьютить на час @jsunderhood, слишком много :)18:21
@jsunderhood @iamstarkov их легко побить - я там на выходные пропал из-за конфы. Плюс энгейджмент сильнее сейчас, тк аудитория больше.18:22
Но по ретвитам у тебя больше engagement, мне больше отвечают. @listochkin @iamstarkov
18:22@jsunderhood @listochkin @iamstarkov неужели даже взорванные пуканы не помогли?)))22:05
Старею, слишком быстро остыл и стало стыдно :) @ZhivotvorevNik @listochkin @iamstarkov
22:05@jsunderhood правда, есть проблема. Программист не выдержит понтов клиента и выругаться на него, тогда клиент канет в лету с пол миллиарда₽22:05
@jsunderhood @Spellful потому же, почему программист пишет код, а менеджер нет22:14
Я считаю в консалтинге программист должен уметь работать с клиентами. В продукт компании он должен уметь их понимать. @likhter @Spellful
22:15В просто коде нет никакой ценности, он должен решать задачу. Чтобы понять задачу надо уметь общаться с люди. @likhter @Spellful
22:16Всё-таки @jsunderhood "прекрасен": как только человек до туда добирается, так становится единственным-человеком-с-правильным-мнением :).22:31
# Суббота 69 твитов
Суббота, поговорим про опен сорс. Делает ли ваша компания опен сорс? Какое отношение начальства? Кидайте ссылки на oss вашей фирмы.
10:25Друг работал в компании где полагалось во внерабочее время контрибьютить в их опен сорс проекты.
10:27@jsunderhood На всех работах было отрицательное. Но использование по полной.10:27
@jsunderhood Именно обязывали? А почему не платили тогда?10:34
Не обязывали, но типа через peer pressure. Все контрибьютят, а ты нет. Ты разве не любишь опен сорс? @gxoptg_
10:35@jsunderhood было три разных опыта:10:54
Последнее интересно, это как и зачем? @lunat1que
10:54@jsunderhood стараемся начать выкладывать либы на GH аккаунт компании. Но наверное не столько ради опен сорса, а как часть брендинга что ли.11:01
@jsunderhood мы работали на nokia, но не имели права об этом заявлять публично. И часто работали с новыми дистрибами qt.11:17
@jsunderhood qt поддерживается Nokia, нас мотивировали вносить фиксы, но в приватный репозиторий. От туда они переносили это в открытую репу11:17
@jsunderhood @gxoptg_ неужели просто нельзя это по потребности делать? Ну типа пофиксили баг, сделали пул-реквест, чтобы патч не мейнтейнить11:18
Бывало ли такое что опен сорсили что нибудь из клиентского проекта при консалтинге? Как к этому относились клиенты?
11:41@jsunderhood в Яндексе хорошо поощралось. на текущей работе до этого дойдут ещё не скоро – пока просто нейтральное неведение.12:17
@jsunderhood но судя по тенденциям, или запретят, или очень всё испортят. во многом тут какие-то варварские 90-е.12:17
Тут как минимум одна компания доплачивает за работу над опен сорсом в свободное время. futurice.com/blog/futurice-…
12:19@jsunderhood а как при консалтинге можно что-то коммитить? Я, наверное, не правильно понимаю слово "консалтинг".12:19
Пишешь проект для клиента, появляется какая-то полезная либа. Просишь клиента окей ли это опен сорснуть. @beshkenadze
12:20@jsunderhood а кто-нибудь зарабатывает на своём опен сорсе? если да, то как? у меня был единичный опыт на ощутимую сумму, просто интересно.12:25
Тут недавно @dan_abramov собрал деньги чтобы продолжит делать open source. Но он звезда комьюнити, сложно с нуля так же. @deepsweet
12:26@jsunderhood консалтинг – консультирование, а ты пишешь про контрактную работу разрабом или атусорс.12:26
На западе консалтингом любой аутсорс/контактную работу называют. @beshkenadze
12:27@deepsweet @jsunderhood donate за тему для WordPress перевалил за 1k, это за год примерно, так что если всерьёз взяться - думаю реально12:46
@jsunderhood @deepsweet Ага, вот: patreon.com/reactdx. Но конечно нужен community momentum.12:50
Кстати до @dan_abramov мое представление о русскоязычном js комьюнити основывалось на редком чтении хабры и я долго думал что он из США.
12:53Тк я думал что в русском комьюнити из ценного только серьёзные бородатые дядьки которые пилят БЭМ.
12:55Потом @dan_abramov провел @jsunderhood, потом @andreypopp, потом @deepsweet и все стало казаться намного менее грустным.
12:56Так что спасибо @jsunderhood за развеянье мифов о js в России.
12:57@jsunderhood @redcat_nsk и еще есть конторы, которые премируют сотрудников, если те преподают айтишные дисциплины в университетах13:00
Это частая практика? У нас в универах так просто не берут преподавать. @lazeez @redcat_nsk
13:00@jsunderhood @redcat_nsk за все российские вузы не скажу, в Новосибирске пойти преподавать может практически каждый желающий13:05
@likhter но в этом же и есть самый кайф, разве нет? @jsunderhood14:18
Поговорим о плюшках которые вам даёт работодатель помимо зарплаты и акций/опций. Есть ли у вас крутые плюшки, а какие вы бы хотели?
15:26В Финляндии с этом есть некие проблемы, налоговая старается считать это доходом, все компании делают только то что налоговая ещё позволяет.
15:28В это входит обычно оплата телефона и домашнего интернета, медицинская страховка (без стоматологии). Бесплатные обеды уже нельзя.
15:29Правда покупать еду в офис можно, но так мало кто делает. Кстати про еду/колу/пиво в офисе, вы за или против?
15:30Не является ли кейтеринг в офис тайным заговором чтобы все подольше сидели в офисе?
15:30@jsunderhood для меня самое важное — возможность работать вне офиса, то есть постоянно путешествовать15:31
Надо будет завтра про удаленную работу поговорить. @andrey_sitnik
15:32@jsunderhood +1 за пиво и еду, приближенную к здоровой.15:34
Не плохо ли это, что люди после работы остаются ещё и пить на работе? @mr_mig_by
15:35Компании то точно хорошо :) Хорошо ли для человека не иметь жизни вне работы? Мне интересно это обсудить. @RReverser @mr_mig_by
15:39@jsunderhood самая крутая плюшка помимо зп это свобода решений и право на ошибку.15:40
@jsunderhood хотелось бы чтобы хотя бы чай с печеньками был за счёт фирмы :(15:40
А бывает что нет? @TheSunwave
15:40@jsunderhood а вообще, чем больше времени люди проводят в казуальном общении, тем лучше.15:40
Для компании - лучше, однозначно. Её уверен про самих людей. @mr_mig_by
15:41@Borovikov @jsunderhood +1, добавлю еще возможность экспериментировать и ad-hoc команды15:41
Про это вчера обсуждали :) @mr_mig_by @Borovikov
15:42@jsunderhood не хочешь, не оставайся? Тебя ж не принуждают уничтожать халявное пиво :)15:42
Ну вот я не останусь и получиться что я не в коллективе. Получается выдавливание непьющих или родителей. @mr_mig_by
15:43@jsunderhood @mr_mig_by Мне везет с коллегами видимо - они важная часть моей жизни и вне работы тоже.15:44
@jsunderhood чем лучше ты знаешь человека, тем меньше ты будешь с ним ссорится. Какие тут минусы для человека?15:45
@mr_mig_by @jsunderhood казуальное общение имеет тенденцию затягиваться заметно за пределы рабочего дня (а хочется дома играть с детьми)15:57
@mr_mig_by @jsunderhood группка, которая не пьёт пиво по какой-либо причинам воспринимается немного изгоями и в остальное время15:57
@mktoid @jsunderhood такое нужно лечить в зародыше. Готового рецепта не дам.15:58
Люди тут говорят что у них чай кофе и печенья не оплачиваются компанией.
16:00@jsunderhood Я абсолютно за. Мне важна забота обо мне, как будто мама мне холодильник набила и не надо беспокоиться, я так лучше думаю.16:01
Тебя это не мотивирует остаться на работе дольше, дома же самой надо холодильник набить? @toivonens
16:01@jsunderhood Будет выбор - выберу офис с едой, даже если в другом месте предложат в 5 раз перекрыть её стоимость :-)16:01
@jsunderhood Дома всегда лучше, туда все равно хочется. Но на работе приятно забыть о быте. Даже о быте похода в магазин за яблоком.16:04
@jsunderhood В России бесплатные обеды тоже доход. Но поскольку у всех один % налога, это не проблема. Вычитают из з/п 13% стоимости еды16:14
С плоским налогом все проще :) @toivonens
16:14@jsunderhood когда в офисе начинают нсть и пить уже никто не работает, так что сомневаюсь16:54
@jsunderhood муз. комната осталась в симфере — по ней скучаю, возможность вечером поиграть в офисе это бесценно. Хоть аппарат и свой был.16:54
@jsunderhood 4х дневную рабочую неделю со свободным графиком и не более 8 рабочих часов в день.17:16
@jsunderhood а в чем проблема сразу сделать опенсорсную либу, и заюзать в проекте клиента?19:06
Ни в чем. Просто часто ценные вещи в процессе работы появляются. @deepwalker
19:07# Воскресенье 99 твитов
Наш последний день вместе и похоже я таки догоню @listochkin по общему количеству твиттов. Сегодня я хочу поговорить про удаленную работу.
10:09Я очень за со всех точек зрения. Работодатель получает более мотивированных сотрудников и recruitment pool размером с мир, вместо города.
10:10Работник получает возможность работать там где ему нравится, больше времени проводить с семьей и не парится по поводу похода в офис.
10:11При этом это все требует правильной огранизации работы. Я видел как communication ломался, когда команды были не рядом.
10:12Я видел как удаленные люди чувствовали себя не частью команды. Как до них менее быстро доносилась информация.
10:13Как вы решаете эти проблемы с удаленными людьми? Что за инструменты можно использовать для этого?
10:13Основатель basecamp написали хорошую книгу про удаленку. 37signals.com/remote/
10:14@jsunderhood тема кстати, почти напрямую пересекается с open-source. Он как раз всецело про культуру удаленной работы10:14
@jsunderhood а бывает наоборот, что слишком много общения и людей вокруг - мешает10:14
@jsunderhood это когда культура не сложилась10:14
@jsunderhood нужно как минимум заставить всех решать все рабочие моменты и вести дискуссии исключительно через онлайн средства коммуникации10:17
@jsunderhood даже если ты сидишь в офисе рядом с тем, у кого есть ответ10:17
Про communication - в принципе я видел как он не работал даже когда команд(а/ы) были рядом, так что дело скорее в людях а не расстоянии.
10:26@jsunderhood есть 2 варианта: или набирать людей-носителей такой культуры или развивать ее.10:34
@jsunderhood После того, как появится эта культура, новым людям уже будет некуда деваться, придется ее принимать.10:34
Вот вы основатель компании. Как развивать в компании ту культуру которую вы хотите? Например, культура удаленной работы.
10:43@jsunderhood я читал, как-то все очевидно. Я ожидал что-то в духе кулсторек, а там: если работаешь удалённо, то не надо куда-то ехать.10:44
Да, она скорее старается убедить тех кто еще не убежден, чем показать решения. Как книги о том как бросить курить. @7rulnik
10:45@jsunderhood инструменты не имеют большого значения. Шарить информацию: и техническуую и продуктовую задача руководителя группы/тимлида10:45
@jsunderhood Показывать людям приёмы, при которых они могут сделать это рабочим?10:50
@jsunderhood сложный вопрос, пока компания маленькая это работает, потом этим сложно управлять эффективно, а потом наоборот есть ресурсы..10:50
@jsunderhood в яндексе есть соц сеть для этого, сильно помогала распространению информации и заодно лучшее место для срача ;)10:51
Как именно решали чем надо делиться а чем нет? @yuritkachenko
10:51Кстати опять мы упираемся в прозрачность. ИМХО в прозрачной компании, где вся информация шерится легче сделать удаленку. @yuritkachenko
10:52@jsunderhood еще если компания новая, то легко это заложить как фундамент, а если старая, где "деды воевали" ...10:53
Я наверно больно задрачиваюсь на прозрачность, но мне кажется многие проблемы уходят если использовать ее по полной.
10:55Плохие компании не доверяют своим сотрудникам и думают что сотрудники это шпионы, которые все выдадут врагу. @jsunderhood
10:56@jsunderhood ... Где лучшие времена и решения придуманы в кухне за пивом, то такую компанию тяжело и даже вредно менять10:56
@jsunderhood это может работать если изначально так было. в компании со сложной иерархией менеджеров и руководителей обычно всё плохо.10:57
Да! И по-моему многие бы хотели чтобы работало так, но поздно. Слишком мало основателей думает о том что за культуру они хотят. @deepsweet
10:58Это все время afterthought. По-моему это должно быть одно из первых о чем ты думаешь, когда основываешь компанию. @deepsweet
10:59@jsunderhood я вот спустя год до сих пор толком не понимаю кто мой руководитель, а кто его руководитель, а кто менеджер проекта…10:59
Чувствую в голосе нотки фруструции, похоже тебе работу пора менять. @deepsweet
11:00@jsunderhood @deepsweet многие основатели пропустили некоторые ступени на своем пути.11:07
Ну мы прям совсем в философию уходим. :) @__fro @deepsweet
11:07@jsunderhood у нас 3\4 удалённо, а 1\4 в офисе. Топ-менеджмент в офисе.11:10
И как работает? Что по-твоему самое важное, что помогает этому работать? @beshkenadze
11:11@__fro @jsunderhood @deepsweet ну вот fb же считается идеально начинался нет? А теперь это хрен пойми что.11:17
В чем-то у них окей, хотя бы новые интересные технологии делают постоянно. @yuritkachenko @__fro @deepsweet
11:19@yuritkachenko @__fro @jsunderhood я собеседовался в fb и не прошёл на определённом этапе. мнение сложилось скажем так не особо.11:19
@yuritkachenko @__fro @jsunderhood по крайней мере от собеседований осталось впечатление хаотичности и несвязанности людей и целых отделов.11:19
@yuritkachenko @__fro @jsunderhood может оно и начиналось как гиковый стартап, но со стороны показалось, что сейчас это болотистая махина.11:19
@jsunderhood пока не закрылись, контроль для удалённых работников больший нужен.11:20
Пока не закрылись? И как именно этот контроль происходит? @beshkenadze
11:20@jsunderhood @deepsweet можно узнать, сколько компаний вы основали и как именно действовали? Насколько они были успешными?11:20
Я основал одну и был в двух стартапах, в одном из них был в первых 10 сотрудниках. @svenyurgensson @deepsweet
11:21Я видел как стартапы лажали и хочу не повторить их ошибок. Отстутствие прозрачности оба раза было главной лажей. @svenyurgensson @deepsweet
11:22@jsunderhood @yuritkachenko @__fro в этом плане да, спорить сложно :) просто у меня было идеализированное представление о fb, google, etc.11:23
@jsunderhood скайп\слака, jira, почта. Митинги минимум раз в неделю на каждый проект. Контроль выполнения задач. Кнуты и пряники :)11:25
@jsunderhood отсутствие прозрачности - возможно плохо со стороны работника, однако хорошо со стороны владельца бизнеса, имеет право11:28
Если это ведет к тому что сотрудники теряют всю мотивацию то это не выгодно владельцу. @svenyurgensson
11:29Так же может вести к плохому пониманию целей компании у сотрудников и в итоге выполнению не той работы. @svenyurgensson
11:29@jsunderhood что значит прозрачность?11:37
Информация о жизни компании всегда и полно доступна всем сотрудникам. @beshkenadze
11:38@jsunderhood у нас несколько работников уходило с обманом, некоторые даже имущество прихватывали.11:38
Страсти какие. Ну с таким полиция должна разбиратся. Не могу представить ворующего программиста в Финл. @beshkenadze
11:42Нет, ты правильно делаешь, что топишь за прозрачность. Прозрачность, инспекция, адаптация — столпы Скрама, например, @jsunderhood11:42
Это ты меня прям изыскано опустил :)))) @ilnurkhalilov
11:42Это я к тому что Скрам для меня скорее ругательное слово, я ни разу не видел хороший Скрам. Хороший Скрам это как единорог. @ilnurkhalilov
11:43Но я не спорю что да, многие вещи которые я говорю можно назвать agile. Просто я очень хотел НЕ говорить это слово :) @ilnurkhalilov
11:45@jsunderhood У нас Asana (полная лажа, но тяжело пока поменять), Skype и Slack. Skype для митингов, Slack для ежедневного общения.11:45
Хороший Скрам — это работающий Скрам. Если ты видел плохие примеры, это скорее говорит о реализации, а не о самом фреймворке, @jsunderhood11:45
Вот многие мне так говорили, но я не поверю пока не попаду в работащий Скрам. @ilnurkhalilov
11:46А зря! Есть Манифест Аджайла, есть Скрамгайд — в них написаны основы @jsunderhood11:46
@jsunderhood @ilnurkhalilov +100500. Чертовы “эффективные менеджеры” давно приватизировали и извратили методологию )11:47
@jsunderhood @ilnurkhalilov удивительно, как непрофессионалы, подкупающие бизнес своей лояльностью повсюду гадят (11:47
Я не спорю. Просто за годы была так извращена сама идея agile, что сейчас это скорее способ биллить за час, чем методология. @ilnurkhalilov
11:48Никто вас не будет заставлять строить Скрам, если у вас всё работает. Мне же хочется предсказуемости, @__fro @jsunderhood11:52
@jsunderhood в работе удаленщика большую роль играет разница в часовых поясах. Если разница более 4х часов очень сложно взаимодействовать.11:52
Когда у нас был HQ в США, а девы в Финляндии, была большая проблема когда последния инфа от клиента из Филлипин приходила долго. @esergeev
11:53О, сколько раз мне говорили, что у них Скрам, но по факту оказывалось, что это обычный водопад с итерациями! @__fro @jsunderhood11:56
У нас это называют жопа Скрама aka "scrum, but". @ilnurkhalilov @__fro
11:56@jsunderhood в тяжелых случаях спасают только командировки. А так, только планирование и грамотное разделение обязанностей.11:56
Разделение обязанностей - как это делать? Организовывать по командам в часовых поясах? Или достаточно чтобы все знали что дальше? @esergeev
11:57У нас тестиривщица была в Канаде. Днём мы делали фичи, ночью она их тестировала. @jsunderhood @esergeev12:00
Вот веселье наверно было с ответами "can not reproduce". @ilnurkhalilov @esergeev
12:01Таких отписок мы себе не позволяли, а QA подробно документировала баги — у нас был работающий Скрам :) @jsunderhood @esergeev12:05
@jsunderhood это был менеджер, исчез на 2 недели, а потом оказался в игровой компании.12:08
В полицию сдали или так все отдал? @beshkenadze
12:09Но всё равно было окно в пару часов, когда мы синхронизировались. Без этого совсем сложно @jsunderhood @esergeev12:09
Вот и мне кажется что какой-нибудь overlap должен быть. Даже в oss, нам отсюда сложно работать с ФБ graphql девами.@ilnurkhalilov @esergeev
12:10Да. Был ещё опыт с фронтендером в Беркли. Он ночью подключался к нашим утренним стендапам, @jsunderhood @esergeev12:19
И с 12 принципами гибкой разработки: agilemanifesto.org/principles.html. А в каком виде: Скрама, Лина, Канбана — вопрос менее важный, @jsunderhood12:49
Раз уж мы начали про agile - идеи в Канбане мне нравятся больше чем идеи в Скраме. По-моему короткие итерации это стрессовово и тяжело.
12:55К тому же они заставляют держать скоуп маленьким, что не всегда возможно. @jsunderhood
12:55Ограничением же паралеллизма канбан добивается таких хороших вещей, как более быстрые ревью/тесты, быстрый деплой и тд. @jsunderhood
12:56Тк свой ревью/деплой не получишь пока не поможешь соседу. @jsunderhood
12:57@jsunderhood @deepsweet мы вот это используем: sococo.ru уже полтора года.13:07
@jsunderhood over-communication is the key! использовать таск менеджер по максимуму, меньше пользоваться мэилом, меньше митингов.13:32
@ilnurkhalilov @jsunderhood внедрили скрам, отказались от него и за год, фича за фичой вернули его обратно. Поняли необходимость деталей15:51
Вот и подошла к концу наша с вами неделя. Сделаю небольшой рекап.
18:39В понедельник мы обсуждали GraphQL и как он заменит REST api. Мы также обсудили попутные технологии типа Relay и React.
18:40Во вторник я рассказал про мою нелюбовь к ангулару, в среду мы говорили про Финляндию и Webpack.
18:42В четверг про grunt, gulp, npm scripts. В пятницу у нас был разговор про сексизм и про ведение бизнеса.
18:43В субботу мы поговорили про бонусы в компании и менеджмент и наконец сегодня про удаленную работу и немного agile.
18:44С вами был @freiksenet. Спасибо за то что с вами было интересно спорить.
18:45# Ссылки
github.com
- https://github.com/tc39/ecma262
- https://github.com/graphql/graphql-js
- https://github.com/RisingStack/graffiti
- https://github.com/nordnet/nordnet-next-api/blob/master/.eslintrc#L2
- https://github.com/feross/standard
- https://github.com/sindresorhus/xo
- https://github.com/airbnb/javascript
- https://github.com/es-analysis
- https://github.com/deepsweet/dba
- https://github.com/codemix/babel-plugin-typecheck
- https://github.com/mistakster/grunt-svg2string
- https://github.com/webpack/url-loader
- https://github.com/christianalfoni/formsy-react
- https://github.com/caspervonb/amok
- https://github.com/node-inspector/node-inspector
- https://github.com/cognitect/transit-format
- https://github.com/cognitect/transit-js
gist.github.com
- https://gist.github.com/freiksenet/f96e02ddee7a352448d3
- https://gist.github.com/freiksenet/4646c7216167fd139d5d
- https://gist.github.com/freiksenet/077eb3c41eeac7ba5fa0/revisions
- https://gist.github.com/freiksenet/d461fe8928c8ad33db89
- https://gist.github.com/freiksenet/773747a2812c9b66507b
- https://gist.github.com/playpauseandstop/55c060e8a343a9458391
other
- https://mobile.twitter.com/ryanflorence/status/627154904302288897
- https://mobile.twitter.com/wycats/status/627719336426274816
- http://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html
- http://facebook.github.io/react/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html
- https://facebook.github.io/react/tips/dangerously-set-inner-html.html
- https://www.reindex.io/blog/how-facebooks-graphql-will-change-backend-development/
- https://www.reindex.io/blog/building-a-graphql-server-with-node-js-and-sql/
- http://www.zenrobotics.com/
- https://instagram.com/p/y413-exPyZ/
- https://speakerdeck.com/laneyk/mutations-in-relay
- http://d3js.org/
- http://microservices.io/patterns/apigateway.html
- http://www.reddit.com/r/reactjs/comments/3flgnu/building_a_graphql_server_with_nodejs_and_sql/ctqudkn
- http://img.ctrlv.in/img/15/08/04/55c06bb1b3815.png
- http://eslint.org/docs/rules/complexity
- https://www.youtube.com/watch?feature=player_embedded&v=z5WkDQVeYU4
- http://i.imgur.com/eBBAUct.jpg
- http://bit.ly/1DpROQl
- https://avatars1.githubusercontent.com/u/50130?v=3&s=460
- http://mgoblog.com/sites/mgoblog.com/files/ncaa-dogs.gif
- http://m.geektimes.ru/post/259762/
- https://www.facebook.com/photo.php?fbid=10200899573969802&set=a.1535737771572.47298.1778684198&type=1&permPage=1
- http://ru.confcodeofconduct.com/
- http://www.imfdb.org/images/thumb/b/bc/T2_1501.jpg/600px-T2_1501.jpg
- https://open.bufferapp.com/introducing-open-salaries-at-buffer-including-our-transparent-formula-and-all-individual-salaries/
- http://zachholman.com/posts/how-github-works/
- http://www.valvesoftware.com/company/Valve_Handbook_LowRes.pdf
- http://hdmessaging.com/
- http://zenrobotics.com/
- https://jsunderhood.ru/stats/
- http://futurice.com/blog/futurice-open-source-program-the-spice-program
- https://www.patreon.com/reactdx
- http://37signals.com/remote/
- http://agilemanifesto.org/principles.html