I’ve had several HTC phones, and I never seem to learn. The latest is an HTC One V. They all start out great — excellent hardware, seemingly fast and snappy interfaces — and turn into useless, molasses-slow junk within a few weeks.

I think I’ve isolated the source of the problem: It’s something to do with HTC’s approach to contact syncing and, in particular, the Contacts Storage app. I have about 3,000 contacts in one Google account and 700+ in the other, so I might represent a minority case, but it seems to me that this isn’t an inordinate number of contacts. Somehow it gets incredibly bloated on the phone, though: 62.7MB at the moment. I’ve tried deleting the data file and letting it re-sync, and it quickly zooms back up to the same gigantic number.

By contrast, when I export my contacts to a CSV for backup, both sets combined take less than 3MB of storage. So HTC is somehow increasing the storage needed for my contacts by 20X.

This causes a huge performance hit. Any app that needs to access contacts gets incredibly slow to open. Just opening the phone dialer can sometimes leave me staring at a blank screen for 30 seconds. Mail is the same story. I can get notifications about incoming text messages, but tapping on the notification to actually open the message itself will put the phone into a wait state that lasts two or three minutes.

It seems to be worst if the phone is actually syncing data (indicated by the “sync” icon in notifications). Over a 3G network, this sometimes takes ages — even when there are no significant changes to my contacts.

On top of that, a previous HTC phone littered my contacts’ notes fields with strange HTC codes. It’s as if some HTC engineers decided that people never use their notes fields, so they might as well just throw sync tokens in there. It’s disconcerting and rude behavior.

But rudest of all is the notion that the phone, when it’s syncing, is too busy to respond to me. That’s a fundamentally broken UI. Computers should always be immediately responsive to humans, and should always be interruptible. There is no reason a sync operation could not be stopped so I could make a freaking phone call.