iOS Makes Me Hate
3.94K 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
🔄 Главный навык в жизни (и в систем дизайне)

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

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

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

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

🚩 В 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
🟢 Вопросы для собеседований: Многопоточка | Junior

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

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

Собрал с первой попытке даже больше, чем по управлении памяти. А впереди еще поле непаханое. Уж слишком много где можно развернуться тут:
- 26 вопросов
- 6 задач
- ~ 10 ссылок

Ноушен будет обновляться неделю и еще допом сообщу о финальном варианте.

Кстати, допом обновил вопросы и добавил ссылки на модуль про память.

Получить его можно все там же
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1221
iOS Makes Me Hate
🟢 Вопросы для собеседований: Многопоточка | Junior Начал работу для сборника вопросов и задач с ответами по многопоточке. Основной упор сделать методичку не только для кандидатов, но и интервьюеров. Это одна из самых сложных тем, понять которую можно только…
Когда я писал контент в канал мне палили похожие базы знаний, еще до того, как они продавали мои бесплатные посты с канала, за которые я бы сам не решился просить деньги из-за его качества проработки. Многие свои посты в канале я пишу за 5 минут, просто выкладывая мысли в их первоначальной форме.

В целом, я не понимал, почему кто-то покупал такие материалы, которые по факту просто сборник чужих бесплатных постов, на которые тратили минимум времени.

В вопросе образования качество материала зависит от многих вещей:
- Экспертиза и опыт автора
- Его навыки педагогики
- Факт-чекинга
- Наложение практики и теории

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

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

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

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

Вопросы могут быть одинаковые. Они даже на джуна и сеньора одинаковые. Но качество ответов, комментарий и задач разные.
136