Что такое / Есть ли правильный способ сообщить руководству, что наш код отстой?


70

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

Некоторые из основных моментов:

  • Мы все еще используем фреймы (попробуйте получить что-то из строки запроса, почти невозможно)
  • VBScript
  • Источник Сейф
  • Мы «используем» .NET - под этим я подразумеваю, что у нас есть .net-обертки, которые вызывают COM-библиотеки DLL, что делает почти невозможным легкую отладку
  • Все в основном одна гигантская функция
  • Код не подлежит ремонту. Каждая страница имеет несколько файлов, которые создаются каждый раз, когда создается новая страница. Основная страница в основном выполняет Response.Write () несколько раз для рендеринга HTML (runat = "server" - никак). После этого может быть много логики на стороне клиента (VBScript), и, наконец, страница отправляет себе (часто хранит много вещей в скрытых полях), где она затем отправляет на страницу обработки, которая может делать такие вещи, как сохранение данные в базу данных.
  • Технические характеристики, которые мы получаем, смехотворны. Часто они вызывают такие вещи, как «автоматическое заполнение поля X либо полем Y, либо полем Z» без указания того, когда выбирать поле Y или поле Z.

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

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


27
привыкнуть к этому. 90% написанного кода - это чтение кода.

7
ничего не меняется по той же причине, что это плохой код. Они перестали платить booku $$$$ за кого-то, кто мог бы крикнуть давным-давно.

11
Это не по теме. Но короткий ответ: экономика. Сколько месяцев разработчиков будет стоить, чтобы привести в порядок кодовую базу, а много месяцев разработчиков сэкономит аккуратную кодовую базу?
Оливер Чарльзуорт

89
лучший способ - это интервью на выходе.
kylben

32
Неважно, как вы говорите со слепым о цвете. Они вас не поймут.
ThomasX

Ответы:


68

Убедитесь, что вы не слишком остро реагируете. Вы новичок, вероятно, не работали во многих (вообще?) Других местах, и поэтому не готовы к миру "реального кода". Реальный код жизни - ужасная вещь. Это как ваш хороший школьный код и ваш одержимо подправленный личный код проекта занимался сексом в подвале ядерного реактора, а ребенок вырос в канализации токсичных отходов; это отвратительный мутант.

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

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

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

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

Полная перезапись? Почти всегда плохая идея.

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


10
+1 за последнюю строчку в одиночку. Люди обычно не желают слушать новичка, даже если новичок предоставляет свой собственный опыт и другую точку зрения, которую все остальные слишком погружены в корпоративную культуру, чтобы видеть. Люди также слепы, чтобы услышать правду (то есть «Все плохо, потому что люди, которые его создали, были идиотами, которые не знали, чем занимаются WTF»), и они скорее сойдут с корабля, чем признают, что все плохо и им нужно быть исправленным. Иногда ошеломляет, как владельцы бизнеса рискуют потерять все, а не тратить время на исправление плохих вещей.
Уэйн Молина

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

5
К сожалению, использование некоего подхода «партизанской войны» к ре-факторингу может иногда привести к тому, что вы будете стрелять себе в ногу. Если система не имеет хорошего набора тестов модулей / интеграции, написанных против нее (что, если она плохая, скорее всего, не будет), неизбежно приведет к появлению ошибок, которые потребуют полного системного теста, чтобы его можно было пройти через QA.
aceinthehole

1
@aceinthehole: совершенно верно. Если тестирование стоит дорого, руководство не захочет рисковать какими-либо «ненужными» изменениями, даже если в обозримом будущем система станет непригодной для эксплуатации.
Кевин Клайн

2
@WayneM, и те идиоты, которые не знали WTF, которыми они занимались в начале проекта, теперь являются старшими менеджерами. Никогда не забывай эту часть!
HLGEM

58

Читайте Joel On Software - вещи, которые вы никогда не должны делать. Поймите его рассуждения, а затем прочитайте несколько других статей о плохом программном обеспечении и о том, как его исправить, написанных менеджерами, а не программистами. Вооружившись этой информацией, вы сможете представить дело для ее исправления в терминах, понятных руководителям и заботящихся о них. Подсказка: Хорошие менеджеры не тратят время и деньги, основываясь исключительно на мнениях программистов и чувствах относительно того, что должно быть сделано.

«Этот код - дерьмо и нуждается в переписывании», безусловно, вас отбросит, даже если вы технически верны.

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

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

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


2
Забавно ... меня отвергли за предложение сайта Джоэла :-)
Роберт Френч

6
@ Роберт Френч: твой менеджер читает твои посты ...
Дэйв Маркл,

8
Без шуток. Спорить не так: «Могу ли я потратить 6 месяцев на разработку, чтобы все переписать? Конечным результатом будет именно то, что мы имеем сегодня, но, возможно, с несколькими новыми ошибками. О, и мы собираемся использовать многие из те же разработчики, которые создали текущую кучу дерьма для переписывания, потому что теперь они знают лучше ».
JohnFx

3
@ joshin4colours: <quote> Да, я знаю, это просто простая функция для отображения окна, но на нем растут маленькие волоски и все такое, и никто не знает почему. Хорошо, я скажу вам почему: это исправления ошибок . ... Каждой из этих ошибок потребовались недели реального использования, прежде чем они были найдены. ... Когда вы выбрасываете код и начинаете с нуля, вы отбрасываете все эти знания. </ Quote>
Martin York,

4
Извините, но один год опыта не дает правдоподобности предъявлять какие-либо из этих требований его руководству.
Джереми

14

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

Во-вторых, часто есть соображения стоимости улучшения старых систем. Например, я видел более одной компании, которая все еще работала с 10-летними приложениями VB6 и классическим ASP. В некоторых случаях это было связано с тем, что большой проект по переносу .NET потерпел неудачу. В других причина была в том, что «если ничего не сломано, не почините». Но, в других, стоимость перехода оправдана, так как проблемы, вызванные устаревшей системой, слишком велики, чтобы их игнорировать.

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

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

Худший подход, который я видел, - это попытаться сделать большой скачок непосредственно от устаревшей системы к самой последней и лучшей, например, перейти от работающей, но неуклюжей системы VB6 / Classic ASP / COM + к системе MVC / Entity Framework.


3
«Прежде всего, вы найдете глупые унаследованные вещи везде, где работаете программистом, если только вы не работаете на стартапе, и вы тот, кто создает оригинальный тупой устаревший код». Я был первым программистом при моем запуске. Восемь последних я часто нахожу, говоря: «кто написал этот глупый код?», Только чтобы проверить и обнаружить, что я виноват.
Джим в Техасе

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

11

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

(частично перефразировано из комментария Азкара к вопросу)


10
В теории это было бы здорово. На практике ответом будет что-то вроде «Нет, генеральный директор хочет Another Big Projectсделать за X месяцев». или «У нас есть новые функции, которые нужно сделать сразу, у нас нет времени, чтобы исправить то, что уже работает»
Уэйн Молина,

2
Это редко (если вообще) работает. Особенно, если у вас есть менеджер, который был здесь некоторое время, потому что он или она услышит эту строчку раньше, только чтобы увидеть, как она взорвется.
Тайлонр

1
Это просто заставляет меня смеяться. Вы никогда не собираетесь полностью переписать график. Что вы могли бы сделать, так это выполнить в каждом будущем проекте небольшую задачу по улучшению некоторой подсистемы, чтобы в конечном итоге (в течение нескольких лет) она была доведена до спецификации.
Мартин Йорк,

По моему опыту, этот подход будет часто отклоняться. Альтернативный подход состоит в том, чтобы увеличить оценки Большого проекта на 1,5 и тратить 1/3 времени на очистку кода.
JBRWilkinson

2
Очень частый ответ: «Кто будет финансировать вашу зарплату, делая это?» Если у вас нет прямого спонсорства задачи, вам нужно, чтобы компания сделала долгосрочные инвестиции. Или вы будете работать бесплатно при этом?

7

Начните читать Joel on Software (Джоэл Спольски / Основатель Stack Exchange) ...

Первое, что я хотел бы сделать, это выполнить тест Джоэла .

Это позволит вам представить его как «Пока я искал способы усовершенствования в качестве разработчика ... Я наткнулся на этот тест из 12 вопросов о средах разработки, поэтому для интереса я ответил им о том, где я работаю». ... Это, в свою очередь, делает третьим лицом, описывающим, что не так с вашим кодом, а не вас лично.

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

Надеюсь, это поможет! Добро пожаловать в программирование (вчерашний код обычно отстой) ;-)


4
Я не думаю, что это касается того, как он должен подходить к управлению.
Пабби

3
Кажется, что Азбар знает проблему и знает, как ее исправить, но он не знает, как заставить шарик катиться, чтобы его можно было исправить.
Пабби

1
Да ... Я предлагал использовать точку зрения третьей стороны при ее представлении. Я не думаю, что он спрашивал, как конкретно поговорить со своим боссом.
Роберт Френч

4
Этот ответ вряд ли заслуживает стольких отрицательных голосов. Первое предложение заслуживает +10. Проблема с подходом к управлению заключается в понимании того, что для них важно, Джоэл, и этот ответ решает эту проблему, рассматривая причины, почему, а почему нет, с точки зрения бизнеса, код должен быть переписан.
Mattnz

1
@ Роберт Френч +1 за хороший ответ. Для Azkar важно понимать как бизнес, так и технологии. Предположение, что он сформирует свое собственное мнение из наблюдений высококвалифицированного третьего лица, поможет в развитии Азкара как разработчика, а не просто программиста. Кроме того, история PB & J забавная.
Бакояро

7

Совет: если вы предлагаете управление со списком причин, по которым вам следует кодировать по-другому, включите в качестве аргумента «Улучшенный моральный дух / условия труда для программистов».

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


безусловно, хорошая идея, а также очень верная
sdm350

5
  • Управление фактически диктует дизайн? Если позади вас большая часть команды, что вас останавливает? Будьте активны и решайте как группа. Придумайте план по его постепенному осуществлению . Затем сделать его.
  • Диктует ли управление инструменты разработки, которые вы используете? Если нет времени на замену инструмента, управление, как правило, не заботится. Будьте активны и решите в группе, какие инструменты разработки вы хотите использовать. Если вам нужно выкупиться у руководства, покажите им план миграции и анализ затрат и выгод. Затем сделать его.
  • Диктует ли руководство языки, которые вы используете? Будьте активны и решите, как группа, что использовать вместо VBScript. Придумайте план по его постепенному внедрению и сделайте это. Если вам нужно управление купить, покажите им план. Затем сделать его.
  • У меня ничего нет для спецификации. Это обычно сильно зависит от людей и процессов на вашей работе. Определение того, что сломано, и минимальных изменений, необходимых для исправления процесса, требует времени, анализа и понимания того, как вещи работают в настоящее время и как они должны работать. Если вы знаете, что можете придумать план и попытаться убедить руководство.

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


Нет / Да / Да. Выбор языка и инструментов редко делается по техническим причинам. (см. parashift.com/c++-faq-lite/big-picture.html#faq-6.5 ) Это инструменты, которыми компания пользовалась с самого начала. Повторное обучение компании или команды вряд ли когда-либо произойдет из-за падения производительности.
Мартин Йорк,

1
+1 для плана и реализации постепенно. переписывать все просто просит провал. Маленькие победы со временем укрепляют доверие. Что касается спецификаций ... большинству спецификаций, которые вы получаете как программист, будет не хватать нашей работы по их уточнению. Время от времени вас избаловывает кто-то, кто пишет хорошие спецификации. Как правило, программист перемещается / продвигается / находит лучшую работу очень быстро и быстро.
SoylentGray

@Loki Astari: В большинстве компаний, в которых я принимал участие, я проталкивал изменения, начиная от системы контроля версий, инфраструктуры, процесса разработки и заканчивая языком. Все, что вам нужно, - это разумный план, в котором указано, каковы будут затраты и выгоды от изменений. То, что это делается редко, не означает, что это невозможно.
dietbuddha

4

Говоря из опыта: это не легко. Это почти невозможно. Руководство не заботится о том, что код отстой и, скорее всего, совершенно неосведомлен и / или не знает о проблемах, с которыми он сталкивается, иначе они бы исправили это давно, и вы бы не застряли с ним сегодня. Лучшее, что вы можете сделать, - это составить список причин, по которым код отстой, а затем обосновать, почему он отстой, чтобы продемонстрировать реальную ценность для бизнеса при рефакторинге / переписывании его.

Примером может быть «Код не поддерживается»:

Текущий код не поддерживается из-за X , Y и Z (перечислите причины, по которым он не поддерживается). Это делает запросы на изменение и новые функции очень трудными для выполнения, потому что X , Y , Z (причины, по которым внесение изменений затруднено). Поскольку изменения трудны, команда разработчиков не может легко реагировать на исправления ошибок и улучшения.

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

Удачи. Вам это понадобится.


2
Согласитесь и «не обслуживаемо» тоже работает только в некоторой степени. Для многих менеджеров (особенно без технической подготовки) рабочий код равен обслуживаемому коду. Если вы заявляете иначе, вы могли бы даже выглядеть некомпетентными в их глазах.
MaR

3

«Я начал только что из колледжа», - должен ответить на ваш вопрос.

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

Руководство также знает, что оно работает, используя любое определение «работ», применимое к вашей компании (не дает сбоя, не продает, не доставляет отчеты или что-либо еще).

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


Ваша первая линия полностью настроена против юниоров. Во-первых, вы не знаете ЕГО опыта, поэтому не можете прийти к ответу на его вопрос. И обобщение как таковое чрезвычайно предвзято по отношению к юниорам! Я занимаюсь этим уже около 20 лет и могу гарантировать, что видел более знающих «новичков», чем «старших невежд».
Jeach

Не совсем предвзятый по отношению к юниорам, но, может быть, он должен признать опыт и превосходные знания своих коллег, которые работали над ними в течение некоторого времени? Все они не могут быть некомпетентными старыми Уоллисами.
Джеймс Андерсон

2

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

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

Тем не менее, это все еще хороший план по рефакторингу и исправлению мелких вещей (таких как получение хорошего VSS) по пути управляемых укусов. В конечном итоге это технический вопрос, а не управленческий. Просто делайте то, что нужно сделать, продолжая выполнять то, что вы обещаете, и у вас все будет хорошо. Менеджмент, вероятно, не будет интересоваться мельчайшими подробностями качества кода, даже если вы приводите веские аргументы.


2

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

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


В конце концов, это единственный реальный курс действий. Я говорил это раньше, я скажу еще раз: умные разработчики работают на умные компании, которые понимают, почему ВСЕГДА важно писать хороший код и выделяют необходимое время для обеспечения хорошего кода. Паршивые разработчики работают в паршивых компаниях, где все слишком сосредоточены на «выполнении своих задач», чтобы заботиться о том, что они просто добавляют больше грязи в кучу и даже видят, что рефакторинг кода, который не имеет прямого отношения к вашей текущей задаче, является «потерей» время". В этих местах не стоит работать, если вы считаете себя умным.
Уэйн Молина

1

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

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

Но, опять же, им по-прежнему наплевать на код, они заботятся о продукте, поэтому, хотя этот ответ может заставить их сказать «Да, давайте сделаем это», вы могли бы также привести в порядок код, не обращаясь к разрешению менеджера. Не переусердствуйте, убедитесь, что вы сначала поговорили с командой, никто не любит приходить и пытаться использовать эту функцию, которая заняла у вас 3 месяца, а теперь, кажется, не работает, потому что ее взломали.


Как вы намекаете ... Он должен что-то сделать, чтобы улучшить код. Если это все одна гигантская функция, есть вещи, которые вы можете сделать с этим. Тот факт, что он даже жалуется на Source Safe, довольно забавен. В Source Safe нет ничего плохого, он использовался годами, в нем может быть несколько вещей, которые не имеют смысла в современном мире, но это задним числом.
Ramhound

Я думаю, что сама SourceSafe не является проблемой, она продолжает использовать SourceSafe, когда есть лучшие бесплатные инструменты, доступные только крики «Мы ничего не знаем о нестандартной упаковке» и «Посредственность - правило дня, так как мы будем придерживаться подчиненного». продукт, а не учиться лучше ". Проблема заключается в отношении большинства пользователей SourceSafe.
Уэйн Молина

«привести в порядок код без разрешения» - звучит как исправление того, что не сломалось.
Джеймс Андерсон

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

0

Подходите к управлению таким образом, чтобы показать, что вы понимаете влияние бюджета на внесение значительных изменений в код и влияние на бюджет НЕ внесения изменений. Мне понравилась формулировка Эмилио.

Важно помнить, что этот «старый» код всегда будет ужасным. Я имею в виду, что мы все постоянно растем как разработчики. Мы пишем хороший код, потом учимся писать лучший код, а предыдущий «хороший» код кажется ужасным. Слишком много разработчиков зацикливаются на постоянных попытках сделать его лучше и тратить больше денег в долгосрочной перспективе. Это балансирование. Это, как говорится, всегда здорово, если вы можете сделать это лучше, как вы идете. Когда вы собираетесь изменить эту гигантскую функцию, разделите ее! В конце концов вы получите где-нибудь.


0

Не делай этого.

Переписывание большого проекта с нуля в большинстве случаев является большой ошибкой.


Большое относительное.
Лука

1
Мое определение таково: если вы не можете переписать его самостоятельно за 5 дней, значит, оно большое.
Сезар Канасса

-1

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

Я выполнил задачи по настройке и развертыванию в веб-проекте. Часто требуется много времени для устранения непредвиденных проблем при каждом развертывании новой сборки. Большинство проблем касались безопасности и интеграции (между несколькими веб-приложениями / приложениями Windows). Наш код отстой, чужой код отстой, это полностью спагетти-код.

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


-3

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

В любом случае, все менеджеры - лжецы, поэтому они решительно настроены предположить, что все остальные.

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


+1 на «менеджеры - все лжецы, поэтому они решительно полагают, что все остальные»
ZJR

-1 на том же; и неправда, и бесполезна
Яап

@Jaap есть многочисленные исследования, которые соотносят власть и социальный класс с нечестностью. Значит ли это, что ты уберешь свой -1? Примеры: msnbc.msn.com/id/35836844 blogs.discovermagazine.com/notrocketscience/2010/04/27/… news.sciencemag.org/sciencenow/2012/02/shame-on-the-rich.html
Джо

Второе исследование особенно подтверждает мою точную точку зрения.
Джо

1
@Joe: ваши ссылки не доказывают (начинают) ваше утверждение, что «все менеджеры - лжецы».
Яап
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.