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
Продолжаю генерировать контент для владельцев ноушена.

Написал примерный план для iOS.

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

где получить ноушен? тут
7💔2
Умер ли MVVM в SwiftUI?

Начало конца MVVM в SwiftUI началось. Его предрекали его в этом обсуждении, с призывами перестать использовать этот шаблон.

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

Ну что, хороним?
5💔32
Опрос про менторов

Сделал анонимный опрос про менторство:
- По каким критериям оцениваете ментора и менти
- Сколько раз пользовались
- Какие навыки хотелось бы прокачать
- Готовы ли быть в роли ментора или менти

Плюс в карму за прохождение опроса. Все для улучшения качества.
Цели и уровни интервью System Design

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

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

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

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

🟢Джуниор
- Не может аргументировать выбор архитектуры/фреймворка
- Не собирает требования и работает с тем, что дали
- Кандидат может написать систему в лоб по готовым шаблонам.
- Не видит потенциальные проблемы и риски или видит, но не может дасть решения

🟠Миддл
- Может спроектировать среднюю по масшабированию системы
- Задумывается о тестировании и логировании ошибок
- Думает о перфомансе и оптимизации
- На каждое свое решение может найти как плюсы, так и минусы
- Может заложить основу для будущих доработок

🔴Сеньор
- Все требования, что у предыдущего
- Видит проблемы своих решений и оценивает риски
- Организовывает диалоги с бизнесом, по своей инициативе и узнает требования. Если бизнес чего-то не знает, то делает разумные допущения
- Думает про корнер-кейсы
- Знает особенности и слабые места архитектур или фреймворков

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

Полезные ссылки:
- Как подготовиться к собеседованию по System Design мобильному разработчику
- System Design for mobile interview
- A Simple Framework For Mobile System Design Interviews
- Step by Step Guide to Succeed in Mobile System Design Interviews
Please open Telegram to view this post
VIEW IN TELEGRAM
12💔33
Стандарты iOS-проекта компании Bottle Rocket

Очень крутой гит-репозиторий с лучшими практикам и рекомендациями. Ее сделала одна из компаний для разработки мобильных приложений. Каждые рекомендации разделены на секции:
Accessibility
Архитектура
Управление ветками гита
Управление зависимостями
Структура проекта и многое другое

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

1. Добавил новые книги в библиотеку
2. Добавил роадмап по мобильному систем дизайну
3. Решил реабилитировать книжный клуб в рамках сообщества
4. Добавил пару частых задач для систем дизайна

Закрытый ноушен дает больше сил для творчества.

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

Еще думаю все же периодически публиковать что-то годное из ноушена сюда. Так как канал все же был чем-то личным и абсолютной случайностью, но вырос в что-то творческое и полезное
255💔1
😵 Какие навыки проверяют на интервью систем дизайна?

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

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

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

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

*️⃣ Какие инструменты используют?
- 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