If you and your friend are new to developing smart contracts, please follow the tutorial
and then read the basic material
Contracts when deployed cannot have their code changed. You can get around this by using a proxy.
I really think you should start with a basic contract and build in the functionality you want.