So there is no way to edit the contract after it's deployed? What if you want to add a new rule down the road to the contract?
Every smart contract has a predefined list of methods. Once it deployed that list of methods can't be supplemented by new ones. Like it is often stated 'code is a law'. Although it's not possible to modify a contract code after deploy, it is still possible to use it's predefined methods to change some variables even after deploy. If you are developing an ICO contract you can for example add a method which will allow you to mint coins infinitely after ICO ends or add a method which will allow you to change hard cap at any time. That's the reason is so important for ICO contract to be public so everyone could check by himself whether contract doesn't have hidden methods and whether developers are not trying to scam investors. The same situation is with another kind of contracts.