Мой опыт говорит об обратном, если человек не в состоянии принять соглашения по коду и пишет по-своему, то не случится и чудес в понимании более высокоуровневых вопросов. В программировании очень важны скрупулезность и педантичность.
Дьявол в мелочах. Сегодня ты назвал переменную не совсем правильно, отражающую суть не очень точно, или даже с ошибкой, завтра эта переменная с именем попала в public API, послезавтра ты будешь объяснять клиентам, что название не совсем корректное, потом будешь менять API, поддерживать BC. Название переменной — это ни разу не архитектурный вопрос, тут нужно проявить достаточную скрупулезность, чтобы дать коллеге понять, что он пишет херню и пусть это поправит.
Дьявол в чёртовых мелочах. Сегодня ты пишешь $userRepository->getUserByName() throw new UserNotFound, а завтра — с return null. Это же не Java, сам язык не будет следить за соблюдением контрактов во многих случаях. Нужно быть педантичным, чтобы в yet another time нажать на reject в code review, даже если тут говорят, что задача очень критичная и вот уже скоро deadline.
Дьявол в этих ваших мелочах. Сегодня ты юзаешь новомодный foo()['bar'], а завтра вообще не заботишься об API своего класса, потому что можно написать getMess()['anything']. Нужно сразу бить по зубам.