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

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
😵 Какие навыки проверяют на интервью систем дизайна?

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

Какие навыки проверяют:
🟠Собирать и уточнять требования и ограничения
🟠Строить разумные предположения в условиях неопределённости
🟠Предлагать варианты решений и компромиссы
🟠Проектировать решение задачи и визуализировать его
🟠Объяснять решение другому человеку так, чтобы он понял

*️⃣ Ход интервью
Часто бывает, что кандидат забывает про отсутствие общего контекста и про какие-то вещи не рассказывает, как будто это и так понятно. За это часто снижают оценку. Нужно не забывать рассказать про общую картину приложения подробнее и добавить это на схему. На секции почти никогда не дают спроектировать огромную систему. Скорее это будет пара экранов или какой-то отдельный модуль.

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

*️⃣ Какие инструменты используют?
- Draw.io
- Miro
- Whimsical
- Excalidraw

Позже мы расмотрим основные задачи и артефакты. Для подписчиков ноушена уже доступа полная статья. Также ждите там первый скринкаст с проектирование задачи по систем дизайну.

*️⃣ Полезные ссылки:
- Goals and Objectives of System Design
Please open Telegram to view this post
VIEW IN TELEGRAM
94💔1
Forwarded from 🔥Full-Time Trading
🇷🇺 На Авито уже продают Vision Pro от Apple $AAPL за миллион рублей. Самая быстрая доставка — 5 февраля в Москве.

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

Цена в США - от $3499 (312 915 руб)

Звучит выгодно

👉 FTT - подписаться
ios-learning-materials

Еще одна крутая подборка по материалам для обучения.

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

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

Вот я прочитал книгу или посмотрел доклад. Зашел в чат новичков, а там расскажут лишь 10% от содержания. И то перевернули и переврали половину из усвоенного. А спроси опытного хардкорщика и он тебе еще сверху наложит, похвалит или покритикует.

Как это фиксится? Разными менторами и окружением со спецами по потребностям.
1653
🔄 Главный навык в жизни (и в систем дизайне)

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

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

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

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

🚩 В FAANG'ах есть два красных флага для кандидата на собесах:
- один сдается и уходит с собеса не пытаясь задать вопросы
- второй начинает делать сразу и не уточняет дополнительные кейсы и условия

Проектирование же учит развеять туман войны и разведывать данные, прежде чем сделать шаг. Качество коммуникации также важно. Начать диалог, а не навязать или избежать её.
Please open Telegram to view this post
VIEW IN TELEGRAM
1243
👨‍🚒 Вопросы для собеседований: Память (Junior)

В закрытом ноушена начал создавать методичку с вопросами для собесов по памяти. Уже около 30 вопросов, 15 задач и 10 ссылок с доп. материалами. И это еще будет обновляться и добавляться. Не думал, что на джуна нужно столько инфы...

Чем отличается этот сборник от других?

- Множество уникальных задач и вопросов
- Наличие расширенных ответов
- Задачи и авторские решения с комментариями
- Множество разных тестов

Статья еще активно обновляется.

Чтобы получить доступ к ноушену переходи сюда
2032💔1
Swift Testing

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

Еще в октябре Apple анонсировали новую open-source библиотеку для тестирования. Интересные фишки из коробки:
- параметризация тестов
- для объявления теста теперь достаточно указать атрибут @Test
- автоматическое распараллеливание тестов

Ресурсы:
-
Документация
- Как тестируют код в Apple
11💔22
Золотые правила System Design

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

Как-то со мной спорили, что таких апок нету... И среднее приложение не держит и 10 мб.

Только вот у меня вопросы:
- Сколько кэш телеграма у вас сжирает? У меня было гигабайт 20-30 на айфоне
- Есть супер-специфичные апки для аэропортов, грузоперевозок и вахтовиков, где нет сети и нужно сохранять огромные данные в телефон

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

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

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

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

Цели общения с дизайнерами:
🔘 Убедиться, что мы хорошо понимаем приложение
🔘 Убедиться, что дизайнер понимает приложение
🔘 Найти корнер-кейсы и выставить приоритеты функциям

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


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

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

Какие вопросы помогут для улучшения дизайна:
🔵 Найти возможности для упрощения разработки, но не потери функции. Например, если дизайнер придумал свой компонент, но есть хорошая системная альтернатива, которая привычна юзеру и проще разрабатывать, то лучше ему об этом сообщить.
🟢 Напомните о разных устройствах и их размерах. Бывают темные режимы и светлые. Выбор темы внутри приложения. Телефоны и планшеты. Далеко не все дизайнеры запоминают это.
🟡 Ошибки и состояния загрузки. Дизайнеры не всегда знают какую ошибку может отдавать бэкенд или системное устройство. Лучше подсветить, что пользователь может заспамить поддержку вопросами и мы потратим деньги или упустим клиента, если правильно не сообщим ему нужную информацию
🟣 Что такое пиксель-перфект? В мобильной разработке почти нельзя достичь пиксель-перфект состояния. Есть множество устройств с разным размером экрана, ориентациями и пропорциями. Разными размерами шрифта и цветопередачей. Это все означается, что понятие “идеальный пиксель” является понятием приблизительным. Даже отрисовка теней иногда может по-разному влиять на работу приложения

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


Есть множество других вопросов, целей и принципов общения. Расширенная статья, в которой больше пунктов и советов, уже доступна для подписчиков бусти в ноушене.
Please open Telegram to view this post
VIEW IN TELEGRAM
1111
Управление внутренней базой знаний — это отдельный скилл. Как индивидуально для себя, так и для командной работы.

Я веду заметки еще с 2013 года, когда был популярен Evernote. Царство ему небесное.

Уже много лет перешел на ноушен, а недавно начал слышать много комплиментов Obsidian.

Кто в нем работает поделитесь впечатлениями

https://habr.com/ru/articles/710508/
11
Как чувак свой симулятор писал

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

Ничего непонятно, но очень интересно
1
Задачи на собеседовании System Design

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

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

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


👀 Какие задачи встречаются?

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

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

🔘Senior:
Cледующая задача может встретиться на любой грейд, но ее гибкость и учитывание всех корнер-кейсов может решиться только сеньорами. Тут и архитектуры понадобятся, и алгоритмы, и софты:
- Спроектировать апи для работы с бэкендом. В событиях могут быть дополнительные поля
- События не должны терять данные при крэше или выгрузке приложения из памяти
- Модуль должен быть самостоятельный и максимально переиспользуемый
- Логировать события должно быть безопасно с любого потока
- Хотим отправлять в несколько аналитик сразу. Список может меняться со временем.
- У события есть приоритет: высокий, нормальный, низкий. Высокий отправляем сразу. Остальные выставляем в очередь. Низкий отправляем только когда телефон на WIFI с зарядкой

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

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

Как-нибудь разберу одну из задач и запишу воркшоп на час,полтора. Но доступен он будет сами знаете кому. Расширенная и общая статья, со всеми ресурсами, уже давно доступна подписчикам ноушена.

Интересные статьи:
- Как мы убрали секцию алгоритмов и к чему это привело
- System Design. Общие принцип прохождения интервью
Please open Telegram to view this post
VIEW IN TELEGRAM
104
Как писать юнит-тесты для проверки перфоманса кода

Писать код может каждый. А писать быстрый и стабильный код — единицы. Чтобы доказать производительность своего кода есть множество инструментов, но самый простой это юнит тестовый.

Сохраняем и идем спорить в рабочий чат
74
Вакансия

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

* Middle-Middle+
* Крепкие знания по теории тестирования
* Опыт тестирования мобильных платформ: iOS/Android
* Опыт работы с базовым набором инструментов мобильного тестирования: Android Studio, Xcode, Charles/Fiddler/Proxyman
* Опыт бэкенд тестирования: API, DB
* Опыт работы с базовым набором инструментов для тестирования backend: Postman/SOAP UI/DBeaver/PGAdmin
* Опыт SQL: CRUD
* Опыт тестирования WEB (UI). DevTools, Figma
* Базовые знания Java core
* Опыт с инструментами (фреймворками) для автоматизации API/Mobile/WEB тестов (Appium/RestAssured, Selenium/Selenide), фреймворков-сборщиков Maven/Gradle
* Опыт с Git

Плюсом будет:
Опыт администрирования Linux
Опыт с Doker, Kubernetes, Jenkins
Вопросы на собеседованиях: Junior

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

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

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

Чтобы получить доступ к ноушену вы знаете что сделать
13
Forwarded from iOS Dev
‼️ Альтернативные магазины приложений уже доступны!

Apple анонсировала долгожданные изменения в политике распространения приложений для Европейского Союза

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

Уже в бете 17.4 сегодня.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
💔77
Forwarded from Воробей
Как выглядит установка альтернативного магазина
💔121
Степени прожарки задач

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

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

Definition of Ready — инструмент, который помогает понять насколько задача была проработана и готова для взатия в спринт

Definition of Done — чеклист помогает понять что было сделано, чтобы понять что работа была выполнена в необходимом объеме и полезна всем.

Каждый список скорее не набор жестких требований, а рекомендации, которые помогают синхронизации.

Подробнее можно почитать посты моего бывшего лида из авито:
- ​Определение готовности задачи
- ​​Definition Of Ready
12
Forwarded from My Ego Things (Askar)
Прокрастинация - часто это результат усталости. Нашему мозгу абсолютно все равно, каким образом отдыхать. Если вы ему не даете качественно отдохнуть, он возьмет это прокрастинацией. Поэтому нужно дать ему качественно отдохнуть.
25💔1