Чи нормально / прийнятно записувати замітки, думки, алгоритми, рішення під час кодування та обслуговування? [зачинено]


22

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

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

Іноді це повинно бути прийнятним, наприклад, при відтворенні технічної документації або міркуванні про складніші алгоритми, але іноді це може бути дивним, наприклад, коли я розглядаю варіанти дизайну і намагаюся зробити судження.

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


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

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

9
"Коментарі та документація" потрібно записувати у вихідний код і зберігати. Ваші думки щодо розгляду варіантів дизайну можуть бути записані, але, як правило, не зберігаються, це речі, які рідко допоможуть вам пізніше (ви можете вести зауваження про результати цього продуманого процесу, якщо це не зрозуміло з самого вихідного коду, але це не те, про що ви питали). Якщо ви віддаєте перевагу електронну форму, форму з олівцем і папером, або якщо ви можете все це зробити в голові, вирішувати вам не буде ніхто інший, але ви можете сказати вам, що найкраще підходить для вас.
Док Браун

4
... PS: Я, як правило, віддаю перевагу олівцю і паперу, або білій дошці для цього матеріалу, і я думаю, що не став би кращим програмістом, якби спробую зробити все це в голові, навпаки.
Doc Brown

7
Чому це не було б прийнятним? Прийнятно для кого?
Пол Д. Уейт

Відповіді:


62

Мало того, що це нормально, це гарна ідея.

Є відома цитата

"Дайте мені шість годин, щоб зрубати дерево, і я проведу перші чотири заточки сокири".

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


8
Це гарна цитата, хоча я б усунув помилкове приписування. quoteinvestigator.com/tag/abraham-lincoln
Пол Дрейпер

1
Безумовно, правдиве твердження і хороша цитата, але на мій погляд, питання має іншу спрямованість. Наскільки я розумію, ОП не сумнівається у важливості планування заздалегідь. Він запитує, чи ефективніше записувати ці думки / планувати, чи просто тримати їх лише в голові.
Doc Brown

2
Зарахувати годину заточки - більш ніж достатньо. Це завдання слід було оцінити в 3 години максимум, але слабкість було витрачено на безглузді надмірні приготування. Що знову було моральним? ;-)
Стів Джессоп

26

Так, це цілком прийнятно і нормально.

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

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


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

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

8
@DocBrown - іноді корисно включити причини, чому ви не використовували інші можливі методи / алгоритми, щоб майбутній розробник не намагався замінити те, що ви зробили
HorusKol

1
@HorusKol: звичайно, у деяких рідкісних випадках це тривіальний здоровий глузд. Але це зовсім відрізняється від "документування процесу прийняття рішень" .
Док Браун

1
@DocBrown правильно, я не думаю, що хтось хоче сторінки приміток у своєму вихідному коді. :)
mcknz

20

Це чортово гарна ідея. Праворуч до тих пір, поки це не стане способом зволікати.

Ключ - баланс. Мені здається, що я є найпродуктивнішим, якщо не заробляю себе, а захоплюю ідеї, коли вони приходять.

Якщо я шліфую на низькому рівні, і ідея високого рівня приходить, я просто записую її і повертаюся до неї пізніше.

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


Відмітка - ще один чудовий спосіб робити ці замітки. Тримає руки на клавіатурі, тому мінімально порушується процес думки.
RubberDuck

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

9

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

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

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

Що стосується менш офіційної документації, я на 110% погоджуюся з попередніми зауваженнями щодо вбудованих коментарів. Це єдиний шлях; так чи інакше, все інше з часом втрачається. Але акуратне та продумане вбудоване коментування - це окрема майстерність кодування, що розвивається зусиллями та практикою, як і будь-яка інша майстерність. Ви можете побачити деякі мої (дуже) старі речі, наприклад, це . Цей стиль може або не сподобається вам. Я рекомендую спершу знайти якийсь добре коментований код із стилем, який вам подобається, та емуляцію цього у власному коді. Через деякий час адаптуйте його так, як вважаєте за потрібне.


4

Відмінне місце для розміщення подібної інформації знаходиться безпосередньо в повідомленні про виконання вашої системи управління версіями (SVN, git тощо). Таким чином ви зможете побачити зміни та міркування про них там же.


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

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

Ні, це щось інше. Повідомлення про виконання зобов’язань повинні описувати, що було зроблено, а не чому. Про те, чому йдеться у коментарях до коду документації, супровідній документації та видачі дозволу трекера. Ви не можете помістити п’ять сторінок приміток та дизайнерських робіт у повідомлення про фіксацію, і цього не потрібно.
Гонки легкості з Монікою

Чудово розмістити його в системі управління версіями. Краще місце - це звичайний текстовий файл всередині. Це простіше у використанні, ніж повідомлення з фіксацією.
Thorbjørn Ravn Andersen

2

На додаток до інших хороших відповідей додам, що я часто записую свої думки про те, що намагаюся зробити.

Будучи дуже чітким щодо того, щоб сформулювати те, що я намагаюся зробити, допомагає мені реалізувати припущення, припущення та / або вимоги, які не обов'язково виконують.

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

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


1

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

Він також не повинен займати жодного часу. Якщо ви витрачаєте час на роздуми, ви можете записати свої думки вниз 1 до 1 (доки вони будуть / можуть бути корисними для когось).

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

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


1

Ви кажете: "У деяких людей є така проблема, що вони не можуть думати без слів. А записування своїх думок і рішень - це найефективніший спосіб продовжити".

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


1

Люди можуть одразу утримати біля себе сім «речей». Це причина семизначних номерів телефонів. Для того, щоб програмісти працювали ефективно, вони повинні знайти якусь систему, щоб вивантажити речі зі своєї пам’яті та швидко отримати її згодом за необхідності. Ваші нотатки - це очевидний і прямий спосіб, але кожен, хто працює над чим-небудь помірно складним, повинен це робити якось . Коли ви поєднуєте програму з кимось, спробуйте шукати їх метод.

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

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

Не шкода використовувати будь-який метод, який працює для вас, але спробуйте помітити, якими методами користуються ваші "ефективні" колеги. Вони мають ті ж людські обмеження, що і ви.


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