I usually only plan out the bigger coding projects... here's how I worked out my battle system:
Code:
1) I want to make a battle system
2) I want the battle system to have:
characters
stats
leveling
points system
3) characters
user-defined name/password
4) stats
HP,ATK,DEF,SPD. (hit points, attack, defense, speed)
5) leveling
based on a points system
2^user's current level==points needed to level
points gained after battle:
points=opponent's level-user's level
points*=(user's left over HP-user's beginning HP)
6) points system
points can be added to stats
3 points for every level gained
then I put it into a nifty outline and work my program from there... If I need it more detailed, I'll break it down into classes, like one to handle the battle & leveling, one to read & write out stats, one to deal with the points, etc.