Turning a reading light on and off is way beyond Boeing's engineering capabilities. Blame it on the vendor.
Actually, the system requirements are quite complex. When they went to digital controls, every seat command has to go to a central controller. One requirement of the system is that seats need to be installed and removed, sometimes with changes in seat pitch, with no input from the mechanics. The first versions of the algorithms that handled this sort of thing were pretty inefficient and with lots of people pushing buttons, the controllers got behind.
Finally someone got smart and realized that seats aren't unbolted and moved during a flight*. So in the next firmware version a table was populated once at power up and subsequent lookups were accomplished quickly.
*A side effect of the military habit of compartmentalizing design problems for security purposes. The software is typically developed separately from the hardware and the requirements are obfuscated so the developers often don't have visibility of details like this unless someone at Boeing specifically states them.