One of the consequences of new software is bloat. In its worst manifestation new features get added at the expense of core feature performance. A perfect example of this is iPhone 2.0 software, specifically the Contacts application.
When I migrated from iPhone 2G to 3G I synchronized my data to the new phone and Contacts slowed to a crawl. While my database of contact is large (2,300+ cards) it performed well on my iPhone 2G. Contact lookup was snappy and I could jump to any letter in my contacts (then it was inside the Phone application) with no hesitation whatsoever. Now the iPhone 3G's Contacts application is horribly slow.
Clicking on a letter in the right navigation of Contacts now takes a full five seconds to respond. Five seconds! At first I thought that the Contacts application was crashed when I tried to jump to one of the letter shortcuts, but eventually it would jump. Then I thought that both the Mail and SMS applications were buggy too but the problems seem to stem from the Contacts application or any time a contact record is accessed.
Contacts are an integral part of any phone, and on iPhone they're not only used to look up and dial telephone numbers, but they're also used every time an email or text message is addressed. So Apple's buggy Contacts application has effectively hobbled an integral feature of the iPhone and it's also brought down Mail and SMS with it.
For the time being I'm going to whittle my contacts down by about half to see if that helps – but I shouldn't have to, it worked just fine before.
While on the topic of the iPhone's Contacts application, I think that the search bar should be fixed at the top of the contacts window instead of having to try to click on its microscopic magnifying glass icon at the top of the letter shortcuts.