Learning a new programming language is a game of sorts: You start out with very limited capabilities, typically the ability to say "hello world". As you journey on more difficult quests, you find yourself discovering new powers you never knew you had, but they were there the whole time. Bugs are like monster battles, sort of. It's like a monster, but you haven't killed it with what you've done so far. It will need something new. In order to face the monster, you need to understand it first, and once you finally understand it, the feeling is a bit like flipping up a rug to face the growling, snarling beast underneath. Sometimes, there's a giant hole full of monsters, and you know you put them all there yourself, but sometimes it's just a puppy! Features are like quests! You talk to some helpful npc who outlines goals, you do some running around, and in the end, you all eat cake! Lastly, deadlines are like boss battles. At first it seems like you will never beat them, but then you break the fight into parts and jump through them one at a time until you win!