Навигация по контенту
Настало время обновить закреп.
Привет! Это канал о карьере в IT в роли Android Developer. Здесь ты найдешь:
• Карьерный роадмап в Notion.
Содержит:
– Список бесплатных курсов.
– Рекомендации по прохождению интервью.
– Примеры System Design.
– Задачи на Live Coding от разных компаний.
– 1000+ вопросов с собеседований + ответы.
– Алгоритмы и структуры данных.
– Java и Kotlin.
– RxJava.
– Android SDK.
– Android Jetpack.
– Compose.
– Gradle.
– Git.
– Примеры open-source проектов.
Посты с обновлениями: #roadmap@foundout.
• Набор эмодзипаков со всеми мобильными и айти сервисами. Уже 1000 эмодзи. Посмотреть в миниаппе.
🐗 🐗 🐗 🐗 🐗 🐗 🐗 🐗 🐗 🐗 🐗
🐗 🐗 🐗 🐗 🐗 🐗
🐗 🐗 🐗 🐗 🐗
🐗 🐗 🐗 🐗 🐗
История развития: #emoji@foundout.
• Серия постов о прохождении собеседований на российском рынке. Что спрашивают на первичном скрининге, техническом интервью и собесе на софты. Список ТОП-100 вопросов с ответами. Как и зачем делать запись собеса.
• Подтверждение всех навыков на HeadHunter, необходимых Android-разработчику. Ответы на теоретические и практические тесты.
Посты: #hhskills@foundout.
• Годовой марафон решения задач с сервиса LeetCode. Все решения доступны в роадмапе.
Отчеты: #leetcode@foundout.
• Попытка решить все задачи с сервиса Yandex CodeRun с компилятором Kotlin/Java, включая подборки. Это самый полный в интернете сборник решений.
Посты: #coderun@foundout.
• Пост про типобезопасные зависимости.
• Пост про термины из Android на английском.
• Пост про хоткеи в Android Studio.
• Пост про использование BOM-зависимостей.
• Пост какую Activity выбрать.
• Пост как проектировать приложение с нуля.
• Пост как совмещать 2 дейли.
• Пост как использовать ChatGPT в разработке.
🐗 Boosty со всеми постами и платным чатом.
🐗 YouTube с видео про Android.
🐗 GitHub с репозиториями.
movies – мультиплатформенное приложение со всеми свистелками.
android-template – шаблон для старта Android-проекта.
kmp-template – шаблон для старта KMP-проекта.
А также:
🎢 Пост как докатился до жизни такой
🐺 Рецензия на книгу «Морской волк» Джека Лондона
🐗 Пост про отсылки к Игре престолов
🐗 Гайд по Telegraph
🏝 Пост как выгодно уходить в отпуск
🦍 Бунт против системы подарков коллегам
🇯🇵 Пост про Японию
Настало время обновить закреп.
Привет! Это канал о карьере в IT в роли Android Developer. Здесь ты найдешь:
• Карьерный роадмап в Notion.
Содержит:
– Список бесплатных курсов.
– Рекомендации по прохождению интервью.
– Примеры System Design.
– Задачи на Live Coding от разных компаний.
– 1000+ вопросов с собеседований + ответы.
– Алгоритмы и структуры данных.
– Java и Kotlin.
– RxJava.
– Android SDK.
– Android Jetpack.
– Compose.
– Gradle.
– Git.
– Примеры open-source проектов.
Посты с обновлениями: #roadmap@foundout.
• Набор эмодзипаков со всеми мобильными и айти сервисами. Уже 1000 эмодзи. Посмотреть в миниаппе.
История развития: #emoji@foundout.
• Серия постов о прохождении собеседований на российском рынке. Что спрашивают на первичном скрининге, техническом интервью и собесе на софты. Список ТОП-100 вопросов с ответами. Как и зачем делать запись собеса.
• Подтверждение всех навыков на HeadHunter, необходимых Android-разработчику. Ответы на теоретические и практические тесты.
Посты: #hhskills@foundout.
• Годовой марафон решения задач с сервиса LeetCode. Все решения доступны в роадмапе.
Отчеты: #leetcode@foundout.
• Попытка решить все задачи с сервиса Yandex CodeRun с компилятором Kotlin/Java, включая подборки. Это самый полный в интернете сборник решений.
Посты: #coderun@foundout.
• Пост про типобезопасные зависимости.
• Пост про термины из Android на английском.
• Пост про хоткеи в Android Studio.
• Пост про использование BOM-зависимостей.
• Пост какую Activity выбрать.
• Пост как проектировать приложение с нуля.
• Пост как совмещать 2 дейли.
• Пост как использовать ChatGPT в разработке.
movies – мультиплатформенное приложение со всеми свистелками.
android-template – шаблон для старта Android-проекта.
kmp-template – шаблон для старта KMP-проекта.
А также:
Please open Telegram to view this post
VIEW IN TELEGRAM
8 12 5 5 2 1 1
За май решена 31 задача уровня изи. Всего 278. Поднялся в рейтинге на 394 257 место.
• Implement Stack using Queues
• Implement Queue using Stacks
• Find the Town Judge
• Print in Order
• Find a Corresponding Node of a Binary Tree in a Clone of That Tree
• Kth Largest Element in a Stream
• Design HashSet
• Design HashMap
• Number of Recent Calls
• Island Perimeter
• Reshape the Matrix
• Range Addition II
• Image Smoother
• Flood Fill
• Toeplitz Matrix
• Transpose Matrix
• Projection Area of 3D Shapes
• Surface Area of 3D Shapes
• Available Captures for Rook
• Matrix Cells in Distance Order
• Cells with Odd Values in a Matrix
• Shift 2D Grid
• Find Winner on a Tic Tac Toe Game
• The K Weakest Rows in a Matrix
• Count Negative Numbers in a Sorted Matrix
• Lucky Numbers in a Matrix
• Check If a Word Occurs As a Prefix of Any Word in a Sentence
• Make Two Arrays Equal by Reversing Subarrays
• Maximum Product of Two Elements in an Array
• Shuffle the Array
• Final Prices With a Special Discount in a Shop
#leetcode@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Нейросети и мессенджеры
Две корпоративные реальности заметил. Существует острая необходимость использовать телеграм как основной способ общения команды и чатгпт как основную нейросеть для разработки и анализа проекта. И в то же время попытки запретить и ограничить использование и первого и второго из-за переживаний о безопасности.
На свете не осталось людей, которые не осознают важности нейросетей. Это понимают и в учебных заведениях и на работах. Работодатель поощряет использование ллмок в работе, но запрещает скармливать им кодовую базу проекта. А без контекста нейросеть работает как новоприбывший джун – фиксит баг в одном месте, создавая регрессию в другом. Вместо этого – плагин для IDE и корпоративный чатбот с апи популярных нейросетей, в котором служба безопасности мониторит все запросы. Ну и как этим пользоваться? За историю браузера бывает стыдно, как и о чем болтаешь с чатгпт вообще ни одна живая душа знать не должна.
В случае с телеграмом целое государство озаботилось переездом на скрепный блинолопатный мессенджер. Ок, ждем когда доделают. По этой или другим причинам в родных компаниях издается высочайший указ – по рабочим вопросам общаемся строго в тимсе, пароли и токены пересылаем только по корпоративной почте. Далее Коля пишет Толе про статус задачи, а тот ни в зуб ногой, потому что корпоративный мессенджер у него только на корпоративном компе установлен. Еще и под корпоративным впн. На ретро пиздов получают оба: один за то, что не прочитал, второй за то, что дополнительно не тегнул в телеграме. Для каждого из нас телега – личный мессенджер. В нем почти невозможно пропустить сообщения. Их можно читать в пушах и в предпросмотре. Еще и установлен на всех устройствах, потому что является удобным файлообменником. Работники больше вовлечены в общение, пересылают мемы в чатиках, отвечают в позднее и нерабочее время. Потому что телеграм это же не рабочая звонилка, сейчас быстренько отвечу зайду и выйду на пять секунд. Работодатель и мечтать не мог о такой вовлеченности. Во времена личного удовлетворения она ему перепадает даром.
Безопасность важна. Но не бывает быстрой коммуникации за пределами телеграма. Не бывает эффективного использования нейросетей с товарищем ревизором посередине.
Две корпоративные реальности заметил. Существует острая необходимость использовать телеграм как основной способ общения команды и чатгпт как основную нейросеть для разработки и анализа проекта. И в то же время попытки запретить и ограничить использование и первого и второго из-за переживаний о безопасности.
На свете не осталось людей, которые не осознают важности нейросетей. Это понимают и в учебных заведениях и на работах. Работодатель поощряет использование ллмок в работе, но запрещает скармливать им кодовую базу проекта. А без контекста нейросеть работает как новоприбывший джун – фиксит баг в одном месте, создавая регрессию в другом. Вместо этого – плагин для IDE и корпоративный чатбот с апи популярных нейросетей, в котором служба безопасности мониторит все запросы. Ну и как этим пользоваться? За историю браузера бывает стыдно, как и о чем болтаешь с чатгпт вообще ни одна живая душа знать не должна.
В случае с телеграмом целое государство озаботилось переездом на скрепный блинолопатный мессенджер. Ок, ждем когда доделают. По этой или другим причинам в родных компаниях издается высочайший указ – по рабочим вопросам общаемся строго в тимсе, пароли и токены пересылаем только по корпоративной почте. Далее Коля пишет Толе про статус задачи, а тот ни в зуб ногой, потому что корпоративный мессенджер у него только на корпоративном компе установлен. Еще и под корпоративным впн. На ретро пиздов получают оба: один за то, что не прочитал, второй за то, что дополнительно не тегнул в телеграме. Для каждого из нас телега – личный мессенджер. В нем почти невозможно пропустить сообщения. Их можно читать в пушах и в предпросмотре. Еще и установлен на всех устройствах, потому что является удобным файлообменником. Работники больше вовлечены в общение, пересылают мемы в чатиках, отвечают в позднее и нерабочее время. Потому что телеграм это же не рабочая звонилка, сейчас быстренько отвечу зайду и выйду на пять секунд. Работодатель и мечтать не мог о такой вовлеченности. Во времена личного удовлетворения она ему перепадает даром.
Безопасность важна. Но не бывает быстрой коммуникации за пределами телеграма. Не бывает эффективного использования нейросетей с товарищем ревизором посередине.
Вопросы про работу с файловой системой, поиск и фильтрацию данных в терминале, управление пользователями и правами, автоматизацию и скрипты, безопасность серверов и системное администрирование Linux.
Доступно 3 теста:
• Базовый – 10 вопросов за 15 минут.
• Средний – 13 вопросов за 20 минут.
• Продвинутый – 16 вопросов за 28 минут.
Также недавно на госуслугах появилось подтверждение айти компетенций. Если присмотреться – это те же навыки с хедхантера, которым сто лет в обед. В дополнение к шильдику в резюме получишь моднявую пдфку от минцифры.
ОТВЕТЫ В РОАДМАПЕ
#hhskills@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
В роадмап добавлено еще 49 решений задач с CodeRun. Теперь их там 278.
• Десант
• Игрушечный лабиринт
• Роботы
• Сталкер
• Взлом сервера
• Система линейных уравнений – 2
• Реклама
• Современники
• Охрана
• НГУ-стройка
• Игра в пьяницу
• Произведение
• Квадрат и окружность
• День рождения Васи
• Перемещение чанков
• Слова, в которые играют люди
• Разделение графа
• Поиск
• Добавить минусы
• Автодополнение
• Тимбилдинг
• Библиотека
• Мобилки
• MEW HTTP
• Сервис подписки
• Салон Health & Sun
• Достопримечательности
• RLE-сжатие
• Площадь между кривыми
• Поддоны на складе
• Расшифровка сообщения
• Коля и датацентры
• Система счисления
• Гвоздики
• МЕХ
• Разнообразие товаров
• Посадка в самолет
• Тетрамино
• Заезд 2.0
• Амбициозная улитка
• Построить квадрат
• Счастливый номер
• Вопросы про максимум
• Честный дележ
• Микроволновка
• Шифр подстановки
• Парные коды
• Ухудшение графа
• Сумма
#coderun@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Решены все задачи из подборки Бессонные ночи
• Нужно больше конфет!
• Классы подобия треугольников
• Шпионы!
• Доска с монетами
• Покрытие К отрезками
• Одномерный почтальон
#coderun@foundout
• Нужно больше конфет!
• Классы подобия треугольников
• Шпионы!
• Доска с монетами
• Покрытие К отрезками
• Одномерный почтальон
#coderun@foundout
Решены все задачи из подборки Новогодние приключения Кодеруна
• Ча-ча-ча
• Наряжаем ёлку
• Мандарины и апельсины
• Открытка с уравнением
• В город на ярмарку
• Снежки
• Новогоднее поздравление
• Игра из чулана
• Мандарины и апельсины 2.0
• Пицца для вечеринок
#coderun@foundout
• Ча-ча-ча
• Наряжаем ёлку
• Мандарины и апельсины
• Открытка с уравнением
• В город на ярмарку
• Снежки
• Новогоднее поздравление
• Игра из чулана
• Мандарины и апельсины 2.0
• Пицца для вечеринок
#coderun@foundout
Media is too big
VIEW IN TELEGRAM
Гуляя по Лосиному острову неожиданно оказался на экскурсии. Не смотря на дождь решил тоже послушать про оленей, лососей, маралов и яков.
Но оказалось в парке живут 60 диких кабанчиков. Двоих можно увидеть на специальной биоферме.
Степа сейчас на массе, весит 150 кг, походка размеренная. Его подруга Фрося более резвая и светлая.
Таких больших кабанов я еще не видел.
Но оказалось в парке живут 60 диких кабанчиков. Двоих можно увидеть на специальной биоферме.
Степа сейчас на массе, весит 150 кг, походка размеренная. Его подруга Фрося более резвая и светлая.
Таких больших кабанов я еще не видел.
Добавлено 64 новых эмодзи:
Обновлено 6 эмодзи:
Все паки: первый • второй • третий • четвертый • пятый • шестой
Сайт и миниапп с названиями, поиском и фильтрами
#emoji@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
MacBook Pro 16 Space Black (антирекомендация)
Сегодня продал старый мак, который покупал прошлым летом. Не прошло и года как он заколебал. Причины всего две – слишком большой и слишком черный.
Я мигрировал на него с 14-дюймового Space Grey. И в итоге вернулся на 14 дюймов, уже в серебристом цвете.
Начнем с диагонали.
Может показаться, что 14 дюймов для разработки маловато, а 16 будет в самый раз. Ничего подобного. В самый раз будет 27 дюймов. Докупается внешний 4k-монитор сяоми и вот теперь как надо.
В кафе этот монстр занимает весь столик, тарелку поставить некуда. В самолете не помещается на коленях. Если сидящий впереди пассажир откинет спинку кресла, он в лучшем случае лишит тебя комфорта, а в худшем – сломает экран. Нужен рюкзак побольше и спина покрепче таскать эту дуру.
Еще и легко коцается, когда задеваешь им углы и вслепую кабеля втыкаешь. Потому что это всего лишь крашеный алюминий.
Закончим про цвет.
Серебристые маки годами доминировали в продажах и мозолили глаза в фильмах и сериалах. Поэтому я, жертва маркетинга и любитель всего нового, решил брать именно черный мак. Подумаешь отпечатки пальцев будут оставаться, я же могу их тряпочкой протирать!
Оказалось отпечатки – вообще не повод для беспокойства. Другое дело проклятая пыль. Ее пиздец как видно, ведь она бело-серого цвета! Собираешься с утра продуктивно тикеты раскидать, идешь к своему aesthetic fucking slave месту, открываешь мак, а он засран с головы до ног! Засран экран. Засрана клавиатура. Засран трекпад. Засраны динамики. Всё в пылище и всё засрано. Вот те нате протирайте! И так каждый день.
От пыли дома никуда не деться. Это же наш собственный эпидермис сыпется. А вот от черного мака запросто.
Пошел нахер из моего дома и из моей жизни.
Сегодня продал старый мак, который покупал прошлым летом. Не прошло и года как он заколебал. Причины всего две – слишком большой и слишком черный.
Я мигрировал на него с 14-дюймового Space Grey. И в итоге вернулся на 14 дюймов, уже в серебристом цвете.
Начнем с диагонали.
Может показаться, что 14 дюймов для разработки маловато, а 16 будет в самый раз. Ничего подобного. В самый раз будет 27 дюймов. Докупается внешний 4k-монитор сяоми и вот теперь как надо.
В кафе этот монстр занимает весь столик, тарелку поставить некуда. В самолете не помещается на коленях. Если сидящий впереди пассажир откинет спинку кресла, он в лучшем случае лишит тебя комфорта, а в худшем – сломает экран. Нужен рюкзак побольше и спина покрепче таскать эту дуру.
Еще и легко коцается, когда задеваешь им углы и вслепую кабеля втыкаешь. Потому что это всего лишь крашеный алюминий.
Закончим про цвет.
Серебристые маки годами доминировали в продажах и мозолили глаза в фильмах и сериалах. Поэтому я, жертва маркетинга и любитель всего нового, решил брать именно черный мак. Подумаешь отпечатки пальцев будут оставаться, я же могу их тряпочкой протирать!
Оказалось отпечатки – вообще не повод для беспокойства. Другое дело проклятая пыль. Ее пиздец как видно, ведь она бело-серого цвета! Собираешься с утра продуктивно тикеты раскидать, идешь к своему aesthetic fucking slave месту, открываешь мак, а он засран с головы до ног! Засран экран. Засрана клавиатура. Засран трекпад. Засраны динамики. Всё в пылище и всё засрано. Вот те нате протирайте! И так каждый день.
От пыли дома никуда не деться. Это же наш собственный эпидермис сыпется. А вот от черного мака запросто.
Пошел нахер из моего дома и из моей жизни.
За июнь решено 30 задач уровня изи. Все они относятся к категории SQL и подразумевают написание SELECT-запроса, который возвращает результат в нужном виде. Количество задач перевалило за 300. Поднялся в рейтинге на 348 987 место.
• Combine Two Tables
• Employees Earning More Than Their Managers
• Duplicate Emails
• Customers Who Never Order
• Delete Duplicate Emails
• Rising Temperature
• Game Play Analysis I
• Employee Bonus
• Find Customer Referee
• Customer Placing the Largest Number of Orders
• Big Countries
• Sales Person
• Triangle Judgement
• Biggest Single Number
• Not Boring Movies
• Swap Salary
• Actors and Directors Who Cooperated At Least Three Times
• Product Sales Analysis I
• Project Employees I
• Sales Analysis III
• User Activity for the Past 30 Days I
• Article Views I
• Reformat Department Table
• Queries Quality and Percentage
• Average Selling Price
• Students and Examinations
• List the Products Ordered in a Period
• Replace Employee ID With The Unique Identifier
• Top Travellers
• Group Sold Products By The Date
#leetcode@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
По интернетам гуляет вакансия андроид-разработчика в команду телеграм с зарплатой миллион долларов в год. В фаанге сопоставимый рейз будет только на позициях L6+ с бонусами и акциями. За что такие бабки? Попробуем выяснить:
1. Пиар.
Телеграм исторически нанимает через челленджы. Это проверенный формат вирусного маркетинга. У него высокая эффективность. Сотни разработчиков копаются в исходниках и присылают патчи. Платформа получает бесплатный аудит, свежие идеи и людей в команду. По слухам, количество разработчиков в компании исчисляется десятками, а HR-отдел отсутствует вовсе. Платить сверх-зарплаты не проблема. Это укрепляет лояльность и привлекает новых сотрудников. Сами разработчики – призеры олимпиад и выпускники мат-/физ-факов из СНГ. Не отсвечивают и фанатеют от своего ремесла. Компания поощряет соревновательный дух, жесткую ответственность за результат и умение писать код без багов. Эту философию придется разделять.
2. Дубай.
Вакансия подразумевает оффер в Дубайский офис. Хорошо, если кабаныч одобрит удаленку. Иначе придется собирать манатки и переселяться в пустыню. Я был в Дубае дважды. Это в 2 раза больше, чем этот город заслуживает. Там невозможно жить. С апреля по октябрь на улице как в парилке. Застойный залив. Жизнь противоестественна и держится на кондиционировании, опреснении воды и импорте всей еды. Сложно интегрироваться. Виза с жесткой привязкой к работодателю. Для экспатов все заметно дороже: аренда, медицина, школы.
3. Приложение.
Код клиента лежит на гитхабе. Можно глянуть, с чем предстоит работать. Все челленджи требуют внедрения новой функциональности в текущую кодовую базу. А она, мягко говоря, специфичная. Никаких тебе чистых архитектур, котлинов и композов.
Есть такое выражение из 1984 года: программный код надо писать так, чтобы его легко читали люди, а только потом исполняли машины. В телеге на эту мудрость положили с прибором. Код не чистый и абстрактный, а тяжеловесный и лапшистый. Написан на Java и C++. Тестов нет. Каментов нет. Минимум внешних зависимостей. ExoPlayer, Zxing, WebRTC и RecyclerView завендорили вручную.
Используется подход Single-Activity. Конфигурация управляется вручную. Экраны – вьюхи, упорядоченные в стек, подобно фрагментам. XML-файлов нет. Компоненты создаются программно в коде. Вместо векторов – наборы png и найнпатчи. Анимации делаются с помощью ValueAnimator и ObjectAnimator. Для стикеров используется движок rlottie от самсунга, написанный на плюсах. Он кэширует битмапы и крутит их на CPU. Никакого OpenGL.
Сетевой слой держит долгоживущее шифрованное TCP-соединение. Шифрование, сокеты и API реализованы на плюсах и управляются через JNI. Файлы качаются чанками по 4 в параллель. Есть проверка CDN-хэшей и дозапись на диск. Используется собственный декларативный язык описания объектов и методов. Из декларации при сборке генерируется огромная схема на 72k строк. Для каждого конструктора получается класс-наследник TLObject, а для метода – такой же класс + обертка для ожидаемого ответа. Когда приложение отправляет запрос, объект сериализуется в буфер байтов нативной памяти, адрес буфера передаётся в ядро, оно шифрует и шлет пакет по TCP. Данные летают мимо куч Java. По сети не передаются даже имена полей. По крайней мере разработчики телеги могут говорить, что не перекладывают на работе джейсон.
Для локальной бд используется SQLite. Таблицы создаются на Java. Вызовы настроены через JNI, минуя распаковку в Java-объекты. Соединение открывается один раз при старте. Схема минималистичная, что упрощает миграции, но усложняет читаемость. База хранит ключи секретных чатов и защищена от бэкапа.
Экран профиля, который предлагается переделать в конкурсе, содержит 14608 строк кода. В рамках проекта это даже немного. Когда будет конкурс, связанный с экраном чата, придется читать 43368 строк. Из-за своих размеров он даже не загружается на гитхабе. Здесь же встречается 139-уровневый if-else.
И все это лишь вершина айсберга. Посмотреть не погружаясь в проект. Подобного «олимпиадного мастерства» там как говна за баней.
Не стыдно и лям просить за такое.
Please open Telegram to view this post
VIEW IN TELEGRAM
2 17 6 4 1 1
Посчитать зарплату
Бывает свалилась котлета на карту и совсем непонятен механизм ее формирования. Оказывается, можно не только его посчитать, но и предсказать.
По трудовому договору зарплата выплачивается каждые 15 дней. Понятия «аванс» в ТК нет. С окончания периода, за который начислят выплату также должно пройти не больше 15 дней. Сроки для зарплаты за первую половину месяца приходятся на 16-31 числа, а за вторую – на 1-15. Конкретные даты устанавливаются работодателем. Это могу быть любые дни: 5 и 20, 7 и 22, 10 и 25, 15 и 30. Деньги придут раньше, если на эти даты выпали выходные или праздники.
Для примера возьмем зарплату 500 000₽ Гросс (сумма до вычета налогов) и посчитаем.
С 1 января 2025 года действует пятиступенчатая прогрессивная шкала налога для физлиц. Если на протяжении года зарабатывать по 500k, то будут применяться 3 шкалы – 13%, 15% и 18%.
13% на первые 2.4 млн.
15% на сумму от 2.4 млн до 5 млн.
18% на сумму от 5 млн до 20 млн.
Таким образом зарплата чистыми будет таять на глазах:
В январе – 435 000₽ (500 000 × 0.87).
В мае – 433 000₽ (400 000 × 0.87 + 100 000 × 0.85).
В июне – 425 000₽ (500 000 × 0.85).
В ноябре – 410 000₽ (500 000 × 0.82).
Отпускные, премии и больничные добавляются к доходу того года, в котором выплачены, и могут приблизить даты перехода на 15% и 18%.
Ставка НДФЛ 1 января снова вернется к 13%.
Примеры
Посчитаем первую зарплату, если устроились на работу 14 апреля.
Выплаты 10 и 25 числа.
25 апреля будет выплата за период 1-15 апреля.
В апреле 22 рабочих дня.
В первой половине месяца мы успеем отработать 2.
500 000 / 22 = 22 727₽ – стоимость 1 рабочего дня в апреле.
22 727 × 2 × 0.87 = 39 545₽ – размер нашей первой зарплаты.
Посчитаем выплаты за май, если работаем с января.
Полная зарплата за месяц свалится платежами 25 мая и 10 июня и составит 433 000₽.
В мае 19 рабочих дней: 8 – в первой половине месяца и 11 – во второй.
500 000 / 19 = 26 316₽ – стоимость 1 рабочего дня в мае.
26 316 × 8 = 210 528₽ – «грязный» доход за 1–15 мая.
210 528 × 0.87 = 183 159₽ – выплата 25 мая.
4 × 500 000₽ = 2 млн – доход за январь-апрель.
2.4 млн - 2 млн - 210 528 = 189 472₽ - сумма, которая еще облагается 13%.
(189 472 × 0.87) + (100 000 × 0.85) = 249 841₽ – выплата 10 июня.
Поздравляю, вы переучились на бухгалтера.
Бывает свалилась котлета на карту и совсем непонятен механизм ее формирования. Оказывается, можно не только его посчитать, но и предсказать.
По трудовому договору зарплата выплачивается каждые 15 дней. Понятия «аванс» в ТК нет. С окончания периода, за который начислят выплату также должно пройти не больше 15 дней. Сроки для зарплаты за первую половину месяца приходятся на 16-31 числа, а за вторую – на 1-15. Конкретные даты устанавливаются работодателем. Это могу быть любые дни: 5 и 20, 7 и 22, 10 и 25, 15 и 30. Деньги придут раньше, если на эти даты выпали выходные или праздники.
Для примера возьмем зарплату 500 000₽ Гросс (сумма до вычета налогов) и посчитаем.
С 1 января 2025 года действует пятиступенчатая прогрессивная шкала налога для физлиц. Если на протяжении года зарабатывать по 500k, то будут применяться 3 шкалы – 13%, 15% и 18%.
13% на первые 2.4 млн.
15% на сумму от 2.4 млн до 5 млн.
18% на сумму от 5 млн до 20 млн.
Таким образом зарплата чистыми будет таять на глазах:
В январе – 435 000₽ (500 000 × 0.87).
В мае – 433 000₽ (400 000 × 0.87 + 100 000 × 0.85).
В июне – 425 000₽ (500 000 × 0.85).
В ноябре – 410 000₽ (500 000 × 0.82).
Отпускные, премии и больничные добавляются к доходу того года, в котором выплачены, и могут приблизить даты перехода на 15% и 18%.
Ставка НДФЛ 1 января снова вернется к 13%.
Примеры
Посчитаем первую зарплату, если устроились на работу 14 апреля.
Выплаты 10 и 25 числа.
25 апреля будет выплата за период 1-15 апреля.
В апреле 22 рабочих дня.
В первой половине месяца мы успеем отработать 2.
500 000 / 22 = 22 727₽ – стоимость 1 рабочего дня в апреле.
22 727 × 2 × 0.87 = 39 545₽ – размер нашей первой зарплаты.
Посчитаем выплаты за май, если работаем с января.
Полная зарплата за месяц свалится платежами 25 мая и 10 июня и составит 433 000₽.
В мае 19 рабочих дней: 8 – в первой половине месяца и 11 – во второй.
500 000 / 19 = 26 316₽ – стоимость 1 рабочего дня в мае.
26 316 × 8 = 210 528₽ – «грязный» доход за 1–15 мая.
210 528 × 0.87 = 183 159₽ – выплата 25 мая.
4 × 500 000₽ = 2 млн – доход за январь-апрель.
2.4 млн - 2 млн - 210 528 = 189 472₽ - сумма, которая еще облагается 13%.
(189 472 × 0.87) + (100 000 × 0.85) = 249 841₽ – выплата 10 июня.
Поздравляю, вы переучились на бухгалтера.
Банковские вклады
Большинство людей, которых я знаю, держат деньги в 1-2 банках. Чаще всего в сбере и тиньке. В то же время у нас на ближайшие годы очень приятная ставка по депозитам и они благонамеренно несут свои наносеки на банковские вклады. Если не заработать, то спасти средства от поедания инфляцией. Открывают вклад на год под 15% и думают, что молодцы. Нет, не молодцы.
Больших прибылей с таким подходом не увидеть, много денег не скопить. Правильная стратегия следующая:
Не вставая с дивана открыть счета сразу в 30 банках. Подойдут все крупные, а также мелочь вроде яндекса, озона и ренессанса. Давно канули времена, когда обсуживание карточек было платным. Максимум тебя прогреют на платное смс-оповещение, его можно сразу отключить.
Карточку доставляет представитель. Деньги между банками переводятся по СБП. Разыскивать банкомат не требуется.
Дальше нужно быть очень уверенным в завтрашнем дне, чтобы закладывать средства на целый год. Они могут понадобиться в краткосрочной перспективе. Придется закрывать вклад и терять проценты. Лучше на срок 2-6 месяцев.
Людская база перестала рости и банки вынуждены жестко конкурировать за клиентов. К слову, такая же конкуренция существует между маркетплейсами, заправками, интернет-провайдерами и мобильными операторами. Нужно быть очень невезучим, чтобы при оформлении перехода к конкуренту не слутать скидку на тариф.
Почти все банки дают повышенный процент на открытие первого вклада. Я так 2 года инвестировал под 12%, когда ключевая ставка была 7.5% и под 24%, когда она выросла до 20. Просто открывал счета в новых и новых банках. Сейчас мои гроши лежат под 20-23%.
Очень скоро банки прознают, что они у вас не единственные и начинают бодаться. Пропихивают акции и предложения, чтобы бабло хостилось именно у них. Например, тинек стабильно раз в несколько месяцев предлагает открыть вклад по ключевой ставке сроком на 2 месяца. При том, что для обычных смертных их ставка стандартно ниже официальной на 5 базисных пунктов. Красный, синий и другие банки поступают также.
Деньги положены, процентики капают. Теперь надо пристроить средства, к которым требуется быстрый доступ. Их можно загнать в яндекс банк на так называемый сейв без срока. Выплата процентов будет каждый день на этот же счет. Текущая ставка там 16%. Деньги остаются в доступе.
Осенью в России собрались принимать закон для борьбы с дропперами. Количество банковских счетов на одного человека могут ограничить. Самое время озаботиться всем этим.
Большинство людей, которых я знаю, держат деньги в 1-2 банках. Чаще всего в сбере и тиньке. В то же время у нас на ближайшие годы очень приятная ставка по депозитам и они благонамеренно несут свои наносеки на банковские вклады. Если не заработать, то спасти средства от поедания инфляцией. Открывают вклад на год под 15% и думают, что молодцы. Нет, не молодцы.
Больших прибылей с таким подходом не увидеть, много денег не скопить. Правильная стратегия следующая:
Не вставая с дивана открыть счета сразу в 30 банках. Подойдут все крупные, а также мелочь вроде яндекса, озона и ренессанса. Давно канули времена, когда обсуживание карточек было платным. Максимум тебя прогреют на платное смс-оповещение, его можно сразу отключить.
Карточку доставляет представитель. Деньги между банками переводятся по СБП. Разыскивать банкомат не требуется.
Дальше нужно быть очень уверенным в завтрашнем дне, чтобы закладывать средства на целый год. Они могут понадобиться в краткосрочной перспективе. Придется закрывать вклад и терять проценты. Лучше на срок 2-6 месяцев.
Людская база перестала рости и банки вынуждены жестко конкурировать за клиентов. К слову, такая же конкуренция существует между маркетплейсами, заправками, интернет-провайдерами и мобильными операторами. Нужно быть очень невезучим, чтобы при оформлении перехода к конкуренту не слутать скидку на тариф.
Почти все банки дают повышенный процент на открытие первого вклада. Я так 2 года инвестировал под 12%, когда ключевая ставка была 7.5% и под 24%, когда она выросла до 20. Просто открывал счета в новых и новых банках. Сейчас мои гроши лежат под 20-23%.
Очень скоро банки прознают, что они у вас не единственные и начинают бодаться. Пропихивают акции и предложения, чтобы бабло хостилось именно у них. Например, тинек стабильно раз в несколько месяцев предлагает открыть вклад по ключевой ставке сроком на 2 месяца. При том, что для обычных смертных их ставка стандартно ниже официальной на 5 базисных пунктов. Красный, синий и другие банки поступают также.
Деньги положены, процентики капают. Теперь надо пристроить средства, к которым требуется быстрый доступ. Их можно загнать в яндекс банк на так называемый сейв без срока. Выплата процентов будет каждый день на этот же счет. Текущая ставка там 16%. Деньги остаются в доступе.
Осенью в России собрались принимать закон для борьбы с дропперами. Количество банковских счетов на одного человека могут ограничить. Самое время озаботиться всем этим.
Правила съема
Случился пятый переезд на очередную съемную квартиру в Москве. В среднем меняю место жительства каждые 1.5 года. Не во всех сферах жизни мне нравится постоянство.
Я уже пожил в 7 районах Москвы и в самых разных квартирах: от клоповника в сталинке до апартаментов в клубном доме. Поэтому на правах калача тертого расскажу, что из себя представляет рынок аренды недвижимости в июне 2025 и как айтишнику работящему жить поживать бобра наживать.
Для поиска имеем 3 площадки: циан, авито и яндекс аренда. Первый является абсолютным монополистом. Как искать работу на хедхантере и продавать хлам на авито. На других площадках выхлоп слабый.
Далее мы вынуждены отталкиваться от требований. Если хотим полную загрузку: внутри мкада, не под снос, не 1 этаж, 40+ квадратов, дизайнерский/косметический ремонт, изолированная спальня, гардеробная, кондей, холодильник, посудомойка, стиралка, сушилка, много розеток, комнатная мебель и кухонный гарнитур, то ценник будет никак не ниже 70k/мес.
Опыт показывает, что есть только один шанс снять такую квартиру – настроить на циане поиск с мгновенными уведомлениями о появлении новых квартир. Есть даже бот в тг. Далее сразу звонить и ехать на просмотр. Хорошие варианты точно будут раз в 1-2 дня. Если хата выложена и не сдалась за 3 дня – с ней явно или неявно что-то не так. Таким методом я арендовал 3 последние жилплощади. Объявление и 10 минут не провисело.
Не стоит забывать и про мошенников. Их на циане как тараканов в бабушатнике. Самые частые кейсы – просьба скинуть 10-15k, чтобы застолбить квартиру от других желающих и махинации с заключением договора онлайн. Это скам и отъем денег у населения. Никаких оплат до подписания договора на месте. Он должен быть правильно оформлен, паспорта, доверенности, подтверждение права собственности, выписки из егрн, перечень имущества/повреждений и так далее.
Договор стандартный – на 11 месяцев. Потом пролонгация. Если предлагают дальше жить на добром слове – лучше не соглашаться. Повышать цену в этот период не принято, при перезаключении она растет в среднем на 5-10k, ибо инфляция. Оплата бывает по ИП, самый классный вариант как по мне, но и довольно редкий. Или передачей кэша из рук в руки. Онлайн-переводы последний раз видел в пандемию.
Залог в 100% платежа – это база. На циане установлен практически у всех квартир. Возвращается в конце аренды.
Комиссия агенту в 30-40% тоже распространенная практика. В половине случаев агент – манерный человек с языком без костей, все расскажет и покажет, сопроводит и поможет. Еще в половине – соседка сверху, которая в свое свободное время просто открывает хату. Сейчас много объявлений напрямую от собственников и без комиссии. Но на циане с этим полный бардак. Агентства дублируют объявления от собственников, пишут более продающее описание и влупливают свою конскую комиссию. Таких надо отсеивать.
Кому готовы сдать хату? Грустная правда в том, что наличие хорошей должности, коммерческой востребованности и стабильного дохода не определяют ничего. На хорошую хату и так будут десятки желающих с баблом. Поэтому собственник всегда управляет выбором. А хочет он по пунктам:
• аренду на длительный срок (от года)
• граждан рф
• работающих
• не курящих
• без животных
• без детей
Общепринят консенсус, что любимый хомячок и демография это хорошо и традиционно, но где-нибудь в своей хате, а не в арендованной. Квартира в собственности – главная скрепа любого русского человека. Поэтому арендодатель мечтает, чтобы ты проводил в ней как можно меньше времени и не вытаптывал ламинат.
Идеальный арендатор не парит и не синячит, все время пропадает на работе, в квартиру возвращается, чтобы принять душ и поспать.
Для переезда есть яндекс доставка. Там же взять 1-2 грузчиков, чтобы все таскали, разгружали, поднимали на этаж. Для хранения вещей – кладовкин. На озоне есть пленка-пупырка, чтобы зеркала, столешницы и мониторы пережили транспортировку.
Такие дела.
Случился пятый переезд на очередную съемную квартиру в Москве. В среднем меняю место жительства каждые 1.5 года. Не во всех сферах жизни мне нравится постоянство.
Я уже пожил в 7 районах Москвы и в самых разных квартирах: от клоповника в сталинке до апартаментов в клубном доме. Поэтому на правах калача тертого расскажу, что из себя представляет рынок аренды недвижимости в июне 2025 и как айтишнику работящему жить поживать бобра наживать.
Для поиска имеем 3 площадки: циан, авито и яндекс аренда. Первый является абсолютным монополистом. Как искать работу на хедхантере и продавать хлам на авито. На других площадках выхлоп слабый.
Далее мы вынуждены отталкиваться от требований. Если хотим полную загрузку: внутри мкада, не под снос, не 1 этаж, 40+ квадратов, дизайнерский/косметический ремонт, изолированная спальня, гардеробная, кондей, холодильник, посудомойка, стиралка, сушилка, много розеток, комнатная мебель и кухонный гарнитур, то ценник будет никак не ниже 70k/мес.
Опыт показывает, что есть только один шанс снять такую квартиру – настроить на циане поиск с мгновенными уведомлениями о появлении новых квартир. Есть даже бот в тг. Далее сразу звонить и ехать на просмотр. Хорошие варианты точно будут раз в 1-2 дня. Если хата выложена и не сдалась за 3 дня – с ней явно или неявно что-то не так. Таким методом я арендовал 3 последние жилплощади. Объявление и 10 минут не провисело.
Не стоит забывать и про мошенников. Их на циане как тараканов в бабушатнике. Самые частые кейсы – просьба скинуть 10-15k, чтобы застолбить квартиру от других желающих и махинации с заключением договора онлайн. Это скам и отъем денег у населения. Никаких оплат до подписания договора на месте. Он должен быть правильно оформлен, паспорта, доверенности, подтверждение права собственности, выписки из егрн, перечень имущества/повреждений и так далее.
Договор стандартный – на 11 месяцев. Потом пролонгация. Если предлагают дальше жить на добром слове – лучше не соглашаться. Повышать цену в этот период не принято, при перезаключении она растет в среднем на 5-10k, ибо инфляция. Оплата бывает по ИП, самый классный вариант как по мне, но и довольно редкий. Или передачей кэша из рук в руки. Онлайн-переводы последний раз видел в пандемию.
Залог в 100% платежа – это база. На циане установлен практически у всех квартир. Возвращается в конце аренды.
Комиссия агенту в 30-40% тоже распространенная практика. В половине случаев агент – манерный человек с языком без костей, все расскажет и покажет, сопроводит и поможет. Еще в половине – соседка сверху, которая в свое свободное время просто открывает хату. Сейчас много объявлений напрямую от собственников и без комиссии. Но на циане с этим полный бардак. Агентства дублируют объявления от собственников, пишут более продающее описание и влупливают свою конскую комиссию. Таких надо отсеивать.
Кому готовы сдать хату? Грустная правда в том, что наличие хорошей должности, коммерческой востребованности и стабильного дохода не определяют ничего. На хорошую хату и так будут десятки желающих с баблом. Поэтому собственник всегда управляет выбором. А хочет он по пунктам:
• аренду на длительный срок (от года)
• граждан рф
• работающих
• не курящих
• без животных
• без детей
Общепринят консенсус, что любимый хомячок и демография это хорошо и традиционно, но где-нибудь в своей хате, а не в арендованной. Квартира в собственности – главная скрепа любого русского человека. Поэтому арендодатель мечтает, чтобы ты проводил в ней как можно меньше времени и не вытаптывал ламинат.
Идеальный арендатор не парит и не синячит, все время пропадает на работе, в квартиру возвращается, чтобы принять душ и поспать.
Для переезда есть яндекс доставка. Там же взять 1-2 грузчиков, чтобы все таскали, разгружали, поднимали на этаж. Для хранения вещей – кладовкин. На озоне есть пленка-пупырка, чтобы зеркала, столешницы и мониторы пережили транспортировку.
Такие дела.
1 15 4 4 3 2 2 1
Регрессионное тестирование – это однозначно хорошо. Сколько раз у меня что-то отваливалось в текущей версии приложения при затаскивании новой кнопки.
Тесты охватывают базовые принципы тестирования, жизненный цикл разработки, работу с тестовыми данными и оценку рисков.
Доступно 3 теста:
• Базовый – 10 вопросов за 15 минут.
• Средний – 12 вопросов за 18 минут.
• Продвинутый – 15 вопросов за 23 минуты.
ОТВЕТЫ В РОАДМАПЕ
#hhskills@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Corporate boy
Работа в корпорации отличается от работы в так любимых мной мелких студиях и стартапах-берлогах. В основном масштабом. Больше процессов, людей и командного взаимодействия. Меньше возможностей зашкериться и прохлаждаться.
Чтобы тупить поменьше и вдуплять побольше, приходится учиться на ходу. Иначе накапливается неэффективность, происходит мискоммуникация и едет кукуха. В какой-то момент я решил вести списочек таких ситуаций. Каждый пункт – мой конкретный факап, который произошел однажды и больше не повторялся.
После увольнения список пополняться перестал. Будет лежать здесь:
• Всегда должен быть установлен будильник. А лучше два. Тогда вероятность проспать дейли уменьшается.
• Работать намного приятнее, если утром принять душ, умыться, потренить, надеть чистое белье и плотно позавтракать.
• Чего нет в календаре – нет и в реальной жизни. Все рабочие события должны быть туда добавлены.
• По работе делать только необходимый минимум. Рефакторинг – для ускорения будущей работы.
• Знать примерные сроки закрытия своих задач. Предсказуемость – это главное.
• Если что-то блокирует пайплайн – отложить и переключиться на другие задачи.
• Мокать данные бэкэнда. Не ставить задачу на паузу из-за долгого ожидания апи.
• При общении с менеджментом больше бизнес деталей, меньше технических подробностей.
• Не транслировать пассивность.
• Никакой самодеятельности. Согласовывать доработки по дизайну и апи. Снимать с себя всю ответственность.
• UI-таски тестировать на небольших (480x800) и больших (1440x3120) экранах.
• Не копить долги по работе. Особенно в пятницу. На выходные уходить свободным от тяжелого груза задач.
• Заранее оповещать коллег о планируемых датах отпуска. Чтобы не бодаться за числа.
• Пинговать коллег, если не отвечают. Пинговать их руководителей. Просить своего руководителя пингануть их руководителя.
• Не забывать про разные таймзоны коллег. Уточнять все нужное заранее.
• Локальные коммиты, не запушенные в репо, потеряются.
• Не удалять приложение аутентификатора. Не забыть установить его при смене телефона. Иначе утро пройдет в общении с IT‑саппортом.
• Не смотреть оранжевый ютуб и не гуглить как утилизировать 70 кг говядины под корпоративным впн.
• В телеграме включить in-app уведомления, чтобы не пропускать сообщения, когда сидишь в других чатах.
• В iOS отключить Siri Announce Calls, чтобы на созвоне она не спалила звонок со второй работы.
• Перед демо проверить, что приложение не вылетает прямо на первом экране и замокать недоделанный функционал.
Работа в корпорации отличается от работы в так любимых мной мелких студиях и стартапах-берлогах. В основном масштабом. Больше процессов, людей и командного взаимодействия. Меньше возможностей зашкериться и прохлаждаться.
Чтобы тупить поменьше и вдуплять побольше, приходится учиться на ходу. Иначе накапливается неэффективность, происходит мискоммуникация и едет кукуха. В какой-то момент я решил вести списочек таких ситуаций. Каждый пункт – мой конкретный факап, который произошел однажды и больше не повторялся.
После увольнения список пополняться перестал. Будет лежать здесь:
• Всегда должен быть установлен будильник. А лучше два. Тогда вероятность проспать дейли уменьшается.
• Работать намного приятнее, если утром принять душ, умыться, потренить, надеть чистое белье и плотно позавтракать.
• Чего нет в календаре – нет и в реальной жизни. Все рабочие события должны быть туда добавлены.
• По работе делать только необходимый минимум. Рефакторинг – для ускорения будущей работы.
• Знать примерные сроки закрытия своих задач. Предсказуемость – это главное.
• Если что-то блокирует пайплайн – отложить и переключиться на другие задачи.
• Мокать данные бэкэнда. Не ставить задачу на паузу из-за долгого ожидания апи.
• При общении с менеджментом больше бизнес деталей, меньше технических подробностей.
• Не транслировать пассивность.
• Никакой самодеятельности. Согласовывать доработки по дизайну и апи. Снимать с себя всю ответственность.
• UI-таски тестировать на небольших (480x800) и больших (1440x3120) экранах.
• Не копить долги по работе. Особенно в пятницу. На выходные уходить свободным от тяжелого груза задач.
• Заранее оповещать коллег о планируемых датах отпуска. Чтобы не бодаться за числа.
• Пинговать коллег, если не отвечают. Пинговать их руководителей. Просить своего руководителя пингануть их руководителя.
• Не забывать про разные таймзоны коллег. Уточнять все нужное заранее.
• Локальные коммиты, не запушенные в репо, потеряются.
• Не удалять приложение аутентификатора. Не забыть установить его при смене телефона. Иначе утро пройдет в общении с IT‑саппортом.
• Не смотреть оранжевый ютуб и не гуглить как утилизировать 70 кг говядины под корпоративным впн.
• В телеграме включить in-app уведомления, чтобы не пропускать сообщения, когда сидишь в других чатах.
• В iOS отключить Siri Announce Calls, чтобы на созвоне она не спалила звонок со второй работы.
• Перед демо проверить, что приложение не вылетает прямо на первом экране и замокать недоделанный функционал.
Как делать Android MVP-инди-пет-проект
Когда надо заделать Android-приложение с нуля, как минимально жизнеспособный продукт (MVP) или для индивидуального проекта (инди, пет), главная цель – быстро выпустить рабочий прототип, протестировать гипотезы на первых пользователях, выйти на рынок и получить обратную связь. В отличие от долгоживущих энтерпрайзов, масштабируемость и поддерживаемость мвп не так важна, а цена ошибок не высока.
Половина приложений отправится в утиль в следующие год-два, остальные будут улучшаться позже. Это значит, что на ранних этапах почти все устоявшиеся паттерны превратятся в антипаттерны. Потому что сожрут много времени и внимания. Выгоднее их отвергнуть как избыточные, а ресурс сохранить. Что именно можно пропустить:
• Многомодульность. Хватит одного модуля :app. Никто не запрещает раскладывать классы по папкам и переиспользовать. Конфигурация Gradle в моменте усложняет проект и увеличивает сроки разработки, особенно с >= 2 модулями на каждую фичу.
• Чистая архитектура. Кажется, мы дожили до времен, когда даже на уважаемых конференциях дядю боба с его луковицей выписывают из повестки. Сложная и многослойная архитектура часто не дает реальных преимуществ, а лишь привносит лишние церемонии на свое техобслуживание. Доходит до того, что разработчики пишут плагин для IDE, который им генерирует 20 классов на фичу.
• DI. Вместо использования фреймворков, таких, как Hilt, можно создавать экземпляры классов вручную. Или использовать сервис локатор. Это быстрее и проще, хоть и менее масштабируемо.
• Интерфейсы. Используются для обеспечения слабых связей между компонентами и упрощения тестирования. Часто можно увидеть Interactor и его реализацию InteractorImpl. Если мы контролируем весь код, жесткая связь между классами не будет проблемой. Методы можно вызывать напрямую из класса, который обрабатывает логику.
• KMP. Лучше начинать с нативного Android-приложения. Мультиплатформа постоянно подкидывает проблем, несмотря на обещанную стабильность. Вагон времени уходит на прописывание expect-actual.
• Миграция БД. Можно не делать, если база данных просто дублирует сетевой слой. Для Room вызывается fallbackToDestructiveMigration(), получаем дроп всех таблиц при увеличении номера версии.
• Строки. На начальном этапе можно не поддреживать интернационализацию и хардкодить текстовые строки прямо в UI приложения. Текст будет часто меняться, а добавление строк в strings.xml отбирать много времени.
• Собственная библиотека компонентов, стилей и шрифтов. Достаточно Material Components и шрифта Open Sans.
• Линтеры. Detekt и Lint анализируют код на предмет ошибок, стиля и соблюдения стандартов. Эти инструменты выдают множество предупреждений и замедляют процесс разработки. Она превращается в похождения в файлик со стилем для отключения очередной проверки. Линтеры полезны, когда основная функциональность будет готова. Пока этот момент не наступил, нужно в build.gradle прописать abortOnError = false.
• Самописные виджеты. Под любую штуку надо брать готовое решение с гитхаба. Нужен колорпикер или календарь – затянул зависимость. Позже можно переписать виджет под проект.
• Костыли. Все что другим запрещено – нам разрешено. Можно использовать GlobalScope, runBlocking, делать статические ссылки на Context. Это очень быстро и удобно.
• Преждевременные оптимизации. Рекомпозиции, энергосбережение, бенчмарки, кэши и буферизации. Современный смартфон почти наверняка не оценит этих усилий. Приложение и так будет работать нормально.
• Время запуска приложения. Использование AppStartup и ленивой инициализации, минимизация Application.onCreate и Activity.onCreate. Пользователю пофиг, запускается приложение 200 миллисекунд или 1.5 секунды, есть сплэш-скрин или нет его.
• Размер APK. R8, сплит по ABI, векторная графика, no-op библиотеки и транзитивные зависимости. Пользователю пофиг, весит приложение 20 мегабайт или 200.
Когда надо заделать Android-приложение с нуля, как минимально жизнеспособный продукт (MVP) или для индивидуального проекта (инди, пет), главная цель – быстро выпустить рабочий прототип, протестировать гипотезы на первых пользователях, выйти на рынок и получить обратную связь. В отличие от долгоживущих энтерпрайзов, масштабируемость и поддерживаемость мвп не так важна, а цена ошибок не высока.
Половина приложений отправится в утиль в следующие год-два, остальные будут улучшаться позже. Это значит, что на ранних этапах почти все устоявшиеся паттерны превратятся в антипаттерны. Потому что сожрут много времени и внимания. Выгоднее их отвергнуть как избыточные, а ресурс сохранить. Что именно можно пропустить:
• Многомодульность. Хватит одного модуля :app. Никто не запрещает раскладывать классы по папкам и переиспользовать. Конфигурация Gradle в моменте усложняет проект и увеличивает сроки разработки, особенно с >= 2 модулями на каждую фичу.
• Чистая архитектура. Кажется, мы дожили до времен, когда даже на уважаемых конференциях дядю боба с его луковицей выписывают из повестки. Сложная и многослойная архитектура часто не дает реальных преимуществ, а лишь привносит лишние церемонии на свое техобслуживание. Доходит до того, что разработчики пишут плагин для IDE, который им генерирует 20 классов на фичу.
• DI. Вместо использования фреймворков, таких, как Hilt, можно создавать экземпляры классов вручную. Или использовать сервис локатор. Это быстрее и проще, хоть и менее масштабируемо.
• Интерфейсы. Используются для обеспечения слабых связей между компонентами и упрощения тестирования. Часто можно увидеть Interactor и его реализацию InteractorImpl. Если мы контролируем весь код, жесткая связь между классами не будет проблемой. Методы можно вызывать напрямую из класса, который обрабатывает логику.
• KMP. Лучше начинать с нативного Android-приложения. Мультиплатформа постоянно подкидывает проблем, несмотря на обещанную стабильность. Вагон времени уходит на прописывание expect-actual.
• Миграция БД. Можно не делать, если база данных просто дублирует сетевой слой. Для Room вызывается fallbackToDestructiveMigration(), получаем дроп всех таблиц при увеличении номера версии.
• Строки. На начальном этапе можно не поддреживать интернационализацию и хардкодить текстовые строки прямо в UI приложения. Текст будет часто меняться, а добавление строк в strings.xml отбирать много времени.
• Собственная библиотека компонентов, стилей и шрифтов. Достаточно Material Components и шрифта Open Sans.
• Линтеры. Detekt и Lint анализируют код на предмет ошибок, стиля и соблюдения стандартов. Эти инструменты выдают множество предупреждений и замедляют процесс разработки. Она превращается в похождения в файлик со стилем для отключения очередной проверки. Линтеры полезны, когда основная функциональность будет готова. Пока этот момент не наступил, нужно в build.gradle прописать abortOnError = false.
• Самописные виджеты. Под любую штуку надо брать готовое решение с гитхаба. Нужен колорпикер или календарь – затянул зависимость. Позже можно переписать виджет под проект.
• Костыли. Все что другим запрещено – нам разрешено. Можно использовать GlobalScope, runBlocking, делать статические ссылки на Context. Это очень быстро и удобно.
• Преждевременные оптимизации. Рекомпозиции, энергосбережение, бенчмарки, кэши и буферизации. Современный смартфон почти наверняка не оценит этих усилий. Приложение и так будет работать нормально.
• Время запуска приложения. Использование AppStartup и ленивой инициализации, минимизация Application.onCreate и Activity.onCreate. Пользователю пофиг, запускается приложение 200 миллисекунд или 1.5 секунды, есть сплэш-скрин или нет его.
• Размер APK. R8, сплит по ABI, векторная графика, no-op библиотеки и транзитивные зависимости. Пользователю пофиг, весит приложение 20 мегабайт или 200.
• Адаптивный UI. Темы, динамические цвета, вырезы, складные устройства, большие экраны, планшеты, десктопы, часы и гарнитуры. Все это нет смысла поддерживать в начале разработки. Хотя гугл проделывает огромную работу, чтобы адаптивность работала из коробки без усилий с нашей стороны. Чем дальше, тем легче ее поддерживать.
• Доступность. Talkback, высококонтрастный текст, инверсия цветов, contentDescription, fontScale и порядок фокуса. Все это добавляется позднее.
• Тесты. Написание полноценных тестов может занять столько же времени, сколько и сама фича. Проверить функциональность можно вручную.
Как итог – кабаныч доволен темпами разработки. В будущем есть вероятность присесть на бенч, рефакторить и обмазываться лучшими практиками. Раньше времени не сгорел. Через год проект не полетел и закрылся – не обидно за вложенные силы. Не случился эффект безвозвратных потерь.
• Доступность. Talkback, высококонтрастный текст, инверсия цветов, contentDescription, fontScale и порядок фокуса. Все это добавляется позднее.
• Тесты. Написание полноценных тестов может занять столько же времени, сколько и сама фича. Проверить функциональность можно вручную.
Как итог – кабаныч доволен темпами разработки. В будущем есть вероятность присесть на бенч, рефакторить и обмазываться лучшими практиками. Раньше времени не сгорел. Через год проект не полетел и закрылся – не обидно за вложенные силы. Не случился эффект безвозвратных потерь.