Я опинився у важкому місці, як пізно. Працював над грою з приятелем програмування вже майже 8 місяців. Ми обидва починали як початківці програмування близько серпня минулого року, він є студентом другого курсу, я - технік з інформаційних технологій в галузі торгівлі і є програмістом-самоучкою з безліччю книг та онлайн-підписок.
Проблема, яку я постійно бачив, полягає в тому, що, коли ми виписуємо шматок коду, він часто буде трохи зламаний разом, матиме багато недоліків, і якщо це абсолютно нова концепція для одного з нас, повна наївних рішень. Це добре, ми вчимось, я очікую, що обидва нашого коду будуть трохи зламані разом на ялинках чи другому проході. Проблема виникає, коли мова йде про фактичне закріплення та рефакторинг поведінки, взятої разом.
Мій партнер буде триматися за його свіжо зібрану поведінку, явно відмовляючись бачити будь-яку помилку в момент, коли вона почне працювати. Стверджуючи, що майже досконалість є частиною структури, я навіть не можу намагатися використовувати, навіть якщо вона мала коментарі та відповідні назви методів та полів. Як би я не намагався, я просто не можу змусити його побачити очевидно очевидні недоліки, які запобігають будь-яким подальшим змінам або розширенню поведінки, не порушуючи її повністю, і все, що настільки щільно поєднане з ними, може бути і в одному класі. Зламані рішення постійно залишаються взламаними, погано продумані конструкції залишаються такими, як вони були вперше задумані та протестовані.
Я витрачаю стільки часу на няньки нового коду, скільки пишу сам, я втрачаю те, що робити. Мій партнер програв це сьогодні ввечері і дав зрозуміти, що незалежно від того, що б, як би не було тестування, незалежно від загальної практики, незалежно від незаперечного доказу, його код залишатиметься таким, яким він вперше це зробив. Навіть якщо цілі книги написані на тему, чому ви хочете уникнути чогось, він відмовиться визнавати їхню дійсність, стверджуючи, що це лише думка когось.
Я зацікавлений у нашому проекті, проте я не впевнений, чи зможу я продовжувати працювати зі своїм партнером. Здається, у мене відкриті три варіанти.
- Перестаньте дбати про функціонування кодової бази минулого моменту компіляції, а просто займіться спробою зберегти та розібрати поведінку, яка ледве кульгає. Сподіваючись, що колись речі почнуть серйозно ламатися, він побачить це і спробує зробити більше, ніж просто поставити пов'язку над принципово недосконалим дизайном.
- Слідкуйте за нескінченними аргументами щодо питань, які десятки років тому з'ясували інші набагато більш здатні люди.
- Припиніть програмувати цей проект, відмовившись від майже 10 000 рядків мого коду та незліченну кількість годин, що підлягають розробці дизайну, і спробуйте знайти новий проект самостійно.
Який підхід я можу прийняти, щоб визначити, чи варто продовжувати цей проект із цією людиною? Або які фактори повинні впливати на моє рішення? Ми написали багато коду, і я не хочу відмовлятися від цього, якщо не потрібно.