I've been nitpicking on EV spreads on a few occasions.
EVing can be hard, but with helpful tools, it can be a lot faster and less error-prone. You will want a damage calculator, and two very helpful tools for creating defensive EV spreads:
http://survivalcalc.appspot.com/
http://pokestudio.altervista.org/defevs.php
Pokémon Attack Survival Calculator is exactly what it sounds like - it is a tool to calculate defensive EV spreads for surviving specific attacks, and it can do pretty much everything.
PHP Defense Effort Values is a simpler tool for calculating efficient defensive spreads for general bulk.
I'll get straight to the point, so we'll assume you know what you're looking to do. Let's use the Gastrodon spread I use as an example - the goal was to survive special STAB Grass attacks with Assault Vest, with the rest of the EVs invested into Defense. First, I arbitrarily cut Special Attack investment to 220 for 154 Special Attack to maximize the gains from using a positive nature, since I wanted as many spare defensive EVs as I could afford. After doing calcs on select attacks such as Typhlosion4 Solar Beam, Trevenant4 Energy Ball, Gourgeist3 Energy Ball and Ludicolo4 Giga Drain (note: Ludicolo4 doesn't actually have Giga Drain, but it didn't matter much since its imaginary power is very similar to the other attacks), I found that surviving Typh4 Solar Beam would require a lot more investment than I liked and decided that surviving the latter three STAB attacks was as far as I would go.
Inputting the appropriate values into Survival Calculator using Gourgeist3 Wise Glasses Energy Ball (the strongest of the three similarly powered attacks I was considering) as the reference attack, the calculator suggested a spread of 180 HP / 92 Def / 12 SDef - I did some manual calcs, and the spread seemed satisfactory, so I went with it. This was initially for a Rain team in Triples.
After using 180/0/92/220/12/0 Gastrodon in Doubles for a streak, some of the initial assumptions were wrong and adjusted accordingly:
-Ludicolo4 was not a relevant threat because it prefers to target Talonflame with Hydro Pump, is OHKO'd by Brave Bird, and has Grass Knot instead of Giga Drain
-Gourgeist3 wasn't too relevant because of its rarity
-220+ SAtk Gastrodon Earth Power OHKOs Jolteon4 15/16 of the time - I had arbitrarily cut Special Attack, but it turned out to be a suitable power target (OHKOing it every time would require 244 SAtk EVs).
Surviving Trevenant4 Energy Ball was still relevant, as it holds an Iron Ball to outspeed Gastrodon under Trick Room and is relatively common. The attack was slightly less powerful than the other two, so I could move 16 EVs from HP to Def to hit 207 HP to minimize residual damage (which Gastrodon was suffering frequently - 209 HP is one above a multiplier of 16, maximizing residual damage, while 207 is one below a multiplier of 16, minimizing residual damage) and slightly increase physical bulk while still surviving Trevenant4 Energy Ball. As a result, Gourgeist3 Energy Ball has a 1/16 chance to KO.
I checked the sanity of the tweaked 164/0/108/220/12/0 spread using PHP Defense Effort Values - inputting the appropriate values and checking "Sandstorm" for the Assault Vest effect and moving the slider to the right, 164/108/12 was returned. I was satisfied with this, and went and EV'd Clear Smog Gastrodon with the new spread.
For another example: Rotations Dragonite with a spread of 212/84/12/0/12/188. The speed target remained the same, but I wanted to survive Sawk4 Stone Edge and STAB Blizzards if possible - I also wanted to be able to use Substitute four times at full HP and maximize the durability of the substitute, and maximize Roost recovery by having an odd HP number (recovery moves that heal 50% of the Pokémon's health round up, so a 174-HP Dragonite and 173-HP Dragonite both recover an identical amount of health). I initially cut attack heavily to an arbitrary 44 Atk EVs to free up defensive EVs to play with; with the available defenses, it was possible to achieve all of the goals and survive Sawk4 Stone Edge and Articuno1 Blizzard. I then checked if the Attack cut cost any KOs and found out that Volcarona required 84 Attack EVs to OHKO at +2, so I increased Attack to that and started compromising on defenses. With 84 Atk and 188 Spe, there were 236 defensive EVs to go around. After calcing the relevant attacks, 228 HP / 4 Def / 4 SDef failed to survive Sawk4 Stone Edge; the minimum investment required for it was 212 HP / 12 Def, which led to the final spread of 212 HP / 12 / 12 SDef which also conveniently survived Articuno1 Blizzard 15/16 of the time. 212 HP also hit 193 HP for four 48HP Substitutes, maximizing their durability.
I didn't use the defense EV calculators for this spread since it turned out to be simple and finished it in manual calculations on the seat - but to check it now, I input the appropriate attacks (Sawk4 Life Orb Mold Breaker Stone Edge and Articuno1 Blizzard) into Survival Calculator, which returns 212 HP / 12 Def / 12 SDef. Manual EVing can work perfectly fine while being fast, but sanity checking with the calculators anyway helps spot mistakes and optimize the spreads further.
I'll now nitpick other players' EV spreads using some of the methods I've demonstrated. I hope you'll find the criticism constructive.
First, Jumpman's classic Icy Wind Suicune with 196/0/252/0/0/60. It is EV'd to survive +2 Garchomp CH EQ.
Inputting this attack into Survival Calculator, it instantly returns 236HP/212Def which still survives the attack while having 5 more HP (a direct increase in special bulk) and only marginally less general physical bulk.
The second example is VaporeonIce's Durant spread of 220/4/108/0/84/92, which aims to survive two Carbink4 Power Gems, Breloom4 CH Focus Punch, and additionally survives Blaziken4 Flame Charge. As Blaziken4 Flame Charge is the stronger attack, it is used as the comparative attack.
Inputting the values into Survival Calculator (50.01 in the "percentage of HP left" field instead of the default 0.01 to calculate for avoiding a 2HKO instead of avoiding an OHKO), it returns a spread of 252/116/44 with Flame Charge dealing ~96% max.
We can also calc something else fun regarding this Durant. Breloom4 CH FP survival was an important target in addition to Carbink4 Power Gem, and after Speed was cut, there were plenty of EVs to accomplish both - but what if we could not cut Speed so much and had to compromise on these two attacks with a lesser amount of EVs to survive them?
Going back to Survival Calculator, let's input Breloom4 CH Focus Punch as the comparative attack instead of the stronger Flame Charge - set the Damage Multiplier field to 1.5 for a critical hit. Check "Survive Comparative Attack" and then press Find Minimum EVs, and we see that 252HP/44Def/44SDef - or 340 total defensive EVs would be the minimum investment required to achieve both of these goals.
Now, I don't know of a better spread for this Durant - the existing spread is already very good. You could change Flame Charge into the main attack, and opt to maximize special bulk with the rest of the EVs - in fact, if you do this, it returns 220/108/84, the exact spread of VaporeonIce's Durant that he arrived at by doing damage calculations by hand! Note that you can and should use both manual calculations and these calculators when developing EV spreads - if you find a nice calculation like Blaziken4 Flame Charge on this Durant when theorymoning a spread, it can be a good attack to EV against using Survival Calculator.
Finally, a screenshot of what the minimum EVs calc done in this paragraph looks like for an example of usage, since the calculator is a bit unwieldy. Be sure to read the instructions linked at the bottom of its page as well.
(I had Substitute checked from doing the Dragonite calc earlier in this post - Find Minimum EVs ignores this, so it doesn't affect the result here and its impact is minimal as it only avoids having the HP number be divisible by 4 if checked.)