I'm not sure why I haven't thought to post these before now, but here are a couple of links that may help if you're struggling with subnetting or just want to sharpen your skills.
The first is a link I found when I was preparing for the CCNA: http://www.kehlet.cx/articles/79.html. It contains a simple form in which you enter the network address and broadcast address for a randomly generated IP with either a subnet mask or a prefix length. It also runs a timer so you know exactly how well you're doing. I find that this is the best way to decrease the time it takes to mentally calculate subnet information; it helped me tremendously.
The second link, a brief explanation of one subnetting method, is interesting to me for a couple of reasons. First, it was written by one of my coworkers in 2001, back when I was still in the Cisco Networking Academy. I find this interesting because of how it forces me to juxtapose a way of thinking and a level of knowledge from a time that I considered to be far behind me with that of the present, reminding me that, when some of the greatest minds in the industry were building the Internet, I was in diapers. Second, it uses a method that I arrived at independently, less than a year before I was given a copy, and agrees with the method described in Network Warrior. This seems to support the notion that people in the networking industry tend to arrive at this method fairly naturally, which would also imply that this method is relatively easy, as most people don't make it a point to do things the hard way. The human brain is naturally lazy and wants only to use those methods and procedures that require the least amount of work. Hence, like monkeys in pants, we make tools.
I may decide to post my personal variation of subnetting strategy later, but the two pages presented here should be more than sufficient to help anyone make improvements.