Good hardware and software engineers are both expensive. The big difference lies in the cost of prototyping, upgrading, and, especially, the cost of fixing a mistake. Design always involves a certain amount of trial and error, and hardware trials and errors are much more costly. If a hardware design doesn’t work correctly, it can mean months of expensive redesign. If software doesn’t work, a software engineer fixes the problem by typing new instructions into a file, recompiling, and trying again in a few minutes or a few days. And software can be quickly fixed and upgraded even after the product has shipped.