Ответ
На предыдущей работе ценил несколько ключевых аспектов:
- Культура кода: Работа в команде, где практиковался clean code, проводились тщательные code review и принимались взвешенные архитектурные решения.
- Технологический стек: Возможность внедрять современные фреймворки (Combine, SwiftUI) в legacy-проекты, что улучшало код и пользовательский опыт.
- Команда: Окружение сильных разработчиков, что мотивировало к профессиональному росту.
- Автономия: Свобода в выборе инструментов и архитектурных подходов для решения задач.
Пример: Вместо монолитного кода мы внедряли модульную архитектуру с протоколами, что повышало тестируемость и переиспользуемость.
// Чистый, тестируемый сервис
protocol AuthService {
func login(credentials: Credentials) -> AnyPublisher<User, Error>
}
// Вместо старого подхода
func login(email: String, password: String, completion: @escaping (User?, Error?) -> Void) Ответ 18+ 🔞
А, ну вот, зашла речь про работу, где всё было не так уж и плохо, если честно. Я там, блядь, как сыр в масле катался, если отбросить всю эту корпоративную шелуху. Слушай, что там у меня было, а?
Во-первых, культура кода, мать её. Это не когда ты пишешь как бог на душу положит, а потом через месяц сам же в этом дерьме тонешь. Нет. Там был, блядь, clean code, настоящий, не для галочки. Code review — это были не просто формальности, а реальные баталии, где тебе могли такую архитектурную пиздюлину влепить, что неделю будешь думать, как же ты, мудак, до такого додумался. Но зато учишься, блядь, сразу. Решения взвешенные, не на коленке, а с прицелом на то, чтобы через полгода не пришлось всё переписывать, потому что «ой, а тут у нас новая фича не влезает, ёпта».
Во-вторых, стек. Представляешь? Легаси-проект, древний, как говно мамонта, а тебе дают добро внедрять Combine да SwiftUI. Это ж как глоток свежего воздуха в сортире общественного пользования! Не просто «работает и ладно», а реально улучшать и код, и то, что юзер в итоге пальцами тыкает. Чувствуешь разницу? Ты не латаешь дыры, а строишь, блядь, нормальную дорогу поверх этого старого просёлка.
Команда. Вот это, сука, ключевое. Окружение из сильных ребят. Когда все вокруг умнее тебя — это не повод бздеть, а повод, блядь, расти как на дрожжах. Не было этого унылого «и так сойдёт». Было «сделай лучше, давай». И ты сам себе не давал спуску, потому что стыдно было перед коллегами херню какую-то сдавать.
И, наконец, автономия. Мне не тыкали пальцем: «Делай так, потому что я так сказал». Была свобода. «Вот задача, вот проблема — решай, как считаешь нужным, предлагай инструменты, архитектуру». Чувство ответственности, блядь, конкретное. Не просто винтик, а инженер, ёпта.
Вот, смотри, на пальцах. Раньше было вот это вот, классика жанра для легаси:
func login(email: String, password: String, completion: @escaping (User?, Error?) -> Void)
Говнокод, который и протестировать-то нормально нельзя, и переиспользовать нигде. Сплошные completion-аддикции.
А мы приходили и начинали впендюривать нормальные, чистые, тестируемые штуки:
protocol AuthService {
func login(credentials: Credentials) -> AnyPublisher<User, Error>
}
Всё. Красота, блядь. Понятно, изолированно, подменяется, тестируется на раз-два. И вся архитектура потом вокруг этого протокола как вокруг нормального фундамента строится, а не как вокруг говна с палками. Вот в этом вся и была, сука, разница. Не просто работу делать, а делать её хорошо, с умом. А это, как оказалось, дорогого стоит.