— как ты изучал андроид?
Когда я начал заниматься андроидом, у меня уже была база для понимания, что есть хороший код и хорошая архитектура, что – не очень. Помогли книги «Совершенный код» Макконелла и «Архитектура корпоративных программных приложений» Фаулера. А дальше – документация на
developer.android.com как основной источник истины, статейки в интернете про отдельные тонкости и нюансы. Некоторые вещи было проще и интереснее изучать, глядя прямо в исходники.
И самое главное – практика. Например, узнав, что в андроиде образца 2015-2016 года для DI принято использовать Dagger, а в качестве архитектурного паттерна presentation layer’а – MVP, я сделал пару тестовых приложений, чтобы лучше разобраться, как правильно все это вместе готовить.
— с какими трудностями столкнулся, когда переходил на мобилку?
Хороший вопрос. Наверное, главная трудность – это Android SDK и его документация. В нем много нюансов (читай – «костылей»), которые постигаются только опытным путем. Первое время часто было так, что я делаю что-то по документации, а оно или совсем не работает, или работает не так. Потому что документация была печальная и на полноту претендовать не могла. Сейчас стало получше, но не идеально.
Ну и от фрагментации платформы никуда не денешься. Ужасно бесило тратить по 4-5 часов на баги, которые происходили только на конкретной модели телефона. Помню баг, что на одном самсунге цифра "7" отрисовывалась с противоестественным смещением по вертикали. В порядке бреда поменял файл шрифтов c otf на ttf. Всё починилось. Что? Как? Почему именно на этом телефоне? Ответа у меня до сих пор нет. Было трудно смириться с тем, что для Android это нормально 🙂
— это смешно. чем же мобайл круче бэка?
Несколькими аспектами.
Во-первых, результат труда среднестатистического мобильщика намного ближе к пользователю. Это та самая пресловутая история о том, что можно показать своей маме, что именно ты сделал в продукте. Несравнимо сложнее объяснить, что я написал сервисы бизнес-логики, а над ними сделал фасад, который вывел на контроллер API, откуда я отдаю клиентам json’ы.
Во-вторых, мобилка очень быстро развивается. В той же экосистеме java за последние пару лет поменялось меньше всего по сравнению с экосистемой android. Если хочется постоянно пробовать новые архитектурные паттерны, подходы и парадигмы – мобилка весьма подталкивает к этому.
В-третьих, мобилка сильно больше позволяет экспериментировать. Размер кодовой базы среднестатистического мобильного приложения не настолько огромен, чтобы не иметь возможности что-то радикально менять. Для многих приложений это нормальная часть жизненного цикла – раз в 2-3 года что-то кардинально переписывать или делать редизайн. Кто-то может себе позволить всё переписать с нуля, когда стало совсем сложно. Субъективно кажется, что в мобилках такое случается несколько чаще, чем в бэкенде.
Ну и наконец, и это сейчас 100% субъективный момент, мобильные коммьюнити в России сейчас одни из самых дружных и сплоченных.