Previously, I always used this process: place eggs in cold water, place on stove, bring to a boil, boil for fifteen minutes, cool with ice water. Ninety-plus percent of the time, this technique worked great, but occasionally, I'd end up with overcooked eggs. In my attempts to correct this issue, I started trying myriad methods found online and in cookbooks. The attempts just went from bad to worse.
Fortunately, when doing my research on sous vide, I came across a graphic that showed the characteristics of eggs when cooked to various temperatures. This image, which I found in the massive tome, Modernist Cuisine, showed an ideal temperature of 176° F. So, here's the great thing about having this knowledge: if you keep the water at this temperature, you can never overcook your eggs! Every time, you can have perfect, hard boiled eggs.
Here's how: place your raw eggs into a pan and submerge with cool water. Place the pot on the stove and turn the heat on high. Rig a thermometer so that you can keep track of the water's temperature. Heat the water up to 176° and then adjust the burner to maintain that temperature. Cook the eggs for 20 minutes. Unless you are cooking extra-large eggs, they'll probably be done at 15 minutes, but you can cook them for 20 without any adverse affects as long as the temperatures stays at 176°. Cooking for a full 20 minutes insures they are cooked all the way through. Drain the hot water and fill the pan half with cold water and half with ice to chill the eggs.
By the way, if you are frustrated with hard to peel eggs, make sure you use eggs that have been around for a little bit. In fresh eggs, the shell can be very difficult to remove. I try to use eggs that have been in my refrigerator a couple weeks before hard boiling them. It sounds weird, but it makes all the difference in the world.