Вячеслав Слинко

Вячеслав Слинко

Темы
Неделя
Sep 26, 2016 → Oct 3, 2016

Архив недели @vslinko

Понедельник


Привет! На этой неделе с вами я, @vslinko. Давайте знакомиться.

Моя история началась 13 лет назад. Мне показалось скучным в очередной раз переустанавливать винду на своем домашнем компьютере.

Один школьный друг поделился со мой волшебным CD, на котором был какой-то дистробутив линукса. Это изменило всю мою жизнь.

Около полугода я пытался настроить интернет от моего провайдера, который работал через PPTP. В итоге я познал скрипты на bash.

Я выложил этот скрипт на локальный форум, где собрал много разного фидбека. Это был мой первый опыт вклада в Open Source :-)

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

Если бы не шальная мысль в подростковой голове, я бы не занимался последние 10 лет веб разработкой.

Несколько лет назад я переключил свое внимание с бекенда и девопса, на фронтенд и работу с командой.

Сейчас я руковожу группой front-end разработки в компании ЦИАН, где передо мной стоят несколько больших задач.

Кроме того, в прошлом году у меня был первый опыт публичных выступлений на IT конференциях и мне это очень понравилось.

🔥Тред (@vslinko)
Три моих доклада были про две технологии от компании Facebook (нет, не React), с которых я и начну неделю.

На презентации GraphQL я подумал: "я же пытаюсь сделать тоже самое". Единый endpoint, который одним ответом отдает только нужные данные.

Вокруг этого же можно сделать декларативный API доступа к данным, который не будет тормозить, как, например, REST. И тут они показали Relay.

Все это выглядит очень красиво, рекомендую посмотреть youtube.com/watch?v=UBGzsb… и попробовать graphql-swapi.parseapp.com

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

После появились проекты, для которых G&R хорошо подходили: куча сущностей, переписать с нуля, гарантировать простоту поддержки долгий срок.

Как и любые технологии, решая одни проблемы они создают новые: высокий порог входа, много boilerplate, различные ограничения (нет подписок).

@jsunderhood это выглядит ужасно, оборачивать каждую ручку в резолвер. Нужен автоматический билд типов из свегер схемы
GraphQL не заставляет тебя оборачивать все руками. Можно использовать генераторы. Проблема в том, что оно все еще в стадии early adoption. twitter.com/raxpost/status…

Есть легковесная альтернатива для Relay под названием Apollo. dev-home.apollodata.com

Жертвуя некоторыми оптимизациями мы получаем библиотеку с простым API. Настораживает только то, что Apollo разрабатывает команда Meteor.

@jsunderhood кстати я не видел еще даже сырых генераторов, нету ссылочек?
Почти всегда кто-то создает awesome листы github.com/chentsulin/awe… github.com/expede/awesome… twitter.com/raxpost/status…

Уже начала появляться инфраструктура вокруг. Сначала появился GraphQL as a Service reindex.io

Недавно Apollo начали рекламировать инструменты для аналитики: популярность полей, время ответа запроса/поля apollostack.com/optics

Github открыл свой API через GraphQL developer.github.com/early-access/g…

Скоро будет первая конференция по GraphQL graphqlsummit.com

🔥Тред (@vslinko)
@raxpost Там намного меньше чем Рилей. Плюс скоро будет Рилей 2, который всех победит. @jsunderhood
Да, недавно анонсировали релиз Relay2, который должен закрыть основные боли. Напоминает ситуацию с Angular2, что мне не очень нравится. twitter.com/freiksenet_ru/…

@jsunderhood Ты едешь?
Нет, я не поеду. Должен признаться. Последние полгода я не использую ни GraphQL ни Relay. Для текущего проекта они не подходят. twitter.com/freiksenet_ru/…

@jsunderhood Ну и делать БааС за два месяца до релиза технологии тоже было оптимистично) Не зря нас Ник Шрок назвал смелыми.
Early adopters такие early adopters, что делают стартапы на технологиях до их публичного релиза :-) twitter.com/freiksenet_ru/…

Кстати, ближайшие 3 дня будет 54я встреча комитета TC39. @chicoxyzzy обещал постить интересности github.com/tc39/agendas/b…

Не будет лишним разбавить хайповый тред докладом @listochkin о том, как не гнаться за хайпом youtube.com/watch?v=xPFRUM…

@jsunderhood не совсем понял чем это принципиально лучше odata?
OData, JSON API, GraphQL решают одну проблему. В GraphQL есть валидация типов, можно передавать аргументы на любой уровень вложенности. twitter.com/visualwatermar…

@jsunderhood какого рода тормоза из-за REST сервисов?
Под REST я имею ввиду тот REST, который не позволяет включить в ответ зависимые данные. twitter.com/visualwatermar…

Закончился рабочий день. Самое время продолжить разговор о GraphQL/Relay/Apollo.

Пожалуй самые популярные вопросы по этой теме — кому и нафига это нужно? Поделюсь ссылками на видео, так будет эффективнее.

Вот это видео может помочь вам понять, что делает GraphQL youtube.com/watch?v=Wq02BN…

А это видео может помочь вам понять, что делает Relay youtube.com/watch?v=oPSuva…

Про Apollo я нашел только такое видео youtube.com/watch?v=u1E0Cb…

🔥Тред (@vslinko)
. @freiksenet_ru @jsunderhood ну пусть держит. но зачем заставлять писать бессмысленный код? Очевидно же что нужен name и sleepingTime pic.twitter.com/iW0vZbvHbr
На самом деле хорошее замечание. Уверен, что рано или поздно и до этого дойдем. twitter.com/YodaPunk/statu…

Например Glimmer 2 движется в сторону увеличения знания о шаблоне. О нем мы поговорим в одном из следующих дней.

Немного по планах на следующие дни: Typescript/Flow, React/Angular2/Glimmer2, SSR, моя работа в ЦИАН, UX, саморазвитие и планирование

@jsunderhood Да нет же. Откуда релею знать откуда именно в графе ты берёшь проп? @YodaPunk
Сопоставив корневой компонент с некоторой нодой в графе данных (например через роутинг), то можно проследить путь до конкретного значения. twitter.com/freiksenet_ru/…

@jsunderhood Это все не разрешимо в любой более сложной ситуации. @YodaPunk
Конечно это не будет работать в определенных случаях (например когда нужна постобработка), но в остальных случаях вполне применимо. twitter.com/freiksenet_ru/…

Забыл упомянуть об отличной алтернативе от Netflix — Falcor. Жаль только, что о нем перестало быть слышно youtube.com/watch?v=z8UgDZ…

Вторник


Всем привет! Сегодня я хочу высказать свое мнение о таких языках, как TypeScript и Flow. youtube.com/watch?v=9PTa9-…

Я специально хочу сделать акцент на том, что Flow это такой же отдельный язык программирования, как и TypeScript.

Цель существования данных языков — добавление в динамически типизированный JavaScript немного статической типизации.

Я выделяю две задачи, которые решает статическая типизация — валидация корректности на уровне типов и увеличение дисциплины кодирования.

🔥Тред (@vslinko)
С точки зрения валидации корректности Flow, объективно, сильнее. Примеры можно посмотреть у @vkurchatkin github.com/vkurchatkin/ty…

Не смотря на это, я выбираю TypeScript по трем причинам: строгость, легкость и тайпинги.

Строгость. Во Flow можно получить данные о покрытии кода типами. В TypeScript можно обязать писать типы и запретить использовать тип any.

Легкость. TypeScript чуть ближе к другим, уже популярным, языкам; у него лучше документация, и он написан не на OCaml.

Тайпинги. В TypeScript есть развитая инфраструктура описания типов для популярных пакетов из npm. Не нужно тратить свое драгоценное время.

Нужна ли вам статическая типизация? Публичный модуль, большой и долгий проект — да. Прототип, лендинг, команда из одного человека — нет.

Flow или TypeScript? Команда, которая имеет большой опыт работы с типами, зависимость от babel, знание OCaml — Flow. Иначе — TypeScript.

🔥Тред (@vslinko)
@jsunderhood а чем плох OCaml? Парсер и компилятор на нем быстрее же работают. Из очевидного - не работает на windows, какие ещё минусы?
Минус один — то должен знать OCaml, если хочешь контрибьютить. twitter.com/Golovim/status…

@jsunderhood это, действительно, бесспорное преимущество. Есть что-то похожее для flow?
Недавно появилась коллекция тайпингов github.com/flowtype/flow-… twitter.com/Golovim/status…

Пожалуйста, начните писать типы в своих публичных библиотеках. twitter.com/rpominov_rf/st…

@jsunderhood могут ли тесты дать схожие гарантии, но сохранить возможность использовать преимущества динамической типизации?
Тесты могут дать схожие гарантии. Только для этого нужно будет написать гораздо больше строк, чем при описании типов. twitter.com/Golovim/status…

Важно! Статическая типизация не заменяет тестирование и наоборот. Тесты для бизнес-логики, типы для согласованности интерфейсов.

@jsunderhood Как смотришь на Dart?
Не верю в то, что он выкарабкается. На бекенде есть конкурент от самого Google. На фронтенде Dart не нужен без нативной поддержки браузеров. twitter.com/_nitive/status…

Я стараюсь не использовать проекты, в которые я не смогу законтрибьютить в случае чего. twitter.com/rpominov_rf/st…

Да, говорят на Windows есть проблемы с Flow (и не только). Мы это решаем MacBook-ами. twitter.com/twenty/status/…

У видны проблема в том, что приходится использовать rimraf. twitter.com/twenty/status/…

@jsunderhood, если бы они ещё и актуальными были
Да. Используя сторонние тайпинги надо понимать, что есть временной между релизом и обновлением тайпингов. Мне кажется, что это даже полезно. twitter.com/ilnurkhalilov/…

В любом случае сделать PR с обновлением зачастую проще, чем написать тайпинги с нуля.

Это не связанно с JavaScript. У многих не-Microsoft технологий есть проблемы с запуском на винде. twitter.com/soulmusic/stat…

Среда


“RegExp Unicode Property Escapes” перешли на stage 2. github.com/tc39/proposals…

Об этом был отличный доклад на @frontend_union. Очень советую посмотреть после того, как его опубликуют.

[System.global](http://System.global) was renamed to global and is on it's way to Stage 4!
Ссылка есть? twitter.com/chicoxyzzy/sta…

Напоминаю, что сейчас идет встреча комитета TC39, который занимается развитием ECMAScript. github.com/tc39/agendas/b…

Всем привет! Не смог, к сожалению, сегодня уделить ни минуты рабочего времени вам. Сейчас исправим.

Сегодня я хочу поговорить о React, Angular 2 и Glimmer 2. Даже не о них, а о подходах к работе с мутациями DOM.

Есть две парадигмы работы с изменениями: императивный (описываем алгоритм) и декларативный (описываем результат, к которому нужно прийти).

Императивный подход эффективен, но сложность поддержки алгоритма растет нелинейно по мере роста бизнес логики.

Декларативный подход гораздо удобнее, но в наивной имплементации он совсем не эффективный.

Это было одной из selling point React. Вы описываете компоненты декларативно, React генерирует VirtualDOM и супер эффективно его применяет.

На самом деле проблемы все еще остаются. Сравнение двух деревьев очень затратная операция.

Одно из решений — shouldComponentUpdate. Костыль для исключения некоторых веток дерева из сравнения.

Этот костыль можно свести к унифицированной функции сравнения, используя immutable data, например ImmutableJS.

Проблема в ImmutableJS в том, что при изменении одного значения меняется хеш у всех родителей, что инициирует рендер с самого корня.

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

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

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

К сожалению, я не успел посмотреть на то, как эта проблема решается в Angular 2, удалось найти только статью blog.thoughtram.io/angular/2016/0…

🔥Тред (@vslinko)
Судя по этой статье, все очень похоже на React. Интересно как в Angular 2 применяются обновления в рамках одного компонента.

@jsunderhood Как-то мутно. Ты описываешь случай, когда состояние раздается по дереву компонентов из рутового компонента?
Не только. Если у тебя есть массив объектов, то при изменении значения объекта меняется хеш у массива. d1ro8r1rbfn3jf.cloudfront.net/ms_104503/lxtU… twitter.com/roman01la/stat…

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

Про обновление компонент. Даже если обновляется один компонент, React должен получить новое дерево, сравнить со старым и обновить DOM.

Кажется, что оптимизировать этот момент можно сопоставив изменяемое значение с конкретной операцией над DOM.

Достичь этого можно глубже понимая свои шаблоны. Мы знаем, что у нас есть переменная "name" и что она выводится как текст у DOM ноды.

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

Одни из тех, кто копает в эту сторону, это команда Ember в рамках проекта Glimmer 2. github.com/tildeio/glimmer

Обязательно посмотрите это видео про Glimmer 2! youtube.com/watch?v=vL8sCi…

Попробую кратко. Шаблон компилируется в промежуточное представление, "wire-format", который разбит на блоки (root, if, each, etc).

Каждый из блоков состоит из инструкций (открыт тег, задан аттрибут, закрыт тег, etc). Каждый из блоков знает о используемых переменных.

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

Подпрограммы представляют из себя дерево операций (опкодов), каждая операция привязана к части DOM дерева и к части дерева данных.

Дальше запускается виртуальная машина, которая эти опкоды выполняет. Переменная изменилась — меняем текст; нет — завершаем выполнение.

🔥Тред (@vslinko)
@jsunderhood чтобы это работало в реакте нужно из jsx делать ast и его анализировать на влияние изменений стейта?
Именно. Только проанализировать язык программирования гораздо сложнее, чем язык шаблонизатора. twitter.com/somerandstring…

Есть интересный проект MobX. Следим за изменением только того, что используются. Ре-рендерим только тех, кто подписан на изменения.

Ссылка не влезла mobxjs.github.io/mobx/

Он решает проблемы shouldComponentUpdate и ImmutableJS, которые я озвучил ранее, но не решает проблему обновления одного компонента.

Итересный экскурс в историю React до публичного релиза. facebook.github.io/react/blog/201…

Четверг


@andreypopp @jsunderhood github.com/chicoxyzzy/mos…
Небольшой спор о нужности спеки обзерваблов и самих обзерваблов. А как вы считаете, нужны ли обзерваблы? twitter.com/chicoxyzzy/sta…

@jsunderhood wsd.events/2015/05/22/pre… , немного тут касаюсь habrahabr.ru/post/210558/ ну и github.com/arestov/seesu
Вот, человек уже делал умный разбор шаблонов и шаблонизатор. twitter.com/YodaPunk/statu…

Пятница


И еще один все понял про шаблонизаторы. habrahabr.ru/company/oleg-b…

Сегодня, к сожалению, не смогу уделить вам много времени. Накидывайте ссылки на интересные статьи, видео и темы, буду ретвитить.

@jsunderhood чем отличается throttle от debounce jquery.page2page.ru/index.php5/Thr…
Всегда полезно вспомнить базу. twitter.com/xgrommx/status…

@jsunderhood а я бы хотел узнать причину, почему ты не можешь уделять время @jsunderhood
Не представляешь, приходится работать :-) twitter.com/i_told_ya/stat…

@jsunderhood стоило тогда вызываться вести аккаунт? я ждал твою неделю
Если кто-то ждет от меня что-то конкретное, то не стесняйтесь задавать вопросы и подкидывать темы. У нас будет пара выходных на обсудить. twitter.com/i_told_ya/stat…

@jsunderhood какие кто использует соглашения об именовании файлов? Не могу коллегу склонить к Кебабу. Кэмел - это по ООПешному, говорит.
Мне нравится подход module_name.js больше чем functionName.js или ClassName.js, так как в одном файле может быть несколько экспортов. twitter.com/eBusterd/statu…

Суббота


Всем хороших выходных! Сегодня я хочу рассказать о том, чем я занимаюсь в компании ЦИАН.

Для тех, кто не знает, ЦИАН — это российский классифайд про недвижимость, который отмелил в этом году свое 15-летие.

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

В том числе это касается и клиентской части. И одна из моих больших задач — привести frontend в порядок.

Для того, чтобы что-то сделать лучше, необходимо понять что на самом деле происходит.

Один из отличных источников знаний о том, что чувствуют пользователи — Navigation Timing API developer.mozilla.org/ru/docs/Web/AP…
notion image
notion image

Мы собираем метрики самых популярных страниц Navigation Timing API, отправляем через бекенд их в StatsD и выводим графики в Grafana.

На основе этих данных можно разобрать из чего состоит время загрузки страницы.
notion image

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

Следующее, что мы собираем, это активные версии ассетов. Таким образом можно понять, как быстро сбрасывается кеш у пользователей.
notion image

Вот так должен сбрасываться кеш при правильном подходе. 💪
notion image

А правильный подход такой. Про Cache-Control: immutable можно почитать тут: bitsup.blogspot.ru/2016/05/cache-…
notion image

Еще с клиентов очень полезно собирать необработанные исключения. Для этого мы используем Sentry sentry.io

Вот классический пример из жизни проекта.
notion image

Проанализировав наши данные, архитектуру и требования мы определили список горящих проблем, сформировали цели (которых хватит на пару лет)…

…и выбрали основу для нашей архитектуры. В основе лежат три технологии: React, как инструмент для универсального рендеринга (нам важно SEO)…

…Node.js, который обеспечивает серверный рендеринг и добавляет асинхронности в систему; TypeScript для лучшего контроля за качеством кода.

Одна наших из целей — сделать общую библиотеку компонент. На эту тему есть великолепный доклад от @mr_mig_by youtube.com/watch?v=gfO2i9…

Мы движемся в этом же направлении. За основу взяли github.com/sapegin/react-… от @iamsapegin и заточили под TypeScript.
notion image

Кроме этого сейчас я прорабатываю концепцию "микросервисов" на фронте. Разделяй и властвуй.

В сторону микросервисов на фронте активно копают @ZalandoTech с проектом mosaic9.org По ссылке много крутых материалов по теме.

🔥Тред (@vslinko)
Именно так. Долгое время фронтом никто не занимался. Так по чуть-чуть накапливается критическая масса проблем, которая может взорваться. twitter.com/Addicted_fully…

@jsunderhood т.е. до этого система была синхронная) лол
Не везде, но по большей части да, данные для генерации страницы собираются последовательно. twitter.com/Bashnya_est/st…

Recent @flowtype release adds $ObjMap type constructor—makes it possible to express typesafe deserialisation w/ validation: pic.twitter.com/nCanYRPAXb
Еще один плюс в копилку Flow. twitter.com/andreypopp/sta…

Воскресенье


Долгое время я не понимал, чем занимаются UX спецы. Рекомендую youtube.com/watch?v=q4d376… UX, MVP, Customer Journey, User Stories, Wireframing.

Внезапно, UX перешел для меня из разряда магии в набор простых техник, помогающих проанализировать то, что я делаю, как фронтендер.

Как вы, фронтендеры, получаете новые знания? У меня есть два источника: доклады/подкасты/твиттер и рабочие эксперименты.

Признаюсь. Книги (техническую литературу), я практически не читаю. Слишком крупный формат. Предпочитаю статьи и лекции в интернете. А вы?

Подкасты для меня, в основном, это источник новостей. Постараюсь выделить некоторые из них. twitter.com/likeadenis/sta…

Основные новости про фронтенд вне JavaScript я узнаю из подкаста Веб-стандартов. soundcloud.com/web-standards

Отличный подкаст про программирование от @filipovskii@podcastcode codepodcast.com

Подкаст про JavaScript (давно не выходил) @RadioJSPodcast radiojs.ru от @filipovskii @bashmish и @KSDaemon

Мой любимый подкаст про технологии (не фронтенд) devzen.ru

Подкаст в стиле интервью с интересными людьми @SDCast_podcast sdcast.ksdaemon.ru от @KSDaemon

🔥Тред (@vslinko)
К сожалению у них очень плохой звук. Не могу слушать больше одной минуты. Но темы интересные. twitter.com/likeadenis/sta…

Какие книги вы посоветуете фронтендерам? twitter.com/ermo4enkov/sta…

Сильно оффтопная тема за жизнь для выходного дня.

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

Дисклеймер. Все что будет дальше не претендует на уникальность и на то, что поможет каждому. Это только мой опыт, которым я хочу поделиться.

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

Отвечать на вопросы я начал с составления картинки в голове моего далекого будущего. Что там должно быть, а чего не должно.

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

Эти упражнения позволяют вытащить наружу свои настоящие стремления и приоритеты.

Так как все со временем меняется, в том числе и мировоззрение, я повторяю это упражнение раз в 6-12 месяцев.

По мере кристализации картинки в голове можно составлять список целей, которые позволят воплотить эту картинку в жизнь.

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

На самом деле это основы управления компаниями, примененные к личной жизни. Это позволило мне, заядлому пофигисту, сильно измениться.
notion image

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

🔥Тред (@vslinko)
Кстати, о деньгах. Раньше я тратил все деньги, которые у меня были, и даже больше, не понимая, как так происходит.

@jsunderhood 7 habits of highly effective people читал?
Нет, ничего не читал, кроме случайных статей в интернете. Доходил сам. twitter.com/mr_mig_by/stat…

Было несколько попыток начать вести бухгалтерию, но все их них проваливались, пока я не начал использовать простейшую таблицу в Excel.

Это позволило привить привычку записывать мои траты по категориям. Через несколько месяцев я смог проанализировать ситуацию.

Осознав, куда уходят деньги, я ввел бюджетирование, плавно перераспределяя деньги по категориям.

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

🔥Тред (@vslinko)
@jsunderhood ynab юзал?
Я пробовал кучу инструментов, в том числе и ynab. Для меня работают только два: Excel/Numbers и ledger. twitter.com/mr_mig_by/stat…

Ledger — супер мощная консольная улилита для ведения бухгалтерии. Для гиков самое то! ledger-cli.org
notion image
notion image
notion image

Мотивация появляется тогда, когда понятна цель и видны результаты работы. twitter.com/empoempire/sta…

Видео курсы для меня не работают. Это слишком большой commitment. Хотя, если задача — научиться большому и новому, то может сработать. twitter.com/empoempire/sta…

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

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

Многие говорят от том, что им нужна сильная команда и им хочется развиваться. Это отлично, но это не самое главное для разработчика.

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

Это очень хорошие критерии, помимо технических навыков, для градации людей на junior, middle, senior.

Если вам важен результат вашей работы и вы понимаете зачем существует бизнес, то мы очень ждем вас у нас в команде. hh.ru/vacancy/179272…

🔥Тред (@vslinko)
@jsunderhood это же хорошо, что говорят правду. Если бы врали только ради прохождения интервью - было бы хуже. И люди обычно эгоистичны, да
Обычно врать на собеседованиях не очень получается — это достаточно быстро вскрывается. twitter.com/dstebunov/stat…

@jsunderhood да, но это не обязательно. Если вы ищете CTO, то мне кажется это просто обязательный критерий. В ост. случаях - опционально.
Мы хотим видеть команду, в которой каждый понимает, зачем команда работает и влияет на результат этой работы. twitter.com/MaxBorisov/sta…

@kalashnikovisme @jsunderhood согласен, в идеале, это должна быть двусторонняя связь: решаешь проблемы и сам развиваешься.
Абсолютно. Команда тоже должна помогать сотруднику развиваться и расти. twitter.com/MaxBorisov/sta…

@jsunderhood it depends. Иногда встречаются люди - мастера прохождения собеседований, они просто очаровывают. А потом приходится увольнять..
При этом ресурсов теряется гораздо больше, чем кажется на первый взгляд. twitter.com/dstebunov/stat…

@roman01la @jsunderhood если таковых нету?
Если нет старших разработчиков, можно самому таким стать. Хочешь что-то узнать по настоящему, объясни это другому. twitter.com/serhey_shmyg/s…

@jsunderhood а если наоборот?
Прокачать скиллы, зачастую, гораздо проще, чем повлять на мотивации. Так что это гораздо меньшая проблема. twitter.com/tonkoshkurik/s…

@jsunderhood А какая по твоему должна быть мотивация у разраба, красивые слова про задачи бизнеса в карман не положишь.
Должен быть фокус на результат. Не просто передвинуть задачу из одного статуса на другой, а решить проблему максимально полезным способом. twitter.com/icelabaratory/…

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

@jsunderhood Фокус на результат это не мотивация ;-) я о том что именно должно поддерживать этот фокус. Деньги, удовлетворение интереса и тп
Если у человека в приоритете деньги и модные технологии, то его фокус будет на деньги и технологии, а не на результат. twitter.com/icelabaratory/…

Если ты правда не можешь определить что тебе важно, то и не надо сильно переживать. Лучше от этого точно не станет. twitter.com/Seleckis/statu…

Понедельник


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

Решить проблемы бизнеса != сделать как можно быстрее. twitter.com/alexondr/statu…

@jsunderhood ну в зарплате не всегда, есть печальный факт, что рост зп разработчику обеспечивает в основном смена работы
Это связано с тем, что большинство компаний не может себе позволить сильных разработчиков. Многие даже средние зарплаты не могут позволить. twitter.com/raxpost/status…

@nekrtemplar @icelabaratory @jsunderhood балансировать можно, но это ведет к потере фокуса, по мне - обсудить деньги в начале и забыть
Забывать нельзя. В компании должен быть план развития сотрудников. Грейды, которые всем понятны и которые привязаны к зарплате. twitter.com/raxpost/status…

@jsunderhood бизнес иногда не знает что ему нужно
Бывают разные бизнесы. Некоторым, наоборот, нужны только те, кто хорошо делает только свою часть работы. twitter.com/Lazin/status/7…

Привет! На этой неделе с вами я, @vslinko. Давайте знакомиться.
Перед закрытием недели небольшой recap. twitter.com/jsunderhood/st…

Три моих доклада были про две технологии от компании Facebook (нет, не React), с которых я и начну неделю.
В понедельник мы поговорили за GraphQL, Relay и Apollo. twitter.com/jsunderhood/st…

Всем привет! Сегодня я хочу высказать свое мнение о таких языках, как TypeScript и Flow. youtube.com/watch?v=9PTa9-…
Затронули TypeScript и Flow. twitter.com/jsunderhood/st…

Сегодня я хочу поговорить о React, Angular 2 и Glimmer 2. Даже не о них, а о подходах к работе с мутациями DOM.
Немного о том, как работать с DOM. twitter.com/jsunderhood/st…

Всем хороших выходных! Сегодня я хочу рассказать о том, чем я занимаюсь в компании ЦИАН.
Различные интересности из рабочих будней. Надеюсь у кого-то были инсайты. twitter.com/jsunderhood/st…

Сильно оффтопная тема за жизнь для выходного дня.
Разговоры за жизнь. twitter.com/jsunderhood/st…

Еще я хочу немного поныть о том, какие люди приходят на собеседования. Многие из них технически прокаченные ребята, но мотивации…
Споры про мотивации сотрудников. twitter.com/jsunderhood/st…

Если вам важен результат вашей работы и вы понимаете зачем существует бизнес, то мы очень ждем вас у нас в команде. hh.ru/vacancy/179272…
На этом все. Эту неделю с вами был @vslinko До скорых встреч на конференциях и BeerJS Moscow. meetup.com/BeerJS-Moscow/ twitter.com/jsunderhood/st…

🔥Тред (@vslinko)

Ссылки