Step one is to determine how many rooms you want, and come up with a vague idea of the shape of the map (the blocks don't actually represent the shape or scale of the rooms themselves) . This would be an example of a single area.
Next, I decide where locked "doors" will be. These can represent abilities, key cards, etc.
Then, I make a list of the enemies, traps and platforming based objects. Just simple visual representations so that I don't have to refer to a different list while brainstorming.
Starting with enemies I listed (black), I decide where each one might be first encountered. Since the player might be going in different directions, there are usually more than one of these "first encounters". These numbers signify where those encounters with the corresponding enemy are, and where I can start using that enemy in proceeding rooms. (for instance, since the first room is where you encounter enemy #1, it can be encountered anywhere.)
I try to space them so that the player will be encountering something different every next room or so.
Next, I do the same thing with traps, and other gameplay elements. I try and make it so that in any room where a new enemy isn't encountered, you encounter something else for the first time.
After this point you would add powerups, but I think you get the idea. This is just an arbitrary example with no real thought behind it, but it's basically what the planning process ends up looking like. It's more or less just a means of giving you a framework to work with when designing the levels, rather than feeling like everything is uncertain.
After all that, I design each room in a basic form, and test them.
After testing the rooms, connecting them, and testing them together, balancing them, etc, I finally add the tileset. You could get someone else to playtest it before adding the tileset, but I think that in this kind of game, the appearance of the areas plays a part in the experience.