С какими задачами не хочешь работать
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Мой подход к выбору задач в разработке
Как опытный Android-разработчик, я осознанно подхожу к выбору проектов и задач. Есть несколько категорий, с которыми я предпочитаю не работать, поскольку они противоречат моим профессиональным принципам и не способствуют качественному результату.
1. Задачи с заведомо неэтичными целями
Я избегаю проектов, которые:
- Нарушают конфиденциальность пользователей - сбор данных без явного согласия, скрытое слежение
- Вводят в заблуждение - dark patterns, навязчивая реклама, подписки без четкого информирования
- Наносят реальный вред - приложения для мошенничества, распространения дезинформации
// Пример плохой практики, которую я не поддерживаю:
fun collectSensitiveDataWithoutConsent() {
// Сбор контактов, местоположения, фото без уведомления
val contacts = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, ...)
val location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
// Отправка на сервер без согласия пользователя
networkService.sendData(contacts, location)
}
2. Технически необоснованные требования
Реализация без понимания архитектурных последствий - когда бизнес требует "сделать быстро", игнорируя технический долг:
- Копипаста кода вместо создания переиспользуемых компонентов
- Игнорирование безопасности ради скорости разработки
- Отказ от тестирования с формулировкой "потом допишем"
3. Проекты без четкого видения
Ситуации, когда:
- Нет Product Owner или его роль выполняют 5 разных людей с противоречивыми требованиями
- Цели постоянно меняются без анализа последствий
- Отсутствует roadmap развития приложения
4. Работа с устаревшими технологиями без миграции
Хотя иногда приходится поддерживать legacy код, я отказываюсь от проектов, где:
- Полный отказ от модернизации - использование Eclipse, антипаттернов 2010-х годов
- Отсутствие CI/CD - ручные сборки, прямое подключение к прод-серверам
- Монолитные активности по 2000+ строк кода без разделения ответственностей
// Пример legacy-кода, который требует рефакторинга, а не продолжения:
public class GodActivity extends Activity {
// 1500 строк кода, отвечающих за UI, бизнес-логику, сетевые запросы,
// работу с БД, анимации, обработку жестов и т.д.
private void doEverything() {
// Сетевой запрос
// Обработка ответа
// Сохранение в БД
// Обновление 10 разных View
// Логирование
// Аналитика
}
}
5. Задачи без возможности профессионального роста
Я избегаю рутины, которая не развивает навыки:
- Бесконечный баг-фиксинг без анализа системных причин ошибок
- Косметические правки вместо решения архитектурных проблем
- Работа в изоляции без code review, обмена знаниями в команде
6. Проекты с токсичной культурой разработки
Где присутствует:
- Бич-кодинг как норма практики
- Отсутствие документации и знания "только в головах"
- Постоянные авралы вместо sustainable pace
- Обвинительная коммуникация вместо конструктивного разбора ошибок
Моя альтернатива: на чем я фокусируюсь
Вместо перечисленного выше, я выбираю задачи, которые:
- Приносят реальную пользу пользователям
- Позволяют применять лучшие практики (Clean Architecture, MVVM, Kotlin Coroutines)
- Связаны с производительностью и безопасностью
- Включают рефакторинг и улучшение кодовой базы
- Предполагают наставничество и обмен опытом
// Пример подхода, который я применяю в работе:
class UserRepository @Inject constructor(
private val apiService: ApiService,
private val cache: UserCache,
private val dispatcher: CoroutineDispatcher
) {
suspend fun getUser(id: String): Result<User> = withContext(dispatcher) {
// Проверка кэша
// Сетевой запрос при необходимости
// Обработка ошибок
// Возврат результата
}
}
Я верю, что осознанный выбор задач — это ответственность senior-разработчика. Отказываясь от деструктивных практик, мы не только сохраняем свою профессиональную целостность, но и способствуем развитию индустрии в целом, устанавливая более высокие стандарты качества и этики в разработке ПО для Android.