Programmers decompose a problem into its functional blocks and then laboriously code each block. The hardware engineer also partitions the problem into functional blocks. Then, he uses a few standard parts to implement that section. The problem of hardware complexity has been mastered by standard parts and a will to use them, even if the design must be altered to fit the available parts. Software folks simply must reach the same mastery of complexity to deal with the larger programs looming in the future.
Every chip comes with a well defined interfaced bounded by some number of pins.
Voluminous data books describe the action of the device in gory detail. While the unit's internal operation might be glossed over, its interface is well defined with timing diagrams, input and output levels, and the like. It's but one ingredient in a larger recipe. Just as knowing how to use Corel won't make you a graphic artist, the tool itself can greatly aid in achieving an objective. Management Issues Programming is like accounting.