I disagree. What problem does NAT solve, other than allowing people to cut corners and not deploy IPv6?
It by default ensures that machines inside a network are not reachable from the outside world. It gives you one address to the outside world which made IP blocks for abuse work quite well and enabled a lot of other users.
Sure, it's a bit of a pain for UDP communication but given the common NAT behaviours not completely terrible. If it was defined a bit clearer NAT would not have been that controversial.