Balance is a big thing with multiple sub-parts that all directly affect each other (eg is your weapon too strong, or is the enemy too weak?) -
I had something to say about loot table balancing in the last topic much of which holds true for general balance concerns.
First off establish a baseline 'vanilla' value, then make comparative changes to that baseline; if you can do that using variables in code, all the better, because modifying the baseline will then modify all other values at the same time.
For large projects, you probably want all those values in a spreadsheet to look for outliers, but be careful about overbalancing to spreadsheet formulas, because you end up with something uninteresting but mathematically precise - don't be afraid of exaggerating differences in values or of making things that feel right but are Under / Over powered on a spreadsheet. A lot of balance is
perceived balance, not actual balance, and if you're not designing for competitive PVP remember that NPCs will never complain that weapon / class / build x is crazy OP, but players will have a shit ton of fun fidning a weapon / class / build that is.
Also protip for 'final' balancing, which ends up being a really monotonous task of moving values slightly up, then slightly down, then slightly up again. Find a number that is DEFINITELY underpowered, and find a number that is DEFINITELY overpowered. Your correct value is somewhere between those two. This might sound obvious, but ends up saving ridiculous amounts of time.