How cool is this? A "programming" book written for both software developers and hardware design engineers.
Where I came from, the software folk and the hardware folk got along pretty much okay, but they sometimes seemed to be from different planets. The hardware engineers would roll up their sleeves and work for months without a break, while the software programmers would sit back and relax, or play ping-pong, or whatever software programmers do, until the hardware was stable and software development could begin in earnest. At this point the hardware team would be off planning their vacations, repairing their marriages or trying to remember where they lived. All to no avail, because the software team would soon be coming after them for some perceived deficiency or new feature request, and the hardware design would quickly become a hardware redesign.
It's amazing that the software and hardware teams I worked with didn't break into full-on hand-to-hand combat. I suppose that in hardware/software codesign, as in life, "good fences make good neighbors."