DHCP has some short-comings, but it's still useful. In particular, most DHCP server implementations blindly accept IP address requests provided they don't collide with another existing lease or reservation, or active IP if it's set to ping an IP. This can cause devices which roam between networks with the same IP scheme to have incorrect settings. Though Network Location Awareness does a fairly good job to overcome this.
For instance, a home network has IP scheme 192.168.1.0/24 with a DNS server of 192.168.1.1, the laptop has been assigned IP 192.168.1.64. The laptop gets taken to an office network which also has an IP scheme of 192.168.1.0/24 but the gateway at 1.1 does not offer DNS services and instead gives out 8.8.8.8 as DNS.
However, when the laptop requests the IP address of 192.168.1.64, the office DHCP server sees this address is available and simply acknowledges and the laptop does not get updated configuration information, thus it still queries 192.168.1.1 for DNS which never answers.