Юрий Дымов

Юрий Дымов

Темы
Неделя
Oct 10, 2016 → Oct 15, 2016

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

Понедельник


Хей-хей! С вами всю неделю на @jsunderhood будет Юрий Дымов, и нам предстоит дофига всего обсудить :)

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

Вчера был ровно год, как мы с женой переехали на ПМЖ в Пекин. До этого в течение 5 лет регулярно работал на международных проектах

во многих странах: Англия, США, Мексика, Бразилия, Израиль, Германия, Нидерланды, Казахстан, Украина. Ну и по России поездил конечно.

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

Ну, и я между делом буду рассказывать, как технологии проникают в жизнь обычных людей в Китае, а пока - задавайте вопросы :)

@jsunderhood не ожидал в андерхуде встретить человека из SAP'a, я думал весь фронт у вас там на аутсорсе
Ну, у нас есть собственный современный UI фреймворк sapui5.netweaver.ondemand.com, 3 разных мобильных платформы, но это мы все завтра обсудим :) twitter.com/safinalexey/st…

SAP огромен, у нас сотни разных продуктов. Какую-то его часть изучить дома безусловно можно, но надо понимать, зачем оно тебе @Way2based twitter.com/way2bariton/st…

Темы на следующие дни: технологии, side-projects по жизни и work-life balance, стартапинг, менторство, найм, отбор стажеров, карьерный рост

@jsunderhood где больше всего понравилось жить/работать?
Пожалуй, в США. Там очень комфортные условия для жизни и работы. В Китае очень прикольно, но экология сводит на нет многие плюсы @jeetiss twitter.com/jeetiss/status…

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

Тут совсем другое отношение к срокам - всегда именно я спрашиваю: "когда нужно все сделать" и получаю ответ в духе: "ну, давай через месяц"

В московском офисе после 18:00 почти никто не уходит. Здесь в 18:05 на этаже остается несколько человек, после 19:00 - человека 2 в офисе

По работе Obj-C, JS ES5, Java. Для души - React, RoR, сейчас ковыряю elixir и phoenix. Завтра будет подробнее @dr_lexa twitter.com/dr_lexa/status…

Китай и IoT: в моем доме счетчик эл-ва показывает, сколько денег осталось на счету. Если <= 0, эл-во отключается. Баланс можно мгновенно

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

В Китае фантастически развита доставка: с утра у дома очередь курьеров, каждый разносит сразу несколько посылок в каждый дом

Бесплатная доставка от $5, по Пекину - в течение 1-2 дней, по Китаю - дней 5, из Америки 7-10. Нет дома? Оставят в магазине внизу

Доставка еды: 15 - 40 минут из ~20 ближайших ресторанов. В течение часа - из еще 40. Минимальной стоимости заказа вроде нет

Все через интернет/телефон. Китайский знать не обязательно

У макдака есть доставка, если курьер не успел привезти за 45 минут - все бесплатно. Студенты иногда специально заказывают из дальнего :)

@jsunderhood чей веб интерфейс круче: SAP или 1С?
Мой :) Я запилю свой фронт, а SAP буду использовать в качестве data source. Вообще наш портал и Web Dynpro - это сплошная боль @PetrMyazin twitter.com/PetrMyazin/sta…

Раз речь зашла о UX. Китайцы обожают копировать, поэтому почти все популярные аппы выглядят так (это Alipay): hsto.org/files/794/a9d/…
notion image

Сверху title, внизу TabBar, по середине featured или реклама. В центре сетка с иконками на белом фоне. За каждой плиткой - небольшой JS app

Можно смело выкидывать весь свой опыт и делать всегда только так, меняя лишь цвета. Клиент будет счастлив

Это 8 разных приложений dangrover.com/img/content/ch…
notion image

🔥Тред (Юрий Дымов)
Какая прибавка к зарплате или какого рода проекты могли бы вас заставить задуматься переехать в Китай на пару лет?

@jsunderhood смотря куда именно, Китай страна немаленькая
Я не ограничиваю, просто интересно, что мотивирует людей. Другой язык, другая культура. Нас тут уже трое, кто из САП СНГ сюда в 2015 уехал twitter.com/justredpaul/st…

@jsunderhood Но их и сейчас у меня достаточное количество. Так что для меня этот вопрос скорее из области «а что если?»
Ну, тут масштабы другие. Мы долго внедряли проект в местном банке: 120 миллионов клиентов. Сто двадцать миллионов. Вот вам и high load :) twitter.com/justredpaul/st…

В Китае все еще большая мода на европейцев. В небольшой компании могут платить просто за то, что вы сидите у всех на виду. Понт такой twitter.com/Misaka42/statu…

Можно пилить side-проекты и будет тебе счастье :) Мы как раз на днях будем об этом говорить twitter.com/Misaka42/statu…

True, если нет семьи. Моя мотивация - интересная работа + достаточно $$$, чтобы не париться о повседневных расходах. Каждому свое :) twitter.com/robben132/stat…

Если не секрет, какого рода позицию и работу предлагали? @_sashashakun twitter.com/_sashashakun/s…

@jsunderhood А почему Пекин? С экологией швах (даже запашок всегда), летом офигенная жара. С транспортом не очень хорошо, город огромный.
Почти так, да. Здесь головные офисы большинства клиентов, соответственно и бизнес. С транспортом все как раз очень хорошо, но я тут с 2015 twitter.com/ruGreLI/status…

Курьез: в Китае соотношение М/Ж примерно 10 к 7. В SAP China Ж > М, в т. ч. в менеджменте. И ведь речь идет о технической компании!

За год так и не нашел разумного объяснения этого факта.

Cool story: 1. В офис местного убера приходят полицейские с проверкой; 2. На след день появляется китайский аналог; 3. Убер уходит из Китая

@jsunderhood Чай-то хоть пьёшь? Кажется, это единственное преимущество.

В Китае с точки зрения технологии мне больше всего нравится Alipay/WeChat Wallet. Эти две платежные системы очень удобные

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

Доступны финансовые инструменты: депозиты, покупка акций. Можно выбрать и купить билеты в почти любой кинотеатр. Короче очень удобная штука

У меня была мысль повторить подобное в России, но оказалось это невозможно из-за наших законов и это очень грустно

Тот же Alipay появился как прослойка между продавцами и покупателями - покупатель не мог сам отозвать деньги, а продавец - их получить,

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

🔥Тред (Юрий Дымов)
@jsunderhood я бы поехал если бы предложили конкурентную зп, чтоб можно было комфортно жить не думая о деньгах
Тут все очень плохо с экологией, поэтому в моем понимании "комфортно жить" может не получиться, но уже по нефинансовым причинам twitter.com/dvbondarchuk/s…

@jsunderhood а вообще какие в Китае зарплаты у разработчиков уровня senior в переводе на $?
Тут скорее glassdoor в помощь, так как слишком много переменных. У экспата от 5-6к в месяц @dvbondarchuk twitter.com/dvbondarchuk/s…

А если зайти с другой стороны :-) Сколько нужно $, чтобы на все хватало (и немного оставалось) семье из двух чел в крупном китайском городе? twitter.com/jsunderhood/st…
Сильно зависит от привычек. В Пекине $1.5 жилье в хорошем состоянии и месте + $1.5 на еду на двоих (если готовить, то будет раза в 2 меньше) twitter.com/dvbondarchuk/s…

@jsunderhood мне кажется, или это даже больше чем в среднем в Европе после вычета налогов? Или там где в Китае такая ЗП и расходы большие?
Надбавка за "вредность" и колорит. Китай иначе не сможет выиграть конкуренцию за кадры с EU, UK и US twitter.com/pas_art/status…

@pas_art @jsunderhood конечно больше. но work life balance просто ужасный, как и менеджмент, это мне китайские коллеги рассказывали
It depends. В китайских компаниях все очень по-разному. В филиалах EU и US компаний - Дикий Запад. Сюда едут авантюристы в поиска fun & gold twitter.com/borovikov/stat…

Друзья, хочу пожелать всем приятного вечера! Завтра начнем с ваших вопросов, а потом перейдем к обсуждению технических тем.

Вторник


@jsunderhood В Китае до сих пор мода на небритые подмышки? Лет 7 назад был шокирован в автобусе.
Это не мода, но да, до сих пор, Китаянки легко оголяют ноги, но плотно закрывают верх twitter.com/nodkz/status/7…

Это очень сложная тема. Без помощи китайцев почти никак, но они вас 10 раз обманут, пока вы поймете что к чему twitter.com/Addicted_fully…

Доброе утро! Сегодня обсуждаем прикладные и технические темы, начну с рассказа о том, как работаю

Я маковод с 6 летним стажем. На маке пилю React-based front-end + SAP UI5, iOS/Android native, RoR и немного elixir/phoenix

Весь веб с сервисами и демонами у меня бегает в виртуалке ubuntu server в vm fusion. Я цепляю через sshfs фс виртуалки, а код пишу на OS X

Бенефиты следующие: OS и окружение в DEV и PROD ландшафтах одинаковые, поэтому при деплое сюрпризы почти исключены

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

с native extensions приходиться любиться два раза, а не 0/1, и тратить время на решение необязательных проблем.

Легко мигрировать на новый ноут: поставил Xcode, Atom, Fusion, скопировал виртуалку и go-go-go. На все - меньше часа

Ubuntu server, потому что есть во всех облаках. Так я больше Arch люблю. Из IDE - последнее время Atom. Webstorm спустя 2 месяца не зашло

Мне кажется Webstorm умнее меня, и я устал с ней бороться; плюс она умудряется подлагивать на i7 16GB RAM. Хотя тул очень мощный - это точно

iOS - Xcode, Android - Android studio. Под iOS интерфейс пишу в коде. Interface Builder мне никогда не нравился.

UI в коде - это re-use, единые стили во всем аппе, идеальное выравнивание и мерджи без геморроя, если у вас большая команда

Да, Atom это редактор, а не IDE. Мне его хватает на 95%. Для моих нужд Sublime == Atom +-, так что просто так получилось :) @serhey_shmyg

🔥Тред (Юрий Дымов)
@jsunderhood был ли опыт общения с Ангуляром?
Я ковырял Ангуляр в 2013, но так и не понял зачем он мне. Монолитный RoR меня тогда устраивал. А когда перестал устраивать - появился React twitter.com/denis_nagibin/…

@jsunderhood расскажи, пробовал ли виртуалку поднимать через Vagrant (весь конфиг в одном yaml файле)?
Nope. У меня DEV виртуалка уже года два, раз в полгода делаю release upgrade. Поэтому нет смысла автоматизировать twitter.com/ddddm/status/7…

@serhey_shmyg @jsunderhood не совсем. Nuclide с flowtype в Atom рвет webstorm для JS.Правда gui нормальной для git не хватает,но это не беда
Let the holy war begin :) Я одновременно люблю и ненавижу JS за то, что куда не плюнь - есть 4+ способа сделать одно и тоже twitter.com/nodkz/status/7…

@jsunderhood release upgrade - собираешь виртуалку заново?
Да. Одну виртуалку, один раз в полгода. Мне норм :) Продакшен не я админю - мне все равно, как они там свои проблемы решают twitter.com/ddddm/status/7…

Maybe. Все равно каждый делает, как ему удобнее. А так, мы используем CI, поэтому front собирается независимо от того, что у меня в DEV twitter.com/Misaka42/statu…

Кстати, о CI. У нас git обернут gerrit, где мы делаем review: gerritcodereview.com, при пуше сборка уходит во внутренний jenkins

SAP очень java-oriented, поэтому даже сборка iOS-приложений у нас через maven. Для колоборации каждая команда сама определяет, что ей милее

Часто вижу JIRA, но сам предпочитаю Slack, если от проекта сильно NDA не веет, вроде газпромовского "планшета для Миллера"

Я там QA делал и оптимизировал все, что только можно, чтобы вписаться в требования Заказчика едва совместимые с физическими возможностями

@jsunderhood хороший вариант. Сам пытался автоматизировать, но при любых изменениях в окружении приходилось много времени тратить, забросил
Ага, сначала оптимизируешь все подряд, потому что можешь :) Потом, когда идей и работы сильно больше, чем времени, то начинаешь фильтровать twitter.com/ddddm/status/7…

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

через 15 минут нахожу себя где-то глубоко в твиттере. В итоге сейчас мой ToDo - это белая доска в гостиной и бумага с ручкой. Огонь!

У меня еще есть Wunderlist - если под рукой нет блокнота и для самого важного. Заметки веду в Evernote, хотя он чего-то портится

@jsunderhood посмотри на workflowy.com
Спасибо за наводку. twitter.com/akaDuality/sta…

@jsunderhood использовать SAP UI приходится из-за внутренних стандартов? И как он с React'ом интегрируется, хорошо?
Я не смешиваю :) Если надо писать мобильный апп, я настаиваю на Native, если вижу, что надо что-то сложное. Если веб, то склоняю к Реакту twitter.com/PetrMyazin/sta…

иногда шантажом. Если что-то простое, либо кастом, то да - SAP UI. Он всем прекрасен, только медленный и universal render не умеет by design

@jsunderhood а что насчёт Ангуляр 2?
Для меня технология - это способ решения задачи. То есть мне бизнес сторона интереснее. Это не значит, что можно забить на код и мой github twitter.com/denis_nagibin/…

это подтверждает. Я не буду учить новую технологию, пока не пойму, зачем она мне нужна. Я все еще не пишу на Swift и обходил node.js лет 5

Мне оно было не нужно, но я просто читал и знал, что оно есть. Когда понадобилось, я написал первый universal app на react+redux с нуля

за 4 дня, не имея опыта с node.js от слова совсем. Еще через пару недель я понял, что делает каждая его строчка :)

Так вот, пока я не вижу, что мне даст ангуляр 2 по сравнению с тем, что уже знаю. Когда увижу - выучу, а пока - просто слежу

🔥Тред (Юрий Дымов)
@jsunderhood "SAP Java oriented" - а кроме непосредственно Java, используются ли в SAP другие JVM языки, Scalia, Clojure?
У нас сотни продуктов, поэтому кто-то, думаю, использует. В стандарте core продуктов типа EP, PI - только стандартная Java twitter.com/PetrMyazin/sta…

@jsunderhood а как в SAP относятся к node/rails/elixir, если компания очень Джава ориентирована?
К Node отлично, мы в пуле спонсоров, плюс интеграция с HANA. На rails написан SAP JAM. Elixir - пока только в моих side проектах twitter.com/denis_nagibin/…

У нас негласное правило: технологии 6+ лет, в продакшене у гигантов 1.5+ года - тогда можно поковырять и возможно использовать

Поэтому мы никогда не будем на bleeding edge. Отсюда и моя любовь к side-projects

@jsunderhood GraphQL уже раскуривать начали? Это то, что приходит на смену REST API.
Никуда оно пока не приходит stateofjs.com/2016/api/. У нас своя OData всюду, которая делает примерно тоже самое, но мне равно не нравится twitter.com/nodkz/status/7…

Я делал pet project с GraphQL + Relay. Второй мне совсем не понравился, первый гораздо интереснее, но в след проект я бы не взял. Слежу пока

@jsunderhood на ноде голый экспресс или koa/Hapi/etc?
За всех не скажу. Я пока на голом экспрессе, но с интересом смотрю как на Koa, так и на Hapi. Возможно в след проект возьму Koa. twitter.com/denis_nagibin/…

@jsunderhood Вопрос похоливарнее. От coffee script головного мозга уже избавились, или вас миновала сия беда?
На фронте у меня coffee никогда не было, в RoR монолите - был, но там на весь проект строк 100, так что это вообще не существенно @nodkz twitter.com/nodkz/status/7…

@jsunderhood @nodkz какие по вашему перспективы у Ноды? Не является ли это уже хипстерским решением нишевым для стартапов?
Я не беру и еще не скоро возьму node в backend. В web frontend она с нами на очень и очень долго. То есть года 2 точно :) @denis_nagibin twitter.com/denis_nagibin/…

Фишку cordova, react-native и гибрида я так и не понял, но я сюда из ios/droid native пришел, поэтому сильно предвзят.

Write once, run everywhere. Все равно без костылей не взлетает, а performance на порядок ниже. Может в будущем все будет норм, но не сейчас

@jsunderhood а как вы юзаете её? Прокси?
universal rendering. Я про это даже tutorial написал habrahabr.ru/post/309958/ twitter.com/denis_nagibin/…

@nodkz @jsunderhood а что это такое?
CoffeeScript - наречие JavaScript. Там меньше всяких скобочек, @ вместо this и другой сахар, если одним твитом twitter.com/wouldntfix/sta…

@denis_nagibin @jsunderhood Изоморфизм вытягивает ноду из хиптерства. Это когда у вас один и то же код работает и на клиенте и на сервере.
Изоморфизм лечит долгую загрузку и инициализацию JS и сразу отдает клиенту контент. В этом разрезе наиболее интересен и любим twitter.com/nodkz/status/7…

@jsunderhood React native ну вообще же не write once run anywhere. И performance у него на уровне native если правильно юзать.
Очень зыбкая почва для меня. Я знаю, что он есть, но не имею практического опыта. С 4 годами native разработки для Газпромов это объяснимо twitter.com/freiksenet_ru/…

@jsunderhood Быстрая интерактивность это совсем не про рендер на сервер, а скорее про то как быстро загрузить джаваскрипт без лишних вещей.
Ага, костыль, чтобы обмануть юзера. Есть куча исследований, что время начальной загрузки очень важно для UX, если у вас не что-то уникальное twitter.com/freiksenet_ru/…

Если мы сразу отдадим контент, а сайт "оживим" через 2-3 секунды - никто ничего не заметит.

SEO это хорошо, но поисковики уже худо-бедно умеют JS, как и боты. Так что это приятный бонус, но не цель

@denis_nagibin @jsunderhood Мигрировал с рубей на ноду по своей воле ;) Больше не верю RoR, инструментарий уже того... устарел.
Front react, backend - любой, в своих проектах беру phoenix и он прекрасен. RoR сейчас как PHP 5 лет назад. Все хотят что-то другое, но twitter.com/nodkz/status/7…

рынок огромный и работы много, так что RoR с нами еще долго. Кстати, PHP, кажется, стал весьма юзабельным.

Я вряд ли вернусь, но сам факт эволюции и развитии технологии в правильном направлении очень радует

Да, точно. Там философия "выучи реакт и используй всюду". Имхо, более живуче, чем cordova. Но я все равно за native и hardcore :) twitter.com/twenty/status/…

@nodkz @jsunderhood а есть понятия тайпскрипт головного мозга и es2015 головного мозга?
Well, es2015 мне очень по душе. Всегда грустно кастомизировать SAP UI5, потому что там ES5 и я не буду тащить babel, webpack и т.д., twitter.com/wouldntfix/sta…

чтобы написать свои 100 строк, как мне нравится @wouldntfix @nodkz

@nodkz @jsunderhood монга?
Не-не. Oracle / PostgreSQL для реляционных данных и redis/whatever K-V для всего остального. NoSQL для прототипов в основном. twitter.com/denis_nagibin/…

Опыт коллег с монгой всегда одинаковый: сначала "вау, мы сделали все так быстро" и через год полета в проде и тонны CR миграция на oracle

@jsunderhood @wouldntfix я уже никак без Babel и Webpack. Они делают из js вполне сносный язык с кучей плюшек для SPA (single page app).
Подпишусь, но я и PR на github пишу в стиле автора даже если он мне кажется ужасным. twitter.com/nodkz/status/7…

Нельзя влезть в существующий проект и устроить там революцию :) Даже если очень хочется

"RoR сейчас как PHP 5 лет назад" twitter.com/jsunderhood/st…

@jsunderhood а не сталкивался с проблемами, что вотчеры файлов не реагируют на изменения файлов по сети? Если да, то как решил?
Сталкивался. Лечится настройками IDE с одной стороны и "sshfs -o cache=no ..." - с другой twitter.com/esergeev/statu…

@jsunderhood как у вас с удалёнными сотрудниками?
Рабочий процесс, KPI и прочее управление мы будем обсуждать завтра. Если коротко, то если работа сделана в срок, то абсолютно не важно как twitter.com/denis_nagibin/…

@jsunderhood @Addicted_fully а китаец может быть другом? Таким чтобы … не обманывал. 😳
Конечно, китаец может быть вообще любым - их полтора миллиарда, а закон больших чисел никто не отменял twitter.com/taujavarob/sta…

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

Знает 4 других языка, включая польский (встречала с девочкой из Польши 2 года). Гений короче.

@jsunderhood Я сменил проект. Хотя и мог сделать революцию(но это небезопасно). В любом случае, даже если вас съели, у вас есть два выхода 😉
В точку. Я не лезу в проекты, где надо выбирать технологии из полит соображений. Оно и так еле шевелится, а они хотят JS вместо native twitter.com/nodkz/status/7…

Какой у вас любимый второй язык? То есть, если надо написать маленькую утилитку для себя, на чем вы это сделаете?

Btw, давайте обсудим тематические ресурсы. Откуда узнаете про новости технологий?

Я подписан на твиттеры ряда интересных людей + хабр. Наверное как и многие. Чего из забугорного читаете?

Давайте обсудим написание тестов. Любите ли вы их писать, исповедуете TDD, BDD, какие инструменты/либы используете. Вот это все

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

Для веб/гибридных у SAP UI5 есть отдельные инструменты для написания Unit Testов. Стандартные приложения ими покрываются

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

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

В проектах просто есть фаза "тестирования". Сценарии написали, мышкой потыкали, отчет сделали, акты закрыли - все хорошо

В своих проектах у меня есть два подхода: тестирование "широкими мазками", когда я нажимаю на кнопку и жду определенного эффекта

Если его нет - мне все равно кто виноват. Это нужно, чтобы после рефакторинга отловить, что ничего неожиданного не поломалось

Второй подход к тестированию - это выделение отдельных частей приложения и выкладывание в Open Source

Там уже тесты пишутся на уровне hardcore, с учетом всех вырожденных случаев и code coverage под 100%

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

Теперь по инструментам. Jest у меня чего-то не зашел, использую mocha + chai + enzyme + jsdom для написания тестов логики и компонентов

Для coverage - istanbul. В качестве CI для OS - travis CI.

Мне нравятся бэджики на github, для code coverage использую сервис coveralls. Github предлагает в своих интеграциях codecov

Я потратил 2 часа, чтобы понять, что у меня не так, но проблема оказалась на стороне codecov, причем согласно issue tracker - 2 за месяц

Может это просто совпадение, но теперь много людей узнает, что они не очень. Сорян чуваки, shit happens.

🔥Тред (Юрий Дымов)
True, но их надо писать, поддерживать и тестировать. При хорошем уровне покрытия, количество строк в тестах достигает до 50% от sources twitter.com/dr_lexa/status…

TDD у меня пока не получается. Я программирую с 8 лет и когда начинаю кодить, редко представляю, что в итоге получится.Как холст у художника

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

True, но пока вот не получается, хотя пару раз пытался. Надо будет еще попробовать. twitter.com/AAshgaliev/sta…

Btw, тесты сейчас писать модно, но это не отменяет важности хорошей архитектуры и аккуратности. А то открываешь чужой пакет на github,

code coverage 96%, документация аккуратная. Лезешь в код, а там полное спаггети. Так что по мне уж лучше код чище и аккуратнее писать

Breaking news: Safari будет поддерживать Intl API! А я свой polyfill писал, чтобы react-intl мог работать в iOS webkit.org/blog/6978/java…

@jsunderhood а можно было бы просто изредка открывать таблицу совместимости kangax.github.io/compat-table/e…
Чувак, я же не могу заказчику сказать, что ему не нужна интернационализация. twitter.com/chicoxyzzy/sta…

@jsunderhood не говоря о том, что полифилл существует очень давно.
Да, Intl.js с 2013 года, но местами дает другой резалт, весит 150кб, так себе написан и ломает universal rendering. А так он прекрасен, да twitter.com/chicoxyzzy/sta…

Желаю всем приятного вечера :) Завтра начну с ваших вопросов, потом перейдем к темам карьеры, [self-]менеджмента, найму, менторству и тп

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

Среда


Доброе утро! Спешку поделиться крутой новостью, теперь у нас есть npm на стероидах yarnpkg.com

Теперь на моем китайском интернете packages будут качаться куда быстрее, плюс я перестану упираться в проблему no free Inodes на виртуалке

Сегодня я начну с темы найма, потом расскажу о рабочем процессе и менторстве, а закончим мы самообразованием и обсуждением side-проектов

Найм. Если бы я мог дать только один совет, то он бы звучал так: "Измени свой mind set. Это не работодатель выбирает тебя, а ты его"

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

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

ответить "потому что вы делаете это, меня прет, у меня есть релевантный опыт и я могу вам помочь тем-то и тем-то"

Обычно же отвечают "мне интересно то-то или я хочу попробовать". Чуваки, если интересно - книги, видеокурсы, универ, - вот это все. Если

хотите попробовать что-то новое - идите к партнерам. Если у вас получится, приходите к нам через год :)

Это звучит как капитанство, но мы берем 5-7 человек из 100, которых приглашаем на интервью и вот 95 остальных делают эти ошибки

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

Есть еще Beer Test. Если ты не представляешь, что после работы идешь с чуваком пить пиво и общаться "за жизнь", то требования к нему х3

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

Money-oriented сотрудники в лучшем случае будут работать средне, так как будут всегда стараться делать acceptable minimum. Это плохо

🔥Тред (Юрий Дымов)
@jsunderhood ну да, ведь делать на реакте мигающие кнопочки нужно обязательно С ЭНТУЗИАЗМОМ
Зачем мне брать человека, если у него не горят глаза? Если только он не гений, но тогда тема собеседования вообще не про него twitter.com/OhTheAnguish/s…

Если работа не приносит радость, это повод серьезно подумать о жизни. Особенно если еще есть возможность все поменять twitter.com/Misaka42/statu…

Сори, я не так понял. Да, понятно, рутина она всегда случается, но когда ты идешь на интервью - это уже шаг к новой жизни twitter.com/Misaka42/statu…

мне этого уже достаточно, чтобы загорелись глаза и захотелось, чего-нибудь классное сделать

@jsunderhood там все итак же используется файл package.json?
Все также, только команды чуть другие, но работает быстрее и лучше twitter.com/hellbeast92/st…

Если подготовиться и поговорить с людьми, то это уже поможет. У меня есть правило 80/20: 80+% времени работа должна нравиться. twitter.com/Misaka42/statu…

Чуваки, у меня росла ЗП и на 40%, и на 30% в год. Если вы хорошо работаете, вам будут много платить. twitter.com/GolubevVictor/…

У каждого своя мотивация. Меня угнетает, когда мой проект не уходит в production несмотря на то, что мне заплатили. twitter.com/Misaka42/statu…

Если на собеседовании вас спросили про $$$ - хороший знак. Берете потолок вакансии и +15-20%. Даже если не дадут, можно выбить что-то еще

отпуск, подъемные, whatever. Но чаще дают. Больше платят - больше ценят, быстрее карьера растет.

В общем "назову меньше - скорее возьмут" очень плохой совет. Вообще ЗП скорее от самооценки зависит, чем от опыта, умений, etc.

Есть несколько видов мотивации. Вы можете получать очень много и быть несчастным из-за отсутствия призназния/атмосферы/стресса etc twitter.com/GolubevVictor/…

Большая ЗП тут вообще ловушка. Вы ненавидите работы, но не можете уйти, потому что вам никто больше столько не предложит.

Как следствие - деградация, депрессия и всякие нехорошие штуки. Видел такое у клиентов особенно в крупном нефтегазе и в гос. компаниях.

Уровень ЗП, при котором ваши мысли заняты только работой и семьей - это почти дефолт, иначе работать эффективно не получится twitter.com/codemanki/stat…

@jsunderhood ем, ви людей, які ведуть здоровий спосіб життя, принципово не наймаєте?
Хей, не надо так буквально :) У нас свои беговые клубы, спортивные команды и тп. Речь шла о том, насколько человек вписывается в коллектив twitter.com/chorna_kiwka/s…

Почти верно: я ни разу не говорил про небольшую ЗП. Она должна быть адекватна пользе, которую человек может принести компании twitter.com/codemanki/stat…

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

Кстати, когда в конце вью задают вопрос: "Есть ли у вас вопросы?" Их надо задавать. Сколько в среднем кодят в день, как часто митинги

Как ведутся проекты, размер проектов, технологии и тп. Если вы выбираете компанию, то у вас будет 100500 вопросов

@jsunderhood Ну, и что делать, если нет просто нет такой компании, в которой прямо такой хотелось работать? Устроился в одну — вышла фигня.
Делать свою :) Вообще в мире огромное количество компаний, думаю, что какая-нибудь вам все же подойдет twitter.com/ruGreLI/status…

@jsunderhood В требованиях, скажем, отличное знание двух-трёх фреймворков, архитектур и т.п. По факту ничего не внедрено, лишь бы кодил.
Найти будущих коллег в соц. сетях и задать вопросы. Это конечно напряг, но с учетом, что вы выбираете себе будущее на пару лет - стоит того twitter.com/ruGreLI/status…

@jsunderhood А на собеседовании все спрашивают исключительно основы JS, иногда про HTML/CSS/HTTP.
Я спрашиваю про проекты, роль человека на них, смотрю примеры кода, выявляю общий уровень знаний и background twitter.com/ruGreLI/status…

Если вам на интервью встречается такой ханжа и мудак, разворачивайтесь и бегите. Нет ничего хуже упоротого прогера, наделенного властью. twitter.com/jsunderhood/st…
Это мнение тоже имеет право на жизнь. twitter.com/vkozulya/statu…

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

Если у тебя подход, что ты выбираешь работодателя, то ты знаешь, зачем туда идешь. Опыт, связи - вот это все. twitter.com/dr_lexa/status…

Я пошел в SAP, потому что после 3х стартапов захотел: 1) международный опыт 2) научиться управлять командой > 10 человек.

Правда планировал на год-два, получилось на 5

@jsunderhood если не дают shares, то работать больше acceptable minimum будет или джуниор или дурак
Делаешь хорошо - быстрее растет карьера, дают больше денег. Внутри компании делаешь новое решение - получаешь долю. twitter.com/borovikov/stat…

@borovikov @jsunderhood Но поэтому зарплата важна. Иначе я буду думать, как получить больше. Никакой работы в кайф. Нет профита конторе.

@jsunderhood опять же если ты не жуниор практически расти не куда. в архитекторы? в cto? всё обычно уже занято.
Всегда появляются новые проекты и направления. Мой рост: cons -> senior -> team lead -> architect. Дальше хочу в product mgmt twitter.com/borovikov/stat…

@jsunderhood Но ты ж пишешь о другом. Что не должен разработчик о ЗП думать. А должен о любви к работе у вас. Но без ЗП не будет этой любви.
Я пишу лишь о том, что на вопрос: "почему вы хотите у нас работать?", плохо отвечать "потому что много платите". Другого я не писал :) twitter.com/webholt/status…

@jsunderhood через год к вам не придёт он. Ибо у вас ему скучно уже будет. Новое он узнал у ваших партнёров. Зачем ему к вам? 👻 скучать?
Мой опыт говорит об обратном. Особенно во время спадов в экономике twitter.com/taujavarob/sta…

@jsunderhood терпеть не могу этот вопрос. Какой в нём смысл? Ответить: ваше приглашение на собеседование было 26-м в этом месяце?
Давай будем честными. Если ты классный и тебя приглашает future boss, то у тебя будет 1 вью с каким-нить большим чуваком и весьма формальное twitter.com/sharkman/statu…

Ок, давайте перейдем к рабочему процессу. У нас это устроено следующим образом. Есть условный проект. Это может быть очень короткий сервис

от 5 дней начиная или что-то огромное на много-много лет. Для веба и mobile это 3-6 месяцев. Под каждый проект выделяется пул трудодней

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

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

В конце года все трудодни суммируются + по результатам фидбека от клиентов и ПМов раздают слонов, бонусы, повышают и тд

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

🔥Тред (Юрий Дымов)
@jsunderhood а labor unions не против неоплачиваемой переработки?
Ну ты же сам согласился со сроками. Если не вписался, то твой косяк. Я пару раз не брался за работу с нереальными сроками и это ок twitter.com/iamstarkov/sta…

Btw, овертайм естественно оплачивается, если он случился не по твоей вине

@jsunderhood А если задача меняется? Никогда же не бывает что сделал задачу и все, всегда оказывается что клиент хотел другое.
Проектная работа описывается в блюпринте, если Заказчик хочет CR, то он это оплачивает, либо PM решает этот вопрос из своего бюджета twitter.com/freiksenet_ru/…

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

@jsunderhood а это не провоцирует на завышение сроков? Ведь точный срок задачи можно, кмк, можно сказать только выполнив её
Это провоцирует давать safe-оценки. Тут, как и везде, принцип разумности. Будешь перезавышать - работу заберут коллеги или партнер twitter.com/pomidore/statu…

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

Fun fact: один крупный украинский клиент прочитал методологию "Agile" как "отжайл". Напряженный был проект...

@jsunderhood мой вопрос больше про то взгляд на неоплачиваемый овертайм с точки зрения трудового кодекса и профсоюзов
Смотри, тут вопрос кармы. Ты можешь получить 100% денег за переработки, но с тобой потом ни один ПМ работать не станет, если они случились twitter.com/iamstarkov/sta…

по твоей же вине. Оверворк ляжет на бюджет его проекта и если такого оверворка необоснованно много - испортит ему карму

Какое у вас отношение coding/not-coding на работе? Я бы сказал у меня в России было 75:25, где 25 - это встречи и написание docs/proposals.

@jsunderhood овертаймы чаще изза недосмотра менеджмента
Ну тут либо менеджмент платит, либо сам решает свои проблемы. Платит тот, кто виноват. Срок и скоуп фиксированы, поэтому споры очень редки twitter.com/iamstarkov/sta…

@jsunderhood вообще мне кажется существование внутренней конкуренции за участие в проекте не способствует трезвой оценке сроков
Да проекта просто не будет. Если внешний - уведут партнеры, если внутренний - не согласуют бюджет. twitter.com/Sigiller/statu…

Ладно, давайте затронем последнюю тему на сегодня: менторство. Я занимаюсь этим примерно 3 года, также смотрю, как это делают другие TL

Грусть в том, что от вас мало, что зависит. У коллеги подход "няньки", у меня - "спартанский". Спустя 3 года полет примерно одинаковый

Он много работает со стажерами, устраивает учебные сессии, дает много мелких задачек, помогает и подсказывает

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

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

рассказал, что хорошо, а что можно сделать лучше. Потом уходим еще на 2-3 итерации и следующее задание. После 3х заданий можно брать в

проект на подхвате, чтобы учился soft skills: общение с заказчиком, планированию, оценке сроков и тд

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

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

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

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

человек сам не хочет или ему не интересно - ему ничего не поможет. И наоборот - сам справится, если искренне хочет

🔥Тред (Юрий Дымов)
@jsunderhood а зачем «ментор» тем кто с горящими глазами? просто shared codebase с ревью и твоего примера работы должно хватать не?
Адаптация в компании, обучение на чужих ошибках, чтобы дров не наломал, уменьшение порога боли при погружении в новые темы twitter.com/gryzzly/status…

@jsunderhood а можно пример такой сложно задачи?
Ок. Написать приложение, которое забирает и рендерит данные с REST сервиса для человека, который только что впервые открыл Xcode twitter.com/kublyakov/stat…

Задача простая, но если человек не умеет/не хочет самообучаться неподъемная.

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

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

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

@jsunderhood вообще я сторонник смешанного подхода: не сюсюкаться, но предупреждать о roadblocks, чтобы человек не делал тупых ошибок
Глупые ошибки - это лучшее, что может случиться во время обучения. Он не только ее решит, но и все вокруг "перероет" и многому научится twitter.com/mr_mig_by/stat…

Другое дело, если человек не понимает фундаментальные вещи - это действительно надо ловить и направлять в сторону соотв. литературы

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

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

анализ самостоятельно и думать, что делать лучше. Обычно развивает интерес к фундаментальным вещам вроде алгоритмики и устройства ОС

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

@jsunderhood Я вот к чему - это брутфорс метод, можно эффективней. Но вообще, главное обучать :)
Да, соглашусь. Самый интересный фидбек, который я получал, это то, что люди знают, что могут лезть в любой проект, зная, что их twitter.com/mr_mig_by/stat…

прикроют и поддержат как технически, так и организационно, если что-то пойдет не так. Но это уже общечеловеческие вещи - отвечать за слова,

проявлять сочувствие и другие хорошие проявления человечности

@jsunderhood Предсказать, что из этого получится, очень сложно. И выживет тут либо проект, либо джун :D
Не, в первые 2-3 боевых проекта джун всегда идет с батькой. Это уже из соображения бизнеса. Да и заказчик может не оценить twitter.com/webholt/status…

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

@jsunderhood Может, мы у вас интервью возьмём по облачным сервисам?:) В рубрику "Кейсы".
Давайте попробуем. Способы связи со мной dymov.me В личку ответить не смог, так как вы не подписаны на @jsunderhood twitter.com/StartpackMarke…

@mr_mig_by @jsunderhood тут 2 граничных случая менторства, а как-же главное - бест практисес, зачем нужны яз. конструкции и как их применять
Может вы более подробно напишите? twitter.com/grim_juz/statu…

Мне в личку прислали интересную ссылку по саморазвитию в нашей индустрии, с первого взгляда очень годно: fse.guru/growing-as-sof…

@jsunderhood было бы интересно узнать, что делать, если программист рос без ментора, соответственно у него не очень хорошая база
Читать код лучших Open Source проектов, проникаться, вдохновляться и стараться делать также. Много интересоваться лучшими практиками, twitter.com/mi_chilly/stat…

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

теперь вот других учу :) Правда, было бы лукавством не сказать, что мне заложили сильную базу на МГУ ВМиК

@jsunderhood огласите весь список, пожалуйста! (книг)
Воу-воу. Давай я ограничусь теми, которые имели самое большое влияние мое развитие: "Совершенный код", книги Таненбаума и Design Patterns twitter.com/dcromster/stat…

Последнюю я бы сейчас советовать не стал, но то, что она на меня оказала влияние, это не отменяет

@mi_chilly @jsunderhood дефолтный совет в этом мире - "ебашить"
Вот прямо очень лайк :) twitter.com/mr_mig_by/stat…

@jsunderhood А конкретнее? Почему не стал бы?
У меня после перехода на phoenix случилось функциональное программирование головного мозга. Не уверен, что лучшие практики действ. лучшие twitter.com/webholt/status…

@jsunderhood Они прям пишут, что это лучше практики? Запамятовал. Да, без критического мышления книгу лучше не брать в руки.
Это все же старая книга, но все еще стандарт в отрасли. Когда ее писали, в расчет брали 1 CPU / 1 core целевые системы. twitter.com/webholt/status…

Сейчас, когда даже телефоны по 4 ядра имеют, очевидно, что можно архитектуру систем делать лучше с учетом нового hardware.

@jsunderhood И упор на ООП головного мозга. А большая часть книги — костыли для ООП, костыли для языков, копипаста для объёма.
Ну я не столь критично на этом смотрю. Знать anyway надо, потому что ближайшие лет 10 это никуда не уйдет, но вот практиковать... twitter.com/webholt/status…

@jsunderhood Ну там есть полезные практики. Вот только до них нормальный разработчик дойдёт сам быстрее, чем потратит времени на книгу.
Дойти-то, положим, пойдет. Нужно же еще с коллегами общаться на одном языке :) twitter.com/webholt/status…

Жена, когда слышит, как я с кем-то по работе по телефону говорю, понимает только предлоги и союзы :)

Желаю всем хорошего вечера! Завтра начнем с css-in-js и авторизации между frontend и backend. Также принимаю запросы на технические темы

Четверг


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

Но это плохо бьется с темами: 3d party компонент может не вписаться в общий дизайн. Когда я выкладывают в Open Source свои компоненты,

я кладу рядом дефолтный css, который можно импортировать по желанию, а в доке описываю классы, которые использую. У них длинные названия

что существенно уменьшает риск коллизий. В проектах использую jss, пока полет нормальный, но в целом есть ощущение, что best practises

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

А пока, чтобы не скучать, расскажу историю вопроса. Один из главных контрибуторов react-native поленился писать css parser и стал юзать

inline-styles, хотя это считалось плохой практикой. Неожиданно для него эта идея оказалась очень популярна в community и получила широкое

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

🔥Тред (Юрий Дымов)
@jsunderhood от коллизий лучше избавляет префикс у всех классов
Видимо, я не очень точно выразился - префиксы и использую, например react-autocomplete-input-whatever twitter.com/iamstarkov/sta…

What can be used to style react components. Today @jsunderhood is also about styling twitter.com/mxstbr/status/…
Делитесь, у кого есть опыт работы с css modules, jss, aphrodite и radium. Плюсы-минусы, подводные камни twitter.com/frontendgirl/s…

А как вы сделали выбор в пользу css-modules? Может быть рассматривали что-то еще? twitter.com/Misaka42/statu…

Имхо, хороший аргумент. В CSS-modules уровень входа не очень высокий и его возможностей многим хватает twitter.com/Misaka42/statu…

Например, jss для каждого компонента создает в head свой тэг <style>. Когда определенный компонент покидает страницу, то и его стили уезжают

В IE 5-9 кол-во тегов style ограничено 32мя, поэтому сайт может поломаться. Конечно, существуют workarounds, но об этом надо хотя бы знать

@jsunderhood Да там ещё и когда-то количество строк ограничено было, насколько помню.
На эти грабли наступить еще не успел. Спасибо за комментарий - пойду доку почитаю. Bottom line: IE is >.< twitter.com/webholt/status…

Давайте обсудим авторизацию. Это то, что создало мне много боли на одном из проектов. Мы дробили RoR монолит на rails-api и React front

Так как в backend уже был devise было принято решение найти, что-нибудь для него, чтобы можно было использовать токены

Нашли devsite_token_auth github.com/lynndylanhurle… и redux-auth github.com/lynndylanhurle… С виду отличная связка, много плюсиков на github

Внедрили. Словили несколько багов с redux-auth, но с помощью issue-tracker получилось все побороть. Вроде заработало, но не все было ок

Сессия время от времени ломались, также либа не поддерживала universal rendering, что нам было критично. Решили сделать PR, но redux-auth

нам внутри не оч понравилось: много лишнего для нас, dead-code, пара шорткатов, в итоге написали свое: github.com/yury-dymov/red…

Убрали шорткаты, полностью ui-слой, регистрацию по e-mail, так как у нас только SSO. 150кб -> 30кб, плюс работает как надо

Потом еще выкинули и devise_token_auth, так как сессии ломались из-за него. То есть, в итоге с обоих сторон внедрили свое решение

Так как это не jwt, пришлось проводить дополнительный аудит безопасности (успешно). Сейчас уже полгода в проде - полет нормальный

Мораль: звезды на github еще ничего не доказывают, к сожалению. У меня осталось ощущение, что мы потратили неадекватно много времени

В идеале нужна норм реализация jwt и ни devise_token_auth, ни redux-auth, ни redux-oauth вам не нужны. Надеюсь кому-то поможет :)

Поделитесь, что вы используете для подобных сценариев, когда у вас node.js front и не JS back-end. То есть passport и пр. не подходят

🔥Тред (Юрий Дымов)
@jsunderhood так а почему не jwt изначально?
Потому что поверили в devise_token_auth и его 1000+ звезд. Думали, что внедрим за полдня и все будет ок. Ан-нет, увы twitter.com/byPotatoes/sta…

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

Мы начнем с тех. вопросов и быстро перейдем к обсуждению side-projects и стартаперству. А пока - желаю всем хорошего вечера!

Пятница


Доброе утро! Начну, пожалуй, с того, что столкнулся с недопониманием в двух вопросах. 1) Мотивация и деньги. Твит, который вызвал резонанс

был в контексте НАЙМА. Деньги будут платить на любой работе, поэтому отвечать на интервью, что вы хотите работать из-за денег это странно

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

Про "умирать" на проектах. Это отклонение, а не норма. Речь о другом: мы на работе проводим времени больше, чем с семьей. Если есть чувак

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

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

То есть Beer test он не про пиво вовсе :)

🔥Тред (Юрий Дымов)
@MaxMykhailenko @jsunderhood Там вроде как была ещё одна величина в 65к в IE6, но не нагуглилось.
Ага, все минимайзеры бьют файлы то ли по 32к, то ли по 64к символов twitter.com/webholt/status…

@dirtyserpent @jsunderhood нельзя говорить, думать можно)))
Ага, на собеседованиях я порой такие вещи слышу, что удивляюсь, о чем человек думает, говоря это вслух. Например, twitter.com/InPearly/statu…

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

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

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

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

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

То есть, открыть ларек - это не стартап. Написать новый софт без аналогов - стартап

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

В студенческие годы я организовал гейм-сервер одной популярной MMORPG, через которую прошло >200к юзеров за 3 года

После универа со своим научником и несколькими сокурсниками мы сделали QRATOR qrator.net leading Russian anti-ddos solution

После QRATOR я сделал студию по разработке моб. приложений, но она не взлетела

Сейчас, в качестве side-проекта делаем небольшую соц. сеть. Если все будет ок, планируем до конца года уйти в public beta.

То есть, формально 2) и 4) - стартапы, 1) и 3) - нет.

🔥Тред (Юрий Дымов)
Важное уточнение: все эти проекты делались без инвесторов. Я не умею и только 1 раз пытался пытался найти инвестора и оч плохо получилось

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

Общий алгоритм следующий: чем-то сильно увлекаешься ищешь там нерешенную проблему решаешь ее монетизируешь Profit!

Размер задачи должен быть адекватен возможностям 2-3 человек. Примеры Dropbox, MailChimp и Auth0 показывают, что есть найти узкую проблему

и хорошо ее решить, то можно заработать миллиарды, хотя идея лежала на поверхности

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

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

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

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

Чтобы сделать новый крупный проект, необязательно иметь много денег или связей. Вспомните facebook, который Марк запилил за месяц

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

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

🔥Тред (Юрий Дымов)
О side-проектах. Это то, что логично перетекает или не перетекает в стартап

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

Вообще, я наверное не совсем с того начала. Side-проект - это проект, который делается в свободное от основной работы время или в рабочее

время. Side-проект не пересекается с основной работой, как правило. Он может нести одну из трех задач: 1) научиться чему-то новому на

небольшом боевом проекте 2) решить небольшую проблему для души 3) стать прототипом для будущего стартапа

Фрилансерство и прочие подработки side-проектами не являются. Один из важных признаков - вы всегда можете перестать делать side-проект без

ущерба для кого бы то ни было. Моя работа позволяет мне, если я эффективно решаю свои задачи, уделять много времени side-проектам

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

Также недавно появилась возможность делать стартап внутри компании, но он должен быть интересен самой компании и дополнять ее бизнес

С точки зрения ТК все, что вы делаете в рабочее время и/или на оборудовании компании принадлежит ей. Также трудовой договор запрещает мне

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

строго запрещено. Отсюда простой вывод: side-проекты для обучения и для души можно делать в любое время. Если же "растите" прототип для

стартапа, то надо быть аккуратнее. В рабочее время можно пилить части, которые можно выложить в Open Source. В нерабочее - проприетарные

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

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

С другой стороны, у партнеров я видел совсем другой подход. Если человек быстрее делал свою работу, ему просто наваливали еще.

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

🔥Тред (Юрий Дымов)
Мне кажется название и тезис не бьются с аргументами и контентом twitter.com/reklatsmasters…

Там вывод: "знай своего клиента и не пытайся ему причинить счастья на основе своего мировоззрения". Вывод верный, но заголовок о другом

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

работать все же интереснее. Да и по Китаю я часто вижу 60-летних бабушек и дедушек в смартфонах.

🔥Тред (Юрий Дымов)
Последнее, это уже из личного опыта. У чуваков с песком из статьи небольшой объем рынка и маржа тоже. У них и не будет денег на IT twitter.com/reklatsmasters…

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

А раз еще не пришел, то просто рынок ему неинтересен - там мало денег и клиентов. Вот круг и замкнулся.

@jsunderhood А как это оформлено? Всем же надо продукт и побыстрее.
Проекты имеют свойство заканчиваться, да и не 100% времени ты нужен на проекте. Если есть "окно", договариваешься с менеджером и все twitter.com/ruGreLI/status…

С конференциями и курсами чуть сложнее. Нужно вписаться в косты или доказать, что это принесет пользу. Звучит страшнее, чем на самом деле

Коллеги, поделитесь опытом, кто-нибудь уже успел попробовать делать offline? keywords: sw-precache, sw-toolbox, offline plugin

@jsunderhood вы хотите именно в браузере? о моб. приложении речи не идет?
Да, речь о браузерах - это сейчас bleeding edge, как я понимаю. В нативных и гибридных приложениях offline мы знаем и умеем twitter.com/visualwatermar…

@jsunderhood а спрос сейчас в какую сторону у вас движется? Товарищ из SAP говорит, что спрос на аппки в их отделе пропал.
Native пока просел, но мы подписали с Apple недавно крупный договор и сейчас пилим свой SDK под iOS. Где-то через полгода будет новый хайп twitter.com/visualwatermar…

Желаю всем приятного вечера и хороших выходных! :)

Суббота


Всех с началом выходных! Сегодня у нас фристайл: я буду еще около 4х часов отвечать на ваши вопросы и делиться своим мнением о различных

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

Завтра, к сожалению, у меня не будет возможности вести твиттер, поэтому надо все успеть за сегодня :)

@nekrtemplar @jsunderhood Ага, подтверждаю! Парень на фоне конопли на расслабоне запилил офигенскую штуку для вебпаковских юзеров 😂 👍👍👍
+1. Круто, что создатель сам объявился. Он сделал очень крутую штуку и рекомендую всем ее посмотреть и знать, что она есть twitter.com/nodkz/status/7…

Well, yes. Я не стал вдаваться в подробности, так как никто не задал вопросов. Рассмотрю на примере небольшого сервиса, который я сделал twitter.com/minakes_mozhga…

Увлечься: я в прошлом году начал играть в NBA fantasy на sports.ru - собираешь команду из игроков NBA и в зависимости от их статы

в реальной жизни, тебе начисляют очки. Чем больше очков, тем выше рейтинг.

нерешенная проблема: подсчет очков и рейтинга производится раз в сутки, через 8 часов после финала последней игры дня. Люди хотят быстрее

Сами считают с калькулятором или экселем - это не особо удобно и явно напрашивается на автоматизацию

Решение: делаем свой сайт, парсим статистику с NBA.com в режиме онлайн, парсим sports.ru, забирая fantasy команды

Выводим fantasy очки и standing fantasy команд в режиме реального времени. Получаем аудиторию в 500 уников в сутки в среднем

К слову, если у вас 50+, то ваш сайт уже в топ-1 000 000

Монетизируем: google-ads и аналоги не вариант, так как аудитория не очень большая. Добавляем donation и в течение месяца окупаем затраты

на домен и хостинг на 3 года вперед. Ищем fantasy сайты, где можно играть на деньги игрокам из России. Делаем партнерку

Спустя 2 месяца от меня регистрируется 130+ человек. Ввиду кризиса в стране денег приносит мало, но тот же опыт можно масштабировать на

американцев и европейцев и иметь пассивный доход в несколько сотен баксов в месяц.

Profit: много заработать не удалось, но проект изначально делался для души. Если сделать таких 10, что-нибудь точно выстрелит

🔥Тред (Юрий Дымов)
@jsunderhood как найти на это время :)
Отличный вопрос. У нас на работе устроено так, что если ты эффективно решаешь поставленные задачи, то оно у тебя автоматически остается twitter.com/serhey_shmyg/s…

А уж как его тратить, зависит от человека - кто-то side-project пилит, кто-то ЖЖешечку читает и яндекс.маркет изучает

Но это у нас так. В других компаниях времени может не оставаться - тут уже не мне судить конечно

sports.ru меня за спам моего сайта забанил (потом правда разбанил). Какое уж там что-то предлагать :) twitter.com/Addicted_fully…

@jsunderhood хорошие идеи спонтанны. Если сидеть думать что бы за пет проект запилить, ничего толкового не придумаешь, ИМХО.
Отсюда первый пункт: 1) чем-то увлечься. Идеи сами по себе не приходят, зато если что-то надо самому и оно далеко от идеала - вот и кейс twitter.com/serhey_shmyg/s…

@jsunderhood @nodkz ну это нужно сто бы спрашивали тогда. В ру-нете, по моему, SW не очень популярен пока что
Надо это менять! А то буржуи уже год взахлеб рассказывают, как это круто, а многие даже не слышали. twitter.com/nekrtemplar/st…

@ahalizev @nekrtemplar @jsunderhood Я недели 3 курил простые сборки по немецко-английской доке. Бог услышал мои молитвы и я нашел Кантора!
Я сразу нашел и он крут. Другое дело, что advanced features лучше не ботать, пока практический опыт не появится. Иначе тяжко twitter.com/nodkz/status/7…

@nekrtemplar @jsunderhood кстати, кто уже на втором вабпаке сидит? Сколько бабель тюнили? 😈
Жду пока webpack 2 из beta выйдет. Нет желания быть почетным первопроходцем, кто соберет все грабли twitter.com/nodkz/status/7…

Btw, речь идет о learn.javascript.ru/screencast/web… - ссылка на скринкаст по webpack. Очень годно

@jsunderhood кстати я должен был рассказывать на HolyJS про ServiceWorker, но подготовить доклад не успел вовремя 😒🙄
Max Stoiber будет рассказывать про offline, но я бы скорее тебя послушал :) twitter.com/nekrtemplar/st…

Ок, про полезные ссылки и лайфхаки. Начну с облаков. Пробовал: amazon, azure, digital ocean, linode, vultr

digital ocean и vultr: примерно полгода. Оба дешевы, performance на уровне. Оба иногда могут уйти в down на несколько минут.

Для небольшого нового проекта я бы брал недумая. Vultr чуть быстрее, DO - чуть надежнее. Vultr давал больше RAM и CPU за меньше $$$.

Linode брал на пару месяцев, он раза в 2 дороже DO и Vultr, performance тот же, down'а за этот период не было. Репутация на уровне

Amazon, брали по работе. В целом ок, но в какой-то момент нам пришло счастья: "ваша виртуалка умерла без возможности восстановить. Нам жаль"

Нам повезло, что там крутилось middleware и не пришлось расчехлять бекапы, но это безусловно не то, что ожидаешь от лидера рынка,

особенно на enterprise тарифе

Azure: MS дает много халявы для стартапов, называется bizspark bizspark.microsoft.com. Очень хорошая тема. Сижу на ней 2 года - полет ок

Из плюсов: халява, много опций, uptime 100%, большая зона покрытия. Даже на дешевых тарифах данные дублируются у них на 3х носителях

Минусы: на дешевых тарифах performance ужасный, цены кусаются, админ-интерфейс дофига сложный, особенно после DO и Vultr.

Отдельным твитом отмечу суппорт: на свой тикет я ждал ответа 17 дней. 17, Карл! Это вообще ни в какие ворота. Но халява перевешивает :(

🔥Тред (Юрий Дымов)
Двигаемся дальше, если вы пишите тексты, то для английского grammarly.com, русского - glvrd.ru.

Ищут ошибки, правят пунктуацию, помогают делать текст лучше. Купил подписку на grammarly и доволен как слон

topresume.com - бесплатно вычитают ваше резюме и скажут, что плохо. Хороший сервис. С платным сервисом все хуже.

4 раза срывали сроки, включил аббревиатуру СНГ (CIS) в список технологий, которые я использован на проекте. Много странностей

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

@jsunderhood жду 70% скидку. Реально лучше бесплатной версии?
Ага, я сейчас публикуюсь на английском, поэтому мне важно писать не коряво. Премиум выправляет стиль и за это стоит заплатить twitter.com/nodkz/status/7…

smashingmagazine.com - качественный ресурс по современным веб и мобильным технологиям

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

Вторник: рабочие инструменты, опыт работы с технологиями: JS, node, React, RoR, elixir, phoenix, Obj-C, Java, Atom, Xcode, Webstorm, Sublime

Среда: найм, карьерный рост, менторство. Четверг: особенности реализации авторизации, i18n и другие практические use-cases.

Пятница: сайд-проекты, стартаперство и немного про offline для веб-приложений. Суббота: фристайл, лайфхаки и мой фидбек по разным сервисам

🔥Тред (Юрий Дымов)
На этом все :) Я планирую посетить и местами выступить на двух конференциях в Москве: heisenbug.ru и holyjs.ru

Буду рад возможности встретиться там :) Также со мной можно легко связаться через twitter @YuryDymov

Напоследок желаю хороших выходных, щедрых заказчиков и интересных проектов!

Ссылки