Коли застряг, як швидко слід вдатися до переповнення стека? [зачинено]


51

Я самостійно навчаюсь розробці iOS за допомогою курсу iTunes U CS193p, і часто зациклююся. Я намагався сам відклеїтись, але це може зайняти години та години, щоб зрозуміти, що я роблю не так, будь то пропущений метод чи не реально отримати цілу концепцію, як делегування.

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

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


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

1
@DavidWallace Не можу погодитися більше. Занадто багато людей просто запитують, не замислюючись (запитання низької якості), деякі люди думають і запитують (кращі запитання, але я хочу, щоб більше людей насправді шукали, перш ніж задавати (менше (поруч) дублікатів).
Мар'ян Венема

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

3
Прагматичний підхід: SO найкраще підходить для простих запитань, тому я б сказав, що задайте майже відразу (вам потрібно вміти сформулювати питання). Після введення заголовку вам буде запропоновано перелік найближчих питань - ви повинні переконатися, що ваше запитання відсутнє в списку, але немає необхідності виконувати зайві пошуки SO.
Grzenio

6
Я думаю, що це, мабуть, повинно бути запитано на SO-Meta.
hugomg

Відповіді:


35

Коли я працюю з новими розробниками, я рекомендую їм через п’ять-десять хвилин приходити ставити запитання, коли вони не досягають прогресу.

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

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

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

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


17
Немає нічого подібного до того, щоб поговорити зі своєю собакою за те, щоб виклеїти її. :-)
Мар'ян Венема

2
І коли ви зрозумієте, що ви робите не так, ваша собака буде схожа на " WOW! Я ніколи про це не подумала б!" Убиває кілька прибутків за підвищення його. ;-)
CVn

4
+1 Це називається "налагодження качки" від розмови з вашою іграшкою каченя. У мене лялька вуду. Я називаю це налагодження вуду.
Сардатріон

4
Чудова відповідь +1. Я багато років "застряг", і виявив, що відповідь стає зрозумілою для мене, коли я пояснюю це комусь іншому. Я також вважаю, що ходити / робити щось, щоб отримати чітку голову, часто працює. Я б не вдався до Stack Overflow занадто швидко, якщо ви самі знайдете рішення, НІКОЛИ не забудете це! У ці дні існує чимало мозкових мертвих програмістів, які надмірно покладаються на Інтернет.
AnthonyBlake

2
і так багато моїх запитань відповіли самі на себе, коли я розробляв питання на ЗО. Сам акт формулювання деталей вашого запитання виявляє деякі відповіді
альдрін

22

Моє єдине доповнення до чудових відповідей усіх інших:

ВСТАВИТИ своє запитання в інтерфейс питань StackOverflow - це чудовий спосіб переконатися, що ви все продумаєте. Я не можу почати розповідати, скільки питань я відповів для себе в процесі викладу, досить чітко, щоб правильно їх задати. Питання, які я почав і не подав VASTLY, перевершує кількість тих, кого я насправді задавав.

Тож, я б сказав, продовжуйте запитувати (звичайно після пошуку), просто не прив'язуйтесь до того, щоб насправді натискати "Надіслати".


+1 - Це не можна завищувати. Це ще одна причина, чому ретельне формулювання питань є настільки важливим. (І автоматичний алгоритм, що пропонує відповіді на бічній панелі ще більш точно відображатиме інші відповідні запитання).
kmote

@kmote - ЛЮБИТИ цю річ. Це вирішено для мене стільки проблем.
Ден Рей

1
історія мого життя .. вирішила стільки проблем, перш ніж натиснути на подання.
Айуш Гоял

20

Переповнення стека та будь-який інший сайт Stack Exchange містять набір вказівок щодо задавання питань :

  • Роби своє домашнє завдання
  • Бути специфічним
  • Зробіть це важливим для інших
  • Будьте на темі
  • Тримайте відкриту думку

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

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


1
Я лише почав використовувати цю сім'ю веб-сайтів (StackOverflow тощо) за останні кілька місяців, і мушу сказати, що мене надзвичайно вражає одне: написання орфографії та зв’язне написання. Незважаючи на те, що лише невеликий відсоток зареєстрованих членів є англійською мовою як рідною мовою, практично всі вкрай уважно ставляться до того, як пишуть. Я думаю, що в Інтернеті немає іншого місця, де величезна база користувачів підтримує таку якість. Це дивно, але вражаюче. PS: Я хотів сказати це на деякий час, просто потрібне було місце, щоб це якось було онопічним :).
Раду Мурзеа

1
@SoboLAN Це філософія wiki. Ми постійно редагуємо пости один одного, навіть для незначних орфографічних помилок. Коли я не був носієм англійської мови, коли я вперше приєднався до біржі стеків, я звик спостерігати за тим, які зміни редагують люди, навчаючись на помилках інших. Я думаю, що ще один позитивний побічний продукт досвіду обміну стеками. Хто знає, в якийсь момент я навіть можу отримати достатньо впевненості в своїй англійській мові, щоб спробувати відповідь на обміні стека англійської мови та використання . : P
янніс

3

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

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

А коли ви ставите запитання щодо SO, вкладайте час у питання:

  • Коли у вас є помилка, опублікуйте точний текст помилки. Також опублікуйте код, що призводить до помилки, бажано, приклад, що міститься в самому, який працює на будь-якому комп’ютері.
  • Покажіть, що ви вже пробували.
  • Згадайте версії програмного забезпечення, яке ви використовуєте: версії компілятора, версія python.

Це лише кілька моментів. Вкладаючи час у питання, яким ви поважаєте людей на ЗП, ви використовуєте їх час безкоштовно. Що ще важливіше, ви структуруєте свою проблему. Це вже може вирішити вашу проблему :).

Тільки мій 2 ct ...


1

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

Але це не задає питання.

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

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


1

Це повністю суб'єктивно, але ось основні правила мого використання.

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

2) Це щось, що я можу дослідити? Якщо це щось, де у мене є час, і це досліджується, я піду цим маршрутом, і це включає ТА як додатковий ресурс. Так чудово, як і Wiki, так само, як і інші десятки ресурсів.
Читайте багато, це допомагає вам зрозуміти, коли існують різні підходи до проблеми, але спочатку витратьте час на те, щоб зрозуміти, чи можуть ваші наявні знання повторно застосувати до цього питання, тоді ви створили собі новий розумовий інструмент.

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

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


0

"Як швидко" буде за своїм характером суб'єктивним. У кожного буде трохи інша думка.

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

Майте на увазі, що нормально не ставити це питання; Були випадки, коли, ставлячи запитання, письмовими словами, рішення подало себе, і мені не довелося насправді ставити це вам, хлопці.


0

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

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

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