I like your description, it's one of things I love about software, how malleable it is for quickly building "devices", tools for my own use or a potentially large number of users.
About the last point you made, how it would be great if hardware/mechanical devices could be made more like software - a few years ago I heard about "micro factories" (forgot the exact term): 3D printers for small(er) scale manufacturing. It seemed promising that soon we could be writing software to manufacture devices/products at home, in a garage, local maker "lab". If you thought of an easier mechanism to mince garlic, you could whip up a prototype in a code editor and "print out" a working prototype (or production-level device)..