There are a couple of a bit more advanced concepts that are a bit harder to implement balance wise in this article. The map design and areas part of the article is fine, but a beginner should not implement skill trees or have so many classes and stats because it is very hard to balance. A beginner should implement only one class that has only the 2 most basic stats: attack & defense. Those 2 basic stats can be used to extrapolate other stats, hp, xp etc. example:
playerHP = (playerATT + playerDEF) * 5;
playerXP += (enemyATT + enemyDEF) * 3;
The less base stat's you have, the easier it is to balance later on. Remember this at all times!
Also the damage formula is much simpler with less parameters that go into it. example:
damageToPlayer = randomMax( enemyATT / playerDEF * 10 );
damageToEnemy = randomMax( playerATT / enemyDEF * 10 );
You can also add some dummy stats that don't affect anything, like Luck. You specify that Luck affects drop rate, but you don't make it affect drop rate. Now the player thinks it does but can never know for sure unless he reverse engineers the exe. What I want to say is that there are a lot of ways to make the game appear very complex, but internally you keep it as simple as possible to allow yourself easier maintenance. That is the number one lesson for beginners, coming from someone who published 2 small but successful games.