Estoy trabajando en mi propia aplicación y estoy atascado. Tengo que implementar una función, pero no puedo encontrar un buen enfoque para implementarla. Estuve pensando en eso por un par de días, y no surgieron buenos pensamientos. Buscar en Internet no me dio ninguna inspiración.
Necesito seguir adelante, pero quiero saber qué es lo mejor:
- Piensa más, espera más y sigue buscando el mejor enfoque
- Deje de perder el tiempo y comience con un diseño deficiente, cubriendo todo con pruebas
¿Qué piensas? Como dije antes, estoy trabajando en mi propia aplicación. No tengo plazos, pero también quiero terminar de codificar la aplicación lo antes posible.
Respuestas:
Además de hablar con la gente al respecto (la pregunta sugiere que no tienes colegas en el proyecto), a menudo me parece un buen enfoque enfocarme en las cosas que puedo hacer.
Por lo general, hay alguna parte del código que sé que debo escribir de todos modos. Las cosas que aún no sé cómo escribir, luego se reemplazan por apéndices que devuelven resultados ficticios o usan una aproximación que es lo suficientemente buena como para probar el resto.
Esto te mantiene productivo. Y para cuando necesite implementar la pieza que falta, ya tiene la interfaz. Y ha escrito una gran cantidad de código que rodea el problema, en el mismo dominio del problema, lo que generalmente me ayuda a generar ideas: usted sabe más exactamente qué se requiere para generar y qué otras entradas están disponibles si ayuda a resolver el problema . Además, a menudo la conclusión es que la pieza que falta no necesita ser tan completa como se pensaba inicialmente.
fuente
Si la búsqueda falla, siempre puede implementar utilizando la primera idea (no necesariamente la mejor) que obtuvo y luego refactorizarla más tarde cuando encuentre el enfoque correcto.
Este es el enfoque correcto, ya que incluso si encuentra algo que parece una buena idea, puede resultar malo más adelante. O puede ser bueno en ese momento, pero luego encuentras algo mucho mejor. Entonces aún tendrás que refactorizar.
Al hacer esto, asegúrese de diseñar e implementar de tal manera que sea fácil de refactorizar. Si lo hace correctamente, tendrá que cambiar solo la parte problemática y no comenzar desde el principio.
fuente
¿Qué hay de preguntarle a otra persona? Por ejemplo, podría describir su problema aquí o, si es más un problema de implementación, en stackoverflow.com y pedir ideas. A veces, ya te ayudará si comienzas a escribir el problema, incluso si no obtienes buenas respuestas.
fuente
Algunas ideas
Escriba cada idea estúpida que tenga (en papel o pizarra). Tacha los que estás seguro de que no funcionarán. Seguir escribiendo. Incluya soluciones a problemas del mundo real potencialmente relacionados. Por ejemplo, ¿mezclar pintura, o clavar un clavo en la pared o cambiar el aceite resuelve un símil real?
Google, pregunta aquí, pregunta a tus amigos geek, etc.
No puede resolver el problema, pero ¿puede resolver uno mucho más simple? ¿O uno igualmente complejo y relacionado? Haz eso. Luego haga pequeños cambios individuales para acercar su solución a la solución deseada.
Independientemente de si su interfaz es un servicio web, página web, forma nativa, cámara, teclado, monitor o lo que sea , hay una interfaz. Escriba algunas líneas de código / pseudocódigo para que la interfaz funcione. Utiliza métodos mágicos que aún no existen. Recurrentemente haga lo mismo para cada método mágico inexistente. Optimizar más tarde.
fuente
No hay nada de malo en ir con la mala solución. Muchas veces simplemente no sabes lo suficiente sobre el dominio del problema en ese momento. Ir con una mala solución te permite seguir adelante y aprender más sobre el problema. Entonces aún puede regresar y refactorizar su primera solución.
fuente
Siempre trato de verlo desde la perspectiva del usuario final. Es muy fácil pensar en una idea "genial" como desarrollador en la que puedas pasar años trabajando y que realmente agregue muy poco a tu aplicación.
Idealmente, desea asignar todas las características de su aplicación y priorizarlas de acuerdo con el beneficio para el usuario final, personalmente uso MOSCoW , aunque siempre que mantenga su método de priorización igual, puede ser tan simple como 1 - 5.
Después de lo cual, si todavía encuentra que esta función es una parte esencial de su aplicación, como ya lo ha dicho la gente, ¡pregunte! No creo que haya encontrado un problema que eventualmente no haya sido resuelto por un colega o por esas buenas personas en Stackoverflow.
fuente
Mi opinión es: ¡nunca escriba código que simplemente funcione! Debería ser muy difícil refactorizar en el futuro.
Es un enfoque muy común para los desarrolladores (y, por supuesto, los PM o jefes). Escuché mucho tiempo "solo haz que funcione" o "lo arreglaré más tarde" (más tarde, ¿cuándo? ¡Nunca!), Pero creo que la calidad no es algo que no puedes obtener en el medio del proyecto.
Mi sugerencia es que dejes de pensar en tu problema por un tiempo ... haz algo diferente y, en algún momento, las soluciones solo salen.
Por cierto, preguntarle a un colega es absolutamente una excelente manera de resolver sus problemas.
fuente