If your story has a conventional setting, naming characters is easy. Online lists of names for various eras and ethnicities makes the task a matter of selection rather than invention, although, as my critique partner Jessica points out, you may run into cultural considerations, such as not naming a Chinese character for a god. But if your setting is an imaginary world, your task is more difficult, and requires some forethought.
Of course, as with any names, the ones you coined should generally be evenly distributed throughout the alphabet, especially for the main characters. If each character’s name starts with a different letter, you make telling them apart easier for the reader. In the same way, varying the number of syllables can be a memory aid. Usually, too, the words should be generally easy to pronounce – unless, of course, you mean for one to be a jaw-breaker.
But where do the names come from? Despite the frequent suggestions in online writers’ group, I would discourage using Internet name generators. Not only do most of them conform to stock types like dwarves and elfs, but what is good enough for a game may not be suitable for fiction. For example, one name generator suggested “Brassica” as a name for a dryad – the scientific name for cabbages and related plants. Enough said?
One useful method is to build the name on a word that suggests how a character is meant to be regarded. For example, from “skull,” I coined the name “Skulae” for a vicious character. Even more obviously, I called a morose character with a dry sense of humor “Morgrim.” Readers may not consciously make the association, but I maintain that it still works on a unconscious level.
I have another method when I want to suggest a real life ethnicity. Many cultures use names with particular naming patterns. For example, Frankish men’s names often ended in “pert,” Germanic women’s names in “hild.” Once you have the pattern, all you need is supply the rest of the name to produce names like “Chilpert” or “Janhild.”
If you are really stuck, pick five words at random. You can select from a dictionary, or even a password generator like xkcd-pass, which uses random words. Then, recombine the results to produce original words. For example, if I picked
casually niece pushiness fifth clapper enduring
Some of the words I might generate include “Clapduring,” “Perpush,” and “Fifiece.” Nor would I hesitate to add a letter here and there to improve the result. For instance, instead of “Perpend,” I might settle on “Perpendes.”
Whatever the method, I prefer to prepare possible names ahead of time. I keep a general dictionary, and a specialized one for each culture I depict. Each of the specialized ones is based on a real language, or else the unique sounds or letter-combinations I have assigned to the culture. I currently have a dictionary of over five hundred coined names, so when I need one, all I need to do is consult my dictionaries.
Many writers coin names by other methods, such as reading a word in reverse or deliberately mis-hearing what someone said. There’s nothing wrong with such alternatives, if they give satisfactory results. However, by semi-organizing the process, I find that I get more pleasing results. Probably many of the names in my dictionaries will never be uses (and, in some cases, no doubt shouldn’t be). But maintaining dictionaries of names streamlines the process, and minimizes the interruption when I suddenly need a name while writing.