An engineer's observations on Web3 and its possibilities
&gt; At the same time, smart contracts have some deeply problematic constraints:
&gt; Smart contracts can’t be upgraded. Smart contracts are deployed once and run forever; their code cannot be changed. The software development industry has literally zero experience with such a deployment model.<p>I stopped reading here.  First, this is factually wrong -- the software industry has tons of experience dealing with software that can&#x27;t be upgraded.  Ever try to upgrade the firmware on a chip with no I&#x2F;O facility for doing so?  The answer is you don&#x27;t; you instead focus on getting the code correct the first time, and possibly you build out a way to recall the product and replace it with a fixed version and price in the risk of needing to do so into the product itself.  It can be done; it just takes discipline.<p>Second, if you don&#x27;t understand why smart contracts being immutable is a necessary and desirable <i>feature</i> of the system, not a bug, then you&#x27;re not going to understand much of web3.  Like, think about it for five minutes -- if your smart contracts can be upgraded by default, and this code manages valuable digital assets, then their code can be replaced with code that steals those assets.  Making this <i>very, very, very hard</i> is deliberate.