Як я можу судити, чи є проект особливо складним, чи я просто повільно його підбираю?


16

Я мало просунувся у великому проекті. Джерело є масивним, багато шарів предметів, код макаронів, подвійний алмазний графік множинної спадщини, напівфабрикатні функції заморожені, коли оригінальний письменник пішов, і ніхто не знає, чому багато фрагментів було розроблено таким, яким вони були.

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

Як я можу судити про те, що джерело незвичайно поганий, і я просто так добре, як хто-небудь міг, порівняно з джерелом, типовим для такого проекту, і я просто нерозумний або недостатньо досвідчений?


11
Розуміння коду інших - це акт співпереживання. Забудьте про те, як швидко ви їдете, а також забудьте про те, що купка німого м ********** - це люди, які написали код. З'ясувати це - вправа на гнучкість. Припустимо, джерело незвичайно поганий, і що ви перенасичені, і поверніться до роботи та перестаньте гайдатися на цих дурних форумах. Що стосується і мене ... У мене є код для суперечки.
Дан Розенстарк

2
Особливо забудьте про "яка купа ...", коли особа (и) - це начальник, брат начальника, начальник начальника або племінник "начальника" та ін!
DarenW

2
Ах, відсутнє "чому" 's. Не забудьте вкласти їх, коли ви їх з'ясуєте.

@DarenW - це код спагетті, а не код макаронів: D (Вибачте, мені довелося).
Жас

1
@Jas google для коду макаронів ... макаронних виробів більше, ніж просто спагетті ;-)
Юрген А. Ерхард

Відповіді:


6

Єдиний спосіб вирішити це питання - придбати набагато більше програмістів, щоб вирішити цю проблему і побачити, чи краще вони пройдуть.

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


16

По-перше, я б не витрачав занадто багато часу на занепокоєння, що ти можеш бути "нерозумним або недооціненим". Деякі проекти важко зрозуміти, а для великих проектів часто потрібен певний час, щоб набрати швидкість. Думаючи, що ви "дурні" або не справляєтесь із завданням, вам ніяк не допоможе.

Здається, вам потрібна допомога з кодом, тому враховуйте свої ресурси. Чи маєте ви доступ до оригінальних кодерів? Якщо вони будуть доступні, вони можуть бути хорошими ресурсами для інформації. Яка документація доступна? Якщо документації мало, вийміть зошит і починайте створювати власну особисту документацію.

Велика ідея тут полягає в тому, що ви повинні розраховувати на те, що цей процес потребує часу, і чим менше часу ви витрачаєте на душевне побиття себе, тим більше енергії вам доведеться проаналізувати код і розібратися в ньому. Удачі!


5
+1 Це може зайняти більше 6 місяців, щоб дійсно почати пізнавати деякі складні системи, достатньо для того, щоб володіти ними. Навіть якщо база коду "хороша", різні розробники та команди мають різні стилі, і це просто вирівнювання вимагає часу, щоб отримати ваші підшипники іноді.
Райан Хейс

3
@ Ryan, і через 6 місяців після цього ти сам стаєш частиною проблеми :)
Benjol

@Benjol Так, я там був.
Райан Хейс

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

+1 для створення вашої особистої документації. Коли я роблю цю роботу, я знаходжу багато записок (або в коді, або на папері), і малює безліч діаграм (які зазвичай для мене щось означають на той час). Додатковим плюсом до всього, що є підкріплення понять у вашому власному розумі.
Енді Хант

6

Колись бачив криву навчання. Курс навчання

Теорія каже, що спочатку потрібен час для активізації. Хитрість полягає в тому, щоб швидко пройти крок вгору. Якщо ви регулярно застрягаєте, то зверніться за допомогою до менеджера або принаймні повідомте його про проблеми, з якими ви стикалися. Поки у вас все в порядку з розкладом жодних проблем.


2

Розсікайте його, по одному шматку

Ваша ситуація є дуже частою, "щоб схопитися" потрібен час, як уже згадували інші.

Що я знаходжу, це те, що якщо ви вирішите це "по одній штуці" , незалежно від того, наскільки складний проект, ви зрозумієте це. Ви просто повинні бути логічними щодо цього.

Почнемо з кнопки "Скажіть", перекопайте вихідний код , поставте точки перерви, подивіться крок за кроком, що відбувається. Вам потрібно виконати дві речі:

  • Огляд високого рівня.
  • Нітчасті зернисті деталі, які реалізують бажану функціональність.
  • як тільки ви зрозумієте його частини, переобладнайте їх.

"Один фрагмент за часом" може працювати і на інших проектах, але в ньому так багато класів, похідних від інших, класів друзів, вказівників на внутрішню частину один одного, є мало частин, які можна зрозуміти самостійно.
DarenW

Я впевнений, що це складний лабіринт (те, що з часом "виросло"). Однак якщо ви почнете з однієї функції, чи говорите ви, що ви не в змозі простежити, щоб вона закінчилася до кінця?
Темна ніч

Відстеження потоку даних або послідовності подій, коли, наприклад, користувач натискає кнопку, виявилося неможливим.
DarenW

1

Як щодо іншого погляду: що вам потрібно знати про цей код і чи є у вас спосіб вимірювання? Наприклад, якщо ви намагаєтеся виправити помилку, це може зажадати іншого типу занурення, ніж якщо ви намагалися перенести код з однієї мови на іншу, наприклад, переходячи з VBScript на C #. Якщо ви намагаєтеся витримати всі вимоги з поточного коду, це може зайняти деякий час, хоча я підозрюю, що у більшості людей виникнуть такі проблеми.


Мені подобається цей коментар. Потрібно мати конкретну мету і працювати над тим, щоб досягти цієї (і лише тієї) мети. Інакше ви заблукаєте в ньому - Дуже подобається річ з картою.
NoChance

1

Навчаючись чомусь новому, багато студентів подумають: «Чорт, мені це важко. Цікаво, чи я дурний ".
Перш ніж піти далі, запевняй себе, що ти не дурний і що деякі речі важкі. …

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.