There are a lot of ways they are the same: both are built to spec, not mass produced, both require a degree of planning, estimation, and technical expertise, and both require the application of simple principles on a larger scale. That makes the comparison more apt than, say, assembly line manufacturing.
To me, the biggest differences are the degree of precision required in software engineering, and how easy it is to change the finished product. That creates a vast difference in how design and implementation errors are accounted for.
As for precision, if a beam rated at 3 tons actually can only support 5999 pounds, your bridge will still stand. If you get one bit wrong out of gigabytes, it can bring an entire software application down. You can't just make that bit twice as strong as necessary. It's either right or wrong.
Fortunately, when that one incorrect bit is discovered, it is relatively easy to change. If you don't discover a flaw in your bridge design until after it's built, it can be extremely expensive to fix.
That's what makes the processes so different. If you tested bridges the way you tested software, you would build it, then cause hurricanes, tsunamis, earthquakes, and extreme heat and cold to see if it still stands. After rebuilding it and retesting it several times, it would finally pass the tests, and you would start letting people drive on it. Then you would find out that blue cars cause the bridge to collapse, and you would rebuild it again. Then a customer would complain that the Golden Gate Bridge design doesn't work when he tries to copy it for a bridge to Hawaii, and marketing would expect you to make it work for the same cost because to them it seems like the problem is exactly the same.