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


16

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

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

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


11
Понимание чужого кода - это акт эмпатии. Забудьте о том, как быстро вы идете, и также забудьте о том, кем были глупые люди, написавшие код. Выяснить это - упражнение в гибкости. Предположим, что источник необычайно плох, что вы слишком опытны, и вернитесь к работе и перестаньте шутить на этих глупых форумах. Что касается и меня ... У меня есть код, чтобы спорить.
Дэн Розенстарк

2
Особенно забывайте о том, «что за куча…», когда указанные люди являются боссом, братом босса, боссом босса или племянником босса и т.д.!
ДаренВ

2
Ах, недостающее «почему». Не забудьте вставить их, когда вы их выясните.

@DarenW - это код для спагетти, а не код для макарон: D (Извините, мне пришлось).
Jas

1
@ Я ищу Google для макаронного кода ... есть больше видов макарон, чем просто спагетти ;-)
Юрген А. Эрхард

Ответы:


6

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

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


16

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

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

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


5
+1 Может потребоваться более 6 месяцев, чтобы действительно начать понимать некоторые сложные системы, достаточно опытные в них. Даже если кодовая база «хороша», разные разработчики и команды имеют разные стили, и для того, чтобы привыкнуть к ним, иногда требуется время.
Райан Хейс

3
@ Райан, и через 6 месяцев ты сам становишься частью проблемы :)
Benjol

@ Бенджол Да, я был там.
Райан Хейс

FWIW, когда я был в этой лодке (несколько раз!), Я нашел более полезным делать частые перерывы, чем просто сидеть и ругаться над кодом. Когда вы делаете перерыв, встаньте и физически отойдите от компьютера. Потянись, посмотри в окно, подумай о том, на что ты только что посмотрел, затем вернись и посмотри еще немного. YMMV, но я обнаружил, что добился гораздо большего прогресса, когда сделал это. Удачи!
TMN

+1 за создание собственной личной документации. Когда я делаю эту работу, мне очень помогает делать множество заметок (либо в коде, либо на бумаге) и рисовать множество диаграмм (которые обычно для меня что-то значат в то время). Дополнительным плюсом ко всему этому является укрепление понятий в вашем собственном уме.
Энди Хант

6

Всегда видел кривую обучения. Изучение Curce

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


2

Рассеки это, один раз за раз

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

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

Начните с, скажем, кнопки, копайтесь в исходном коде , ставьте точки останова, смотрите шаг за шагом, что происходит. Есть две вещи, которые вам нужно выполнить:

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

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

Я уверен, что это сложный лабиринт (то, что "выросло" с течением времени). Однако, если вы начинаете с одной функции, вы говорите мне, что не можете отследить ее до конца?
Темная ночь

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

1

Как насчет другой точки зрения: что вам нужно знать об этом коде и есть ли у вас способ измерить это? Например, если вы пытаетесь исправить ошибку, это может потребовать другого типа погружения, чем если бы вы пытались перенести код с одного языка на другой, например, переходя с VBScript на C #. Если вы пытаетесь получить все требования из текущего кода, это может занять некоторое время, хотя я подозреваю, что у большинства людей будут проблемы такого рода.


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

1

Изучая что-то новое, многие ученики подумают: «Черт, это трудно для меня. Интересно, глуп ли я? »
Прежде чем идти дальше, убедитесь, что вы не глупы и что некоторые вещи трудны. ...

Мистер Аарон Хиллегасс с умными словами.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.