Quindi, per iniziare, vedi Wikipedia :
Problems that can be solved in theory (e.g., given infinite time), but which in practice take too long for their solutions to be useful, are known as intractable problems.
I tuoi problemi potrebbero essere molti, ma probabilmente non sono intrattabili . Quindi attacchiamo il cuore del problema:
Come abbattere i problemi a un livello che gli altri possono aiutare?
La risposta ovvia è il debug. Un problema si verifica quando il tuo programma fa qualcosa che non ti aspetti. Quindi, ad ogni passo, vuoi assicurarti che la realtà sia congruente con le tue aspettative. Quando raggiungi un punto in cui ciò che accade non è quello che ti aspetti, hai riscontrato il problema.
Le persone spesso postano chiedere aiuto per ciò che "pensano" che è sbagliato. Forse hanno cercato l'errore e hanno provato a implementare la soluzione nel primo risultato. Forse la loro paperella di gomma ha detto loro. Francamente, quello che "pensi" di solito è senza valore. Per citare Richard Feynman:
It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong.
Quindi prima capisci cosa c'è che non va!
Da lì, si tratta semplicemente di isolare gli input e gli output. Le persone non hanno bisogno di capire il tuo intero programma - hanno semplicemente bisogno di vedere cosa sta arrivando e cosa dovrebbe uscire. Dovresti sempre descrivere la fonte di ciò che sta arrivando, perché a volte ciò che pensi di entrare non è ciò che sta realmente accadendo.
A quel punto, il problema può solitamente essere risolto. Alcuni SO guru vedranno cosa succede, forse ti chiederanno di fare qualcosa, e accetterai la loro risposta e dirai "grazie mille!" o qualcosa di simile.
Ricorda, trova il punto in cui le aspettative e la realtà differiscono. Scrivi il caso base che causa questo. Attuare la soluzione. QED.