Какие факторы должны влиять на то, как я могу определить, когда отказаться от небольшой проект с другом?

Я'вэ нашел себя в тяжелое положение в последнее время. Работаю над игрой с напарниками программирования почти 8 месяцев. Мы оба начинали как новички в программировании примерно в августе прошлого года, он студент 2-го курса по CS, я'м ИТ техническая поддержка по торговле и я самоучка программист с множеством книг и онлайн подписок.

Вопрос о том, что я'вэ было постоянно видеть, как мы написать кусок кода, он будет часто быть немного взломал вместе, имеют много недостатков, и если это'ы совершенно новую концепцию для одного из нас, полный наивных решений. Это нормально, мы учимся, я ожидаю, что оба наших кода, чтобы быть немного набросал на первом или втором проходе. Проблема возникает, когда дело дойдет до отладки и рефакторинга тех набросал поведения.

Мой партнер будет держать на своей свеже слепленный поведения, нагло отказываясь видеть какие-либо ошибки в момент, когда она начинает работать. Требуя совершенства от куска структуры я могу'т даже попробовать использовать, даже если это были замечания и соответствующим образом названные методы & поля. Неважно, насколько сильно я стараюсь я просто не могу получить его, чтобы увидеть совершенно очевидные недостатки, которые будут препятствовать какие-либо дополнительные изменения или расширения функциональности без полностью нарушая его, и все это's так тесно связаны, чтобы они могли быть в одном классе. Взломали решения постоянно оставаться взломали, плохо продуманной конструкции остаться, как они, где, когда впервые была разработана и испытана.

Я тратить столько времени на уход новый код, как я пишу это сам, я'м потери, что делать. Мой партнер потерял его сегодня вечером, и дал понять, что несмотря ни на что, ни эталоном, ни сложившейся практике, ни на неопровержимые доказательства, его код будет оставаться так, как он впервые сделал это. Даже если целые книги были написаны о том, почему вы хотите, чтобы избежать делать что-то, он откажется признать их действия, утверждая, что это's просто мнение кому-то.

У меня личная заинтересованность в нашем проекте, однако я не уверен, если я могу продолжать работать с моим партнером. Мне кажется, есть три варианта для меня.

  • Перестать беспокоиться о коде функционирования мимо точки сбора, и просто пытается сохранить и анализа поведения, что'ы едва прихрамывая. Надеясь, что однажды все начнет серьезно ломаться, он увидит, что и стараюсь делать больше, чем просто положить пластырь на существенные недостатки конструкции.
  • Продолжать бесконечные споры по вопросам, которые выяснили, десять лет назад другие, гораздо более способные люди.
  • Остановка Программирование над этим проектом, оставив около 10 000 строк кода и бесчисленные часы, работая как раб по дизайну и попытаться найти новый проект.

Какой подход я могу предпринять, чтобы определить, стоит ли продолжать этот проект с этим человеком? Или какие факторы должны повлиять на мое решение? Мы написали много кода и я не хочу от этого отказываться, если это необходимо.

Комментарии к вопросу (18)

Это может быть культурная вещь. В некоторых культурах, признать, что вы ошиблись, это неслыханно, и просить кого-то признаю, что ошибся насчет хамства, что вы можете сделать. Если это та ситуация, убежать.

По моему опыту с очень умными людьми, если ты им скажешь, что что-то они делают, является менее совершенным, они будут либо (1) дать вам правильные и легко понять, почему, что они делают на самом деле права, (2) сказать вам, что они знают, это неправильно, но у них нет времени, чтобы исправить это из-за приоритетов, или (3) Спасибо за объяснение и исправление его.

Отказываясь узнать о худшем атрибут разработчик программного обеспечения может иметь. Оставь его тут. Жизнь слишком коротка и драгоценна, чтобы тратить на него свое время.

Комментарии (5)
Решение

Отправлен, несовершенный код лучше, чем идеальный код на доске, что никогда не будет отправлен.

Это, как говорится...

те, у кого больше опыта, или которые были в подобных ситуациях. Что ты сделал? Что бы вы мне посоветовали?

Я хотел бы рассмотреть следующие.

  • Какова цель этого проекта? Удовольствие? Деньги? Учиться?
  • Вы на самом деле достижения этой цели?
  • Этот человек на самом деле позволяет лучше достичь ваших целей?
  • Как близко вы на самом деле доставка?
  • Эти вопросы prevent вам начало? Или это вопрос личной гордости?
  • Есть ли преимущества в работе с кем-то на добровольной основе, когда он'ы, неприятно?

перестать программировать на этот проект, отказавшись от почти 10000 строк кода и бесчисленные часы, работая как раб по дизайну и попытаться найти новый проект на моем собственном

Рассмотреть выше, старайтесь продумать дополнительные необходимые работы.

Вам нужно выяснить свои приоритеты и определить, если проблем, связанных с работой с этим человеком стоит. Мы можем'т выяснить это для вас.

мой партнер потерял его сегодня вечером, и дал понять, что несмотря ни на что, ни эталоном, ни сложившейся практике, ни на неопровержимые доказательства, его код будет оставаться так, как он впервые сделал это.

Вы знаете, что Дон'т хотим работать с таким типом лица.

Вы're делая такой проект, вероятно, потому что вы хотите научиться программировать и найти элегантность в само ремесло.

Комментарии (3)

Возможно, самый простой способ сделать это, чтобы принести кого-то в проекте - либо вы'повторно не так, и его кодовой базы, является просто слишком умен для вас, или вы'вновь право и его слишком умным для всех. Вы'скоро узнают, и будет Вам подкрепление, если оно окажется дрянью, запутанным, младший-программист уровне кода.

С другой стороны, рабочий продукт стоит любое количество лет тонко, элегантно, ясный код. Сделать игру, грузим его, уйти потом - оставить его, чтобы сохранить его и не работать на V2.

Комментарии (7)

Вот некоторые идеи, даже если некоторые из них являются взаимоисключающими.

  • Отдельные функции источника. Если вы работаете на модуль и его модуль B вы можете соревноваться с разными стилями. Он выпускает рабочие характеристики часто? Он достигнет точки, где он должен переписать свой код с нуля? Рефакторинг кода от модулей и не трогайте его'ы,

  • Пусть делает содержание его худший код. Если он делает это успешно, вы избежали ужасной задачей. Если он не в состоянии, он будет чувствовать боль.

  • Считайте, что это от пользователя или бизнес-точки зрения. В некоторых случаях вам понадобится только жизнеспособный продукт, что Google или Microsoft, возможно, купит. В других вы запускаете продукт на рынок и обслуживания тысяч клиентов с багги или взломал код будет ад. Это не то же самое, если ваш код управления беспилотных летательных аппаратов с ядерными ракетами или делает счастливым видео для подростков.

  • Он делает уроки, вы делаете тесты. Рефакторинг кода тестов легче и безопаснее. Таким образом, вы выиграли'т нужно смотреть в код только с JUnit бар. При этом предполагается, что А) вы тесты программирования, Б) код коллега testeable. Если вам трудно строить тесты на этапе кодирования последнее будет хуже.

  • Пойдем вместе на тренировку или событий. Когда вы не знаете правильный путь, вполне естественно используйте только, как вы знаете. Встречаюсь с другими's код не может решить все, но выиграл'т больно, чтобы попробовать.

  • Найти свои сильные стороны. Рефакторинг иногда может быть весело. Если он пишет вещи, которые по крайней мере работают, то вы могли бы сделать рефакторинг. Он может сделать шипы для изучения решений, которые не заканчиваются в производственном коде.

  • Он, возможно, не захотите переписать код, но он может согласится писать новый код лучше. Я понимаю, что переписана-это тяжело, скучно и может ломать вещи. Расти некоторые острова качества. Таким образом, он будет иметь хорошие примеры того, как делать вещи.

  • Используйте бойскаут править. Делать вещи, оставленные нетронутыми, если вам нужно работать на нем. Если модуль плохо написано, но работает и не нужно менять, оставьте так. Если вам нужно исправить ошибку или выполнить функцию его немного улучшить. После некоторого времени 20% занятий, которые вы меняете 80% времени будет улучшаться. Больше островов качества.

Мы не можем предположить, что это лучшее решение, не зная вас обоих. Удачи.

Комментарии (0)

Ок, вот ответ тебе скорее всего не понравится.

не 'правильный' Кодекса, если это не удается осуществить характеристика.

Здесь's в моих рассуждениях. Вы, вероятно, пытаются делать деньги. Чтобы зарабатывать деньги вы должны доставить быстро завершена характеристики. Никто не собирается платить вам больше за 'хорошо закодированы' компьютерная игра.

Большинство компаний имеют те же проблемы. Рефакторинг существующего кода, чтобы сделать его 'лучше', иногда даже объективно лучше с точки зрения скорости и надежности или писать новые функции.

99% времени они решили написать новые функции, потому что в результате простого анализа затрат-выгод.

Комментарии (7)

Мне нравятся все ответы до сих пор. Взяв один из пунктов из эндерленд'ы ответ:

есть ли преимущества в работе с кем-то на добровольной основе, когда он'ы, неприятно?

Я'd, как принять это время, чтобы подключить к код обзор стека обмен. Это'ы замечательное место, где вы можете сделать ваш код критикуется профессионалами. И честно говоря, большую часть кода комментариев есть очень полезная для тех, кто участвует - возглавить, с ответами, а те, кто споткнется и прочитать их. Вы редко получите такие полезные комментарии в профессиональной обстановке(которая может быть просто дело в тех местах, которые я'вэ работал по каким-то причинам).

Мой совет, чтобы опубликовать некоторые вашего кода для ознакомления. Я не'т предлагают использовать его в качестве боеприпасов, чтобы доказать, что этот парень не так - я сомневаюсь, что он'll принимать это близко к сердцу, но вы можете получить очень полезную информацию как о код, который вы'вэ написано и код он's написано. Я'd рекомендую подаче куски кода, что вы бороться за большинство. По всей вероятности, вы'вновь оба не правы в какой-то степени и можно использовать комментарий как способ получения объективной третьей стороны вмешаться. Это позволит сделать несколько вещей:

  • Вы можете отключиться от ситуации'ы эмоционального напряжения.

  • Вы получаете в режиме реального времени профессиональные консультации. Большой толчок к тому, что вы'повторного обучения.

  • Кто-то скажет вам, вы'повторно не так. И это хорошо, потому что любой, кто занимается программированием для любого отрезка времени будет это услышать. Вы можете справиться с этим плохо, как этот парень вы'работаете, или вы можете научиться справляться с ним.

Я думаю, что если вы используете код комментарии правильный путь, у вас есть много, чтобы получить, имея дело с этим крайне неприятным человеком. И это'ы гораздо более интерактивными, чем книгу или сайт, который пишет "сделать это, потому что это's право, как большинство из Время".

Аналогично, там'ы игра Разработчик стека обмен. Не так много места, чтобы разместить код на проверку, но спросить о концепции/идеи, которые вы'вновь бороться с этим. Опять же, это место является чрезвычайно полезным для всех участников.

Возможно, вы видели оба этих сайтах раньше, я просто хотел убедиться, что они'вновь частью вашего набора инструментов.

Комментарии (0)

Это звучит довольно безнадежно. Я бы, наверное, махнуть на все рукой и если я чувствовал об этом, как и вы; есть, безусловно, приходит время, чтобы уйти, и вы можете быть там.

Если вы'повторно не готов идти еще далеко, вы должны найти способ, чтобы прийти к лучшему соглашение о процесса. Это звучит как у вас есть стандарты кодирования, но не согласованных стандартов. В следующий раз вы придете на перекресток, в следующий раз вы хотите, чтобы обезьяна с немного кода и ваш приятель хочет оставить его в покое, стрелять на беседу по следующим направлениям:

Дуглас: я хочу изменить это, потому что X, которая находится прямо здесь, в наших руководящих принципов.

Бадди: он's прекрасно, как это.

Дуглас: так что вы'вновь говорю, что мы должны поменять ориентиры?

приятель: Нет, я просто думаю, что это'Штраф, как это.

Дуглас: Итак, каковы основные принципы?

Бадди: я Дон'т знаю, что вы их написали.

Дуглас: какие рекомендации вы бы написали?

Бадди: я бы'т писать рекомендации. Это'ы пустая трата времени.

Дуглас: так что мы должны просто выбросить руководящие принципы и написать, что дерьмо, которое мы'вновь думать в то время?

бадди: это'т хрень.

Дуглас: она идеальна? Это идеал?

Бадди: он получает работу; позвольте'перейдем к следующей функции.

Дуглас: мы чем-то можем согласиться, что X и Y-это хороший код плохой код?

Бадди: Оставь меня в покое, я просто хочу код!

Хорошо, что я'т хорошо, ведь так? Я думаю, такое чувство у меня, что ты и приятель разные вещи. Если там'ы все, что вы можете договориться о, великий; начать оттуда и отталкиваться от него. Но вы можете'т заставить его согласиться желать того, чего вы хотите - больше, чем вы могли бы сделать себе хочу, что он, кажется, хочет. Если вы можете найти, что общее желание, и пришли к общему соглашению оттуда, может быть, вы можете работать вместе.

Дуглас: что вы хотите?

Бадди: я просто хочу, чтобы код.

Дуглас: я тоже хочу, чтобы код, но я хочу гордиться моим кодом.

Бадди: я'м горжусь своим кодом.

Дуглас: здесь's в функцию, я'м горжусь - что вы думаете об этом?

приятель: Ну, это's хорошо, но вы должны'т пересчитать X внутри цикла; он'ы неэффективно.

Дуглас: Так вы говорите, мы всегда должны вычислить значения констант вне петли?

приятель: Ну, да!

Дуглас: вы думаете, что должно быть в руководстве?

Бадди: конечно.

Дуглас: хорошо, я'будете добавлять его к нашим рекомендациям, и я'МР Обновить код...

Дуглас: как он сейчас?

Бадди: хорошо.

Сейчас приятель способствует руководящих принципов (однако косвенно), и поэтому он'ы есть немного чувство собственности. Возможно, он начнет воспринимать их более серьезно. Я думаю, что я'd быть склонен простить ее и начать все сначала с руководящими принципами, позволяя большинство или все из них друг в первую очередь. Идите и пишите код говно, поэтому он чувствует необходимость добавить в руководящие принципы; пусть они приходят от него. Может быть, тогда он'МР начинаешь понимать причину их.

Но если вы'лучше сдаться и двигаться дальше - это может быть не такой уж плохой вариант.

Комментарии (0)

Если вы решили отказаться от проекта:

  • Скопировать код и оптимизировать его, используя его как 'до и после' позиции портфеля Поскольку основная цель была (в основном или частично) освоить программирование, а с учебой что-то берет 2-4х пока делать то, что вы уже знаете, что усилия не потрачены впустую.
  • 'безвозвратные затраты вложение' (инвестиции, которые вы've уже сделанный в предприятие, пока не узнала, что это была плохая идея) является одним из самых распространенных человеческих ошибок в процессе принятия решений
  • Чтобы сохранить дружбу, рамка ваше решение, как приоритет дружбы над кодированием
Комментарии (0)

Чтобы добавить дополнительные точки, чтобы все великие ответы:

  • Сколько усилий потребуется, чтобы закончить проект? Обратите внимание, что окончания в "последние 10%" и берет намного дольше, чем люди ожидают. Что включает в себя тестирование игры/настройки, удобство крепления, справиться с разнообразием целевых платформ, выпуская, ... если это'ы в iOS игры, то есть's код подписание и получение через Apple's обзор. Честно говоря, отделка может длиться до первой "90%" по. И это'll быть еще сложнее, если код так плохо, как вы предлагаете. (Вы можете начать играть сейчас ее проверяют?)
  • Реально, насколько вероятно, что люди будут наслаждаться игрой?
  • То&quot остерегайтесь от "безвозвратные затраты эвристический;. Оценить, что 10 000 строчек кода инвестиции в свете общую картину, оглядываясь на готовый продукт, и без излишнего оптимизма.
  • Вы можете продолжать, если это займет еще 3 года? У вас двоих разные стили развития (не хороший матч команды). Это звучит, как вы'вновь ближе к концу своего терпения, и если ты продолжишь, это может быть трудно остаться друзьями.
Комментарии (1)

TL;Доктор, вы должны, вероятно, отказаться от этого проекта.

Не зная больше об этом, то вы'вэ сказал нам, Я'd не предположить, что трение вы'вновь переживает опыт-обзоры.

Даже если вы'повторно не программист по профессии как айтишник вы'ве, вероятно, узнал на своей шкуре О делать вещи правильно с первого раза, ваша ссылка на вашего будущего означает, что вы'вэ прикрутил его/ее в прошлом и научились не.

Ваш студент 2-го курса в CS, даже если одарен, скорее всего, не хватает перспективы сделав это (если вы'повторно, как я, не раз :).

Он/она будет никогда не очень верю в ценность ремонта вещи, как вы идете, пока он/она ожоговые рубцы от невыполнение или наставником в культуре с исключительной инженерная дисциплина, или оба.

Этот человек может быть ваш коллега по программированию, но не своих сверстников проекта, поэтому делаем эту игру как равноправный проект, скорее всего, безнадежен. Если вы готовы просто съесть будущей стоимости. Может быть, эта связь является достаточно ценным для вас. В таком случае дайте подол/ей достаточно веревки, чтобы повесить себя и помочь навести порядок, когда человек вынужден признать проблему.

В противном случае залог, а делать проект с коллегой, или сделать проект наставник/ученик, где это'ы динамичный с самого начала.

Комментарии (0)

Вы должны просто продолжать делать ваш код, как вы считаете правильным, с комментариями и сделав копию вы вариант код (в случае изменения кода).

Не бороться, Дон'т злись, просто улыбнись, когда ты видишь его плохих решений.

Только жалуются, как пользователя, если он работает Дон'т жаловаться.

Дон'т сдаваться, важно, чтобы привыкнуть к людям, отличающимся от вас, что будет происходить в реальную работу.

Комментарии (0)