If you're a programmer, you mean.
You hardly need any programming ability to be able to understand many of the game mechanics in the source. For example, here's the relevant bit of code that controls the starting skills of a professional thief:
case CREATURE_THIEF:
sk=LCSrandom(5)+3;cr.skill[SKILL_SECURITY]=sk;randomskills-=sk;
sk=LCSrandom(5)+3;cr.skill[SKILL_DISGUISE]=sk;randomskills-=sk;
sk=LCSrandom(5)+3;cr.skill[SKILL_STEALTH]=sk;randomskills-=sk;
sk=LCSrandom(5)+3;cr.skill[SKILL_SLEIGHTOFHAND]=sk;randomskills-=sk;That code does a bunch of things, but all you really need to know is that a thief's security, disguise, stealth, and sleight of hand are all equal to LCSrandom(5)+3, and that LCSrandom(5) is a number from 0-4. In other words, thieves have 3-7 points of security, disguise, stealth, and sleight of hand skill.
There's more to it than that, but in general understanding what code is supposed to do is a lot easier than making it work.