Стрибаючи, щоб працювати над різними функціями, коли ви застрягли, це джерело провалів проекту?


16

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

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

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

Який найкращий спосіб уникнути цієї проблеми? (якщо у вас є)

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

Будь-які інші пропозиції?


Чи є у вас ця проблема для себе? Або ви спостерігаєте за цим хтось із ваших товаришів по команді?
Док Браун

Відповіді:


33

Це не проблема. Тимчасовий відхід від непростої проблеми - це один з найкращих способів досягти прориву в такій проблемі (або пізніше, коли ви думаєте про це, або наступного разу, коли ви сідаєте з новою перспективою / розумом).

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


+1 для розгалуження версій управління. Ми бачили комісії, які виправляють 10 проблем в одній різниці, але одна була погана, тому жодного способу виділити погані зміни не можна.
JBRWilkinson

8

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

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

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


1
+1 для вашої дуже прагматичної ідеї провести невдалий тест (скажімо, замість коментаря TODO), щоб переконатися, що ви пам’ятаєте проблему, яку ви відклали.
Адам Кросленд

3

Це проблема? Не тоді, коли у вас виникає 10% функцій, які ви намагаєтеся реалізувати. Іноді ви зрозумієте свій розум, коли спочатку робите щось інше.

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

Найкращий варіант для цього випадку часто намагається розділити функцію, над якою ви працюєте, на менші підфункції або "фрагменти функції", які можна реалізувати, протестувати та налагоджувати окремо. Для мене це допомагає записати ті фрагменти, відкриті випуски, частини, які потрібно зробити в списку, дати їм пріоритети (A, B, C достатньо), і працювати над речами з найвищим пріоритетом.


Гарна думка. Стрибки навколо не повинні бути нормою.
smp7d

3

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

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

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

Якщо у вас є така мета, як "полегшити користувальницький інтерфейс", ну просто неможливо сказати, яким повинен бути наступний виправлення, або коли ви закінчите "виправити інтерфейс користувача" і можете перейти до чогось іншого. Якщо, з іншого боку, у вас є така мета, як "поєднати ці спадні місця в полі пошуку з автозаповненням", а "" foo "має автоматично завершитись до" Fooly Brand Baring "", це абсолютно очевидно, коли ви виправили ця проблема.

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

Якщо у вас є така хороша робота (навіть для особистих проектів), то «стрибати навколо» - це абсолютно добре, безпечно і корисно.


0

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

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


0

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

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