Приложение с нуля
Иногда ты первый разработчик на проекте. Задача – накидать архитектуру будущего приложения. Что показать заказчику и какие подходы котируются?
Репозиторий
• Git как система контроля версий.
• GitFlow как стратегия ведения репозитория.
• GitHub как платформа для хостинга репозитория.
• GitHub Releases для публикации релизов.
• GitHub Issues для отслеживания задач и багов.
Сборка
• Gradle KTS для написания билд-скриптов.
• Gradle Version Catalog для управления зависимостями.
• R8 для оптимизации и минификации кода.
• Build Types – debug для разработки, с логами и отладочными инструментами и release для прода, с оптимизациями и отключёнными логами.
• minSdk – 24 (Android 7.0).
• targetSdk – 35 (Android 15).
• compileSdk – 35 (Android 15).
• Формат сборки – AAB для Google Play. APK для других сторов.
• JVM Toolchain для управления версией JDK.
Архитектура
• MVI как архитектурный паттерн.
• Слоистая архитектура для разделения ответственности (Domain – Data – UI).
• SSOT для обеспечения консистентности данных.
• UDF для управления состоянием данных.
Стек
• Kotlin как основной язык программирования.
• Kotlin Coroutines для работы с асинхронным кодом и параллельными задачами.
• Kotlin Flow для обработки потоков данных.
• Kotlin Serialization для преобразования объектов в форматы JSON и XML.
• Jetpack Compose как UI-фреймворк.
• ViewModel для хранения и управления UI-состоянием.
• Navigation Component для управления навигацией между экранам.
• Hilt для внедрения зависимостей.
• Retrofit для работы с REST API.
• OkHttp для работы с HTTP-запросами и WebSockets.
• Chucker для отслеживания HTTP-запросов и ответов.
• Foreground Service для выполнения длительных или важных задач (камера, локация, музыка, диктофон, звонок, фитнес).
• WorkManager для управления фоновыми задачами.
• DataStore для хранения данных.
• Room для работы с базами данных.
• CameraX для работы с камерой.
• Paging3 для загрузки больших списков с поддержкой пагинации.
• Coil для загрузки и отображения изображений.
• Media3 для работы с мультимедийным контентом (аудио и видео).
• Jetpack Glance для создания виджетов.
Дизайн
• Material3 как дизайн-система.
• Тема приложения – светлая, темная и системная.
• Splash Screen API для отображения заставки.
• Predictive Back Gesture для жеста назад и предварительного просмотра экранов.
• Edge-to-Edge для отображения UI без отступов, когда контент заполняет весь экран, включая области статус-бара и навигации.
• Ориентация экрана – определяется сенсором устройства.
• Display Cutouts – корректная обработка вырезов на экране (под камеру или датчики).
• Adaptive Layouts – макеты, которые автоматически подстраиваются под разные размеры экранов на телефонах, планшетах и десктопах.
• Локализация – en (английский) + язык пользовательской базы, например ru.
Тестирование
• Unit-тесты для бизнес-логики – JUnit, Mockito, Kotest.
• UI-тесты для пользовательского интерфейса – Espresso, Robolectric.
• Android Profiler для мониторинга производительности, памяти, сети и CPU.
• Benchmarking для измерения производительности приложения или его компонентов.
• LeakCanary для обнаружения утечек памяти.
Стиль кода
• Detekt как статический анализатор для нахождения ошибок и улучшения стиля кода.
Мониторинг и аналитика
• Huawei Mobile Services как набор облачных сервисов для устройств Huawei.
• Google Mobile Services как набор облачных сервисов для большинства устройств.
• Firebase Analytics для анализа поведения пользователей.
• Firebase Crashlytics для мониторинга и анализа сбоев в приложении.
• Firebase Cloud Messaging для отправки уведомлений.
• Firebase App Distribution для распространения предварительных версий приложения среди тестировщиков.
Непрерывная интеграция и доставка
• GitHub Actions для автоматизации сборки, деплоя и выпуска.
Иногда ты первый разработчик на проекте. Задача – накидать архитектуру будущего приложения. Что показать заказчику и какие подходы котируются?
Репозиторий
• Git как система контроля версий.
• GitFlow как стратегия ведения репозитория.
• GitHub как платформа для хостинга репозитория.
• GitHub Releases для публикации релизов.
• GitHub Issues для отслеживания задач и багов.
Сборка
• Gradle KTS для написания билд-скриптов.
• Gradle Version Catalog для управления зависимостями.
• R8 для оптимизации и минификации кода.
• Build Types – debug для разработки, с логами и отладочными инструментами и release для прода, с оптимизациями и отключёнными логами.
• minSdk – 24 (Android 7.0).
• targetSdk – 35 (Android 15).
• compileSdk – 35 (Android 15).
• Формат сборки – AAB для Google Play. APK для других сторов.
• JVM Toolchain для управления версией JDK.
Архитектура
• MVI как архитектурный паттерн.
• Слоистая архитектура для разделения ответственности (Domain – Data – UI).
• SSOT для обеспечения консистентности данных.
• UDF для управления состоянием данных.
Стек
• Kotlin как основной язык программирования.
• Kotlin Coroutines для работы с асинхронным кодом и параллельными задачами.
• Kotlin Flow для обработки потоков данных.
• Kotlin Serialization для преобразования объектов в форматы JSON и XML.
• Jetpack Compose как UI-фреймворк.
• ViewModel для хранения и управления UI-состоянием.
• Navigation Component для управления навигацией между экранам.
• Hilt для внедрения зависимостей.
• Retrofit для работы с REST API.
• OkHttp для работы с HTTP-запросами и WebSockets.
• Chucker для отслеживания HTTP-запросов и ответов.
• Foreground Service для выполнения длительных или важных задач (камера, локация, музыка, диктофон, звонок, фитнес).
• WorkManager для управления фоновыми задачами.
• DataStore для хранения данных.
• Room для работы с базами данных.
• CameraX для работы с камерой.
• Paging3 для загрузки больших списков с поддержкой пагинации.
• Coil для загрузки и отображения изображений.
• Media3 для работы с мультимедийным контентом (аудио и видео).
• Jetpack Glance для создания виджетов.
Дизайн
• Material3 как дизайн-система.
• Тема приложения – светлая, темная и системная.
• Splash Screen API для отображения заставки.
• Predictive Back Gesture для жеста назад и предварительного просмотра экранов.
• Edge-to-Edge для отображения UI без отступов, когда контент заполняет весь экран, включая области статус-бара и навигации.
• Ориентация экрана – определяется сенсором устройства.
• Display Cutouts – корректная обработка вырезов на экране (под камеру или датчики).
• Adaptive Layouts – макеты, которые автоматически подстраиваются под разные размеры экранов на телефонах, планшетах и десктопах.
• Локализация – en (английский) + язык пользовательской базы, например ru.
Тестирование
• Unit-тесты для бизнес-логики – JUnit, Mockito, Kotest.
• UI-тесты для пользовательского интерфейса – Espresso, Robolectric.
• Android Profiler для мониторинга производительности, памяти, сети и CPU.
• Benchmarking для измерения производительности приложения или его компонентов.
• LeakCanary для обнаружения утечек памяти.
Стиль кода
• Detekt как статический анализатор для нахождения ошибок и улучшения стиля кода.
Мониторинг и аналитика
• Huawei Mobile Services как набор облачных сервисов для устройств Huawei.
• Google Mobile Services как набор облачных сервисов для большинства устройств.
• Firebase Analytics для анализа поведения пользователей.
• Firebase Crashlytics для мониторинга и анализа сбоев в приложении.
• Firebase Cloud Messaging для отправки уведомлений.
• Firebase App Distribution для распространения предварительных версий приложения среди тестировщиков.
Непрерывная интеграция и доставка
• GitHub Actions для автоматизации сборки, деплоя и выпуска.
This media is not supported in your browser
VIEW IN TELEGRAM
Какой же классный получился подгон у эппла на 14 февраля
Как совмещать 2 дейли
Возможное пересечение созвонов – частая причина отказа от многоработничества. Я несколько лет отработал в двух конторах и в один год у меня наложились 250 звонков. Работодателей об этом не извещал. Расскажу как это выглядело на практике.
Дейли – это созвон команды. Проходит каждый день, что понятно из названия. Помогает синхронизироваться: кто чем занят, какие блокеры, нужна ли помощь. Обычно разработчики трудятся в Agile-командах пять дней в неделю с утра и до вечера. Даже в Новосибирске пляшут по московскому часовому поясу, поэтому дейли проходит утром в интервале 9:00-12:30. Распространенные слоты – 11:00, 11:30 и 12:00. Чем больше команда, тем дольше дейли. Четверо укладываются в пять минут, двадцати может не хватить и получаса. Сократить время дейли – распространённая цель команд.
Итак. Два дейлика проходят в 11:00 по будням. Созвон без камеры. Для звонков используют Zoom, Google Meet, Microsoft Teams, Slack или аналогичные сервисы. Доступно отключение микрофона и источника вывода звука.
Какие форматы встречались
• Классический. Поочередный опрос каждого: «что делал вчера, что будешь делать сегодня». Порядок иногда играет на руку. Если опрашивают по алфавиту, Яковлев отвечает последним. Или опрашивают по расположению имен в Jira. Либо сначала фронтендеров, потом бэкендеров. Постепенно проявляется закономерность – я размьючиваю микрофон в 11:15.
• Проектный. Опрашивают тех, кто участвует в проектах, которые в работе. Молчишь каждый второй созвон.
• Проблемный. Сначала обсуждаются блокеры, потом текущие задачи. В этом случае свои проблемы лучше порешать в течение рабочего дня, чтобы не отвлекаться на звонке.
Подключаться на звонки нужно с двух устройств – два компа, комп + телефон. Чтобы мозг не плавило, лучше не использовать две пары наушников. На первом устройстве выводим звук через динамики, на втором через один наушник. Мозг человека не поддерживает многозадачность, но может быстро переключаться между тасками. Так проще оставаться в контексте каждого дейли.
Когда очередь отвечать на первом дейли – размьючиваем микрофон и говорим. Когда отвечаем на втором дейли – убавляем динамик на первом. Это единственное слабое место процесса. Мы выпадаем из контекста приглушенного звонка. Но на практике значимые детали редко упускаются.
Дергают одновременно на двух дейли
И такое случается. Второй рот в этот момент не отрастет. Выбираем приоритетный звонок, а второй оставляем на мьюте. После спича (лучше краткого) появляемся на втором дейли, если встреча еще идет, и просим повторить вопрос. Жалуемся на медленный интернет, разрядившиеся наушники, клятого курьера.
Дальше – проще
Первые пару недель сложно. Как известно, мозг нейропластичен и неизбежно адаптируется к новым обстоятельствам. Сначала следишь за микрофонами, потом скатываешься в полнейший рассос. У меня созвоны сопровождались приготовлением завтрака, просмотром ютуба и разговорами с сожителями.
Награда
В 2 раза больше опыта, денег и стресса. Нарабатывается скилл планирования и приоритизации задач.
Легче проблему предотвратить, чем решать. Пересекающиеся созвоны – не приговор, но как же проще, когда они разнесены по времени.
Возможное пересечение созвонов – частая причина отказа от многоработничества. Я несколько лет отработал в двух конторах и в один год у меня наложились 250 звонков. Работодателей об этом не извещал. Расскажу как это выглядело на практике.
Дейли – это созвон команды. Проходит каждый день, что понятно из названия. Помогает синхронизироваться: кто чем занят, какие блокеры, нужна ли помощь. Обычно разработчики трудятся в Agile-командах пять дней в неделю с утра и до вечера. Даже в Новосибирске пляшут по московскому часовому поясу, поэтому дейли проходит утром в интервале 9:00-12:30. Распространенные слоты – 11:00, 11:30 и 12:00. Чем больше команда, тем дольше дейли. Четверо укладываются в пять минут, двадцати может не хватить и получаса. Сократить время дейли – распространённая цель команд.
Итак. Два дейлика проходят в 11:00 по будням. Созвон без камеры. Для звонков используют Zoom, Google Meet, Microsoft Teams, Slack или аналогичные сервисы. Доступно отключение микрофона и источника вывода звука.
Какие форматы встречались
• Классический. Поочередный опрос каждого: «что делал вчера, что будешь делать сегодня». Порядок иногда играет на руку. Если опрашивают по алфавиту, Яковлев отвечает последним. Или опрашивают по расположению имен в Jira. Либо сначала фронтендеров, потом бэкендеров. Постепенно проявляется закономерность – я размьючиваю микрофон в 11:15.
• Проектный. Опрашивают тех, кто участвует в проектах, которые в работе. Молчишь каждый второй созвон.
• Проблемный. Сначала обсуждаются блокеры, потом текущие задачи. В этом случае свои проблемы лучше порешать в течение рабочего дня, чтобы не отвлекаться на звонке.
Подключаться на звонки нужно с двух устройств – два компа, комп + телефон. Чтобы мозг не плавило, лучше не использовать две пары наушников. На первом устройстве выводим звук через динамики, на втором через один наушник. Мозг человека не поддерживает многозадачность, но может быстро переключаться между тасками. Так проще оставаться в контексте каждого дейли.
Когда очередь отвечать на первом дейли – размьючиваем микрофон и говорим. Когда отвечаем на втором дейли – убавляем динамик на первом. Это единственное слабое место процесса. Мы выпадаем из контекста приглушенного звонка. Но на практике значимые детали редко упускаются.
Дергают одновременно на двух дейли
И такое случается. Второй рот в этот момент не отрастет. Выбираем приоритетный звонок, а второй оставляем на мьюте. После спича (лучше краткого) появляемся на втором дейли, если встреча еще идет, и просим повторить вопрос. Жалуемся на медленный интернет, разрядившиеся наушники, клятого курьера.
Дальше – проще
Первые пару недель сложно. Как известно, мозг нейропластичен и неизбежно адаптируется к новым обстоятельствам. Сначала следишь за микрофонами, потом скатываешься в полнейший рассос. У меня созвоны сопровождались приготовлением завтрака, просмотром ютуба и разговорами с сожителями.
Награда
В 2 раза больше опыта, денег и стресса. Нарабатывается скилл планирования и приоритизации задач.
Легче проблему предотвратить, чем решать. Пересекающиеся созвоны – не приговор, но как же проще, когда они разнесены по времени.
1 12 9 5 2 1
Как Android-разработчику использовать ChatGPT
ChatGPT предоставляет такую же абстракцию над высокоуровневыми языками программирования, как те над ассемблером. Формулировка запросов на естественном языке не только повышает уровень взаимодействия человека и компьютера, но и упрощает его.
Кормить ли ИИ кодовой базой проекта – вопрос дискуссионный, каждый решает сам. Но даже исключая бизнес-состовляющую, остаются задачи, которые можно делегировать нейросетям:
🐗 Анализ ошибок билд-системы
Ошибки Gradle, минификации и процессоров аннотаций (Dagger, Retrofit) возникают постоянно и по миллиону причин. ChatGPT найдет решение: сходит в issues на гитхаб, проанализирует форумы, разберет логи, прочитает релизноуты и документацию. Достаточно скопировать ему логкат.
🐗 Рисовать на канвасе, анимировать, делать виджеты
ChatGPT напишет код для отрисовки любой загогулины: от восьмиконечной звезды до лепестковой диаграммы. Добавит пульсацию, волны, скачки, пружины, морфинг и другие эффекты. Подберет цвета, которые сочетаются. Создаст виджет из ограниченного набора компонентов (Glance).
🐗 Правила для линтеров
ChatGPT поможет настроить кастомные правила для Detekt и Lint. Пропишет инспекции для нейминга, сложности функций, глубины вложенности, устаревших API и утечек памяти.
🐗 Документация и комментарии в коде
ChatGPT опишет сложный участок кода, функциональность класса или метода. Сгенерирует API-документацию. Предложит улучшения, чтобы текст стал понятнее.
🐗 Решение алгоритмических задач
Методы решения алгоритмов давно известны: бинарный поиск, с возвратом, в ширину, в глубину, боком и с подскоком. ChatGPT в курсе и выдает оптимальный по памяти и времени код.
🐗 Перевод строковых ресурсов
Плохие новости – у DeepL открылся денежный чакр. Хорошие – ChatGPT тоже отлично переводит. Без проблем локализует строки в strings.xml на другие языки.
🐗 Автоматическое тестирование
ChatGPT силен в написании юнит и интеграционных тестов. Проверяет бизнес-логику и UI, предлагает шаблоны, использует JUnit, Espresso и Compose UI Test. Помогает протестировать большие участки кода.
🐗 Написание SQL-запросов для Room
ChatGPT составляет сложные SQL-запросы, работает с таблицами и отношениями, умеет описывать миграции.
🐗 Конвертация кода между Java, Kotlin и Swift
ChatGPT переводит код между языками, сохраняя логику и стиль. Полезно при смене стека или написании кроссплатформенных приложений.
🐗 Написание GitHub Actions и GitLab-CI скриптов
ChatGPT напишет скрипты для автоматизации сборки, тестирования и деплоя Android-приложения. Сгенерирует .yml, настроит кэш Gradle, запустит тесты, опубликует сборку в Google Play. Сократит время на рутину и сбережет бесплатные минуты и гигабайты.
🐗 Разбор кода, рефакторинг, оптимизация
ChatGPT объяснит, что делает конкретный кусок кода. Упростит его, улучшит читаемость и оптимизирует производительность. Сократит дублирование и адаптирует под бестпрактисы.
🐗 Контент в заданном формате
ChatGPT напишет код для подключения артефактов в libs. Сгруппирует их в бандлы и добавит в модули.
Что делать людям
Нейросети подвержены галлюцинациям, поэтому их ответы требуют проверки. Важно тренировать собственный интеллект, а также учиться перекладывать мысли и хотелки в промпты и запросы.
Чем больше у человека знаний, тем проще ему использовать нейросети. Опытный барсеточник с большей вероятностью увидит ошибки в сгенерированном коде. Это называется «проклятие эксперта»: ИИ полезен разбирающимся в теме, но запутает тех, кто только учится. Поэтому не прекращай расти над собой, какими бы умными не становились нейронки.
ChatGPT предоставляет такую же абстракцию над высокоуровневыми языками программирования, как те над ассемблером. Формулировка запросов на естественном языке не только повышает уровень взаимодействия человека и компьютера, но и упрощает его.
Кормить ли ИИ кодовой базой проекта – вопрос дискуссионный, каждый решает сам. Но даже исключая бизнес-состовляющую, остаются задачи, которые можно делегировать нейросетям:
Ошибки Gradle, минификации и процессоров аннотаций (Dagger, Retrofit) возникают постоянно и по миллиону причин. ChatGPT найдет решение: сходит в issues на гитхаб, проанализирует форумы, разберет логи, прочитает релизноуты и документацию. Достаточно скопировать ему логкат.
ChatGPT напишет код для отрисовки любой загогулины: от восьмиконечной звезды до лепестковой диаграммы. Добавит пульсацию, волны, скачки, пружины, морфинг и другие эффекты. Подберет цвета, которые сочетаются. Создаст виджет из ограниченного набора компонентов (Glance).
ChatGPT поможет настроить кастомные правила для Detekt и Lint. Пропишет инспекции для нейминга, сложности функций, глубины вложенности, устаревших API и утечек памяти.
ChatGPT опишет сложный участок кода, функциональность класса или метода. Сгенерирует API-документацию. Предложит улучшения, чтобы текст стал понятнее.
Методы решения алгоритмов давно известны: бинарный поиск, с возвратом, в ширину, в глубину, боком и с подскоком. ChatGPT в курсе и выдает оптимальный по памяти и времени код.
Плохие новости – у DeepL открылся денежный чакр. Хорошие – ChatGPT тоже отлично переводит. Без проблем локализует строки в strings.xml на другие языки.
ChatGPT силен в написании юнит и интеграционных тестов. Проверяет бизнес-логику и UI, предлагает шаблоны, использует JUnit, Espresso и Compose UI Test. Помогает протестировать большие участки кода.
ChatGPT составляет сложные SQL-запросы, работает с таблицами и отношениями, умеет описывать миграции.
ChatGPT переводит код между языками, сохраняя логику и стиль. Полезно при смене стека или написании кроссплатформенных приложений.
ChatGPT напишет скрипты для автоматизации сборки, тестирования и деплоя Android-приложения. Сгенерирует .yml, настроит кэш Gradle, запустит тесты, опубликует сборку в Google Play. Сократит время на рутину и сбережет бесплатные минуты и гигабайты.
ChatGPT объяснит, что делает конкретный кусок кода. Упростит его, улучшит читаемость и оптимизирует производительность. Сократит дублирование и адаптирует под бестпрактисы.
ChatGPT напишет код для подключения артефактов в libs. Сгруппирует их в бандлы и добавит в модули.
Что делать людям
Нейросети подвержены галлюцинациям, поэтому их ответы требуют проверки. Важно тренировать собственный интеллект, а также учиться перекладывать мысли и хотелки в промпты и запросы.
Чем больше у человека знаний, тем проще ему использовать нейросети. Опытный барсеточник с большей вероятностью увидит ошибки в сгенерированном коде. Это называется «проклятие эксперта»: ИИ полезен разбирающимся в теме, но запутает тех, кто только учится. Поэтому не прекращай расти над собой, какими бы умными не становились нейронки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Android | Михаил Белый
Поздравляю победителей!
Мои любимые опции премиума:
📍 10 чатов в закрепах.
⚡️ Дополнительные бусты.
📝 Длинные посты с обложкой.
🔗 Длинное био со ссылками.
ℹ️ Расшифровка голосовых.
🤖 Кастомные эмодзи и реакции.
Не обошлось без приключений на моем микроблогерском тракте. Как оказалось, после старта гива его сразу репостят в каналы-агрегаторы, которые волшебным образом (telegram api?) умеют узнавать о проводимых розыгрышах в публичных каналах. Каналы объединяют в папки. После этого на тебя подписываются сотни ботов (813 за 4 дня).
Но не на того напали👊 . Так как я считаю гивы кэшбэком за лояльность, боты своевременно получили поджопник и были кикнуты.
В любом случае весело, скоро повторим!
Мои любимые опции премиума:
Не обошлось без приключений на моем микроблогерском тракте. Как оказалось, после старта гива его сразу репостят в каналы-агрегаторы, которые волшебным образом (telegram api?) умеют узнавать о проводимых розыгрышах в публичных каналах. Каналы объединяют в папки. После этого на тебя подписываются сотни ботов (813 за 4 дня).
Но не на того напали
В любом случае весело, скоро повторим!
Please open Telegram to view this post
VIEW IN TELEGRAM
За февраль решено 28 задач уровня изи. Всего 186. В рейтинге добрался до 610 634 места. Выдали третий почетный бейдж 50 Days Badge 2025.
• Leaf-Similar Trees
• Middle of the Linked List
• Uncommon Words from Two Sentences
• Fair Candy Swap
• Monotonic Array
• Increasing Order Search Tree
• Sort Array By Parity
• Smallest Range I
• X of a Kind in a Deck of Cards
• Reverse Only Letters
• Sort Array By Parity II
• Long Pressed Name
• Unique Email Addresses
• Range Sum of BST
• Valid Mountain Array
• DI String Match
• Delete Columns to Make Sorted
• Verifying an Alien Dictionary
• N-Repeated Element in Size 2N Array
• Univalued Binary Tree
• Largest Perimeter Triangle
• Squares of a Sorted Array
• Add to Array-Form of Integer
• Cousins in Binary Tree
• Find Common Characters
• Maximize Sum Of Array After K Negations
• Complement of Base 10 Integer
• Partition Array Into Three Parts With Equal Sum
#leetcode@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Решил потратить свои лимиты на глубокие ресерчи. Тема сегодняшнего исследования: как миддлу стать синьором. Основано на данных из 30 источников.
TLDR 11 слов:
Уволиться из текущей компании и уйти в другую на грейд выше.
6840 слов:
Исследование разбирает путь от миддла до синьора, включая ключевые технические навыки, софты и карьерные возможности. Для роста важно глубоко знать Kotlin, Coroutines, Jetpack Compose. Разбираться в MVVM, MVI и Clean Architecture. Уметь работать с CI/CD и тестированием. Помимо технической экспертизы, сеньора отличает лидерство, коммуникация и понимание бизнеса. Он не просто пишет код, а решает сложные задачи, улучшает процессы и наставляет команду.
После Senior можно развиваться в техническую или управленческую сторону – стать архитектором, Principal Engineer или Team Lead. Чтобы ускорить рост, важно брать ответственность, участвовать в архитектурных решениях и активно помогать команде. Дополнительный рост дают менторство, выступления на конференциях и постоянное обучение. Сильные Android-разработчики остаются востребованными. Эксперты с широким взглядом на продукт особенно ценятся.
Главное – мыслить системно, проявлять инициативу и прокачивать как технические, так и софтовые навыки. Senior – это не просто опыт, а способность видеть картину в целом и решать стратегические задачи.
#deepresearch@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
В роадмап добавлено еще 49 решений задач с CodeRun – теперь их там 79. Всего в сервисе 571 задача, это в 6 раз меньше, чем на LeetCode. Есть вероятность закрыть их все.
• Кафе
• НОП с восстановлением ответа
• Путь в графе
• Путь спелеолога
• Пересадки
• Конвейер
• Значение арифметического выражения
• Поврежденный XML
• Минимум на отрезке
• Коммерческий калькулятор
• Машинки
• НВП с восстановлением ответа
• Количество треугольников
• Увлекательная игра
• Два коня
• Числа
• Полиглоты
• Пересечение множеств
• Количество различных чисел
• Треугольник Максима
• Сапёр
• Наибольшее произведение трех чисел
• Наибольшее произведение двух чисел
• Больше своих соседей
• Ближайшее число
• Определить вид последовательности
• Возрастает ли список?
• Узник замка Иф
• Детали
• Уравнение с корнем
• Телефонные номера
• Треугольник
• Кондиционер
• Клавиатура
• Продажи
• Банковские счета
• Расшифровка письменности Майя
• Дополнительная проверка на списывание
• Стильная одежда
• Сумма номеров
• Туризм
• Город Че
• Красота превыше всего
• Счет в гипершаках
• Подстрока
• Робот
• Двоичный поиск
• Приближенный двоичный поиск
• Дипломы
#coderun@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
• Добавлены новые вопросы с собеседований.
• Отдельная страница для Material3.
• Новая страница HeadHunter.
• Новая страница Deep Research.
• Новая страница WearOS Samples.
• Новая страница XR Samples.
Добавлен курс по Jetpack Compose.
Добавлены примеры проектов в Android Studio.
Добавлена 1 новая задача из Сбера.
Ответы для тестов по Git, Java, SQL, ООП, OKR, Scrum, Agile и English.
Добавлен плейлист по основам программирования.
Добавлены решения 91 задачи с LeetCode.
Добавлены решения 79 задач с CodeRun.
Сервис Buildkite.
Сервис AppMetrica.
Добавлено описание массивов.
Экранирование идентификаторов.
Trailing comma.
Описание buildString.
Описание кейворда set.
Collections. Описание Array, MutableIterable, Collection, MutableCollection, buildList, buildSet, buildMap.
Coroutines. Описание suspendCancellableCoroutine и CompletableDeferred, пример кода для Deferred.
Flow. Описание методов distinctUntilChanged, onStart, onCompletion, merge, mapLatest, withIndex, scan, runningReduce, runningFold.
Channels. Описание actor.
Manifest. Описание всех параметров Application, <meta-data/>, <property/>, <uses-library/>, <uses-feature/>, <uses-permission/>, tools:node.
SDK. Описание аннотации CheckSdkIntAtLeast.
Activity. Описание ComponentActivity, FragmentActivity и AppCompatActivity.
Network. Описание формата JSON.
Build. Описание R8 Missing Rules.
UI. Описание strings.xml, синтаксис форматирования, нумерованные аргументы, экранирование символов.
Описание LocalActivity.
Описание модификатора Modifier.composed.
Описание аннотации NonRestartableComposable.
Описание метода exclude для исключения зависимостей.
Описание свойства android.nonFinalResIds.
Описание свойства packaging.
Описание свойства networkTimeout.
Обновилось описание хоткеев.
Добавлено 5 Android-проектов.
Добавлено 3 WearOS-проекта.
Добавлен 1 XR-проект.
Добавлено 8 KMP-проектов.
#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Добавлено 32 новых эмодзи.
Теперь их ровно 800.
Все паки: первый • второй • третий • четвертый • пятый
Сайт и миниапп с названиями, поиском и фильтрами
#emoji@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Внутри:
• Как удалёнка усиливает чувство изоляции и перегрузки.
• Как совмещать работу и личные проекты без вреда для кукухи.
• Что делать, если уже выгорел.
Приведены реальные истории инженеров и практические советы по восстановлению продуктивности и баланса. Использованы научные исследования и экспертные мнения.
#deepresearch@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работать час в день и всё успевать
Зачем сокращать рабочий день до минимума? Ведь социальные реформаторы еще сто лет назад придумали удобную схему – 8 часов на работу, 8 часов на отдых, 8 часов на сон. От рассвета до заката с перерывом на обед. Но сколько людей, столько и идей. Самыми распространенными причинами будут следующие:
• Выгорел – нужно время восстановиться.
• Учеба – вуз, переквалификация, изучение нового стека.
• Побочные проекты – блог, стартап, опенсорс, запуск курса.
• Вторая фуллтайм работа.
• Семья и дети – нужно больше личного времени.
• Финансы – увеличить доход в час.
• Здоровье – хронические болезни, падающее зрение, приближающийся тридцатник.
• Осознанный минимализм – сокращение нагрузки, смена образа жизни, перефокусировка.
Причины определены. Пора заканчивать геройствовать и начинать работать эффективно. Углы – срезать. Горы – обходить. Для этого придется перестроить подход к карьере следуя четырем шагам:
1. Выбрать подходящую компанию
Понять, как в компании идут дела можно еще на собесе. Есть две дорожки – высоконагруженная хасл культура или чилловая хакуна матата. Первые – классическое айти с выстроенными процессами, созвонами на каждый чих, необъятной базой знаний в конфлю и репой на тысячу модулей. На перекрас кнопки уйдет два дня, десять уровней согласований, аппрувов, ревью, тестов, автотестов и поэтапных раскаток. Кроме того, нужно не забыть затрекать время и списать трудозатраты. У второго типа компаний рабочая культура отличается кардинально. Дикий запад, удаленка, отсутствие процессов, асинхронная коммуникация и коммиты в мастер. Это будут банки из второй сотни, ритейлы и условные продавцы корма для собак. Компании, для которых мобильное приложение не смысл жизни, а дополнительный источник трафика. Чем меньше людей в компании, включая руководителя, будет понимать специфику твоей работы, тем лучше. Информационная асимметрия и атмосфера, пропитанная чувством свободы. Если в начале карьеры не получится поработать в подобной компании, велик шанс навсегда остаться слоном, прикованным к колышку.
2. Прокачать продуктовый опыт
Насмотренность важна. Новые задачи не роняют в тильт и долгие ресерчи. Чем больше повидал, тем меньше думаешь. Быстрее едешь по рельсам. Для этого нужно менять работу каждый год. Совмещать несколько проектов параллельно. Прыгать с проекта на проект внутри подразделения. Постараться поработать над всеми приложениями компании. Это приведет к тому, что за короткое время освоятся известные архитектуры и подходы в разработке. Работать станет легче.
3. Переиспользовать всё, к чему был доступ
В разработке все по сотому кругу повторяется и переиспользуется. Важно не тратить драгоценное время на написание нового функционала. Рабочие репозитории, к которым был доступ нужно непременно утащить себе на хард и не удалять после увольнения. Решения, которые применялись, должны быть в быстром доступе для имплементации уже на новом месте работы. Роадмапы, генераторы шаблонов и AI-ассистенты – наши лучшие друзья.
4. Правильно выбирать задачи и управлять сроками
Хорошая задача выглядит сложной, но решается легко. Если есть возможность выбирать – забирать таски, с которыми был аналогичный опыт ранее. А также задачи с контролируемой зоной ответственности. Чем больше у задачи связей и исполнителей, тем медленнее и непредсказуемее она двигается по канбан-доске, и наоборот. Сроки задач необходимо завышать кратно – x2 или x3. Коллеги с первого дня должны привыкнуть к твоему размеренному темпу работы. Без воспитания в себе оппортунистического поведения каши не сварить.
Нет ничего невозможного, если очень захотеть. Желаю тебе меньше работать и больше времени уделять своим личным радостям.
Зачем сокращать рабочий день до минимума? Ведь социальные реформаторы еще сто лет назад придумали удобную схему – 8 часов на работу, 8 часов на отдых, 8 часов на сон. От рассвета до заката с перерывом на обед. Но сколько людей, столько и идей. Самыми распространенными причинами будут следующие:
• Выгорел – нужно время восстановиться.
• Учеба – вуз, переквалификация, изучение нового стека.
• Побочные проекты – блог, стартап, опенсорс, запуск курса.
• Вторая фуллтайм работа.
• Семья и дети – нужно больше личного времени.
• Финансы – увеличить доход в час.
• Здоровье – хронические болезни, падающее зрение, приближающийся тридцатник.
• Осознанный минимализм – сокращение нагрузки, смена образа жизни, перефокусировка.
Причины определены. Пора заканчивать геройствовать и начинать работать эффективно. Углы – срезать. Горы – обходить. Для этого придется перестроить подход к карьере следуя четырем шагам:
1. Выбрать подходящую компанию
Понять, как в компании идут дела можно еще на собесе. Есть две дорожки – высоконагруженная хасл культура или чилловая хакуна матата. Первые – классическое айти с выстроенными процессами, созвонами на каждый чих, необъятной базой знаний в конфлю и репой на тысячу модулей. На перекрас кнопки уйдет два дня, десять уровней согласований, аппрувов, ревью, тестов, автотестов и поэтапных раскаток. Кроме того, нужно не забыть затрекать время и списать трудозатраты. У второго типа компаний рабочая культура отличается кардинально. Дикий запад, удаленка, отсутствие процессов, асинхронная коммуникация и коммиты в мастер. Это будут банки из второй сотни, ритейлы и условные продавцы корма для собак. Компании, для которых мобильное приложение не смысл жизни, а дополнительный источник трафика. Чем меньше людей в компании, включая руководителя, будет понимать специфику твоей работы, тем лучше. Информационная асимметрия и атмосфера, пропитанная чувством свободы. Если в начале карьеры не получится поработать в подобной компании, велик шанс навсегда остаться слоном, прикованным к колышку.
2. Прокачать продуктовый опыт
Насмотренность важна. Новые задачи не роняют в тильт и долгие ресерчи. Чем больше повидал, тем меньше думаешь. Быстрее едешь по рельсам. Для этого нужно менять работу каждый год. Совмещать несколько проектов параллельно. Прыгать с проекта на проект внутри подразделения. Постараться поработать над всеми приложениями компании. Это приведет к тому, что за короткое время освоятся известные архитектуры и подходы в разработке. Работать станет легче.
3. Переиспользовать всё, к чему был доступ
В разработке все по сотому кругу повторяется и переиспользуется. Важно не тратить драгоценное время на написание нового функционала. Рабочие репозитории, к которым был доступ нужно непременно утащить себе на хард и не удалять после увольнения. Решения, которые применялись, должны быть в быстром доступе для имплементации уже на новом месте работы. Роадмапы, генераторы шаблонов и AI-ассистенты – наши лучшие друзья.
4. Правильно выбирать задачи и управлять сроками
Хорошая задача выглядит сложной, но решается легко. Если есть возможность выбирать – забирать таски, с которыми был аналогичный опыт ранее. А также задачи с контролируемой зоной ответственности. Чем больше у задачи связей и исполнителей, тем медленнее и непредсказуемее она двигается по канбан-доске, и наоборот. Сроки задач необходимо завышать кратно – x2 или x3. Коллеги с первого дня должны привыкнуть к твоему размеренному темпу работы. Без воспитания в себе оппортунистического поведения каши не сварить.
Нет ничего невозможного, если очень захотеть. Желаю тебе меньше работать и больше времени уделять своим личным радостям.
В роадмап добавлено еще 49 решений задач с CodeRun. Теперь их там 128.
• Ход конём - 2
• Движение по полосам
• Симметричная последовательность
• Чемпионат по метанию коровьих лепешек
• Метро
• Улучшение успеваемости
• Пирамида
• Треугольники
• Космическое поселение
• Расстановка ноутбуков
• Очень лёгкая задача
• Площадь
• Провода
• Субботник
• Медиана объединения
• Наблюдение за студентами
• Точки и отрезки
• Кассы
• Высота дерева
• Глубина добавляемых элементов
• Второй максимум
• Обход
• Вывод листьев
• Вывод развилок
• Вывод веток
• АВЛ-сбалансированность
• Родословная: число потомков
• Родословная: подсчёт уровней
• Гистограмма
• Красивая строка
• Коллекционер Диего
• Минимальный прямоугольник
• Скучная лекция
• Стек с защитой от ошибок
• Правильная скобочная последовательность
• Постфиксная запись
• Сортировка вагонов lite
• Великое Лайнландское переселение
• Очередь с защитой от ошибок
• Дек с защитой от ошибок
• Хипуй
• Пирамидальная сортировка
• Три единицы подряд
• Кузнечик
• Мягкие подстилки
• Уникальные элементы
• Все дороги ведут в Рим
• Прокачай героя
• Уникальные пользователи
#coderun@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Решены все задачи из подборки Подготовка к собеседованию в HR Tech
• Словарь синонимов
• Ближайшее число
• Полиглоты
• Наибольшее произведение двух чисел
• Правильная скобочная последовательность
• Туризм
• Сумма номеров
• Поиск в глубину
• Длина кратчайшего пути
• Высота дерева
• Минимум на отрезке
Всего на CodeRun 11 подборок с задачами, которые можно решить на языке Kotlin.
#coderun@foundout
• Словарь синонимов
• Ближайшее число
• Полиглоты
• Наибольшее произведение двух чисел
• Правильная скобочная последовательность
• Туризм
• Сумма номеров
• Поиск в глубину
• Длина кратчайшего пути
• Высота дерева
• Минимум на отрезке
Всего на CodeRun 11 подборок с задачами, которые можно решить на языке Kotlin.
#coderun@foundout
Что будет, если не указать активити в манифесте.
Это же касается сервисов и контент провайдеров.
В случае с манифестом последние версии IDE хотя бы предупреждают о пропущенном декларировании. А вот при запуске стороннего приложения через интент лучшая практика - отлавливать возможный ActivityNotFoundException в try-catch.
Это же касается сервисов и контент провайдеров.
В случае с манифестом последние версии IDE хотя бы предупреждают о пропущенном декларировании. А вот при запуске стороннего приложения через интент лучшая практика - отлавливать возможный ActivityNotFoundException в try-catch.