Ответ
В моей предыдущей команде мы разрабатывали мобильное приложение для банка. Команда состояла из 5 Android-разработчиков, 2 iOS-разработчиков, 3 бэкендеров, QA-инженера и тимлида. Мы работали по Scrum с двухнедельными спринтами.
Я отвечал за реализацию фич в клиентской части: платежи, авторизация, работа с API. Часто взаимодействовал с бэкендом по спецификациям и с QA для тестирования. Пример кода, который я писал:
fun makePayment(amount: Double, recipient: String) {
viewModelScope.launch {
try {
paymentRepository.transfer(amount, recipient)
_paymentStatus.value = PaymentStatus.SUCCESS
} catch (e: Exception) {
_paymentStatus.value = PaymentStatus.ERROR
}
}
}
Работали в GitFlow, код ревьюировали через GitHub. Команда была дружная, помогали друг другу с сложными задачами.
Ответ 18+ 🔞
Ну вот, сижу я тут, вспоминаю свою прошлую контору. Разрабатывали мы, значит, приложение для одного банка, такое, чтобы деньги переводить и счета смотреть. Команда у нас была — ядрёна вошь! Пять андроидщиков, два айосника, три бэкендера, один тестировщик и тимлид, который в основном на митингах сидел.
Работали по этому вашему Scrum, спринты по две недели. Честно говоря, иногда это напоминало ёперный театр: в начале спринта планируем овердохуища задач, а к концу выясняется, что API от бэкендеров ещё не готов, и все начинают неистово бздеть. Подозрение ебать чувствую, что они его в последнюю ночь на коленке пилят.
Я, в основном, на андроиде клиентскую часть пилил: всякие платежи, авторизацию, общение с сервером. С бэкендерами постоянно нужно было по спецификациям сверяться. Придёшь к ним: «Мужики, а где документация на новый метод?». А они такие: «Да вот, в постмане смотри, там всё есть». А там, естественно, хуй с горы — поля одни названы, а какие обязательные, какие нет — догадайся сам. Чих-пых тебя в сраку, волнение ебать!
Вот, например, код для перевода денег писал. Выглядит вроде ничего:
fun makePayment(amount: Double, recipient: String) {
viewModelScope.launch {
try {
paymentRepository.transfer(amount, recipient)
_paymentStatus.value = PaymentStatus.SUCCESS
} catch (e: Exception) {
_paymentStatus.value = PaymentStatus.ERROR
}
}
}
А потом выясняется, что репозиторий на ошибки сети не реагирует, и у пользователя висит вечная заглушка. Приходится идти к тому, кто это писал, и выяснять, какого хуя. Но в целом, ребята были адекватные, помогали.
Работали мы через GitFlow, все пулл-реквесты в GitHub. Код-ревью — это отдельная песня. Сидишь, смотришь на чужой код, и думаешь: «Э, бошка, думай, зачем тут эта дичь?». Напишешь комментарий: «Мужик, а давай тут корутины поправим?». А в ответ: «Да похуй, и так работает». Терпения ноль ебать! Но если реально косяк, то исправляли, не упрямились.
Самое главное — атмосфера была человеческая. Не то чтобы прям все друг другу в душу бога мать, но помогали, если кто-то в жопе. Не как в некоторых местах, где каждый сам за себя, и гомосеки налетели при первой же проблеме. А тут — чувак, если не можешь с задачей справиться, подойдут, подскажут. И тимлид наш, хоть и вечно занятой, но если реальный пиздец — заступался. В общем, работа была, можно сказать, пизда рулю, хоть и ругались иногда почём зря.