There are two things you might want to do before a serious attempt. Keep in mind there are a variety of approaches to software development. This is just the way I would handle it.
1) Understanding all of the mechanics of what you are trying to do.
a) User input, reading key strokes.
b) Output (display), how you will display characters to a screen.
c) Basic computer science principles.
d) Saving and loading a file.
Here you need an understanding of what sort of libraries you need, what you can and cannot do with the language. If you allow characters to save their game, you don't want 100 megabyte save files. There isn't really any excuse for slow code with a roguelike either. You might want to view some of the procedural content generation articles and some of the AI articles.
2) High level view of what your code will eventually look like
a) Data Structures
b) Classes
c) Methods
Here you might make a mock up of how your code might end up working from a high level view. You might think about how you will handle spells/items/monsters/time/players/maps. What sort of prorperties will each of these objects have and how will they relate to the game state. You will probably have a main class, that contains instances of each of the objects.
Here is an example for a monster object.
Object: Monster
Variables: String name;
int px, py;
char c;
Methods: Act(int time, player p, map char[][]){}
Granted your code will eventually grow, you want to have some idea on how everything will work. Anyway, content is probably much harder to deal with than the actually programming. So mess around, and start doing lots of designing.
Get out a sketch pad and start making diagrams, skill lists, level outlines, and interface display. Think of what the plot will be and what the game play will be like.