If writing effective villains is hard, writing effective nice characters is even harder. Villains do things; they are proactive in pursuit of their evil goals. They are objects in motion, and objects in motion draw and keep interest.
Nice characters, on the other hand, are all too often defined by the things they don’t do: they don’t start fights; they don’t break their own marriage vows or go after the significant others of their friends; they don’t nurture long-term obsessive plans for gaining revenge or accumulating wealth or attaining positions of power. They may not even smoke, drink, or listen to rock-and-roll (and the strongest drug they take is probably aspirin.) If you make your readers spend too much time around a character like that, they’re going to start cheering for the villain.
Something to keep in mind, then: If you want characters to generate plot and conflict, they need to have shadows in them to hide stuff and angular bits to catch on things.