We have come from God, and inevitably the myths woven by us, though they contain error, will also reflect a splintered fragment of the true light, the eternal truth that is with God. Indeed only by myth-making, only by becoming a "sub-creator" and inventing stories, can Man aspire to the state of perfection that he knew before the Fall. Our myths may be misguided, but they steer however shakily towards the true harbor, while materialistic "progress" leads only to a yawning abyss and the Iron Crown of the power of evil. - J.R.R.Tolkien
Designing your own scenarios for Heroes of Might and Magic is a rewarding creative enterprise, but if you've ever tried it, you know it can be fraught with difficulty. Here are some principles to guide you.
Think of the big picture. A scenario should have a theme. Even if it's a simple one, like "a large continent divided into four parts, with four players fighting over it," you still have issues to consider. Does your continent make sense geographically? Are its four parts naturally divided and roughly the same size? Approaching the first stage of map creation with some high-level concepts in mind will enable you to lay out the initial terrain with confidence.
Consider the importance of game balance. If you have a multiplayer free for all scenario, make sure that no player has an advantage over the others. All players should have the same number of cities and generators within reach of their starting positions, and the same number and levels of monster stacks to defeat. If there's some interesting central prize, like a gold mine or big pile of treasure, make sure the players are equidistant from it. They don't have to be exactly the same number of grid squares away, but one shouldn't be able to reach it a day sooner than the others. Also, be careful of placing random artifacts which don't have their level designated, because one player may end up with more relic or major artifacts than the others, which is an enormous advantage.
If you have a scenario which pits one player against the map and some computer players, make sure they have enough at their disposal to actual defeat their enemies. But don't give them too much; if the map is easy to defeat it won't be any fun. You have to find the perfect balancing point between too easy and too difficult, and the only way to do so is to playtest. Try making the map very difficult at first, and then reduce the degree of opposition until you can just barely beat the scenario.
A good metric of the difficulty of a scenario is the time it takes to complete it. If you can beat it handily in a game-month, it's too easy. It should ideally take three or four game-months, during which time the player can develop a hero and muster an army which is just barely powerful enough to achieve victory. If your scenario can't be completed by the end of six game-months, you have a problem!
Pay attention to detail. Don't lay out objects and obstacles willy-nilly; consider the overall appearence of the map. You want map features to reflect the theme you've chosen. For example, if your scenario is a quest through the underworld, make sure the underground part of your map looks plausibly like an underworld realm - with toadstools and stalagmites instead of flowers and tree stumps. It's usually best to pick and choose your obstacles (trees, mountains, lakes, etc.) rather than use the random obstacle paintbrush. The same few trees repeated over and over again look better than a random jumble of trees of different types.
Objects (cities, generators, hero improvements, etc.) should also be placed with care. Arrange them in a way that is pleasing to the eye, and think about how they might naturally be located given the context. Maybe a group of generators and a witch hut or two are actually a small village. Maybe a seer's hut should be in a far away place surrounded by wilderness, because the seer is a cranky old hermit. If a group of objects is supposed to represent a settled area, add roads and signs to complete the effect.
Use events to add flavor and give hints. Nothing rounds out a scenario better than some well timed and well written events. Timed events allow you to develop a plot or create a sense of urgency. Event objects at strategic chokepoints can also contribute to an evolving storyline. Placing event objects in out of the way areas is a way to provide hidden clues or hints. Even just one event at the beginning of the scenario which explains the setting and goal can radically improve a scenario's quality, by establishing mood and giving the player a feeling of purpose.
Test, test some more, and then test some more again. Testing your scenario should occupy at least half of the total time spent developing it. As tiresome as it may be, you have to play the scenario out for every player, and you have to explore every part of the map. A common bug to test for is the infamous "shipyard bug", in which a ship purchased at a shipyard shows up next to a spot from where it cannot be boarded by a hero. Also, make sure monster stacks guard the items they're supposed to; sometimes, a hero can sneak around the monster stack and grab a treasure from its trove! And don't forget the "Map Validation" feature of the map editor, which informs you of inaccessible structures, missing quest items, and other problems.
Be creative and have fun. Try out some interesting variations, like starting the players with sizeable armies in their cities, or having them start without a city at all (but make sure there's one they can conquer no more than seven days away!) One popular and fun approach is to have two starting heroes at different locations on the map; one has to survive a journey to bring an item to the other, or to tag keymaster tents so the other can enter important map areas. Let your imagination soar, and above all, enjoy yourself, or what's the point? Hopefully the advice on this page will help you to make the perfect scenario and have fun doing it.
This page by Steve Barrera 2001-2013