The hardest thing about programming the first Apple Jack was that enemies could be picked up and thrown anywhere, even into parts of the level that no sane designer would think to place them. This meant that I had to spend a lot of time tuning each type of enemy to work everywhere and not get stuck in a corner, or walk through a wall, or escape the play area altogether and crash the game, the little sods.
Now let's add pushable, stackable blocks to the above scenario.
Done that? Now add moving platforms that can ferry the player, the blocks and the enemies around the level in different directions and speeds.
Now add switches that can make the moving blocks suddenly disappear when pushed on by the player, enemy or another block.
And now factor in the fact that I'm a complete idiot who doesn't plan ahead and just adds stuff in willy nilly while adjusting older code in the vain hope of making it all somehow work.
My next game after this is going to be a text adventure or something, I swear.