Как выглядит рабочий день Junior Android developer?

Усі статті, обговорення, новини для початківців — в одному місці. Підписуйтеся на телеграм-канал!

Добрый вечер, уважаемое DOU ;)

Сейчас активно развиваюсь в области Android разработки, есть огромное желание устроиться джуном в этом направление (уверен, не только у меня есть такое желание :)

Соответственно, появились некоторые вопросы:

1) А как же выглядит сам процесс работы джуна в области андроид разработки, в реальной компании, на реальном проекте? какие задачи отдают джуну (желательно примеры таких задач, например поправить формочку, сделать connection к удаленному серверу, сходить в базу и спасти мир) , думаю, понятно объяснил) Если не трудно, опишите вообще распорядок дня джуна на проекте)

2) какие требования вообще к джуну на андроиде? конечно, есть вакансии и в описании написан необходимый стек технологий, но очень часто пишут довольно расплывчато, вроде Design Patterns, REST services и т.д, без особой конкретики. То есть, вопрос в следующем: на сколько углубленно нужно знать паттерны, REST, сам Android framework , а также базы данных?

3) и еще очень интересующий вопрос: нужно ли Android разработчику знать С/С++? иногда мелькают вакнсии, в которых есть требование NDK и соответственно требуются скиллы по С и С++. Насколько часто встречается такая необходимость писать нейтив код на сях в Андроид проектах и стоит ли заострять свое внимание на изучении С++?

На этом у меня все, буду ОЧЕНЬ благодарен за всевозможные ответы, особенно от людей с подобным опытом, которые уже прошли путь Junior’а :) всем добра :)

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А что скажете про знания в области ORM? Требуются ли эти знания для андроид дева? Также интересно про Spring, JDBC. И вообще, какие фреймворки нужно знать джуну, кроме андроид фреймворка, естественно?

Лучше сконцентрироваться на Java Core и Android SDK, поверьте — там копать не перекопать.
Spring и JDBC не нужно Junior Android dev-y, это придумали ностальгирующие энтерпрайзники.
Orm — все зависит от тим лида или команды, достаточно холиварная тема, можно сделать Hello World с любой orm либой, что бы иметь приблизительное понятие что это такое и с чем его едят.

джуны — это уже пристижно..... зп 1000 уе...... просто за желание столько не платят

А что ты делал что б стать хотя б стажером?

Поддержу комент который: берешь и пилишь.
Все очень просто, берешь таску делаешь, идешь к ментору(синиору/мидлу/...) говоришь вот сделал, что не так, получаешь по ушам, переделываешь, получаешь по ушам, переделываешь ... рекурсия до тех пока ментор не пустит слезу счастья. Парочка таких рекурсий и все станет места свои.

довольно расплывчато, вроде Design Patterns, REST services и т.д, без особой конкретики.
- а какую ты конкретику хотел? Наверняка если ты полный ноль, то пойдешь искать туторила по тому же REST. How make GET/POST request in android — получишь N — количество ответов от гугла, а посмотришь на них так все они разные!!! Кто то пишет через HTTP клиент кто то через URLConnection(ты знаешь какой вариант лучше/нужно использовать?), смотришь изучаешь. Прикручиваешь запросы в код, как ты это сделаешь? Через асинктаски, через Service, может через реактивную джаву. Как построишь обработчик риспоносов? Как будешь работать с инфой(парсить/мапить/хранить). Допустим ты просерфил и переварил все это, понял что есть пачка серд пати либ которые могут делать это за тебя, смотришь либы, смотришь их плюсы и минусы, взвешиваешь какая лучше в твоем случае.
Design Patterns аналогично — пилишь сам, смотришь что есть в опенсорсе, сравниваешь перфоменс. Делаешь набор снипетов которые часто используешь(но это по желанию) и оформляешь в либки. Разбираешься в готовых элементах из коробки. Разбираешься в стайлах, дрове. Делаешь свои какие то вьюхи(сложные). Делаешь их красивыми быстрыми и расширяемыми.
Это только капля в море, о чем тебя могут спросить на собеседовании по твоим же «расплывчатым» вопросам.
По поводу NDK — не обязаетльно, это единичные случаи где нужны знания NDK, НО базовые знания и понимания как с ним работать можно освоить за вечер два(обьекты, вызовы методов, колбеки).

А что скажете по поводу систем контроля версий? На каком уровне от джуна будут требовать тот же Git? То же самое интересно и про системы сборки — Maven, Ant или Gradle?
И еще, если не сложно, поведайте, нужны ли джуниор андроид разработчику навыки написания юнит-тестов? Заранее благодарю за ответы :)

Пишут или не пишут юнит-тесты зависит еще от заказчика

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

Вы не можете быть уверенным, что код выполняет то, что ожидаешь от него и с UT. Тесты это не универсальный инструмент, вы не будете писать на каждую кнопку тест, проверяющий есть ли она на экране.

UI, особенно мобильный, очень плохо покрывается тестами, бывает заказчику просто выгоднее нанять больше QA мануальщиков, чем оплачивать время программистов на написание тестов на UI.

так есть же промежуточный вариант- QA автоматизаторы)

Ниразу на андроид проектах не видел QС автоматизаторов и очень редко QС мануальщиков

Те же Adobe используют мануальщиков для тестирования своих проектов на Android/iOS

Ну насчет Unit Test, все зависит от того будет ли у тебя QA или нет... Некоторые упоротые фирмы вообще не понимают зачем их использовать
Насчет Git : я не вижу вообще никаких проблем — через пару месяцев об этом даже задумываться не будешь

Для андроид джуна, мавен и ант не так актуальны как грейдл(в связи с популярностью студии). Но и по нему думаю хватит базовых штук: добавление модулей, флаверсов, работа с конфигами.
По гиту: тут зависит от проекта, но опять таки база, пул, чекаут, мердж, комит, пуш. Еще хорошо бы знать теорию о структурах проекта и атомарности. В принципе ничего особенного. Вообще замечательно если команда работает с пулриквестами и код ревью через гит(у нас так сейчас на проекте). Соблюдая эту договоренность мастер ни разу не ломался, а локально строй себе бранчи как душе угодно. Забыл еще, неплохо бы разобраться с работой с сабмодулями, это уже если проект оочень большой то некоторую логику желательно выносить в сабмодуля.
По юнит тестированию: зависит от проекта и команды. Знать хорошо но вот применять на практике ... если проект динамический у вас попросту не будет времени их писать, а потому придется писать «правильный» код который будет падать на этапе тестирования(это может быть и вредный совет, но как вариант вполне имеет право на существование, потому как зоопарк андроид дивайсов огромнейший, и могут встречаться аномалии когда тесты проходят отлично а приложение все равно валится)

это всего-лишь показатель того
Вот именно, показатель который не всегда соответствует действительности(уточню, я не против юнит тесов, и я в курсе зачем они).
Проблема в том что юнит тесты выполняются не на целевом устройстве а на рабочей машине, и уравнение
делает то, что именно должен он делать
верно, ну навскидку, процентов на 95 — 98. Учитывая особенности платформы и вендоров (ребят из поднебесной) не стоит полагаться на их честность и соблюдение общих стандартов. Подвоха можно ожидать где угодно. Ну вот например, из недавних интересных это byteorder. Вроде как little endian есть стандартом для os по умолчанию. Но вот почему то ребятам каких то нонейм дивайсов под андроидом big endian показался идеей получше. И как вы думаете, что показал бы юнит тест? Он показал бы что
делает то, что именно должен он делать, как ты предполагал.
. А как это работает на дивайсе? Ууупс. Потому я и говорю что, юнит тест это не плохо, это отлично, но положиться на него на 100 процентов нельзя.

Тоже интересно, уже потихоньку свои приложения начинаю писать, а вот как процесс работы в компании происходит представления пока не имею.

Это можно устроить.

Надо уметь шпилить в настольный теннис и настольный футбол желательно.

шпилить в настольный теннис
Шарики подавать. Джун же!

Это в гольф гольф не для программеров.

Мой процесс работы выглядит так:
risovach.ru/...patrik_31554162_orig_.jpg

Senior: «Джун, потрібно до обіду заімплементити ЮаЙку для Логін скріна!»
Junior: «Ок, але в мене питання: які кольори використати для бекграунда, додати якісь іконки, розміри кнопок, вигляд кнопок, які стилі використати ..... які, яку, який .... ????»
Senior: «Зроби так щоб було гарно!»
Завіса !!
Однозначної відповіді на Ваші питання не існує... в різних компаніях, командах, проетках, все по своєму!

які кольори використати для бекграунда
Ті що в дизайні
додати якісь іконки, розміри кнопок, вигляд кнопок, які стилі використати ..... які, яку, який .... ????
Взяти з PSD файлу

1) В зависимости от компании, бывает что количество разработчиков на проекте 1-2, и бывает что это два джуна
2)Java Core, Android SDK + различные third-party библиотеки которые используются на проекте
3) Android NDK и скилл в С/C++ требуется очень редко(использование библиотек написанных на С/C++ таких как FFMPeg, OpenCV, etc.) Но это джуну не доверят

Дополнение, к третьему пункту: скорее всего, писать код на C/C++ тебе не придётся (если это, конечно, не геймдев). Минимум, с которым я бы рекомендовал разобраться — научиться использовать опенсорсные библиотеки, написанные под Android.

Підписатись на коментарі