Что мотивирует сильнее: Сильная команда, сильный продукт или высокий оффер?
Июль. Год перевалил за экватор. Середина года - это такой мидлпоинт, где у многих начинаются вопросы к своей карьере. Ко мне уже пришло пару человек с вопросами менторства и у всех один запрос "Я не знаю как развиваться. У меня нет мотивации". (напомню, менторством я не занимаюсь)
Какой бы у тебя не был крутой ИПР и продукт, но этого мало для развития. Все зависит не только от нас, но и среды, где мы находимся. Из сотен миллиард планет жизнь зародилась на земле из-за миллионов случайных событий.
Мое менторство вам не нужно) Перечитываю отдельные главы любимой книги прошлого года The Software Enginner's Guidebook. Почитайте эту книгу. Есть отличная главая про поиск и развитие себя. Я уже писал про эту главу и Саша Сычев верно подметил про роль руководителя в комментах.
Давайте чуть глубже разберем важность внешних обстоятельст и как правильно их оценивать:
1️⃣ Как выбирать команду. Сильная команда > сильный продукт. Хорошая команда слаженно справляется даже с трудными задачами. Плохая команда может утопить даже отличный проект и заруинить все бюджеты с ресурсами. Обращай внимание на культуру: доверие, открытость к обратной связи, поддержка роста.
Ты будешь развиваться быстрее в команде, где работают сильные инженеры и здоровая культура
2️⃣ Как выбирать руководителя. Менеджер — это важнейший фактор твоего роста. Хороший руководитель помогает прокладывать путь к новым уровням, дает полезную обратную связь, защищает тебя от лишней политики.
Я всегда стараюсь осознанно подходить к выбору менеджера и чаще матч с ним важнее плюсов к офферу.
3️⃣ Внешние обстоятельства: стек, продукт, контекст. Даже сильная команда не спасёт, если продукт скучный, не вызывает интереса. В компании нет зрелых процессов и всё горит и рушится. Вокруг недоделанные вечные мвп-решения, которые хрупкие и рушатся. А никто вокруг не понимает что делает и зачем.
Все эти пункты очень неочевидны. Иногда высокий оффер затмевает другие сигналы. Через пол года оффер перестанет мотивировать и тогда остается только искусственно поднимать усталость и вялость. Чтобы этого не произошло стоит осознанно подходить к выбору своей работы.
Июль. Год перевалил за экватор. Середина года - это такой мидлпоинт, где у многих начинаются вопросы к своей карьере. Ко мне уже пришло пару человек с вопросами менторства и у всех один запрос "Я не знаю как развиваться. У меня нет мотивации". (напомню, менторством я не занимаюсь)
Какой бы у тебя не был крутой ИПР и продукт, но этого мало для развития. Все зависит не только от нас, но и среды, где мы находимся. Из сотен миллиард планет жизнь зародилась на земле из-за миллионов случайных событий.
Мое менторство вам не нужно) Перечитываю отдельные главы любимой книги прошлого года The Software Enginner's Guidebook. Почитайте эту книгу. Есть отличная главая про поиск и развитие себя. Я уже писал про эту главу и Саша Сычев верно подметил про роль руководителя в комментах.
Давайте чуть глубже разберем важность внешних обстоятельст и как правильно их оценивать:
1️⃣ Как выбирать команду. Сильная команда > сильный продукт. Хорошая команда слаженно справляется даже с трудными задачами. Плохая команда может утопить даже отличный проект и заруинить все бюджеты с ресурсами. Обращай внимание на культуру: доверие, открытость к обратной связи, поддержка роста.
Ты будешь развиваться быстрее в команде, где работают сильные инженеры и здоровая культура
2️⃣ Как выбирать руководителя. Менеджер — это важнейший фактор твоего роста. Хороший руководитель помогает прокладывать путь к новым уровням, дает полезную обратную связь, защищает тебя от лишней политики.
Я всегда стараюсь осознанно подходить к выбору менеджера и чаще матч с ним важнее плюсов к офферу.
3️⃣ Внешние обстоятельства: стек, продукт, контекст. Даже сильная команда не спасёт, если продукт скучный, не вызывает интереса. В компании нет зрелых процессов и всё горит и рушится. Вокруг недоделанные вечные мвп-решения, которые хрупкие и рушатся. А никто вокруг не понимает что делает и зачем.
Все эти пункты очень неочевидны. Иногда высокий оффер затмевает другие сигналы. Через пол года оффер перестанет мотивировать и тогда остается только искусственно поднимать усталость и вялость. Чтобы этого не произошло стоит осознанно подходить к выбору своей работы.
Modern Mutex
Я уже писал, что пару моих знакомых сеньоров заворачивали на собесах за "несовременность".
Им отказывали ответами "решил классическую задачу архаичным GCD". Комментировать адекватность таких решений я не могу, но это говорит, что нужно тратить немного своего внимания на хайповые и зумерские штуки. Даже если вы никогда их не затроните в проде из-за тяжести легаси🫣
Из-за чего могут посчитать GCD критически вредным легаси и архаичным? Мы не будем пока глубоко погружаться в Swift 6 и Sendable, но попробуем вкратце, что использование очередей GCD и объявления типов как @unchecked Sendable может часто работать, но смешение GCD с Swift Concurrency — потенциальный источник проблем.
Для этого многие авторы в сети предлагают использовать swift-concurrency-ориентированный подход. С использованием Synchronization Framework. Относительно недавно вот вышел новый Mutex. Чем он отличается от привычного нами Lock? Ну там нет прямого lock()/unlock(), а вместо этого withLock
Зачем он нужен и когда поможет?
- он более совместим с легаси кодом. Он сам является Sendable, поэтому можно безопасно оборачивать не‑Sendable типы, такие как NSBezierPath, Array и т.п.
- Дает синхронный доступ без async/await
- Меньше накладных расходов по сравнению с actor
Полезные ссылки:
- Modern Swift Lock: Mutex & the Synchronization Framework
- Synchronous Mutual Exclusion Lock 🔒
- Mutex in Swift Lang
Я уже писал, что пару моих знакомых сеньоров заворачивали на собесах за "несовременность".
Им отказывали ответами "решил классическую задачу архаичным GCD". Комментировать адекватность таких решений я не могу, но это говорит, что нужно тратить немного своего внимания на хайповые и зумерские штуки. Даже если вы никогда их не затроните в проде из-за тяжести легаси
Из-за чего могут посчитать GCD критически вредным легаси и архаичным? Мы не будем пока глубоко погружаться в Swift 6 и Sendable, но попробуем вкратце, что использование очередей GCD и объявления типов как @unchecked Sendable может часто работать, но смешение GCD с Swift Concurrency — потенциальный источник проблем.
Для этого многие авторы в сети предлагают использовать swift-concurrency-ориентированный подход. С использованием Synchronization Framework. Относительно недавно вот вышел новый Mutex. Чем он отличается от привычного нами Lock? Ну там нет прямого lock()/unlock(), а вместо этого withLock
private let count = Mutex<Int>(0)
count.withLock { $0 += 1 }
Зачем он нужен и когда поможет?
- он более совместим с легаси кодом. Он сам является Sendable, поэтому можно безопасно оборачивать не‑Sendable типы, такие как NSBezierPath, Array и т.п.
- Дает синхронный доступ без async/await
- Меньше накладных расходов по сравнению с actor
Полезные ссылки:
- Modern Swift Lock: Mutex & the Synchronization Framework
- Synchronous Mutual Exclusion Lock 🔒
- Mutex in Swift Lang
Please open Telegram to view this post
VIEW IN TELEGRAM
Apple Developer Documentation
Synchronization | Apple Developer Documentation
Build synchronization constructs using low-level, primitive operations.
What is Mobile System Design?
В чем ключевое отличие мобильного сисдиза от бэкенда? Я не сразу стал мобильным разрабом. До этого я писал пару лет сайты на php, node.js, немного на go. Потом был react и react native разрабом и только потом стал iOS. Сюда я пришел по любви и здесь мне нравится.
Насмотренность и опыт мне помогает сравнить несколько платформ на разных уровнях. И часто я вижу многие заблуждения когда инженеры живут только в одной платформе и в своем вакууме. Одно из таких заблуждений "Что такое System Design?".
Хороший ответ дает второй мой любимый автор Tjeerd in 't Veen, автор книги Mobile System Design, регулярно генерит отличный контент. В своей статье он разбирает отличную тему "что такое мобильный систем дизайн?".
Я много раз писал, что вокруг неё много заблуждений. Системный дизайн - это отдельная дисциплина, которую невозможно понять без реальной практики на крупных проектах. Это как отдельная категория водительских прав.
Все нюансы не соберешь. Чтение статей и просмотр видосов — полезно, но недостаточно. Это как учить язык только по книгам и видеоурокам. Без разговорной практики ты не начнёшь по-настоящему понимать носителей и хорошо звучать.
В отличие от бэкенд архитектур — мобильные имеют ряд ключевых отличий:
🟣 оффлай, синхронизация данных, пуши, диплинки, модульные кодовые базы, кроссплатформенность, постоянные изменения продукта и операционной системы.
🟣 UI фреймворки. Мы уже знаем что выбираем SwiftUI для простых экранов, а UIKit для сложных.
🟣 Релизы и раскатки. Мобильная апка — это один бинарник на устройствах, который нельзя быстро отменить после установки (либо заранее сильно проработав этот момент). Это требует высокого качества перед релизом, тк ты не откатишь предыдущую сборку.
🟣 Архитектура растет не по числу пользователей, а по количеству фич и команд, участвующих в проекте. Это приводит к необходимости модуляризации и новой организационной координации
🟣 При большом количестве пользователей даже мелкая ошибка может повлиять на сотни тысяч человек
Мобильный сисдиз — это впервую очередь проектирования работы приложения под его особенности и жизненный цикл. Это другая дисциплина. Она фокусируется на нюансах релиза, ресурсов, работы мобильных приложений. И чем больше ваше приложение, тем больше нужно учитывать и тем больнее ошибки.
В чем ключевое отличие мобильного сисдиза от бэкенда? Я не сразу стал мобильным разрабом. До этого я писал пару лет сайты на php, node.js, немного на go. Потом был react и react native разрабом и только потом стал iOS. Сюда я пришел по любви и здесь мне нравится.
Насмотренность и опыт мне помогает сравнить несколько платформ на разных уровнях. И часто я вижу многие заблуждения когда инженеры живут только в одной платформе и в своем вакууме. Одно из таких заблуждений "Что такое System Design?".
Хороший ответ дает второй мой любимый автор Tjeerd in 't Veen, автор книги Mobile System Design, регулярно генерит отличный контент. В своей статье он разбирает отличную тему "что такое мобильный систем дизайн?".
Я много раз писал, что вокруг неё много заблуждений. Системный дизайн - это отдельная дисциплина, которую невозможно понять без реальной практики на крупных проектах. Это как отдельная категория водительских прав.
Все нюансы не соберешь. Чтение статей и просмотр видосов — полезно, но недостаточно. Это как учить язык только по книгам и видеоурокам. Без разговорной практики ты не начнёшь по-настоящему понимать носителей и хорошо звучать.
В отличие от бэкенд архитектур — мобильные имеют ряд ключевых отличий:
Мобильный сисдиз — это впервую очередь проектирования работы приложения под его особенности и жизненный цикл. Это другая дисциплина. Она фокусируется на нюансах релиза, ресурсов, работы мобильных приложений. И чем больше ваше приложение, тем больше нужно учитывать и тем больнее ошибки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Mobilesystemdesign
What is Mobile System Design?
What is Mobile System Design? Learn how system design applies to modern mobile apps, why it matters, and what makes it different from backend system design.
В какой момент вы обсуждаете аналитику при разработке?
Anonymous Poll
32%
Обязательно до начала разработки. Это очень важно как для продукта, так и для тех.решений
26%
Стараемся до начала разработки, но важность исключительно продуктовая
9%
Когда как. Нам без разницы
11%
Чаще в конце разработки, но хотим в начале
10%
Чащк в конце и норм
7%
Вообще не думаем об аналитике
5%
Другое
Небольшой ликбез по терминологиями. Часто слышу "другой контекст, изоляция", и поэтому хочется этот момент убрать.
Одна из ключевых концепций Swift Concurrency — это изоляция. Впервые о ней сказали с темой акторов в SE-0306:
Actors protect their state through data isolation, ensuring that only one task can interact with that state at a time.
Что это значит? Isolation — это механизм, с помощью которого акторы защищают состояние, и дают доступ к нему только одной таске в момент времени. Это и есть основа потокобезопасности в новой модели.
Каждый актор имеет serial очередь из тасок. Любые async-методы актора автоматически ставятся в очередь и выполняются по одному. Мы уже помним, что в рантайме при вызове await создается таска и кладется в очередь актора. Рантайм гарантирует, что только одна задача исполняется внутри актора в любой момент времени. Это делается через Cooperative Task Scheduler.
isolated контекст — это когда мы внутри актора. non-isolated context — это все за границами актора: код вне, статические методы, любые другие акторы и тп. Чтобы попасть внутрь другого контекста нужно дождаться очереди через await. Условно как охраник, которые требует пропуск перед входом.
Есть еще специальная пометка nonisolated. такой метод не зависит от изоляции. Он может вызываться из любого потока, без await, не выполняется через очередь актора и не имеет доступа к изолированным свойствам.
Но использовать nonisolated нужно аккуратно если :
В следующем посте поговорим про чекеры и Swift 6
Полезные ссылки:
- SE-0306 – Actors
- Isolation, actors, sendable… a concurrency deep dive
4/5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Повторение — мать учения. Мы уже прошлись по теории, теперь перейдем к практике.
Чтобы не отставать от рынка я и пишу в этом канале. В этой подборке мы узнаем:
Другие подборки задач:
- Сборник задач по синхронизации асинхронных тасок: GCD
- Шаблон для собеседований № 2
- Подборка задач на Swift Concurrency
- Вопросы для собесов по Swift Concurrency | часть 1
Please open Telegram to view this post
VIEW IN TELEGRAM
Isolation, actors, sendable… a concurrency deep dive
Для любителей видео есть топ контент. Здесь автор доступно объясняет в чем же соль изоляции. Напомню, что эта ментальная концепция с Swift 6 станет ключевой. Настолько, что даже попадаются вакансии для временных подработок по обновлению Swift Concurrency чекера на разных проектах.
Так что GCD и правда становится чем-то архаичным и опасным для тех, кто прошел огонь и воду борясь с ошибками компиляции SC в крупном проекте.
Короче, если вы в эту тему еще не погрузились и у вас еще нет цели избавиться от варнингов в проекте — самое время)
Для любителей видео есть топ контент. Здесь автор доступно объясняет в чем же соль изоляции. Напомню, что эта ментальная концепция с Swift 6 станет ключевой. Настолько, что даже попадаются вакансии для временных подработок по обновлению Swift Concurrency чекера на разных проектах.
Так что GCD и правда становится чем-то архаичным и опасным для тех, кто прошел огонь и воду борясь с ошибками компиляции SC в крупном проекте.
Короче, если вы в эту тему еще не погрузились и у вас еще нет цели избавиться от варнингов в проекте — самое время)
YouTube
Isolation, actors, sendable… a concurrency deep dive
Speaker: Donny Wals
With Swift 6 being available in Xcode right now, more and more people are taking the plunge and trying out the Swift 6 language mode in their projects. And often they switch back to Swift 5 quickly. The errors, the warnings, how does…
With Swift 6 being available in Xcode right now, more and more people are taking the plunge and trying out the Swift 6 language mode in their projects. And often they switch back to Swift 5 quickly. The errors, the warnings, how does…
Деградация кодовой базы или code rot
Еще одно популярное заблуждение среди программистов — это код, написанный один раз, всегда остается свежим и рабочим. Забавное совпадение. Почти все мои сложные фичи были большими и с долгим релизным циклом от пары кварталов до года. Я это не выбирал, а как-то само тянуло.
Это значит, что фичи, которые я делал, долго лежали и ждали своего запуска. Накапливая много бизнес-логики и фичей. И только потом был жирный и большой релиз. В динамичном меняющимся проекте, где десятки пулл-реквестов в день, это очень стрессовые условия. И если ты изначально не позаботишься о защите, то будет очень больно. Например фичи:
🔴 Безопасность нетворк слоя и пин-коды. Это фича была в сберздоровье. Где основная логика была в том, что время жизни любого нетворк запроса было равно 5 минутам. Для его "прогрева" мы юзали пинкод как в банке. Здесь мало верстки, но много запутанной логики от чего рождался не менее запутанный код 😄
🟣 Мультипрофиль и авторизация. Еще одна большая фича, которую мы делали год в Авито — это мультипрофили. Это сложная логика которая меняла флоу и всю инфу об аккаунте: мессенджер, избранное, тарифы и тп. А аккаунты могут быть личные или компании.
🔘 Текущая фича (пока под NDA)
Везде желательно продумывать архитектуру так, чтобы code rot был минимальным. Чтобы в момент запуска мы не обнаружили, что пока код лежал год в пыли, он сломался и развалился. Не сломали соседние команды ключевой функционал, а на релизе не всплыло тысячи багов.
В книге Mobile System Design есть крутые правила как минимизировать ущерб:
1️⃣ Проектируй архитектуру, поддерживающую рост. И нет, архитектура — это не про TCA/VIPER/MVP. Это про модуляризацию и масштабируемость.
- Нужно делить фичи на независимые модули
- задумываться о меньшей связи (low couplin)
- упрощать тестирование и замену отдельных модулей.
2️⃣ Делай Self-sufficient features. Это фичи, которые минимально зависят от других фичей напрямую. Общались либо через абстракции, либо через протоколы. И не протекали друг в друга (leaky boundaries)
3️⃣ Использовать BFF (Backend For Frontend). BFF позволяет адаптировать API под конкретные нужды клиента, не нагружая мобильное приложение избыточной логикой.
4️⃣ Фичатоглы, автотесты, contract-first программирование, четкие границы ответственности модулей и инкапсуляция логики. Все это не просто "догмы", а при осознанном программировании и долгих релизах — спасение.
Какие антипаттерны приводят к быстрой деградации?
- Использование глобального состояния (Привет TCA и синглтоны)
- Сквозные зависимости между модулями.
- Повторение бизнес-логики в разных частях приложения.
- Сильная связанность UI и логики (fat ViewControllers).
Полезные статьи:
- Choose Boring Technology
- Coupling and Cohesion
- Legacy Code Rescue: Taming a Thousand-Line View Controller
Еще одно популярное заблуждение среди программистов — это код, написанный один раз, всегда остается свежим и рабочим. Забавное совпадение. Почти все мои сложные фичи были большими и с долгим релизным циклом от пары кварталов до года. Я это не выбирал, а как-то само тянуло.
Это значит, что фичи, которые я делал, долго лежали и ждали своего запуска. Накапливая много бизнес-логики и фичей. И только потом был жирный и большой релиз. В динамичном меняющимся проекте, где десятки пулл-реквестов в день, это очень стрессовые условия. И если ты изначально не позаботишься о защите, то будет очень больно. Например фичи:
Везде желательно продумывать архитектуру так, чтобы code rot был минимальным. Чтобы в момент запуска мы не обнаружили, что пока код лежал год в пыли, он сломался и развалился. Не сломали соседние команды ключевой функционал, а на релизе не всплыло тысячи багов.
В книге Mobile System Design есть крутые правила как минимизировать ущерб:
1️⃣ Проектируй архитектуру, поддерживающую рост. И нет, архитектура — это не про TCA/VIPER/MVP. Это про модуляризацию и масштабируемость.
- Нужно делить фичи на независимые модули
- задумываться о меньшей связи (low couplin)
- упрощать тестирование и замену отдельных модулей.
2️⃣ Делай Self-sufficient features. Это фичи, которые минимально зависят от других фичей напрямую. Общались либо через абстракции, либо через протоколы. И не протекали друг в друга (leaky boundaries)
3️⃣ Использовать BFF (Backend For Frontend). BFF позволяет адаптировать API под конкретные нужды клиента, не нагружая мобильное приложение избыточной логикой.
4️⃣ Фичатоглы, автотесты, contract-first программирование, четкие границы ответственности модулей и инкапсуляция логики. Все это не просто "догмы", а при осознанном программировании и долгих релизах — спасение.
Какие антипаттерны приводят к быстрой деградации?
- Использование глобального состояния (Привет TCA и синглтоны)
- Сквозные зависимости между модулями.
- Повторение бизнес-логики в разных частях приложения.
- Сильная связанность UI и логики (fat ViewControllers).
Полезные статьи:
- Choose Boring Technology
- Coupling and Cohesion
- Legacy Code Rescue: Taming a Thousand-Line View Controller
Please open Telegram to view this post
VIEW IN TELEGRAM
Dan McKinley :: Math, Programming, and Minority Reports
Dan McKinley :: Choose Boring Technology
О спорте.
Кто не знал, но я много занимался спортом. Мой батя - учитель физкультуры и тренер по самбо. С 11 лет 3 года я занимался дзюдо, потом еще 3 боевым самбо. Даже достиг неплохих результатов и занимал призовые места в серьезных турнирах Казахстана.
Спорт был напарником в учебе. Батя всегда говорил, что это для характера и дисциплины. Хотя я не всегда любил то, чем занимался, он не обманул)
Спорт правда дал какой-то фундамент принципов и базы, которая независимо от профессии и дисциплины всегда была основой. Да и в целом канал пропитан темой боевых единоборств.
Приехав в Москву и уже месяц утопая в рутине я понял как мне его не хватает. Хотя я и забыл многие вещи и сильно растерял форму за многие годы без единоборств, но записаться в крутой зал бразильского джиу джитсу хочется до сих пор. В Москве говорят это не просто спорт, а братство. Да и в целом отсутствие регулярных спортивных сильно забирает силы. Делает вялым.
У меня будто начинает развиваться болезнь сдвгшника.
Если у вас тоже есть желание закалять себя через мужицкие потные занятия, то пишите в лс. Скооперируемся пока вообще не раскуфели.
Кто не знал, но я много занимался спортом. Мой батя - учитель физкультуры и тренер по самбо. С 11 лет 3 года я занимался дзюдо, потом еще 3 боевым самбо. Даже достиг неплохих результатов и занимал призовые места в серьезных турнирах Казахстана.
Спорт был напарником в учебе. Батя всегда говорил, что это для характера и дисциплины. Хотя я не всегда любил то, чем занимался, он не обманул)
Спорт правда дал какой-то фундамент принципов и базы, которая независимо от профессии и дисциплины всегда была основой. Да и в целом канал пропитан темой боевых единоборств.
Приехав в Москву и уже месяц утопая в рутине я понял как мне его не хватает. Хотя я и забыл многие вещи и сильно растерял форму за многие годы без единоборств, но записаться в крутой зал бразильского джиу джитсу хочется до сих пор. В Москве говорят это не просто спорт, а братство. Да и в целом отсутствие регулярных спортивных сильно забирает силы. Делает вялым.
У меня будто начинает развиваться болезнь сдвгшника.
Если у вас тоже есть желание закалять себя через мужицкие потные занятия, то пишите в лс. Скооперируемся пока вообще не раскуфели.
This media is not supported in your browser
VIEW IN TELEGRAM
Ну и мотивирующего вайба вам из инстаграмов🤣
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка статей про развитие своего «визибилити»
Слово визибилити мне не нравится. Его использовали уже лет 5, но сейчас еще чаще. Да и я напрямую его не качал. Все как-то само и органически. Но вижу как много «блогов» начало развиваться в эпоху чатгпт и хочется не скатиться в такую же посредственность в гонке за видимость.
В чате сообщества мы часто обсуждаем современные проблемы найма. Последний год стало еще хуже:
🔘 огромное число фейковых резюме сломало поиск всем. И новичкам, и старичкам. Даже сеньоры не могу пройти фильтр рекрутеров и попасть на собесы под тысячами однотипных резюмешек
🔘 работодатель перестал пользоваться хх и другими старыми инструментами. После функции «авто-отклик» ему за час прилетают тысячи спам сообщений, в которых не хочется разбираться.
🟡 Резюме — уже не главный источник правды.
Решения этим проблемам логичные:
- начали появляться закрытые клубы, сообщества, конференции. Да да, на конфы нужно ходить не ради докладов, а чтобы выйти напрямую к рекрутерам. Для этого конфы и делают.
- реферальные системы стали эффективными. Теперь к словам проверенных инженеров доверяются лучше, чем к прошлым системам найма.
- менторство. Слышал Авито начал делать коллабы с менторами солвери и гетментор, чтобы те сразу призывали подготовленных спецов за хорошие реферальные бонусы. Хорошая стратегия.
- начали смотреть не только на визибилити твоего резюме, но и тебя как инженера: коммиты в опенсоурс перестали быть шуткой, выступления на конфах стали лучше цениться. Да и в целом твои цифровые следы стали более важными в общей метрики видимости.
Мир изменился. Просто быть хорошим инженером уже недостаточно. Важно быть заметным. Видимость это ваш новый способ пройти сквозь шум, обойти фильтры и показать, кто вы есть на самом деле.
Вот в целом полезные статьи как с умом качать видимость:
- Personal Branding for Developers – A Step‑by‑Step Handbook
- How to gain visibility as a software developer?
- What does visibility really mean for engineering teams?
Слово визибилити мне не нравится. Его использовали уже лет 5, но сейчас еще чаще. Да и я напрямую его не качал. Все как-то само и органически. Но вижу как много «блогов» начало развиваться в эпоху чатгпт и хочется не скатиться в такую же посредственность в гонке за видимость.
Visibility — это ваша узнаваемость, доверие и репутация. Это то, что помогает вам не утонуть среди тысяч других кандидатов.
В чате сообщества мы часто обсуждаем современные проблемы найма. Последний год стало еще хуже:
Решения этим проблемам логичные:
- начали появляться закрытые клубы, сообщества, конференции. Да да, на конфы нужно ходить не ради докладов, а чтобы выйти напрямую к рекрутерам. Для этого конфы и делают.
- реферальные системы стали эффективными. Теперь к словам проверенных инженеров доверяются лучше, чем к прошлым системам найма.
- менторство. Слышал Авито начал делать коллабы с менторами солвери и гетментор, чтобы те сразу призывали подготовленных спецов за хорошие реферальные бонусы. Хорошая стратегия.
- начали смотреть не только на визибилити твоего резюме, но и тебя как инженера: коммиты в опенсоурс перестали быть шуткой, выступления на конфах стали лучше цениться. Да и в целом твои цифровые следы стали более важными в общей метрики видимости.
Мир изменился. Просто быть хорошим инженером уже недостаточно. Важно быть заметным. Видимость это ваш новый способ пройти сквозь шум, обойти фильтры и показать, кто вы есть на самом деле.
Вот в целом полезные статьи как с умом качать видимость:
- Personal Branding for Developers – A Step‑by‑Step Handbook
- How to gain visibility as a software developer?
- What does visibility really mean for engineering teams?
Please open Telegram to view this post
VIEW IN TELEGRAM
freeCodeCamp.org
Personal Branding for Developers – A Step by Step Handbook
In this handbook, you'll learn how to build your personal brand as a developer to help you make your mark in the tech industry. With a focus on practicality and professionalism, this guide is designed for developers at all levels, from industry vete...
Swift Concurrency: Swift 6 и чекеры
Swift 6 сломает ваш код. Это заключительный пост почему GCD будет считаться архазимом и почему после Swift 6 многие будут опасаться использовать его и брать разрабов только со знанием Swift Concurrency.
Это не просто обновление, а полноценный геймченджер в плане тред-сейфти. Теперь этот язык по-настоящему strict by default.
Что это значит?
Инженер теперь должен думать "А безопасно ли это для многопоточности?" на каждом шаге при работе с async, Task, class, var, и замыканиями:
1. переменные класса должны быть защищены от одновременного доступа
2. Все замыкания в Task должны быть безопасны для многозадачности
3. объекты с изменяемым состоянием нельзя бездумно передавать между тасками
4. нужно захватывать self безопасно: или через @MainActor, или через actor, или избегай shared mutable state.
Что должен переосмыслить инженер?
- изоляция уже часть архитектуры. Теперь появится actor mindset и нужно думать что будет актором, а что просто структурой или классом.
- thread safety уже обязательно. Теперь комплиятор будет не запускать приложение, если увидит потенциальную проблему.
- теперь нужно юзать TaskGroup, DetachedTask, async let почти всегда
Это значит, что придется не просто писать и проектировать "хороший код", а "хороший безопасный код".
Важные ресурсы:
🔘 SE‑0302 — Sendable и @Sendable замыкания. Основа потокобезопасности.
🔘 Strict concurrency for global variables. Чуть про глобальные свойства
🔘 Incremental migration to concurrency checking. Полезный инструмент для миграции.
5/5
Swift 6 сломает ваш код. Это заключительный пост почему GCD будет считаться архазимом и почему после Swift 6 многие будут опасаться использовать его и брать разрабов только со знанием Swift Concurrency.
Это не просто обновление, а полноценный геймченджер в плане тред-сейфти. Теперь этот язык по-настоящему strict by default.
Что это значит?
Инженер теперь должен думать "А безопасно ли это для многопоточности?" на каждом шаге при работе с async, Task, class, var, и замыканиями:
1. переменные класса должны быть защищены от одновременного доступа
2. Все замыкания в Task должны быть безопасны для многозадачности
3. объекты с изменяемым состоянием нельзя бездумно передавать между тасками
4. нужно захватывать self безопасно: или через @MainActor, или через actor, или избегай shared mutable state.
Что должен переосмыслить инженер?
- изоляция уже часть архитектуры. Теперь появится actor mindset и нужно думать что будет актором, а что просто структурой или классом.
- thread safety уже обязательно. Теперь комплиятор будет не запускать приложение, если увидит потенциальную проблему.
- теперь нужно юзать TaskGroup, DetachedTask, async let почти всегда
Это значит, что придется не просто писать и проектировать "хороший код", а "хороший безопасный код".
Важные ресурсы:
5/5
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучший вывод из конфы Авито - вопрос из зала: «какая судьба мобильного разработчика в мире BDUI?». Какой ответ вы бы дали?
iOS Makes Me Hate
Лучший вывод из конфы Авито - вопрос из зала: «какая судьба мобильного разработчика в мире BDUI?». Какой ответ вы бы дали?
Лучший ответ — идите в мессенджеры или в видео
Forwarded from Записки инженера
This media is not supported in your browser
VIEW IN TELEGRAM
Новое приложение рокет банка, или что получается, когда дизайнер забывает пить таблетки
P.s. Весит на устройстве это чудо 500 мб, больше сбера
P.s. Весит на устройстве это чудо 500 мб, больше сбера