La razón por la que te resulta tan difícil es que tienes una idea, pero realmente no tienes una idea completa de lo que quieres que haga. Si está haciendo su propio proyecto y no tiene un cliente que le diga lo que quiere, entonces depende de usted ser su propio cliente. Ponte en el lugar del cliente y comienza a crear una lista de deseos imposible.
En otras palabras, cuando comienzas ¡¡No diseñes NADA !! .
Una vez que tenga una gran lista de cosas que desea que haga el sistema, priorice todo y decida cuál será la funcionalidad mínima para tener un sistema básico en funcionamiento. Esta podría ser una única función básica, o una pantalla completa, pero debe ser algo que sienta, ya que el cliente será lo suficientemente útil como para probar.
Entonces, Lista de características de deseos + prioridades básicas = Requisitos .
Una vez que tenga todo eso, haga un diseño de muy alto nivel. Simplemente siéntese y piense qué necesitará su sistema para poner en funcionamiento las primeras prioridades. Cambie de opinión si lo desea, pero aquí es donde es posible que desee agregar algún código o una configuración del sistema para obtener más información sobre lo que es posible. Vaya solo lo suficientemente lejos como para validar su idea básica de un diseño.
Es decir: AHORA puedes complacer los impulsos de tus diseñadores .
Una vez hecho esto, comienza a implementar sus funciones. Cree para cada característica una especificación funcional básica. Esto podría ser tan simple como una colección de declaraciones de características. Cartas de historia si quieres. Esto le permite desarrollar un poco su idea en su mente y crear un conjunto de declaraciones que se convertirán en la especificación con la que probará y desarrollará su implementación.
¡Llora estragos, deja escapar a los perros de ... Código!
A partir de ahí, implemente sus pruebas para que coincidan con sus especificaciones, luego, para cada prueba, escriba su código. Cree, "libere", luego repita con la siguiente característica hasta que decida que el proyecto está lo suficientemente completo.
Realmente se reduce a la experiencia, pero este enfoque que he encontrado es una fórmula simple para ayudarlo a enfocar su mente en lo que debe hacerse, en lugar de quedar encerrado en un ciclo interminable de procrastinación debido a tratar de hacer demasiado. una vez.