Я оказался в трудном положении в последнее время. Уже почти 8 месяцев работаю над игрой с приятелем по программированию. Мы оба начинали как новички в программировании примерно в августе прошлого года, он студент 2-го курса CS, я специалист по ИТ-поддержке по профессии и программист-самоучка с множеством книг и онлайн-подписок.
Проблема, с которой я постоянно сталкиваюсь, заключается в том, что когда мы пишем кусок кода, он часто будет немного взломан, будет иметь много сбоев, и если это будет совершенно новая концепция для одного из нас, полная наивных решений. Это хорошо, мы учимся, я ожидаю, что наш код будет немного взломан на первом или втором проходе. Проблема возникает, когда дело доходит до исправления и рефакторинга этих взломанных моделей поведения.
Мой напарник будет придерживаться только что сложившегося поведения, явно отказываясь видеть любую ошибку в тот момент, когда она начинает работать. Заявляя о совершенстве от части структуры, которую я даже не могу использовать, даже если у нее есть комментарии и подходящие названия методов и полей. Как бы я ни старался, я просто не могу заставить его увидеть явно очевидные недостатки, которые будут препятствовать любым дальнейшим изменениям или расширению поведения, не нарушая его полностью, и все, с чем оно так тесно связано, может быть в одном классе. Взломанные решения постоянно остаются взломанными, плохо продуманные проекты остаются такими же, какими они были, когда были впервые задуманы и протестированы.
Я трачу столько же времени на присмотр за новым кодом, сколько и сам, пишу его, я теряю то, что нужно делать. Мой партнер потерял его сегодня вечером и дал понять, что независимо от того, что, независимо от эталона, от обычной практики, от неопровержимых доказательств, его код останется таким, каким он его первым сделал. Даже если целые книги были написаны о том, почему вы хотите избежать чего-либо, он откажется признать их обоснованность, утверждая, что это просто чье-то мнение.
У меня есть личный интерес к нашему проекту, однако я не уверен, смогу ли я продолжать работать с моим партнером. Кажется, у меня есть три варианта.
- Прекратите заботиться о кодовой базе, функционирующей после точки компиляции, и просто постарайтесь поддерживать и анализировать поведение, которое едва ли проявляется. Надеясь, что, как только вещи начнут серьезно ломаться, он увидит это и попытается сделать больше, чем просто нанести удар по принципиально некорректному дизайну.
- Продолжайте бесконечные споры по вопросам, которые были выяснены десять лет назад другими, гораздо более способными людьми.
- Прекратите программировать этот проект, оставив почти 10000 строк моего кода и потратив бесчисленные часы на разработку дизайна, и попробуйте найти новый проект самостоятельно.
Какой подход я могу использовать, чтобы определить, стоит ли продолжать этот проект с этим человеком? Или какие факторы должны влиять на мое решение? Мы написали много кода, и я не хочу отказываться от него без необходимости.