Cuando está atascado, ¿qué tan rápido se debe recurrir al desbordamiento de pila? [cerrado]

51

Estoy aprendiendo el desarrollo de iOS a través del curso iTunes U CS193p, y a menudo me encuentro atascado. He estado tratando de deshacerme de mí mismo, pero podría llevarme horas y horas descubrir qué estoy haciendo mal, ya sea que me falte un método o realmente no consiga un concepto completo como la delegación.

Me preocupa que pueda estar perdiendo demasiado tiempo, y sería mejor ir a Stack Overflow poco después de quedar atrapado para poder seguir adelante.

En su experiencia, ¿preguntar rápidamente sobre Stack Overflow obstaculiza el proceso de aprendizaje o lo mejora?

MaxGabriel
fuente
45
Vale la pena señalar que buscar una respuesta en SO es una de las primeras cosas que debe intentar. Incluso si no hay una respuesta que coincida exactamente con su pregunta, es probable que haya algo que le dé una idea. Pero hacer su propia pregunta es algo que no debe hacer, hasta que haya intentado realmente responder la pregunta por usted mismo y haya hecho un esfuerzo real para formular su pregunta de una manera que indique claramente lo que tiene y lo que no ya probado.
Dawood dice que reinstalar a Monica
1
@DavidWallace No podría estar más de acuerdo. Demasiadas personas simplemente preguntan sin pensar (preguntas de baja calidad), algunas personas piensan y preguntan (mejores preguntas, pero desearía que más personas realmente buscaran antes de preguntar (menos (casi) duplicados).
Marjan Venema
3
Al igual que con cualquier pregunta, si primero buscó una posible respuesta, aprenderá más cuando vea la respuesta real: verá dónde olvidó buscar, y la próxima vez podrá buscar allí también. No solo aprende la respuesta, también aprende a buscar respuestas. Cuando no ha pensado en una respuesta por sí mismo de antemano, solo obtiene la respuesta y sigue adelante, pero aprende menos en general. No te mejoras a ti mismo.
Konerak
3
El enfoque pragmático: SO es el más adecuado para preguntas simples, por lo que diría que pregunte casi de inmediato (sin embargo, debe poder formular la pregunta). Después de escribir el título, se le presentará la lista de preguntas más cercanas: debe asegurarse de que su pregunta no esté en la lista, pero no es necesario realizar ninguna búsqueda adicional de SO.
Grzenio
66
Creo que esto probablemente debería haberse preguntado en Meta de SO.
hugomg

Respuestas:

35

Cuando estoy trabajando con nuevos desarrolladores, les animo a que vengan a hacer preguntas después de cinco o diez minutos cuando no estén progresando.

Eso tiene dos beneficios: el primero es que pueden obtener ayuda sin pasar demasiado tiempo mirando un problema, pero solo preguntan cuando no están llegando a ningún lado. Si están aprendiendo, incluso en algo que finalmente no es la respuesta, es mucho más probable que retengan esa información de manera útil.

La segunda es que después de tanto tiempo tienen que explicar el problema a otra persona. Eso resuelve una gran proporción de problemas, porque si lo revisas de extremo a extremo en orden significa que puedes detectar lo que te perdiste en tu trabajo anterior.

Como parece que está haciendo esto solo, intente recurrir a un peluche, el reloj o la pared, y pregúntele sobre el problema. Explíquele como lo haría a una persona y vea si eso arregla las cosas.

Si no es así, y no estás progresando, pregúntale a alguien. Pasar más de cinco o diez minutos atascado es una pérdida de tiempo; a menos que continúe haciendo otra cosa, vuelva al problema con una mente fresca.

Daniel Pittman
fuente
17
No hay nada como hablar con tu perro para despegarse. :-)
Marjan Venema
2
Y cuando te das cuenta de lo que estás haciendo mal, tu perro será como " ¡GUAU! ¡ Nunca hubiera pensado en eso!" Supera algunos votos positivos para un impulso del ego. ;-)
un CVn
44
+1 Esto se llama "depuración de pato" al hablar con tu patito de juguete. Tengo una muñeca vudú. Lo llamo depuración de vudú.
Sardathrion
44
Gran respuesta +1. He estado "atrapado" MUCHAS veces a lo largo de los años, y descubrí que la respuesta se me hace clara cuando se la explico a otra persona. También encuentro que alejarme / hacer algo para tener la cabeza despejada a menudo funciona. ¡No recurriría a Stack Overflow demasiado rápido, si descubres la solución tú mismo, NUNCA lo olvidarás! En estos días, hay muchos programadores con muerte cerebral que confían demasiado en la web.
AnthonyBlake
2
y muchas de mis preguntas se respondieron a sí mismas mientras redactaba la pregunta sobre SO. El acto mismo de enmarcar los detalles de su pregunta revela algunas respuestas
aldrin
22

Mi única adición a las excelentes respuestas de todos los demás:

ESCRIBIR su pregunta en la interfaz de preguntas de StackOverflow es una excelente manera de asegurarse de que está pensando detenidamente. No puedo comenzar a decirle cuántas preguntas he respondido por mí mismo en el proceso de presentarlo con la suficiente claridad como para formularlo correctamente. Las preguntas que comencé y que no envié VARIAMENTE superan a las que realmente hice.

Entonces, diría que siga adelante y pregunte (después de buscar, por supuesto), simplemente no se apegue a presionar "Enviar".

Dan Ray
fuente
+1 - Esto no puede ser exagerado. Esta es otra razón por la cual es tan importante formular preguntas cuidadosamente. (Y el algoritmo automático de sugerencia de respuestas en la barra lateral mostrará otras preguntas relevantes con mayor precisión).
kmote
@kmote - AMO esa cosa. Se resolvieron muchos problemas para mí.
Dan Ray
1
historia de mi vida ... resolvió tantos problemas antes de presionar enviar.
Ayush Goyal
20

Stack Overflow, y todos los demás sitios de Stack Exchange, tienen un conjunto de pautas para hacer preguntas :

  • Haz tu tarea
  • Se específico
  • Hazlo relevante para los demás
  • Estar en el tema
  • Manten una mente abierta

"Haz tu tarea" implica que no debes ser demasiado rápido para preguntar. "Sé específico" implica que entiendes el dominio de tu problema lo suficientemente bien como para resumirlo de manera concisa. Si no, se aplica "hacer su tarea". "Mantener una mente abierta" implica que debe estar listo para explorar soluciones que nunca pensó que serían relevantes para su problema.

Por lo tanto, no se trata de preguntar sobre Stack Overflow, sino de si sus preguntas son buenas. Esencialmente, el esfuerzo requerido es una experiencia de aprendizaje en sí misma. Si lo hace bien, probablemente aprenderá un par de cosas nuevas simplemente buscando duplicados. Si no, hágame ping, tengo un par de votos de sobra. :PAGS

Yannis
fuente
1
Solo comencé a usar esta familia de sitios web (StackOverflow, etc.) en los últimos meses y debo decir que estoy extremadamente impresionado con una cosa: ortografía y escritura coherente. Aunque solo un pequeño porcentaje de los miembros registrados tienen el inglés como lengua materna, prácticamente todos son extremadamente cuidadosos con la forma en que escriben. Creo que no hay otro lugar en Internet donde una gran base de usuarios mantenga esa calidad. Es raro, pero impresionante. PD: Quería decir esto por algún tiempo, solo necesitaba un lugar para hacerlo de alguna manera atópico :).
Radu Murzea
1
@SoboLAN Es la filosofía wiki. Editamos las publicaciones de cada uno constantemente, incluso por errores menores de ortografía. Como hablante no nativo de inglés, cuando me uní a Stack Exchange por primera vez, tuve la costumbre de observar qué tipo de ediciones realizaban las personas, aprendiendo de los errores de otros. Otro subproducto positivo de la experiencia de Stack Exchange, supongo. Quién sabe, en algún momento incluso puedo tener la confianza suficiente con mi inglés para intentar una respuesta en English Language & Usage Stack Exchange . : P
yannis
3

Personalmente, cuando comencé a programar, pasé mucho tiempo tratando de resolver las cosas. Podría pasar horas tratando de arreglar algo. No veo que esos recursos no sean productivos, en esas horas aprendí a buscar cosas en línea y realmente obtuve una idea de cómo funcionaba mi lenguaje de programación. Así que creo que preguntar demasiado rápido en SO te priva de una experiencia de aprendizaje. Entrar en la programación solo lleva mucho tiempo.

Luego hay una pregunta de qué tan pronto preguntar, yo diría que pasar unas horas en un problema en particular no es mucho tiempo (tenga en cuenta que vengo de una formación académica, tal vez en entornos comerciales esto es menos aceptado).

Y cuando haga una pregunta sobre SO, invierta tiempo en la pregunta:

  • Cuando tenga un error, publique el texto exacto del error. También publique el código que condujo al error, preferiblemente un ejemplo autónomo que se ejecute en cualquier computadora.
  • Muestra lo que ya has probado.
  • Mencione las versiones del software que utiliza: versiones del compilador, versión de python.

Estos son solo algunos puntos. Al invertir tiempo en una pregunta, respeta a las personas en SO, usa su tiempo de forma gratuita. Más importante aún, usted estructura su problema. Esto ya podría resolver su problema :).

Solo mis 2 ct ...

Paul Hiemstra
fuente
1

Creo que lo importante aquí es comprender realmente en qué estás atascado y tratar de llegar al problema principal. Después de que realmente arraigas a cuál es el verdadero problema, usar Stack Overflow es una de las primeras cosas que hago.

Pero, no está haciendo una pregunta.

Está buscando entre todas las excelentes respuestas. Lo más probable es que el problema que está teniendo en este momento haya sido tenido por otra persona y ya ha formulado su pregunta. Si se siente obligado a usar Stack Overflow, recuerde que no es solo un sitio para hacer preguntas cuando está perplejo. También es un repositorio de información realmente excelente sobre programación de computadoras; usa la función de búsqueda.

Si buscó con un par de términos / palabras clave diferentes y todavía obtiene nilch, y ha hecho su tarea y tiene ejemplos de código que puede mostrar y está realmente seguro de que su pregunta no es realmente un duplicado , entonces pregunte por todos los medios tu pregunta sobre Stack Overflow. Eso es lo que el sitio está allí para lo último que revisé.

Charles Sprayberry
fuente
1

Es completamente subjetivo, pero aquí están mis reglas básicas para mi uso.

1) ¿Mi casa está en llamas? Obviamente, no literalmente, pero es un problema que no solo necesita una solución inmediata, sino una solución de emergencia. Si es así, hágalo, falle rápidamente, obtenga la mejor ayuda posible.

2) ¿Es esto algo que puedo investigar? Si es algo en lo que tengo tiempo y es investigable, seguiré esa ruta, y eso incluye SO como un recurso complementario. SO es genial, también lo es Wiki, también lo son las otras docenas de recursos.
Lea mucho, le ayuda a comprender cuándo hay diferentes enfoques para un problema, pero primero pase el tiempo tratando de ver si su conocimiento existente se puede volver a aplicar al problema, luego ha creado una nueva herramienta mental.

3) ¿Es esto algo que queda fuera de mi conjunto de habilidades / es tan oscuro que probablemente haya 100 personas que lo hayan visto alguna vez? Esto sucede, y sucede a menudo. Generalmente intentaré investigar durante una o dos horas y luego iré aquí u otros recursos.

Sé que es más noble sentarse y hacer la investigación y pasar el tiempo, pero a menudo tenemos limitaciones de tiempo y utiliza todos los recursos disponibles, incluso si se siente como 'engañar' al sistema.

Nicholas Smith
fuente
0

"Qué tan rápido" va a ser, por su naturaleza, subjetivo. Todos van a tener una opinión ligeramente diferente.

Si no puede descubrir la causa de su problema en aproximadamente 5 minutos de mirar el código real, al menos lo buscaría en Google. Si una buena búsqueda no tiene las respuestas, entonces comenzaría a escribir su pregunta sobre SO.

Tenga en cuenta que está bien no publicar esa pregunta; Ha habido momentos en que, al poner la pregunta en palabras escritas, la solución se presentó y no tuve que presentarla a ustedes.

KeithS
fuente
0

Puede escribir su pregunta temprano, pero no debe publicarla hasta que haya investigado adecuadamente la fuente de su problema. Escribe las cosas que has eliminado y cómo las eliminaste. También debe buscar otras preguntas similares y si realmente desea publicar su pregunta, explique por qué esta no es la misma pregunta.

Si lo hace correctamente, encontrará que muchas veces resolverá su propio problema.

Marcin
fuente