Если вы застряли, как быстро следует прибегнуть к переполнению стека? [закрыто]

51

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

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

По вашему опыту, быстрые вопросы о переполнении стека мешают процессу обучения или улучшают его?

MaxGabriel
источник
45
Стоит отметить, что поиск ответа на SO - это одна из первых вещей, которую вы должны попробовать. Даже если нет ответа, который точно соответствует вашему вопросу, вероятно, есть что-то, что даст вам некоторое представление. Но задавать собственный вопрос - это то, что вам не следует делать, пока вы действительно не попытаетесь ответить на этот вопрос самостоятельно и не приложите реальных усилий, чтобы сформулировать свой вопрос таким образом, чтобы четко указать, что у вас есть, а что нет. уже попробовал.
Дауд говорит восстановить Монику
1
@DavidWallace Не могу согласиться больше. Слишком много людей просто спрашивают, не задумываясь (вопросы низкого качества), некоторые люди думают и спрашивают (лучше вопросы, но я бы хотел, чтобы больше людей действительно искали, прежде чем спрашивать (меньше (почти) дубликатов).
Марьян Венема
3
Как и в случае с любым вопросом, если вы сначала искали возможный ответ, вы узнаете больше, когда увидите фактический ответ: вы увидите, где вы забыли искать, и в следующий раз вы сможете искать там. Вы не только узнаете ответ, но и учитесь искать ответы. Если вы заранее не задумывались над ответом, вы просто получаете ответ и идете дальше, но в целом учитесь меньше. Вы не улучшаете себя.
Конерак
3
Прагматичный подход: SO лучше всего подходит для простых вопросов, поэтому я бы сказал, почти сразу спросить (хотя вы должны быть в состоянии сформулировать вопрос). После ввода заголовка вам будет представлен список ближайших вопросов - вы должны убедиться, что вашего вопроса нет в списке, но нет необходимости выполнять какие-либо дополнительные поиски SO.
Grzenio
6
Я думаю, что это, вероятно, следовало бы спросить на Мете SO.
hugomg

Ответы:

35

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

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

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

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

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

Даниэль Питтман
источник
17
Нет ничего лучше, чем поговорить с вашей собакой за то, что она отклеилась. :-)
Марьян Венема
2
И когда ты понимаешь, что делаешь неправильно, твоя собака будет выглядеть как « ВАУ! Я бы никогда не подумал об этом!» Бьет несколько голосов за повышение эго. ;-)
CVn
4
+1 Это называется «отладка утки» из разговора с вашей игрушечной уткой. У меня есть кукла вуду. Я называю это отладкой вуду.
Сардатрион
4
Отличный ответ +1. Я "застрял" много раз за эти годы, и обнаружил, что ответ становится ясным для меня, когда я объясняю его кому-то еще. Я также нахожу, что уходить / делать что-то, чтобы получить ясную голову, часто работает. Я бы не стал прибегать к переполнению стека слишком быстро, если сам придумал решение, то НИКОГДА его не забудешь! В наши дни существует множество программистов с мертвыми мозгами, которые чрезмерно полагаются на Интернет.
AnthonyBlake
2
и так многие из моих вопросов ответили сами, когда я составлял вопрос о SO. Сам факт создания деталей вашего вопроса раскрывает некоторые ответы
aldrin
22

Мое единственное дополнение к отличным ответам всех остальных:

НАВИГАЦИЯ вашего вопроса в интерфейсе вопросов StackOverflow - отличный способ убедиться, что вы продумали его полностью. Я не могу начать говорить, сколько вопросов я ответил для себя в процессе выкладывания этого достаточно ясно, чтобы задать его правильно. Вопросы, которые я задал и не отправил, ОЧЕНЬ превосходят те, которые я фактически задавал.

Итак, я бы сказал, что нужно идти вперед и спрашивать (после поиска, конечно), просто не привязывайтесь к действительному нажатию кнопки «Отправить».

Дэн Рэй
источник
+1 - это нельзя переоценить. Это еще одна причина, почему так важно тщательно формулировать вопросы. (А алгоритм автоматического предложения ответов на боковой панели будет отображать другие важные вопросы еще точнее).
kmote
@kmote - ЛЮБЛЮ эту вещь. Это решило так много проблем для меня.
Дэн Рэй
1
история моей жизни .. решено так много проблем, прежде чем нажать кнопку отправить.
Аюш Гоял
20

Переполнение стека, как и любой другой сайт Stack Exchange, содержит ряд рекомендаций для вопросов :

  • Делай свою домашнюю работу
  • Быть конкретной
  • Сделайте это актуальным для других
  • Будь по теме
  • Сохраняй открытость

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

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

Яннис
источник
1
Я начал использовать это семейство веб-сайтов (StackOverflow и т. Д.) Только в последние несколько месяцев, и должен сказать, что меня очень впечатлило одно: орфография и связное написание. Несмотря на то, что только небольшой процент зарегистрированных пользователей владеют английским языком как родным, практически все очень внимательно относятся к тому, как они пишут. Я думаю, что нет другого места в Интернете, где огромная база пользователей поддерживает такое качество. Это странно, но впечатляет. PS: я хотел сказать это в течение некоторого времени, просто нужно было место, чтобы сделать его каким-то онтопическим :).
Раду Мурзеа
1
@SoboLAN Это философия вики. Мы редактируем сообщения друг друга постоянно, даже за незначительные орфографические ошибки. Будучи не носителем английского языка, когда я впервые присоединился к Stack Exchange, у меня появилась привычка наблюдать, какие правки вносят люди, учась на ошибках других. Я полагаю, что это еще один положительный побочный продукт опыта обмена стека. Кто знает, в какой-то момент я даже смогу достаточно уверенно говорить по- английски, чтобы найти ответ на английском языке и использование стека обмена . : P
Яннис
3

Лично, когда я начал программировать, я потратил много времени, пытаясь разобраться. Я мог часами пытаться что-то исправить. Я не считаю эти часы непродуктивными, в те часы я узнал, как искать вещи в Интернете, и я действительно понял, как работает мой язык программирования. Поэтому я думаю, что слишком быстрое обращение к SO лишает вас опыта обучения. Начало в программировании занимает очень много времени.

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

И когда вы задаете вопрос о SO, потратьте время на вопрос:

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

Это всего лишь несколько баллов. Вкладывая время в вопрос, вы уважаете людей на SO, вы используете их время бесплатно. Более того, вы структурируете свою проблему. Это может уже решить вашу проблему :).

Просто мои 2 карата ...

Пол Химстра
источник
1

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

Но это не вопрос.

Он ищет ответы на все вопросы. Скорее всего, проблема, с которой вы столкнулись сейчас, была у кого-то другого, и они уже задали ваш вопрос. Если вы чувствуете, что вынуждены использовать переполнение стека, помните, что это не просто сайт, на котором вы можете задать вопрос, когда вы озадачены. Это также хранилище для действительно полезной информации о компьютерном программировании; используйте функцию поиска.

Если вы выполнили поиск по нескольким различным терминам / ключевым словам и все еще получаете ноль, и вы выполнили свою домашнюю работу, и у вас есть примеры кода, которые вы можете продемонстрировать, и вы действительно уверены, что ваш вопрос на самом деле не является дубликатом , то непременно спросите Ваш вопрос о переполнении стека. Это то, что сайт существует в последний раз, я проверил.

Чарльз Спрейберри
источник
1

Это совершенно субъективно, но вот мои основные правила для моего использования.

1) Мой дом в огне? Очевидно, не буквально, но разве это проблема, которая требует не только немедленного решения, но и экстренного решения. Если это так, решите проблему, быстро потерпите неудачу, получите лучшую возможную помощь.

2) Это то, что я могу исследовать? Если у меня есть время и возможности для исследований, я пойду по этому пути, и это включает в себя SO в качестве бесплатного ресурса. Это здорово, как и Wiki, и другие десятки ресурсов.
Много читайте, это поможет вам понять, когда есть разные подходы к проблеме, но сначала потратьте время, пытаясь понять, могут ли ваши существующие знания быть повторно применены к проблеме, а затем вы создали себе новый умственный инструмент.

3) Это что-то, что выходит за рамки моего набора навыков / настолько неясно, что, наверное, 100 человек когда-либо видели это? Это случается и случается часто. Я обычно пробую исследование в течение часа или двух, затем направляюсь сюда или к другим ресурсам.

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

Николас Смит
источник
0

«Как быстро» будет по своей природе субъективным. У всех будет немного другое мнение.

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

Имейте в виду, что нормально не публиковать этот вопрос; Были времена, когда, переводя вопрос в письменные слова, решение представлялось само собой, и мне не нужно было на самом деле ставить его вам, ребята.

Keiths
источник
0

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

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

Marcin
источник