iOS Makes Me Hate
3.94K subscribers
1.16K photos
169 videos
15 files
1.33K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Всегда ходите на собеседования

Мы привыкли о чем-то задумываться, лишь когда петух клюнет в жопу. Начиная от здоровья и заканчивая работой. Сложно сказать когда появился совет "проходить собесы каждый n-месяцев". Уж точно, до появления айфонов. Но он всегда актуальный. Это как регулярный чекап. Плюс в чат, если тоже на него забиваешь.

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

Автор статьи рассказывает почему IC8 инженер из Меты посоветовал ему всегда быть "острым":

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

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

🟣Всегда нужно иметь на руках несколько предложений. Так вы увеличиваете шансы улучшить условия.

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

Ну а лучшие материалы для подготовки и чат с практикующими разрабами из всех компаний мира тут 😬
Please open Telegram to view this post
VIEW IN TELEGRAM
18
Не ходите часто по собеседованиям

В противовес предыдущему посту я хочу поделиться своими и чужими мыслями почему не стоит часто ходить на собесы. Основано на реальных данных.

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

Рынок вакансий все меньше, а значит и выбора.

🟣Вас забанят. Компании замораживают ваш статус на полгода/год и повторно пройти интервью нельзя.

Это особенно критично при внезапной потери работы.

🟣Рост внутри компании лучше. Выражу непопулярное мнение, но не всегда скачки по компаниям это хорошо. Чаще новое место может быть всего на 10-15% больше от текущего бюджета. Задачи, процесс и коллектив хуже. На долгосрочной дистанции это скорее проигрыш, а не победа. Прыгая туда сюда, в поисках себя, можно потерять драгоценное время. Начать разгоняться и быстро остановиться, заново собирая ресурсы и вникая в работу.

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

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

Навык прохождения собеседований никак не связан с постоянным и долгосрочным перформингом. Когда у тебя 6мес.-1 год опыта в компаниях, то скорее всего ты мало чему научился и быстро сменил место работы как только тебя раскусили
Please open Telegram to view this post
VIEW IN TELEGRAM
13
Премиальные услуги и товары в цифровой экономики

Сейчас у меня подготовка к мини-курсовой, где я выбрал тему «цифровая экономика и премиальные услуги». Неудивительно почему.

Во-первых, нет ни одной технологии лучше айфонов. Во-вторых, всю свою жизнь я старался быть продуктовым iOS разработчиком в лучших компаниях мира. Я болел и переживал сделать продукт высокого качества. Учился у них и впитывал опыт. Писал в конце концов на лучшем языке программирования Swift. Пришел в ит ради творческой свободы.

Много изучаю литературы и историй всяких товаров лакшери сегмента: Dyson, айфоны, Tesla, тачки, недвигу. Изучая это все сильнее меня поглощает желание сделать что-то свое. Эстетика этих продуктов очаровывает.

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

Поделитесь, какие услуги и товары вы считаете в категории премиум? Или довольны их высочайшим уровнем качества?
11
Инвестиции в долгосрочную или в погоне за инженерностью

Продолжаю читать книгу “the software engineer guidebook” и уже могу сказать, что она лучше предыдущих книг автора.

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

- инженер А растет в одной компании. Из Джуна растет в мидла, из мидла наконец в сеньора. Из сеньора он хочет расти в стафф. Тут он упирается в потолок и чаще всего хочет поменять работу. В других компаниях многим предлагают Грейд ниже текущего. Это его не устраивает и он остается на месте или в привычных условиях.
- Инженер Б также растет в карьере и меньше задумывается о грейдах. Вместо пушинга своего менеджера он меняет стэки, где может даже упасть в грейде. Но он меняет свою среду и зону комфорта. Со временем его опыт и знания выделяются независимо от грейда и должности. Так, повторяя эту кривую, он в итоге приходит к позициям или достижениям.

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

Я могу на практике подтвердить эти мысли.
Все чаще новые менти ищут ту самую «инженерность». Хотят заполнить внутреннюю пустоту и достигнуть той самой просветленности.

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

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

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

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

Дойти же до верхней планки с каждым годом все сложнее. Менторов тут нет, а каждый, кто мог бы им стать, не хочет инфоцыганить. Или одержим развитием, экспериментами и самокопанием. Эта планка не зависет от грейдов, должности и компании. А ощущается на уровне собственного восприятия.

Многие не доходят: идут в инфобиз, менторство, менеджмент или уходят из ит. В этом нет ничего плохого, но все же дошедших до конца, выполнивших честно норматив без халтуры, с каждым годом все меньше. Вопрос «а что же нужно сделать, чтобы чувствовать себя инженером?» все острее.

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

Те, кто стоит на месте, все дальше от требований. А спрос все растет.

Мы все в погоне за инженерностью и тем самым мифическим инженером, чей опыт и знания сразу выделяют в нем просвященного.
195
This media is not supported in your browser
VIEW IN TELEGRAM
Найди 10 отличий
Скоро у нас будет подкаст с разработчицей из Apple, кто разрабатывает апи SwiftUI, контрбьютит в Swift и написала пара пропозалов.

У вас есть возможность накидать свои вопросы. Пишите в комменты или мне @lvbond
5245
Product Minded engineers

Продолжаю читать на отпуске лучшую книгу про карьерный рост «the software engineer’s guidebook». В ней поднимается тема опыта работы в продуктовых командах. О продуктовом мышлении говорят многие, но лучше формулировки, чем в этой книге, я пока не встречал.

Успешный оффер давно перестал быть только требованиям к техническим скиллам

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

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

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

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

Почему product minded engineers становятся более привлекательными специалистами?

🟣проактивность

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

🟣понимание бизнеса

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

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

🟣любопытство

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

🟣сильные коммуникативные навыки.

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

🟣находит компромиссы.

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

🟣находит конструктивные корнеркейсы.

Продуктовый инженер ищет реалистичные корнер-кейсы, а не те, что возникнут с ничтожно малой вероятностью

🟣быстрые циклы разработки.

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

🟣комплексные навыки в решении проблем.

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

Если вы еще не начали ее читать, то очень советую.
Please open Telegram to view this post
VIEW IN TELEGRAM
91
А я напоминаю, что сейчас последние дни скидок и скоро выйдет много уникального контента:
🟣 подкаст про систем дизайн глазами руководителей и инженеров
🟣 воркшоп по Swift Concurrency
🟣 интервью с крутой иос разработчицей из Apple
🟣и много других полезных подборок

Успевай взять по-настоящему уникальный и полезный контент, чтобы потом не жалеть. На бусти и в телеграмм.
Please open Telegram to view this post
VIEW IN TELEGRAM
52
Media is too big
VIEW IN TELEGRAM
Лучший ответ на вопрос «да зачем мне ваши алгоритмы?». Как минимум виза и неплохой доход.

Делаем свой бесплатный марафон по алгоримам?
33114
Умная подготовка к решению алгоритмических задач

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

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

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

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

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

В статье подробно расписаны основные техники, которые могут встретить в реальности
7
Важный опрос

Вы решили пойти учиться на итшника. Перед вами выбор пойти в лучшие факультеты страны. Какой вы бы выбрали?
Anonymous Poll
20%
Гриффиндор
5%
Пуффендуй
13%
Когтевран
22%
Слизерин
29%
Куда прошел бы на бюджет
10%
Там, где меньше всего учатся
Какие книги формируют мышление тру инженеров

Я, наконец, снова начал регулярно читать. За месяц плюс 2 книги. Это очень важное упражнение для концентрации и тонизировании своего ума. Следующий год у меня будет еще более насыщенный. Лайтовые прогулки мне не дают буста и приходится повышать нагрузки.

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

Так я формирую полезный список книг. В догонку про мышление тру инженеров делюсь интересными подборками книг:
- какие книги формируют мышление тру инженера
- Топ-10 книг, которые помогут айтишнику прокачать инженерное мышление
- Booking on developing a programmers/engineers mindset
- 10 Books Every Engineer Should Read

Вы же можете покидать свои любимые книги для инженеров
110
Можно ли «пройти итшечку» или почему в it нет потолка

Иногда встречаю фразы в интернете «прошел итшку», «дошел до потолка рынка». Обычно это пишут 22 зим от роду менторы, которые утомились от разработки и ушли из найма обучать доверчивых новичков. Я считаю такой путь тупиковый.

Я никогда не видел тех, кто ушел из IT, и потом не вернулся. Мы все здесь навсегда. В одном тесном котле. Просто меняется род деятельности.

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

На лицо эффект Данинга-Крюгера. Тут есть две причины, почему человек говорит о потолках в it, сразу после окончания универа.

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

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

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

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

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

Мы уже выяснили, что быть хорошим инженером — это не только классно красить кнопки, но и целый лист требований, которые расширяются. Мы уже писали про Product Minded Engineers.

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

В статье дал такие определения:

🟣Хороший инженер хорошо общается письмено и устно. Его работа напрямую зависит от сотрудничества.

🟣Хороший инженер понимает процессы. Не сабботирует их, а помогают улучшить, либо нарушить.

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

🟣Хороший инженер проактивен. Нет необходимости просить его писать тесты или документацию. Он делает лучше легаси, рефакторинг, тестирование. Его качество всегда максимально подходящее под текущие обстоятельства.

🟣Хорошие инженеры упрощают. Они занимаются модульностью, стратегии для тестирования и адаптируются под сложность.

🟣Хороший инженер постоянно учится. Он не боится публично признать свои ошибки и знает, что в следующий раз сделает лучше.

🟣Хорошие инженеры командные игроки. Они распознают проблему и предлагают решение. Они не бросают проблему за ограду и не просят других ее исправить.
Please open Telegram to view this post
VIEW IN TELEGRAM
9
☕️ Как я баг исправил, который не могли найти два года

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

Я всегда ищу интересные задачи: помогаю коллегам на работе; менти; беру небольшие подработки, если мне интересен проект. Так я улучшаю карму, повышаю навыки, выходя за границы привычных задач и, конечно, зарабатываю 🤡

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

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

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

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

Окей. С логами понятно, но что будем трекать?

Если зависание главного потока, то здесь на помощь приходит Watchdog. О стандартном механизме мы уже когда-то писали, но я напомню. Watchdog — это механизм, который помогает отслеживать проблему блокировки потока. Я же написал свою реализацию, чем-то похожую на эту.

Так. Мы научились понимать когда main thread завис. Теперь нам нужно как-то понимать что стало причиной его зависания.

Тут тоже все тривиально. Мы берем Stack Trace и записываем его в файл и отправляем в Firebase. Стандартный
Thread.callStackSymbols
мне не подходил, так как не давал понятной информации. Да и мне хотелось сделать универсальный механизм, который может принимать любой поток и получать его колстэк.

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

Дополнительно сделал экран в дебаг меню, который записывает в формате "Date -> Thread.callstack" логи. Чтобы можно было сразу мне отправить лог, как только получили зависание.

После релиза, спустя десяток минут, я получил первый лог. В нем сразу была показана причина зависания. Это был мертвый код, давно ушедшего разраба. Связан он был с расширения кэша картинок для либы SDWebImage

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

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

Делитесь своими метриками, которые помогли решить редкие баги
Please open Telegram to view this post
VIEW IN TELEGRAM
466
Сегодня 01.11 у меня др

Завтра я этот пост удалю, не хотел его писать, но вдохновился постом Дурова на свой др.

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

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

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

Наверное, я заметил, что все чаще меня вдохновляют люди. Мне нравится, как ребята сами приходят с просьбами менторства. Хотя я не рекламирую своих услуг, их доверие для меня важно. Также важно, что это уже опытные специалисты, а не новички, которым часто наивно ссут в уши недобросовестные люди, но они выбрали более качественный путь. Пришли на путь истинный 😬 Где кидают респект за смелость быть собой и философию развития фундаментальных навыков, инженерного подхода и радикальной честности. Это все мотивируют идти дальше.

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

В нем всегда одна философия — быть полезным себе и другим.

Мы сделали первыми:
- выигрывали телеграм конкурс. Интересно кста перечитывать посты того времени
- Решали алгоритмы 365 дней
- Создавали апку "Симулятор иосника"
- Создали комьюнити
- устроили марафон по проектированию
- Сделали ютуб
- И кучу всего другого

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

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

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

Поддержать вы его можете конечно же тут 🤡
Please open Telegram to view this post
VIEW IN TELEGRAM
25720
повтор чужого опыта — это скучно

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

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

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

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

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

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

Авторская картина. Уникальный дизайн. Собственный путь. Индекс цитирования. Это не всегда нужно, но гораздо веселее, чем повторять за другими.

Не будем жалкими пародиями, а станем неповторимыми оригиналами. Наполним себя уникальной экспертизой и творческой энергией
18
💎 БУМ! Воркшоп по собеседованию на тему Swift Concurrency

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

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

Сергей делает сложный мессенджер, где на практике использовал всю мощь Swift Concurrency.

За целый час мы узнали:
🟣Какие задачи нужно давать для оценки навыков
🟣Дает ли буст Swift Councurrency в сложных приложения?
🟣Какие знания он ждет от сеньора?
🟣Как ускорил приложение с помощью SC?
🟣Какие баги были и есть в SC?
🟣А также многое другое

Выпуск получился супер техническим и с кодом. Дополнительные ссылки и полезные ресурсы прилагаются

🧬 Получить доступ к этому видео можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
8