Yeah, “sticker shock” and “desire to get something for nothing” are the most common problems for software development, when someone who isn’t a software engineer, or isn’t used to software development, tries to contract for something.
Walking on water, and meeting requirements, are both easy, if they’re frozen.
The problem is that a shockingly large part of what a software developer actually does, is not “writing code,” but “discovering hidden, assumed, and unknown requirements.” This is frequently a process with high uncertainty – much higher uncertainty than a construction project like “a bridge” or “a downtown office tower,” in fact. Complexity analysis shows that there are more moving parts in a typical software application, than a construction project, and humanity has been doing construction for 6000+ years, but software contracting only for like 60 years…