Why do people use AT commands in serial communication?
One seldom-appreciated detail about "AT" commands is that many modems would start out in "auto-baud/auto-parity" mode.  Initially, the modem would start out not trying to actually decode any serial data, but would simply watch for a consecutive low pulse and high pulse whose widths matched the same valid bit period (e.g. 3.333ms for 300 baud, 833us for 1200 baud, etc.).  Upon finding that, they would see if the next low pulse was five times that width.  If so, they would watch for either another high-low-high or else for at least 1.5 bit times of high.  Finding either of those would indicate that the modem had just seen a 0x41 or 0xC1 (i.e. "A") of the identified baud rate.  It would further indicate either the attached computer was using either 8-N-1 or 7-E-1, or that it was using either 7-N-1 or 7-O-1.  In either case, it would look for the next character to be either 0x54 or 0xD4 (i.e. "T").  That would allow the modem to further categorize the character length and parity settings.

Note that everything received before the "AT" would be ignored.  If echo was turned on, the data would be echoed back to the attached computer simply by mirroring all line transitions without any serial decoding.  If a computer sent data prior to the "AT" at e.g. 247 baud, it would be echoed back at that speed.

Nowadays, a few devices use an initial "A" for auto-baud-rate detection, but otherwise the fact that commands start with "AT" is basically a historical curiosity.