Planning

Most real-life locations involve repetition and large open spaces with few features; they would make terrible game levels.

Meeting points, where the two teams see each other for the first time. Careful spawn placement and timing is the foundation of great maps like de_dust2.

Bomb sites, defensive positions and sniper nests. How would players from either team approach a certain area? How close is the bomb site to a meeting point?

Performance, how efficiently will the map run on a computer? Vast football-stadium maps will typically fare poorly, while closed spaces with lots of twists will perform well but suffer in gameplay.

Simple Layout

Take a look at other maps, for example de_dust2, de_cbble and most of the official maps follow a 'four-square' layout. Essentially all the maps are laid out like this, except they overlap each other and meet at different levels etc. But the basic concept of the four-square is still there, by following this method, your maps have a greater chance of having good gameplay and layout. You may also notice that some of the most popular 'fun' maps such as fy_iceworld follow this similar layout except simplified. For hostage maps a different approach to the layout needs to be considered, doesn't it? Take a look at cs_italy, the map has three main routes (Long Hall, Middle, Apartments). However, they also cross over with a central route connecting them, making the 'four-square' pattern emerge again.

Layout is one of the most important factors that will determine whether your map is a success or failure, having only one route to each bomb site or hostage holding area would be very boring and play badly. By giving more routes available and using the 'four-square' method, a map will suddenly have great playability and longevity. Just remember to not make the layout square, have twists and turns, make routes crossover each other otherwise it would still be a rather boring map. You can divert from this advice and take a completely new approach to making a map, however, this idea is only intended to give a simple theory on how a simple yet highly effective layout can be achieved.

Building

Valve usually builds "orange maps" with bare gameplay essentials before actually working on level art and textures. Concentrate on the layout of your level, then apply textures and lighting afterwards. Create the basic map structure using dev textures (type "dev" in the filter box) and big, simple blocks. For a Counter-Strike map, place some spawn points, some buy zones and some bomb sites. No stairs, just ramps.

This isn't to say that you should actually start optimizing your map now (adding hint brushes, area portals, etc.) but you should be mindful of the concepts mentioned here so that your map is constructed efficiently.

Balance

Unleash 20 bots on the map, and let them go at it for an hour. If the result of that comes out significantly in favour of one side or another, try to figure how to re-balance the map. Watch where the bots meet, or see whether there are certain positions that gives one team too much of an advantage.

Once you're sure that the map works correctly, then you can start thinking about adding textures, details, props, sounds, etc.

Tips

Purpose

A level with purpose draws the player in. It both gives the player a goal, and creates the sense that something is being accomplished above and beyond what the player is doing in that moment.

Motion

Give motion and momentum to your level in both a physical and temporal sense. I'm referring less to doors, trains and buttons, and more to the motion of consequences. By looking at a level, you should be able to guess what has happened before you arrived, and at least have an inkling of what will happen in the immediate future. Give the player a sense that he is running through a living area, where things happen. Have the map flow smoothly, have one thing lead to another.

Character

This can be used to describe the lighting, the structure, the relative ambiance of a level. The character of a level can determine, and is partly determined by, its purpose and motion.

Know the enemy

The one thing holding you back from making "the perfect level" is the limitation placed upon you by both the engine and by current technology. While designing levels, always be sure to keep track of your levels performance data, and stay within the range you set at the start of your project.

Exaggeration

Regardless of art style, even may that be realistic; exaggerating a specific element in a game can give it more appeal, and have a larger effect on the player. Most things in the real world aren't questioned for their sometimes odd shape and/or placement. However in a game world, these kinds of objects are. They have the keen ability to stick out and be judged. Sometimes exaggerating an objects appearance or visibility can help justify that object's placement, or existence, even on a performance level.