Архив недели @katleta3000
Понедельник
Всем привет! С вами Женя Ртищев на эту неделю. Работаю в Сбере уже почти 4 года, а вобще 10 лет занимаюсь разработкой под iOS.
Эту неделю буду раскрывать вам внутренности мобильной разработки самой большой мобильной команды России (у нас 183 iOS-ника на проекте 🙀🤯)
Набросал темы, добавляйте:
- Большая команда: почему / как / устройство / шаринг / CR / автоматизация / обучение / релиз
- Код: объём / legacy / Obj-C vs Swift
- Компания: развлечения / бенефиты / бюрократия / дресс-код / еда / график
- Self: как успевать / управлять / выгорание
@mobileunderhood @inlinable А сколько они в среднем ждут мержа? Сколько машин у вас на CI и как вы поддерживаете такие объемы на нем?
Давай я про это отдельный пост сделаю 👆 Отличный вопрос 👍 twitter.com/ObjCandTwits/s…
165 разработчиков работает над одним приложением. При этом административно они состоят в различных командах, которые принадлежат крупным бизнес-единицам (трайбам), каждый из которых имеет собственные KPI и цели. Буду расширять контент через вложения. Если непонятно – спрашивайте)
Всего над СБОЛ (Сбербанк Онлайн) работает около 90 команд. Есть особый платформенный трайб, который поддерживает сборку, качество приложения, следит за кодовой базой, выставляет требования, разрабатывает Core-компоненты и чекеры, развивает DevOps. Моя роль – PO iOS Core-команды.
Одно из важных общекомандных мероприятий – Demo iOS Core Team. Популярное событие, а главное очень полезное: iOS-ники из бизнес-команд узнают про новые требования, последние улучшение и новые возможности Core-компонентов, а потом помогают донести изменения до PO своих команд 💪.
Минутка смешных моментов: когда ты пытаешься питаться по расписанию, 4-й приём выпал на Demo, а ты ведущий 🙃
Чуть подробнее про наш платформенный трайб. Основные задачи: улучшить TTM, поддерживать качество, performance и целостность приложения, обеспечивать регулярные релизы, развивать Core-фичи и компоненты. А также частенько брать в руки лопату и разгребать 💩 после feature-команд 😩
Пока Женя в @mobileunderhood пытается рассказать вам что-то серьезное, просто хочу вкинуть что после последнего @AppsConfRussia на афтепати мы охеренно зажгли в караоке под Оксимирона. Вот такие эти мобильные разработчики многогранные 🙂
Тем временем я нормально подрепетировал ЛСП с Оксиком) Пора повторять 🖖🏾 twitter.com/v1sarRU/status…
Структура внутри трайбов достаточно плоская: есть лидер трайба и PO отдельных команд. Немного отдельно стоят роль технического лидера трайба (главный по технологиям по всем стримам) и роли Delivery-лидов по направлениям (Mobile, iOS, Android, Release). Ещё скоро будут тимлиды 😎
Summary за сегодня:
- Мы познакомились
- Вы узнали про наше устройство и структуру
- Sbergile в картинках
- 165 разработчиков реально работают
Как вам такой формат? (ставь 👍)
Завтра будет про код, архитектуру и Code Review.
Послезавтра – трубки, сборка, модуляризации, DoR-ы.
Не стесняйтесь кидать вопросы и вбросы – стараюсь не пропускать, плюс вы напрямую влияете на контент. Осталось всего 6 дней, чтобы раскрыть секретики 😉
Кстати, был вопрос про контакты:
Link – linkedin.com/in/evgenii-rti…
FB – facebook.com/profile.php?id…
Telegram - t.me/katleta3000
Вторник
@mobileunderhood Женя, а расскажи, у вас бывают типичные "терки" между платформенными и продуктовыми командами? Типо в продукте считают, что в платформе бездельники ("тесты медленные, CI лежит опять!!1"), в платформе — что в продукте все могу только кнопки красить. Как работаете с этим?
Несомненно 🙃 Вводим метрики: скорость вливания, сборки, Crash Free, показываем, доказываем. На демо стыдим команды, которые допустили баг в ПРОМе, а мы пофиксили. Важно: растим культуру, уважение, делегируем core-задачи прикладным энтузиастам. Иногда перерабатываем 😞 twitter.com/KathrinPetrova…
Первый коммит Сбербанк Онлайн был создан аж в 2011 году. Кто ещё может похвастаться таким богатым Legacy? 😆 Изначально разработку вела компания ID EAST (до сих пор существует). Ещё примечательно что человек, создавший первый PR, и сегодня работает в компании как раз в платформе)
Упрощённая схема устройства приложения и принципов его сборки.
Таргет приложения находится в основной репе. В ней же исторические модули (большинство уже Legacy). Есть ~120 отдельных репозиториев, внутри которых лежат модули (+ их тесты, демо app-ы).
Дальше в тред 👇
Модули отдельных репозиториев компилируются с fat binary и заливаются во внутреннюю систему хранения артефактов. Дальше с помощью fork-а Carthage бинарники скачиваются и линкуются к основному таргету приложения. Это сильно помогает уменьшить скорость сборки приложения.
Про сам Sberthage был доклад в Avito летом 2018. Кому интересно – можете посмотреть youtube.com/watch?v=c6n2-l…
Немного про многообразие языков в проекте. В 2011 проект создавался на Objective-C, и до сих пор большая часть кода написана именно на нём. Многие таргеты живут по принципу "работает – не трогай", другие признаны Legacy. Все новые модули пишутся на Swift. А как у вас? Есть 🦕🦖?
Ждал что кто-то спросит про время загрузки в память приложения с таким большим количеством фреймворков или хотя бы как они линкуются. Но видимо это проблемы только нашего приложения 😁 Поэтому просто скажу, что мы умеем загружать модули в память после старта приложения. Больше 👇
У нас долгое время была динамическая + отложенная линковка (truly lazy loading). Сейчас больше смотрим в сторону статики. Lazy-модули могут прогружаться после запуска, если ядра свободны, либо on demand. Про lazy loading здесь можно узнать детали: youtube.com/watch?v=Ikc19b…
Кстати что думаете про идею и реализацию? 😏
forbes.ru/newsroom/tehno…
Крайняя схемка на сегодня. Завтра ехать на обучение 🤓 В каждом крупном проекте с легаси есть магия 🧙♀️Например, у нас есть кодогенирируемый общий модуль, который содержит весь общий API. Он прилинковал к любому фреймворку, так осуществляется межмодульное взаимодействие.
NSProxy внутри перенаправляет вызовы к реальному фреймворку. Если он не загружен и при этом lazy, то он как раз поднимается и остаётся в памяти. Кодогенерация привязана к вызову
sberthage update
, поэтому никаких рассинхрона нет 💪 Опять же подробнее в Вовином докладеТак-с! Схемки вам, смотрю, не заходят 🤔 у меня есть вопрос для себя: что думаете по поводу animoji? Юзаете?
Среда
Сегодня выездное обучение (хотя скорее мотивирующий event) для людей которых немножко диковато у нас называют IT-магнитами 🧲🤔
Какие полезные обучения вы помните? Мои:
WWDC 2019
Групповая депрокрастинация от Дорофеева
Андрей Скворцов: «Как эффектно публично выступать»
У Сбера есть свой корпоративный университет со смузи-шотами, СПА и обучением ☺️ Сегодня я как раз здесь.
Сходите автором в коллективный твиттер. Все знают, что туда приглашают только настоящих профи. А вы тем временем можете рассказать про организацию митапов, личную эффективность, структуру своей команды, релокацию и хобби.
Вот вам краткая инструкция от мастеров своего дела как не чувствовать себя самозванцем (или как умело создавать вид матёрого, успешного и востребованного IT-специалиста 🙃 Есть свои ноу хау? twitter.com/igrekde/status…
У нас 3 недели назад произошёл reload системы Code Review, и скорость вливания выросла в 3 раза. Теперь при создании любого PR создаются лейблы. Для каждого лейбла есть необходимое количество апрувов и группа уполномоченных ревьюверов. На примере merge Release –> Develop
Как можно догадаться из названий лейблы назначаются по изменённым модулям (пример Insurance, Messenger), есть лейблы трайбов (PFM, DBP), есть специальные релизные лейблы. Кроме этого есть лейблы для новичков, провинившихся и требующих повышенного внимания к Swift.
Внутри каждого лейбла может быть от 3 до 43 людей. При создании каждого PR есть shuffle, и рандомные 6 человек из лейбла добавятся как default reviewers к PR. Но апрув засчитается и от любого другого ревьювера, принадлежащего лейблу.
Кроме лейблов есть и другие настройки: min total approves = 3, не должно быть NW (не важно от кого) и заведённых tasks к PR, ну и билд должен быть зелёным.
Пост дня. Я вам тут покидаю наши трубки отдельных модулей (да, стадии могут быть разные, есть ещё основной репозиторий, где собирается таргет приложения и гоняются UI-тесты) – а вы поспрашиваете что интересно 😉 Всего 18 урн (16 на разработку утилизируются), используем Jenkins.
Ну если вас не удивили обычные трубки, то зацените вот эту! Вряд ли у кого-то в компании есть автоматический запуск инструментов (пока Leaks) на прогоне 😎. Это прямо совсем свежачок. Ребята кто реализовывал уже поделились сложностями на Heisenbug: heisenbug-moscow.ru/2019/msk/talks…
На правах члена ПК AppsConf приглашаю вас подаваться на весеннюю конференцию. CFP уже открыты, вот вам прямая ссылочка conf.ontico.ru/lectures/propo…
А кто не хочет выступать как спикер – накидайте плиз темок, которые хотели бы услышать 👀👂Или чего не хотите)
А ещё хочу провести небольшое анкетирование на предмет на какие конференции вы ходите, на какие хотели бы попасть и что мешает / отпугивает вас. Для этого скиньте ваши телеграм ники, я вам напишу. Заранее респект вам в карму (а может быть и не только респект).
Четверг
Что-то сегодня сгораю 🔥, и пока нет времени сделать осмысленный пост. Есть вопрос: исследовали ли вы свою загруженность на работе по дням недели? Какой день у вас самый горячий и почему? У меня это уже давно понедельник (по статистике закрытых в Todoist задачах), потом четверг.
Toxic 🐍: пришёл тут в Касперский на iOS-митап. Первые 2 доклада пока совсем мимо: слайды оформлены плохо, доклады без цели и очень поверхностны, спикеры чуть-чуть умерли на старте. Остаётся надежда на 3-й 🙃
3-й доклад🔥. @kudinovdw показал live demo как с помощью Hopper обойти авторизацию, а с помощью Frida вызвать в runtime публичный Swift symbol. Напряжённо, бодро, местами с юмором и очень скиллово 🤟💪
Решил как-то один бывший «коллега» попиариться за счёт Сбербанка. В результате в разработку прилетела задача «придумать защиту», и с тех пор есть скрипт Игнат, который на каждом PR проверяет что в ресурсах нет перс. данных
the-village.ru/village/city/n…
А какие проверки есть у вас?
Пятница
Как вы думаете гуманно ли стрелять в людей на работе для повышения производственной эффективности и налаживания трудовой дисциплины? 😈
Собеседования. Всем более-менее ясно, как проверять hard skills, и чуть менее понятно, как вскрыть soft skills. Поделитесь своими секретами, вымученными уроками, что нужно не забыть узнать, спросить, проверить у кандидата — специалиста, менеджера
Нужно спросить что он думает про своих бывших коллег, проверить на толерантность к ключевым аспектам специализации (айтишника – к технологиям, проджекта – к моделям управления, дизайнера – к средам и геям) и обязательно задать задачку про презервативы и 4-х бисексуалов 👌👨👨👦👦 twitter.com/produnderhood/…
Суббота
Между тем, у аккаунта праздник, открыт набор в 4-ю тысячу 🥳 Рабочая неделя закончилась, поэтому про Сбер больше не пишу 🙃 А в выходные вас ждёт поток мыслей по тому как заходить в отрасль, как не выгореть, как сделать что-то крутое 😎
Мне кажется, что процесс метаморфозы современных мобильщиков (из прилежного студента до разраба с зп 180к+) стал слишком быстрым. По моим последним наблюдениям – это 2-3 года. Если не апают в компании – идёшь в другую (сейчас рынок просто завален вакансиями). Грустно... 😰
Я вот начал писать под iOS в конце 2009 под iPhone 2G. Я учился на 4-м курсе, рынок стали заполнять мобилы. Приложений и фирм ещё не было. Нельзя было писать даже свои собственные общественно публичные приложения (они стали доступны с iOS 3.0), процветала Cydia 💪
Два моих одногруппника в 2010 сделали фирму Peregrins (она до сих пор жива – peregrins.ru) и начали брать приложения под заказ. Привлекли и меня, дали мне Macbook 2008 с Core 2 Duo и сразу же проект. За первый год я заработал 40к и поучаствовал примерно в 5-6 проектах.
Запустился из них только один – приложение для компании Palich, и оно долго жило в AppStore и продолжало работать без поддержки. Ещё были проекты для таких компаний как Цезарь Сателлит, Yota и много-много no-неймов.
Был проект для @ekuyda, который жёстко пр#бали, потому что вообще не понимали как адекватно оценивать сроки и риски – потонули в интеграциях с ещё одной заказной командой, которая делала backend. Самая популярная сфера на тот момент – соц. сети, я успел сделать три с 2010 по 2011
Всё это время я был единственным разработчиком, который перенял умение хоть как-то рисовать вьюшки от друга (@pavelpanov), и пришло осознание что пора развиваться (только через 2 года). Я решил устроиться на первую офисную работу.
В мае 2011 я устроился в компанию по разработке приложений с indoors-навигацией (делали аппы для Золотого Вавилона и выставок), зп была 40к в месяц. Привет, @apachik и ребятам из neonavigation.com. Я приобрёл первый полноценный опыт работы в команде. Но в iOS я был один 😰
Закончились 3 месяца лета, и пора было выходить на крайний курс университета: объявил что не могу работать 40 часов в неделю, договорились на 20, при этом за те же деньги. Это была сделка века. В нахлёст я начал делать ещё один удалённый проект – Yolki (habr.com/ru/company/gla…)
Весной 2012 я полностью перешёл в Yolki. Мы запустились, это был аналог Secret своего времени (но взлететь мы так и не смогли), пошли проблемы с оплатой и инвестициями. Осенью 2012 я вышел из проекта. Я начал сомневаться в своём говно-коде и захотел поработать в крупной команде.
В Афише было интересно и комфортно. За год работы я поработал в 4-х проектах: Афиша, Афиша-Мир, Афиша-Вино, Афиша-Еда (с нуля). Само приложение Афиша мне казалось чересчур сложным, но крутым (в нём просто была архитектура, доставшаяся от аутсорс-компании). Но паттерны я не знал.
Уходил из Афиши в 2013 я вслед за несколькими лидерами команд делать революционно новый стартап в сфере travelling. Апнул зп с 100к до 120к. Тогда предел рынка был на уровне 150к.
Corner – был нереально крутой стартап, начиная от идеи, команды до показателей. Обязательно посмотрите видосик: media.licdn.com/embeds/media.h…
Помню где-то в конце 2014 года к нам подсоединился @rbsgn и сделал итерацию для приложения часов – media.licdn.com/embeds/media.h…
Рома, сори, но мы потом всё сделали заново 🙃 Хотя твой код был супер. Я его тогда не мог ещё до конца оценить 😁.
К сожалению кризис 2014 нас всё же добил и мы разошлись (хотя до сих пор соблюдаем славную традицию и периодически ходим на Corner-завтра старым составом).
8 февраля 2016г открывается веха новейшей истории моего профессионального пути, и я выхожу в штат компании Сбербанк-Технологии на позицию руководителя направления. И вот здесь я пересекаю наконец-то границу в 180к за 6 лет 😉
Дальше увольняется мой руководитель, и я негласно занимаю его место, собираю свою первую команду и судорожно закрываю сгорающий проект. Хочу отметить что проект мы закрыли, а компания так и не предоставила нам рабочую технику 🙃. Дальше мы делали RND-проект лично для ГОГ.
Примерно через год работы началась тотальная агилизация, и я стал PO 2-х платформенных команд по разработке внутренней мобильной платформы для сотрудников на React Native. Так продолжалось до очередной трансформации, после которой наша команда осталась не у дел.
Я отпустил ребят, искренне радовался когда они находили интересные вакансии (но плакал в душе примерно до 5-го ушедшего). А потом летом 2018 мне предложили присоединиться к команде СБОЛ (Сбербанк Онлайн).
На тот момент у меня уже был принятый оффер от компании SkyScanner, и с начала 2019 я должен был работать в Лондоне. Я перешёл в СБОЛ на позицию разработчика в команду iOS Push и втянулся.
Этим августом я перешёл в СБОЛ-платформу и стал PO команды.
Мне кажется, хотел я начать тред именно с рассуждений про зумеров в iOS, но ушёл в какую-то биографию. Надеюсь вы, 🦖, порефлексируюте и найдёте закономерности, сравните со своим путём и дополните чем-то интересным 😎
Про путь становления мобильным разработчиком👇.
Кажется, что самоучки сейчас не очень востребованы в компаниях. Новый тренд – это школы и курсы, их уже очень много на рынке, есть платные и бесплатные. Некоторые компании (как Сбер) сразу после курсов предлагают трудоустройство.
Что я лично вижу плохого в такой истории: людей затачивают выполнять определённые вещи в определённом стиле. Самое⚡️: если их научили ещё делать это и неправильно. В результате разработчик может оказаться несамостоятельным и не очень-то системно мыслящим (хорошо, если он инженер)
Плюсом конечно является сразу хороший базис основных направлений для разработчика: работа с памятью, архитектура, паттерны, UI / UX, многопоточность, работа с git.
А вот дальше есть ещё одна проблемка: можно выйти в команду, которая занимается чем-то узкопрофильным (например, работает с пушами или делает движок для отрисовки экранов), и ты будешь выполнять рабочие задачи, но ты джун, который так и не попробовал создавать приложение с нуля
Поэтому идеальный флоу пока начинается так:
Завершить школу/курсы
Устроиться в команду, которая разрабатывает целостное приложение (либо приложения)
Дальше стоит укрепить знание с помощью литературной классики: чистый код, разработка через TDD, идеальный программист и др.
Первые года 2 чистой практики я бы делал приложения в команде. Потом можно заняться чем-то инфраструктурным: многомодульность, оптимизации компиляции и линковки, тулинг, создание CI / CD с автоматизацией проверок, разработка чекеров.
Дальше вы начнёте серьёзно выгорать 💥 и нужно будет понять на какой стул садиться: расти как инженер, уходить в лидерство (тимлид, проджект, PO и т.д.).
Можно попробовать залезть в обучение и спикерство – меня, например, спасает. В самообучении есть один важный финальный шаг – это трансляция собственных знаний на массы. При подготовке вы структурируете собственную информацию, а ещё подвергаете сомнению знания, отвечая на вопросы
Как инженер можно уходить в хардкор, либо T-shape. Плюс, наверняка, у вас к этому моменту уже будет не один Pet-проект для души и как вотчина для наслаждения своим господством и отсутствием требовательного хозяина над душой.
Как у вас проходило инженерное становление? Есть ли идеи что можно было выбросить из вашего пути, а что поменять местами?
Воскресенье
В крайний день своего постинга хотелось бы затронуть тему развития и выгорания. Почему они в одном твите? Потому что для меня между ними есть зависимость: выгорание начинается когда наступает стагнация в развитии 🧐.
Когда процесс получения новых знаний и навыков останавливается, мы начинаем активно раздражаться от рутины, чувства собственной незначимости и имбецильности окружающих. Люди в IT – инженеры по большей части, а пытливый ум инженера всегда должен получать активную нагрузку.
Идеальная нагрузка на работе – это восходящая пила. Важно чтобы были периоды возрастающей нагрузки и периоды условной релаксации. Период нагрузки больше релаксации. При этом каждый раз нагрузка достигает некого нового максимума – это позволяет повышать предел вашей ёмкости 📈
Но всегда есть некий абсолютный предел нагрузки и интереса, который вы готовы переварить. У каждого он свой и зависит от множества факторов (психотип, возраст, семья, цели, зона комфорта, амбиции). Более того график приближения к этой точке – это некая синусоида.
Дальше расскажу про свои техники сопротивления и борьбы с приближающимся моментом возтухления и профессионального (а иногда и просто жизненного) упадничества.
Рецепт 1: pet-проекты. Это ваша маленькая отдушина где вы свободны в выборе стека, целей проекта, можете попробовать любые технологии и с удовольствием писать код, который никто не увидит. Плюс вы можете поработать с новыми людьми и сделать что-то крутое, а может и революционное.
Когда я понял что совсем перестал писать код при разработке мобильной платформы в СберТехе, я почувствовал острую необходимость поддерживать свои собственные скилы на адекватном уровне. В этот момент мне переслали пост в FB о том что некий дизайнер @mikaelkapanaga ищет напарника.
За 9 месяцев мы сделали небольшое, но стильное приложение. Оно отлично стартануло – попали в волну хайпа в дизайнерских пабликах, получили около 4k инсталлов за неделю. Позже получили серебро на ProductHunt, очень подогревает стабильный MAU
И да! Качайте: hourly-app.com
Многие спрашивают: "Где найти время на pet-проект?". Первую версию Hourly я разрабатывал пока ехал на МЦК от станции Шоссе Энтузиастов до Кутузовской – это примерно 26 минут. Как раз один 🍅. Время всегда можно найти, главное – научиться работать микро-итерациями и не отчаяться.
Рецепт 2: публицистика. Попробуйте изложить ход своих мыслей и поделиться знаниями через статью / посты / паблик. Первую статью для Habra я написал в 2011, тогда я конечно не выгорал, но хотелось понять какой отклик в моей душе вырабатывается от данного процесса. Попробуйте и вы!
Рецепт 3: спикерство. Почти тоже самое, но не совсем. Больше волнения, вы на виду, но и куда больше возможностей для работы с аудиторией. Первый раз я выступил на Mobius 2016 с темой про реактивный MVVM. Боже как я волновался, а в конце очень растерялся на вопросах 😰.
Рецепт 4: обучение. Классная история, востребованная и очень полезная для вас самих: прокачаете свои soft скиллы, плюс систематизируете собственные знания, укрепите лидерскую позицию. Можете стать наставников / менторов внутри компании, можете повести какие-то внешние курсы.
Первый раз я попробовал себя в роли преподавателя в 2016 на портале GeekBrains – тогда они были почти единственными. Мне очень не понравилась их программа, поэтому свой курс я вёл по собственной методике, в результате получил рейтинг 4.7 из 5. Немного обманули по деньгам в конце)
Рецепт 5: физическая активность. Здесь всё очевидно: наша профессия часто приводит ко многим неприятным физическим последствиям, поэтому нужно создавать активное противодействие. Физическая усталость перекрывает психологическую. И человек эволюционировал и мыслил в движении 🦍.
Рецепт 6: возглавить IT-активность. Это самый социальный и публичный способ, поэтому точно не для всех. Сюда я отношу ведение тематических пабликов, курирование спикеров в качестве ПК конференции, проведение подкастов, видеоблогов и прочих странных форматов и мероприятий 🙃.
Рецепт 7: попробовать себя не в IT. Отлично перезагружает. Я, например, делал 2 фудкорта, торговал цветами на 8-е марта. Помогло осознать, что IT я люблю всё же больше.
P.S. Нашёл тут даже статью на Хабре про то как IT-шник делал фудкорт 😁: habr.com/ru/post/272543/
Рецепт 8: состязания. Бросьте себе вызов и примите участие в хакатоне, чемпионате по программированию, просто позависайте на Hackerrank.
Кстати, успеть бы сегодня пройти квалификацию VK Cup🙃. Кто не понимает зачем это делать – посмотрите 3-й доклад 😉: youtube.com/watch?v=1e5_5d…
Рецепт 9: длительный отпуск. Пока приберёг, но понимаю что это классный вариант разобраться с насущными проблемами и собственными тревогами, переживаниями и желаниями. Я говорю про неоплачиваемый отпуск порядка 2-3-х месяцев.
Есть кто использовал такой рецепт?
Рецепт 10: сменить локацию. Этим вариантом я планировал воспользоваться и переехать в Лондон, но пришлось отсрочить данный способ (не говорю что не воспользуюсь им в будущем).
Кто ещё какие рецепты накидает? Советы даю по собственному опыту и мировоззрению, поэтому, вероятно, показал не все способы. Интересны ваши 👏
Моё время подходит к концу, а значит пора прощаться 😰. Скажу честно – мне понравилось вести аккаунт, это был интересный challenge, старался рассказать какие-то интересные и релевантные вещи про Сбер, и главное не забыть про своё мнение и отношение к разным аспектам.
Напомню о чём была эта неделя:
Большая команда Сбербанка
История приложения СБОЛ
Устройство и архитектура
Данные с реальных пайпов
Интересные тулзы: Instruments на CI, Игнат
Моменты из жизни внутри компании
Как ступить на путь разработчика
Как не выгореть
Я с 2013 не пользовался твиттером, а оказывается он жив, и многие IT-знакомые им пользуются 🧐, поэтому я решил попробовать дать ему ещё один шанс 🙃. Все кому понравились мои твиты – добавляйтесь в друзья @katleta3000. Обещаю с НГ начать выкладывать похожий контент⚡️
Всем продуктивного года! Развивайтесь, холиварьте, двигайте рынок вперёд. Надеюсь эта неделя была не провальная, и какой-то контент вызвал у вас интерес и резонанс 💥. Накидайте 👍, если понравилось.
У меня всё! 👋