freiksenet

3 августа 2015, Helsinki, Finland

# Понедельник 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….

6:10
@codinghorror @jeffkibuule @tomdale safari is still the king of real-world perf.

Второй про то достаточно ли V8 оптимизирует "реальный код", а не только микробенчмарки. mobile.twitter.com/wycats/status/…

6:13
@jsunderhood вы начали стартап после выхода спеки по графклу или после презентации идеи графкла?
6:13
Ну хз, 2 основных проекта на реакте в ff что-то тормозят сильно :( может у меня что-то с компьютерами?!) twitter.com/jsunderhood/st…
6:14
@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/ecma262
6:48
aahhh so much better pic.twitter.com/bA4SdwmOoB

Милый трюк с console.log и function bind в бабеле. twitter.com/freiksenet/sta…

6:50
@jsunderhood Расскажи про скорость Реакта. Рендеринг на сервере, на клиенте, инициализация js и тп. @dan_abramov @andreypopp @deepsweet
7: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:40

GraphQL позволяет на сервере описать все данные, которые доступны и их связи. Клиентское приложение может одним запросом взять что ему надо.

7:41

Поменялись требования или компонент? Просто добавь или удали поле в запросе.

7:41

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

7:42

Несколько ссылок - introduction от FB.
facebook.github.io/react/blog/201…

7:43

Программный пост от нас.
reindex.io/blog/how-faceb…

7:44

Референс имплементация
github.com/graphql/graphq…

7:44

Вот только что запостил гайд, как писать простой сервер на надо юзая reference implementation.
reindex.io/blog/building-…

7:48

@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

10:08
@jsunderhood работал на заводе, которые авиадвижки делает, в отделе не разрушаемого контроля :)
10:10
@jsunderhood удел clojure — роботы, сортирующие мусор. :)
10:11
@jsunderhood там проверяются диски, в которые лопатки вставляются. Каждый около 1kk$ стоит. А проверить на дефекты их архи важно :)
10:12
@jsunderhood писал софт для TV-приставок, правда всё на тех же веб-технологиях: в приставку был встроен webkit.
10:17
@jsunderhood чо бы все понимали что это такое - вот фотография :)
instagram.com/p/y413-exPyZ/
10:19
@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:16

Relay обещает делать кеш, pagination (судя по всему больная проблема в ФБ), и оптимистичные модификации на клиенте.

12:17

Если про первые две вещи все в целом ясно, то про клиентские мутации известно только то, что у них будет клиентский id :)

12:18

Кеш будет сделан через уникальный id для каждого обьетка возвращаемого relay-compatible сервером. id похоже будет содержать в себе тип.

12:19

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

12:20

Вероятно в курсоре будет хранится тип и текущая сортировка (или/и фильтр).

12:21
@jsunderhood speakerdeck.com/laneyk/mutatio… – вот здесь как обычно много слов и мало примеров кода, но в целом концепцию уловить можно.
12:21

Самый подробный набор примеров про Relay
facebook.github.io/react/blog/201…

12:22

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

12:25

Достаточно денормализовать данные полученные с сервера и обновить наше представление по id для каждого отдельного элемента из этих данных.

12:26

Что пока не понятно - это как именно происходит оптимистичное обновление до этого.

12:26

Спасибо @deepsweet, забыл совсем про эту презентацию. Немного больше всего известно про мутации, чем я сказал сначала)

12:27

tl/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

Улучшаем мир, one company at a time. @Barlog_M

13:43
@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:01

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

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.
Ты ведь не сравниваешь chrome и ie6?
7:22

Насколько народ юзает 2.0? Мне кажется legacy не стремятся переводить на 2.0, чую как с питоном 3 и перл 6 будет :) @beshkenadze

7:23
@beshkenadze альфа-статус ничего не значит? не думаю, что 2-й ангуляр кто-то использует в продакшене @jsunderhood
7: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:10

Trailing comma, кстати, чтобы диффы были красивые. :)

8:11
@jsunderhood ставить точку с запятой после return или не ставить
8:15

Точку с запятой ставить всегда :) @naorunaoru

8:15
@jsunderhood очевидно, что spaces vs tabs
8:18

Я думал только go-любы юзают табы в современном мире @iamstarkov

8:18
@ilavriv @jsunderhood я вот когда-то продавливал, что не надо — типа, и так понятно. но редко встречаю любителей подобной ерунды
8:18

Всегда бесило что ; опциональна, нелюблю такой код. Всегда надо думать нужна она или нет. Легче всегда ставить. @naorunaoru @ilavriv

8:19
@jsunderhood @naorunaoru *brofist*
Что думаешь насчёт Standard style? (Помимо того, что там ; нет) github.com/feross/standard
8:19

Что он нифига не 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/xo
8: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

Мы вместе с тестами проверяем стиль и соответственно на CI @11bit

10:48

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/1DpROQl
12:16
@neonick @jsunderhood Вкратце, клеим всё в виде строк в svg-icons.js, а на странице создаём элемент и в нужном месте вставляем в DOM
12: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 youtube
16: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 не хочется разводить политосрач, но почему они тогда уезжают? :D
5:58

По тем же причинам что и все остальные - работа, семья или учеба) Почему-то эмиграция некоторых больно бьет по голове. @7rulnik

5:59
@jsunderhood как местные относятся к it-эмигрантам?
6:08

Нейтрально. Я за 12 лет ни разу не был подвержен дискриминации :) @azbykov

6:10
@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 «достойно» включает путешествия/накопления/крупные покупки? @smashercosmo
7:26

Зависит от того насколько достойно вести жизнь в остальное время) Мне сложно судить, я буржуй и не умею копить) @mistadikay @smashercosmo

7:27
@verylazydreamer live reload / hot reload. Hot-reload - это замена компонентов на странице без ее перезагрузки. @jsunderhood @alex_ivantsov
7:50

Hot reload меня прям возвращает во времена когда я писал Common Lisp. @listochkin @verylazydreamer @alex_ivantsov

7:51
От 3000 евро до налога уже можно жить. На семью с ребенком нужно от 4100e - впрочем, все индивидуально очень @smashercosmo @jsunderhood
7: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…

10:28

Всё большое можно перенести в отдельные скрипты, либо баш либо просто 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 Мне нравился Пол Айриш, особенно то что он немного похож на хирурга из 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 @playpausenstop
14:04

Какая-то лишняя работа получается. Мне все равно переписать после этого. @SilentImp @iamstarkov @alexeyraspopov @playpausenstop

14:05
@jsunderhood Ну вот я например не умею верстать. Чтобы сделать продукт, мне нужен верстальщик в помощь.
14:06

Вау. Я удивлён :) Я всегда это делал сам и не ожидал что не все фронтендеры это делают. @toivonens

14:07
@jsunderhood Сейчас я не вижу смысла доучиваться. Сверстать за меня может любой коллега, я лучше сделаю что-то, что другие не могут/не хотят
14:11
@jsunderhood а используешь ли в работе каким-нибудь Livereoad'ом?
14:21

Webpack + React hot loader @WarEnek

14:22
@jsunderhood @iamstarkov @alexeyraspopov На последних двух работах были версталы и js раздельно. Ваше "матерно" очень некрасиво выглядит.
15:02
@jsunderhood об актуальности разделения вёрстки и логики говорит активность в аккаунте @cssunderhood
15: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:32

webpack решает эту проблему убирая это различие между 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:39

Oстальные плюшки 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

Это больная тема и священная корова? @deepsweet @voischev

7:09
@jsunderhood оооо ща набегут боты на ключевые слова @voischev
7: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

Он другие assets кроме js умеет? Не могу найти с первого просмотра. @11bit

8:03
А потом удивляются, откуда у них reflow ползет
twitter.com/jsunderhood/st…
8:04

Это смотря как сделать. @from_anywhere

8:04
@toivonens @jsunderhood а как же github.com/node-inspector… и аналоги ? Я им пользовался ровно один раз, но он мне здорово помог
8:04
@jsunderhood да, умеет цсс, шрифты и тд. Если что то не хватает, можно плагинчик дописать
8:06
@gxoptg_ @toivonens @jsunderhood Вот только адски глючит, если дебажить код, пропущенный через babel/register, в отличие от node-inspector.
8:18
С емакса на атом? Но зачем? twitter.com/jsunderhood/st…
9:15

Захотелось перейти, надоело чинить емакс постоянно. Еще линтер очень удобный в атоме. @rainrb

9:16
@jsunderhood вот уж загадка, Atom как-то вообще поделие непонятное. Тормозит адово, каких-то иконок-спецэффектов навертели, лучше саблайм уж
9:23

Зато допиливается через js и css за секунду. @rainrb

9:23
@jsunderhood толку, если он на проекте среднего размера загибается
9:24

Да ладно, у меня норм. У меня правда куча всего убрано, типа табов и treeview. @rainrb

9:25

Емакс кстати тоже не летает, если не считать вылетов в систему. @rainrb

9:27
@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:27

JSON все-таки убогий формат, жаль что мы так широко его используем.

11:39

Я скорее что хотелось бы формат со схемой, который бы стал массовым. @toivonens

11:41

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

11:45

Появился у тебя datetime в json, сразу у тебя кастамный код на клиенте и на сервере чтобы правильно его (де)сериализовать.

11:46
@jsunderhood альтернативы?
11:49

Не знаю, менять профессию :) Слишком наш js мир завязан на json чтобы что-то нормально поменять. @dpolyakov

11:49

Вот кстати да, 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
@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 @backendsecret
6:06
@jsunderhood @dcromster @backendsecret Яков Файн утверждал что бэк может каждый, а красивый фронт в эру балованых юзеров - нет)
6:10

Вообще я такого не замечал. Хотя бы тут знаю примерно поровну фронт и бэк. @toivonens @dcromster @backendsecret

6:11
@jsunderhood некоторые компании думают, что место женщины — под столом pic.twitter.com/ObxspcSeYb
6:47

"В индустрии нет сексизма! Женщины сами уходят потому что им неитересно!" @skygrach

6: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 @skygrach
7:56

Это не оправдание. Не вижу массового осуждения, наоборот как будто "хорошая шутка". @ilnurkhalilov @toivonens @tishkova @skygrach

7:57
@jsunderhood @ilnurkhalilov @toivonens @tishkova @skygrach между эпатажем и обычным мудачеством очень тонкая грань и они её не чуют
7:59
@ilnurkhalilov @jsunderhood @tishkova @skygrach Так о том и речь: они пошлют. А хотелось бы, чтобы их все послали.
7:59
Ну достаточно публично отказаться от их продуктов. Я никогда их сервисом не пользовался. @toivonens @jsunderhood @tishkova @skygrach
8:02

Ты молодец, а мне в ответы шлют что проблемы нет. @ilnurkhalilov @toivonens @tishkova @skygrach

8:02
Какой же занудный на этой неделе @jsunderhood. Прямо на зубах скрипит.
8:04
@jsunderhood @backendsecret классно шутка зацепила :) Был как-то на перловой конфе - 2 девушки. Был на фронтовой: ~40%.
8:06

Тут вопрос в чем причина - в том что девушки не любят бэканд или конференции полные бэкандеров :) @dcromster @backendsecret

8:07
@verkholantsev а по-моему один из лучших so far @jsunderhood
8:07
@mistadikay @jsunderhood Эта отвратительная тема гендерной дифференциации разработчиков, этот флейм не по делу — фу.
8:09

Я говорю о том что мне интересно. Технические топики были всю неделю, пора поговорить о не-технической части. @verkholantsev @mistadikay

8:10
@mistadikay @jsunderhood Потому что в профессии важны профессиональные качества, а не гендерные.
8:12

А кто тут говорит обратное? Проблема именно в том что наличия яиц в индустрии бывает важнее проф качеств. @verkholantsev @mistadikay

8:12
@jsunderhood гендерную политику компании определяет руководитель, а не разработчики, тут индустрия ни при чем @verkholantsev @mistadikay
8:15

Разработчики могут голосовать ногами. Мы таки не на заводах работаем чтобы выбора не было. @Seleckis @verkholantsev @mistadikay

8:16

Я бы не пошел в компанию с такими руководителями. Если человек сексист то он 90% и в остальном говно. @Seleckis @verkholantsev @mistadikay

8:17
@jsunderhood где вы видели, чтобы люди уходили с работы, только потому, что рядом работает человек другого пола? @verkholantsev @mistadikay
8:17

Я имею ввиду обратную ситуацию. Не идит работать в @aviasales и подобные гадюшники. @Seleckis @verkholantsev @mistadikay

8:18
@backendsecret а также на днях случилось очень крутое, «Правила поведения на конференциях» были переведёны на русский ru.confcodeofconduct.com
8:19
@jsunderhood насчет рекламы в @aviasales думаю, что здесь стоит применить бритву Хенлона @verkholantsev @mistadikay
8:20

Злого умысла нет, а damage is done. @Seleckis @aviasales @verkholantsev @mistadikay

8:21

В пятницу я таки порвал пуканы. Даже наезды на Яндекс и БЭМ не вызвали такой реакции. Надо к вечеру еще за геев выступить, для закрепления.

8:23

Чтобы люди поумнели? @Seleckis @aviasales

8:24
@jsunderhood ДАЖЕ, Карл!
8:24
@jsunderhood поверьте русскому человеку — у нас в крови не признавать ошибки, упереться рогом и доказывать свою правоту @aviasales
8: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 вот ещё норм тема для вброса, ящетаю twitter.com/lambdadmitry/s…
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…

9:04

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 @__fro
9:17

Для многих это большой стресс, по разным причинам. Когда все изначально честно - все намного проще. @Seleckis @rusgautama @__fro

9:17
@jsunderhood спорный тезис. есть долгоживущие конторы, которые живут на дешевых уходящих студентах. есть начальники, боящиеся подсиживания.
9:18

Наверно всё это скорее о стартапах, чем о любой компании. @mktoid

9:18
@jsunderhood что такое «честно»? )) @rusgautama @__fro
9:19

Прозрачно, по формуле которую все знают и с которой все согласно. Без сделок за спиной. @Seleckis @rusgautama @__fro

9:19
@jsunderhood @mktoid в стартапах нужно давать опцион
9:20

Вот меня (и коллег) дважды с ним практически наебали. Отлично мотивирует. @__fro @mktoid

9:20
@jsunderhood и как рассчитать формулу? По количеству коммитов за единицу времени? Это уже проходили в Индии ))) @rusgautama @__fro
9:20

Смотри пример в статье раньше в истории. @Seleckis @rusgautama @__fro

9:21

То есть с опционами такая же проблема как с зп. Должно быть честно и прозрачно. @__fro @mktoid

9:22
@roman01la @jsunderhood @__fro самое крутое нанимать людей на больше денег чем ты получаешь
9:23
@jsunderhood все равно тут тоже играет не всегда объективный человеческий фактор @rusgautama @__fro
9: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
@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

Конечно. Но помоему оно стоит того. @Sigiller

9:46
@jsunderhood а перевести на такие рельсы компанию с большим количеством работников и длинной историей может оказаться непосильной задачей
9:47

Да, о таком надо думать заранее. Многие основатели компаний вообще не думают о таких вещах и потом начинаются проблемы. @Sigiller

9:49
@jsunderhood если сразу об этом задуматься и нанять толкового HR, который всю эту схему сможет разработать, а она чертовски непроста
9:50

И разработать это только одна часть, оценивать людей по этой формуле ещё сложнее. @Sigiller

9:51
@suxxes @jsunderhood @__fro в России опционы напрямую запрещены ТК, а судиться в Делавере и британских юрисдикциях не каждый девелпр потянет
9:53

Очень интересно. Почему запрещены? @mktoid @suxxes @__fro

9:54
@jsunderhood вот оценка, в этом контексте, мне видится наиболее сложной частью. потому что открыть зарплаты дело-то нехитрое
9:54
@jsunderhood то есть система оценки должна быть при этом относительно простой, чтобы люди её понимали и в ней не было бы тёмных пятен
9:55
@jsunderhood Потому что нет регулирующих эти понятия законов. По сути понятие опционов просто не работает в России. @mktoid @__fro
9:55

Ну нет понятия это разве нелегально? @suxxes @mktoid @__fro

9:55
@jsunderhood Ну, ОК, мы неверно выразились. Это не нелегально, а не работает и в суд с договором не пойдешь. @mktoid @__fro
9:56
@jsunderhood И по большей степени все обещания опционов, даже документально подтвержденные — это вопрос доверия. @mktoid @__fro
9:56

Имхо все что связано с деньгами должно быть на бумаге. @suxxes @mktoid @__fro

9:57
@jsunderhood @suxxes @__fro РВК и ФРИИ рассказывали, непрямую слова опционы нет, но попадает под то, как платить работникам ТК запрещает
9:58

В Финл опционы это не оплата пока ты их не реализовал. @mktoid @suxxes @__fro

9:59

Реализовал в смысле выкупил, а не vest. @mktoid @suxxes @__fro

10:00
@jsunderhood Опцион — это не деньги, а обещание возможности покупки. @mktoid @__fro
10:00

Это вознаграждение. @suxxes @mktoid @__fro

10:00
@jsunderhood Опционы и акции с вестингом — суть разные вещи. @mktoid @__fro
10:01

Я знаю, говорим про опционы. stock options @suxxes @mktoid @__fro

10:01
@Seleckis @PaulColomiets @__fro @jsunderhood или когда оборот у компании 1,5 млрд, а зарплатный фонд 50 млн на 1К сотрудников - ненормально.
10:02

Кстати про stock options, по-моему многие переоценивают их и соглашаются на слишком большое понижение зп.

10:09

At the end, это лотерея и тебе просто дается возможность в будущем купить лотерейный билет. Даже не сам билет, просто возможность, Карл!

10:09

А при покупке этого билета за тобой еще и налоговая придет, кстати.

10:10
@jsunderhood вот мне это всегда казалось больше инструментом привязать работника к компании, чем каким-то поощрением.
10:21

Да, конечно. Я про то что обладатели оных придает им слишком большую цену, неоправданно большую. @Sigiller

10:22
@jsunderhood ну всем хочется верить, что выстрелит и что всё не напрасно)
10:24

Sunk costs fallacy и все такое :) @Sigiller

10:25

Мне теперь немного стыдно, что я разжег такой срач про сексизм. Это важная тема и я рад что поднял ее, но троллить стоило меньше.

10:33

Поговорим про менеджеров. Я нахожу модель которая (была?) в Гитхабе и есть в Valve очень привлекательной, то есть когда менеджеров нет.

10:44

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

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:29

ZR еще может и достигнет, 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

Ну глупо, но происходит же такое постоянно. @Sigiller @__fro

12:02

Это тебе похоже очень везло с менеджерами) @Sigiller @__fro

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

Но это же не делает проблему которую они создают меньше. @Sigiller @__fro

12:24
@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

Опять программисты аутисты у вас :) Почему менеджер выдержит а программист нет? @Spellful

22:06
@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

Там был консалтинг и они так репутацию крутых опен сорсеров поддерживали. @__fro @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 но в этом же и есть самый кайф, разве нет? @jsunderhood
14: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

Согласен. Обсуждение как именно сделать такую культуру чтобы remote работал. @__fro

10:15
@jsunderhood нужно как минимум заставить всех решать все рабочие моменты и вести дискуссии исключительно через онлайн средства коммуникации
10:17
@jsunderhood даже если ты сидишь в офисе рядом с тем, у кого есть ответ
10:17

Это кстати еще и продуктивность повысит - меньше interruptions, больше кода. @__fro

10:18

Про 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
Нет, ты правильно делаешь, что топишь за прозрачность. Прозрачность, инспекция, адаптация — столпы Скрама, например, @jsunderhood
11:42

Это ты меня прям изыскано опустил :)))) @ilnurkhalilov

11:42

Это я к тому что Скрам для меня скорее ругательное слово, я ни разу не видел хороший Скрам. Хороший Скрам это как единорог. @ilnurkhalilov

11:43

Но я не спорю что да, многие вещи которые я говорю можно назвать agile. Просто я очень хотел НЕ говорить это слово :) @ilnurkhalilov

11:45
@jsunderhood У нас Asana (полная лажа, но тяжело пока поменять), Skype и Slack. Skype для митингов, Slack для ежедневного общения.
11:45
Хороший Скрам — это работающий Скрам. Если ты видел плохие примеры, это скорее говорит о реализации, а не о самом фреймворке, @jsunderhood
11:45

Вот многие мне так говорили, но я не поверю пока не попаду в работащий Скрам. @ilnurkhalilov

11:46
А зря! Есть Манифест Аджайла, есть Скрамгайд — в них написаны основы @jsunderhood
11:46
@jsunderhood @ilnurkhalilov +100500. Чертовы “эффективные менеджеры” давно приватизировали и извратили методологию )
11:47
@jsunderhood @ilnurkhalilov удивительно, как непрофессионалы, подкупающие бизнес своей лояльностью повсюду гадят (
11:47

Я не спорю. Просто за годы была так извращена сама идея agile, что сейчас это скорее способ биллить за час, чем методология. @ilnurkhalilov

11:48
Никто вас не будет заставлять строить Скрам, если у вас всё работает. Мне же хочется предсказуемости, @__fro @jsunderhood
11:52
@jsunderhood в работе удаленщика большую роль играет разница в часовых поясах. Если разница более 4х часов очень сложно взаимодействовать.
11:52

Когда у нас был HQ в США, а девы в Финляндии, была большая проблема когда последния инфа от клиента из Филлипин приходила долго. @esergeev

11:53

Вообще good point. Как работать с сильно разными часовыми поясами? @esergeev

11:53
О, сколько раз мне говорили, что у них Скрам, но по факту оказывалось, что это обычный водопад с итерациями! @__fro @jsunderhood
11:56

У нас это называют жопа Скрама aka "scrum, but". @ilnurkhalilov @__fro

11:56
@jsunderhood в тяжелых случаях спасают только командировки. А так, только планирование и грамотное разделение обязанностей.
11:56

Разделение обязанностей - как это делать? Организовывать по командам в часовых поясах? Или достаточно чтобы все знали что дальше? @esergeev

11:57
У нас тестиривщица была в Канаде. Днём мы делали фичи, ночью она их тестировала. @jsunderhood @esergeev
12:00

Вот веселье наверно было с ответами "can not reproduce". @ilnurkhalilov @esergeev

12:01
Таких отписок мы себе не позволяли, а QA подробно документировала баги — у нас был работающий Скрам :) @jsunderhood @esergeev
12:05
@jsunderhood это был менеджер, исчез на 2 недели, а потом оказался в игровой компании.
12:08

В полицию сдали или так все отдал? @beshkenadze

12:09
Но всё равно было окно в пару часов, когда мы синхронизировались. Без этого совсем сложно @jsunderhood @esergeev
12:09

Вот и мне кажется что какой-нибудь overlap должен быть. Даже в oss, нам отсюда сложно работать с ФБ graphql девами.@ilnurkhalilov @esergeev

12:10
Да. Был ещё опыт с фронтендером в Беркли. Он ночью подключался к нашим утренним стендапам, @jsunderhood @esergeev
12:19
И с 12 принципами гибкой разработки: agilemanifesto.org/principles.html. А в каком виде: Скрама, Лина, Канбана — вопрос менее важный, @jsunderhood
12: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

gist.github.com

other