Тестирование кода — это обязательный навык любого высококлассного специалиста, так говорил гугл в своей книге. Такие требования во многих крупных компаниях.
Пару лет назад в авито я занимался поддержкой utility модуля. В нем почти не было UI, а сохранять код целым было необходимо долгое время. Делать ежедневные прогоны руками тестировщика невыгодно, поэтому нужно было обкладываться юнит-тестами.
Тот опыт и послужил основной к моей статье про юнит-тестирование.
Сейчас юнит-тестами никого особо не увидишь и это стало нормальным требованием. Даже на собесах любят дать задачу как протестировать закрытый модуль.
Набросал в скриншотах. Делитесь что бы улучшили.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Следом сразу публикую новый сборник для подготовки к собесам:
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Polymorphic Blueprint (Aѕtɛmiɾ)
Media is too big
VIEW IN TELEGRAM
#metal #advancedui
Metal in Action: Countdown Button
Опять кнопка, но это уже без машины состояний (state machine), но на Metal. Концептуально эффект и компонент построены по следующему принципу:
1️⃣ Шейдер оперирует хеш-функцией для генерации псевдослучайных чисел от 0 до 1. Используется для введения случайности в последующую функцию шума
2️⃣ Генерация Perlin noise - вид градиентного шума на основе 2D координат. Используется для генерации плавных вариаций толщины и цвета линии
3️⃣ Фрактальное Броуновское движение (FBM) или функция, заданная на конечном интервале и равная нулю вне его, которые включают кусочно непрерывные функции, удовлетворяющие условию роста. На практике позволяет обьеденить несколько слоев шума для создания органически выглядещего фрактального узора
4️⃣ Обьеденеие Perlin noise и FBM для рендеринга сегментов кривой
5️⃣ Финальное преобразование и масштабирование UV координат учитывая стиль, скорость, дисперсию, плотность и цвета линий и последующее их обьеденение в одно изображение
Все это стичается (shader stiching) в финальный шейдер, который прокидывается к UI компоненту, конфигурируется и начинает свой жизненный цикл. В случае UIKit это требует чуть большего количества кода и работу с CoreAnimation слоями, а в случае со SwiftUI все оборачивается в шейдерный модификатор (shader modifier, iOS 17+)
🏛 Polymorphic Blueprint
Metal in Action: Countdown Button
Опять кнопка, но это уже без машины состояний (state machine), но на Metal. Концептуально эффект и компонент построены по следующему принципу:
1️⃣ Шейдер оперирует хеш-функцией для генерации псевдослучайных чисел от 0 до 1. Используется для введения случайности в последующую функцию шума
2️⃣ Генерация Perlin noise - вид градиентного шума на основе 2D координат. Используется для генерации плавных вариаций толщины и цвета линии
3️⃣ Фрактальное Броуновское движение (FBM) или функция, заданная на конечном интервале и равная нулю вне его, которые включают кусочно непрерывные функции, удовлетворяющие условию роста. На практике позволяет обьеденить несколько слоев шума для создания органически выглядещего фрактального узора
4️⃣ Обьеденеие Perlin noise и FBM для рендеринга сегментов кривой
5️⃣ Финальное преобразование и масштабирование UV координат учитывая стиль, скорость, дисперсию, плотность и цвета линий и последующее их обьеденение в одно изображение
Все это стичается (shader stiching) в финальный шейдер, который прокидывается к UI компоненту, конфигурируется и начинает свой жизненный цикл. В случае UIKit это требует чуть большего количества кода и работу с CoreAnimation слоями, а в случае со SwiftUI все оборачивается в шейдерный модификатор (shader modifier, iOS 17+)
Небольшие артифакты/фризы в видео это комбинация захвата видео, рендеренга и сжатия телегой
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка материалов для собеседований
Я много раз говорю, что материалов в сети для подготовки достаточно. Но появилась другая проблема — нет систем рекомендаций.
Инфоцыгане, менторы, коучи, джуны, сеньоры, мошенники, честные работяги складывают в мусорку, под названием интернет, огромную кучу хлама. В этом хламе сложно ориентироваться и сохранять фокус.
Я бы вообще посоветовал выйти из всех мест, где нет структуры и вечный спам. Так мы делаем себе только хуже, ухудшая наши системы фокусировки и обучения.
Я как жук-говновоз — роюсь в куче мусора и ищу золото, фильтруя сквозь свой опыт и опыт доверительных лиц из комьюнити.
Вот еще одна полезная подборка, которая вероятней всего для многих станет очередной сохраненкой и забытой закладкой:
🟣 Электронная книга со всеми советами по прохождению собеседований
🟣 Плейлист разборов структур данных и алгоритмов
🟣 Топ 400 литкодовских задач
🟣 Советы по интервью на алгоритмы
🟣 Курс по систем дизайну от Arslan Ahmad
Курсы по поведенческим интервью
🟣 https://techready.in/courses/mastering-behavioral-interviews-a-comprehensive-guide/
🟣 https://www.designgurus.io/course/grokking-behavioral-interview
🟣 https://www.youtube.com/c/JeffHSipe
Я много раз говорю, что материалов в сети для подготовки достаточно. Но появилась другая проблема — нет систем рекомендаций.
Инфоцыгане, менторы, коучи, джуны, сеньоры, мошенники, честные работяги складывают в мусорку, под названием интернет, огромную кучу хлама. В этом хламе сложно ориентироваться и сохранять фокус.
Я бы вообще посоветовал выйти из всех мест, где нет структуры и вечный спам. Так мы делаем себе только хуже, ухудшая наши системы фокусировки и обучения.
Я как жук-говновоз — роюсь в куче мусора и ищу золото, фильтруя сквозь свой опыт и опыт доверительных лиц из комьюнити.
Вот еще одна полезная подборка, которая вероятней всего для многих станет очередной сохраненкой и забытой закладкой:
Курсы по поведенческим интервью
Please open Telegram to view this post
VIEW IN TELEGRAM
Linkedin
FAANG Preparation Resources
Recently I have received a lot of queries regarding my preparation that helped me crack FAANG/MAANG companies. Below are some of the resources that helped me a lot - (Ask me anything related to FAANG Technical interviews in the comment section) ✅ 𝗖𝗼𝗱𝗶𝗻𝗴 𝗜𝗻𝘁𝗲𝗿𝘃𝗶𝗲𝘄…
Карьерный рост или профессиональное развитие?
Продолжаю читать одну из лучших книг для мобильных инженеров и я уже могу похвалить грамотную структуру и выставленные акценты в ней. Автор не начинает с советов а-ля читай доку и решай алгосы, а начинает с разбора процессов повышений в больших компаниях.
Например, одна из глав называется "Professional Growth Versus Promotions". В моем менталитете часто была такая связь: если ты растешь профессионально — значит растешь карьерно. Но это ошибочно. Особенно ярко это подсвечивает заголовок и опыт многих разрабов. Мы редко задумываемся, что это две абсолютно разные вещи, которые по-разному определяют нас как экспертов.
В первых главах автор щупает очень тонкую материю, которую часто я поднимал в своих рассуждениях. На чем лучше фокусироваться: на должностях и званиях или опыте и скилле?
Ему понадобилось семь лет на одном месте, чтобы стать сеньором. Он очень сильно прокачался экспертно: потрогал много технологий, углубился в сложные задачи. Когда же его коллеги делали в разы меньше и получали повышения проще.
Чем же его подход лучше? По его мнению, чем опытней ты как эксперт, тем в будущем тебе легче расти при смене компании. Так как не приходится тратить время на доказательства.
По мнению автора повышение — это бюрократия. Избыточная фокусировка только на должностях приводит:
🟣 Невозможностью сменить компанию на текущую должность
🟣 Получить отзывы, что вам не хватает навыков для текущей должности
Автор советует определить что для вас важно.
Должности и титулы, для которых требуется время на доказательства, что сильно отвлекает от развития.
Или же профессиональный рост, где должность можно получить при смене работы, а навыки так легко не достаются.
🌿 Подробнее почитать перевод книги вместе с комментариями можно тут
Продолжаю читать одну из лучших книг для мобильных инженеров и я уже могу похвалить грамотную структуру и выставленные акценты в ней. Автор не начинает с советов а-ля читай доку и решай алгосы, а начинает с разбора процессов повышений в больших компаниях.
Например, одна из глав называется "Professional Growth Versus Promotions". В моем менталитете часто была такая связь: если ты растешь профессионально — значит растешь карьерно. Но это ошибочно. Особенно ярко это подсвечивает заголовок и опыт многих разрабов. Мы редко задумываемся, что это две абсолютно разные вещи, которые по-разному определяют нас как экспертов.
В первых главах автор щупает очень тонкую материю, которую часто я поднимал в своих рассуждениях. На чем лучше фокусироваться: на должностях и званиях или опыте и скилле?
Ему понадобилось семь лет на одном месте, чтобы стать сеньором. Он очень сильно прокачался экспертно: потрогал много технологий, углубился в сложные задачи. Когда же его коллеги делали в разы меньше и получали повышения проще.
Чем же его подход лучше? По его мнению, чем опытней ты как эксперт, тем в будущем тебе легче расти при смене компании. Так как не приходится тратить время на доказательства.
По мнению автора повышение — это бюрократия. Избыточная фокусировка только на должностях приводит:
Автор советует определить что для вас важно.
Должности и титулы, для которых требуется время на доказательства, что сильно отвлекает от развития.
Или же профессиональный рост, где должность можно получить при смене работы, а навыки так легко не достаются.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Мы за деньги и мозги
Ставь лайк, если тоже эволюционируешь по рилсам ноунеймов из инсты
Ставь лайк, если тоже эволюционируешь по рилсам ноунеймов из инсты
Сколько обычно зп джуна?
В догонку последним двум постам, о том что же определяет экспертность, поговорим про вилки.
Часто разрабы думают, что их скиллы определяет вилка. И что условный джун это где-то 100 тысяч максимум, мидл 150 тысяч, а сеньор от 200к. Но это ошибочно. Возможно корни идут с древнего стереотипа «цена означает качество», который используют маркетологи.
В реальности вилки же имеют W структуру, где условный джун может в той же компании получать больше по верхней границе, чем мидл по нижней. И разница между верхними границами не такая уж и большая в действительности.
Зачем так сделано? Мотивация для роста, поддержка эффективности, контроль роста стоимости по грейдам. Отсутствие эффекта домино при изменении вилок. Более детальное регулирование стоимости. Да фиг его знает. Причин использовать такую модель очень много.
Только вот главное заблуждение, что у всех грейдов есть четкая граница. Этим часто любят пользоваться всякие сообщества накрутчиков, думая что обходят систему. Но скорее показывают отсутствие понимания самой системы.
Ответ на вопрос, показывают ли деньги твой скилл, как и титулы, — нет
(на скрине условные вилки)
В догонку последним двум постам, о том что же определяет экспертность, поговорим про вилки.
Часто разрабы думают, что их скиллы определяет вилка. И что условный джун это где-то 100 тысяч максимум, мидл 150 тысяч, а сеньор от 200к. Но это ошибочно. Возможно корни идут с древнего стереотипа «цена означает качество», который используют маркетологи.
В реальности вилки же имеют W структуру, где условный джун может в той же компании получать больше по верхней границе, чем мидл по нижней. И разница между верхними границами не такая уж и большая в действительности.
Зачем так сделано? Мотивация для роста, поддержка эффективности, контроль роста стоимости по грейдам. Отсутствие эффекта домино при изменении вилок. Более детальное регулирование стоимости. Да фиг его знает. Причин использовать такую модель очень много.
Только вот главное заблуждение, что у всех грейдов есть четкая граница. Этим часто любят пользоваться всякие сообщества накрутчиков, думая что обходят систему. Но скорее показывают отсутствие понимания самой системы.
Ответ на вопрос, показывают ли деньги твой скилл, как и титулы, — нет
Много людей жаловались на бусти:
- сложности в оплате
- отмены подписки
- ужасный UX/UI
- невозможность использовать тем, кто заграницей
Разрабы бусти, вас что, накрутчики делали?
В этом вопросе я обещал помочь и вот увидел возможность.
Если ты хотел получить контент, но не нравился бусти, тыкай сюда
https://t.iss.one/tribute/app?startapp=s6L2
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Tribute
This bot helps content creators receive financial support from their followers directly in the app.
Какой продукт делали накрутчики опыта?
Рейтинг худших мобильных приложений по мнению комьюнити (без обид)
Рейтинг худших мобильных приложений по мнению комьюнити (без обид)
Anonymous Poll
23%
Boosty
29%
Viber
23%
Wildberries
7%
Сбер Онлайн
20%
Сбермегамаркет
13%
Яндекс маркет
9%
Яндекс Го
4%
Самокат
9%
Freedom Finance
24%
Другое
В ноушене продолжаю наполнять фреймворк задачами для систем дизайна и проектирования.
Создание своего Notification Centr'а, наверное, одна из самых популярных задач.
В ней требуется:
Please open Telegram to view this post
VIEW IN TELEGRAM
Худшие приложения часть 2
Anonymous Poll
41%
Вконтакте
3%
Тинькоф
18%
Авито
13%
Озон
7%
Яндекс Карты
8%
Яндекс Музыка
9%
Кинопоиск
12%
Альфабанк
3%
Додо
28%
Другое
Никто не работает восемь часов в день
Обычно средняя работа программиста 4-6 часов интенсивной нагрузки. Больше наш мозг не выдержит. Попробуйте порешать литкод задачи полгода по 8 часов в день. Для этого требуется невероятная выдержка.
Восемь часов просто опасно работать. Поэтому умные менеджеры дают небольшую нагрузку, чтобы ты не выгорел. Не приходил обессиленный после работы и еще успевал тратить время на развитие. Ведь инвестиция в развитие — это обязательное требование от тебя. В крупных компаниях есть бюджеты на обучение, английский, спортзалы и даже приставки с играми. Это все помогает тебе сохранять продуктивное состояние. Если ты тоскаешь 12 часов ящики, как грузчик, то ты не станешь самым сильным человеком в мире.
Развитие требует определенную среду. Только эту идею многие искажают.
Тогда что делать с остальными часами? Тут есть несколько выходов:
1. Найти вторую работу. Это говорят сами знаете кто. Но мое мнение такое: две работы по 4 часа == 8 часов на одной работе. У тебя нет времени на развитие. Ты не растешь как спец. А в итоге работаешь даже больше.
В итоге, тебя не хватает надолго и ты также выгораешь. Уходишь из ит и открываешь свой курс по менторству на ютубе. Где единственная твоя карьерная заслуга — суммарный доход на средней должности из трех работ. Получается менеджер, который оберегал тебя от выгорания, не спас тебя. Ты сам утопил себя.
2. Потратить это время на развитие себя. Если бизнес негласно и говорит, что ты в среднем работаешь 4-6 часов, а должен при дедлайнах 8, то можно правильно потратить свое время.
Это развиваться технически. Такое выгодно и тебе, и бизнесу. В таких условиях ты начинаешь любить свою работу и получать от нее кайф. Не начинаешь токсичить на "снобов-скуфоф-сеньоров". Не называть их геймкиперами. Не думать об уходе из итшки и тебя зажигают не только бабки
Каждый сам решает куда инвестировать эти остатки
Обычно средняя работа программиста 4-6 часов интенсивной нагрузки. Больше наш мозг не выдержит. Попробуйте порешать литкод задачи полгода по 8 часов в день. Для этого требуется невероятная выдержка.
Восемь часов просто опасно работать. Поэтому умные менеджеры дают небольшую нагрузку, чтобы ты не выгорел. Не приходил обессиленный после работы и еще успевал тратить время на развитие. Ведь инвестиция в развитие — это обязательное требование от тебя. В крупных компаниях есть бюджеты на обучение, английский, спортзалы и даже приставки с играми. Это все помогает тебе сохранять продуктивное состояние. Если ты тоскаешь 12 часов ящики, как грузчик, то ты не станешь самым сильным человеком в мире.
Развитие требует определенную среду. Только эту идею многие искажают.
Тогда что делать с остальными часами? Тут есть несколько выходов:
1. Найти вторую работу. Это говорят сами знаете кто. Но мое мнение такое: две работы по 4 часа == 8 часов на одной работе. У тебя нет времени на развитие. Ты не растешь как спец. А в итоге работаешь даже больше.
В итоге, тебя не хватает надолго и ты также выгораешь. Уходишь из ит и открываешь свой курс по менторству на ютубе. Где единственная твоя карьерная заслуга — суммарный доход на средней должности из трех работ. Получается менеджер, который оберегал тебя от выгорания, не спас тебя. Ты сам утопил себя.
2. Потратить это время на развитие себя. Если бизнес негласно и говорит, что ты в среднем работаешь 4-6 часов, а должен при дедлайнах 8, то можно правильно потратить свое время.
Это развиваться технически. Такое выгодно и тебе, и бизнесу. В таких условиях ты начинаешь любить свою работу и получать от нее кайф. Не начинаешь токсичить на "снобов-скуфоф-сеньоров". Не называть их геймкиперами. Не думать об уходе из итшки и тебя зажигают не только бабки
Каждый сам решает куда инвестировать эти остатки
iOS курс для начинающих разрабов от Меты*
В чате поделились запрещенкой. Бывший фейсбук выпустил свой курс по iOS разработке. Я не знакомился с ним, но может кому-то будет полезно.
Сможет ли он конкурировать со Стендфорским курсом? Я сомневаюсь. Но материалов много не бывает
*Запрещенная организация на территории РФ
В чате поделились запрещенкой. Бывший фейсбук выпустил свой курс по iOS разработке. Я не знакомился с ним, но может кому-то будет полезно.
Сможет ли он конкурировать со Стендфорским курсом? Я сомневаюсь. Но материалов много не бывает
*Запрещенная организация на территории РФ
Coursera
Meta iOS Developer
Offered by Meta. Launch your career as an iOS developer. ... Enroll for free.
Мне тут верно указали на мой косяк. Мол почему на подписки через бусти были скидки, а через трибут нет.
Признаюсь, я не пожадничал, а просто затупил.
Поэтому стараюсь быстро пофиксить свой баг.
Добавил две скидки:
1. Ежемесячная
2. Ежегодная на 3500 руб
Скидка щедрая. Даже больше, чем была на бусти.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Tribute
This bot helps content creators receive financial support from their followers directly in the app.
Самая сложная задача для сеньора?
Anonymous Poll
16%
Чат
39%
Видео-аудио звонки
12%
Мобильный банк
19%
Криптокошелек
45%
Видеоредактор
2%
Лента новостей
4%
Аналитика
2%
Интернет магазин
10%
Приложение для самолетов
15%
Другое
Форк фреймворка для собесов по систем дизайну
Я устал решать алгоритмы и принялся за наполнение задач по систем дизайну. Или, в простонародье, архитектурам.
Для этого базой будет форк известного репозитория, но он будет адаптирован под iOS и во многих моментах улучшен.
В чате мы вместе с опытными архитекторами сегодня уже набросали около 20 задач. На них я подсчитал мне нужно будет 3-4 месяца🥲
💎 Вступай, чтобы мне помочь
Я устал решать алгоритмы и принялся за наполнение задач по систем дизайну. Или, в простонародье, архитектурам.
Для этого базой будет форк известного репозитория, но он будет адаптирован под iOS и во многих моментах улучшен.
В чате мы вместе с опытными архитекторами сегодня уже набросали около 20 задач. На них я подсчитал мне нужно будет 3-4 месяца
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - levabond/ios-mobile-system-design: A simple framework for mobile system design interviews for iOS
A simple framework for mobile system design interviews for iOS - levabond/ios-mobile-system-design
Худшие приложения made by wolfs часть 3
Anonymous Poll
11%
Телеграм
13%
ОТП Банк
13%
Юла
18%
МТС
15%
Билайн
11%
Мегафон
11%
Qiwi
9%
Okko
13%
hh
33%
Другое
Эта книга главный техно майндченжер года. Абсолютно разрушительная для многих инженеров книга, оголяющая нерв и бьющая по разным болевым точкам аудитории.
Главный враг в обучении — это сомнения. Избыточно самоуверенные только глупцы. Чем больше знаний и навыков, тем больше вопросов. А слепая наивность может привести не к той карьерной лестнице, которая приложенна к другой стенке.
Структурированные книги дают уверенности и фундамент мыслям, которые еще до чтения фрагментами обязательно приходят в дискуссиях или раздумиях.
Они дают опору под ноги и не позволяют упасть нашим хрупким убеждениям. Связывая и объединяя нас, давая зрелость и глубину нашим мыслям. Улучшая качество коммуникации, а значит и ускоряя путь к истинам.
В этой книге разбирается:
Обязательная книга для новичков и опытных, которые слишком долго сидели в одной компании
Please open Telegram to view this post
VIEW IN TELEGRAM
Xamarin RIP
Как-то в прошлом году я собирал внутри внутренний митап, где обсуждали почему кроссплатформищики переходили обратно на натив. Я тогда хотел посмотреть стоит ли затаскивать КМП в команду.
После разговора моя вся вера в кроссплатформы умерла. Инженеры были супер-скилловые, а технологии не выгребали хотелки бизнеса.
В теории и на бумаге, Xamarin лучше любой кроссплатформы:
1. Имееют огромную кодовую базу
2. Любой шарпист легко мог бы писать для мобилок
3. Языку C# кучу лет и он умнее и проработанее Kotlin и Swift
4. Куча готовых решений и библиотек
Но на практике даже эта технология загнулась и любой кроссплатформенный разраб в итоге пишет на нативе
Из минусов:
1. Невозможно в найм.
2. Нет хороших разрабов под все технологии
3. Слишком дорогие
4. Куча лишних абстракций
В итоге, проблемы можно подписать под любую кроссплатформу, где невозможно усидеть на всех стульях
Как-то в прошлом году я собирал внутри внутренний митап, где обсуждали почему кроссплатформищики переходили обратно на натив. Я тогда хотел посмотреть стоит ли затаскивать КМП в команду.
После разговора моя вся вера в кроссплатформы умерла. Инженеры были супер-скилловые, а технологии не выгребали хотелки бизнеса.
В теории и на бумаге, Xamarin лучше любой кроссплатформы:
1. Имееют огромную кодовую базу
2. Любой шарпист легко мог бы писать для мобилок
3. Языку C# кучу лет и он умнее и проработанее Kotlin и Swift
4. Куча готовых решений и библиотек
Но на практике даже эта технология загнулась и любой кроссплатформенный разраб в итоге пишет на нативе
Из минусов:
1. Невозможно в найм.
2. Нет хороших разрабов под все технологии
3. Слишком дорогие
4. Куча лишних абстракций
В итоге, проблемы можно подписать под любую кроссплатформу, где невозможно усидеть на всех стульях
Microsoft
The official Xamarin support policy | .NET
Learn about Xamarin support policies, including Xamarin.Android, Xamarin.Forms, and Xamarin.iOS. Find patch information and end of support dates for each release.
Новая подборка вопросов для собесов. Тема алгосы.
Многие думают, что алгосы это глупая зубрешка задач из литкода, которая оценивает выученное популярное решение. Но это опасное заблуждение.
Код джуна, из готовых конструкций, легко отличить от сеньора, который придумывает уникальные и редкие решения. Это мы часто наблюдаем в чате.
Сеньор вдумчиво и качественно пишит код, который лаконично касается многотонную теорию из книг. Как говорится, идеальный код — это когда нечего убрать, а не добавить.
В этом сборнике я затронул вопросы:
Please open Telegram to view this post
VIEW IN TELEGRAM