My mottos are:
- do not modify anything for every user on a site directly on the live system even it is the smallest bit of change
- push for a local git server so that customer specific will not leak even to a private github account
- create an app for the customer and contain all business modifications and developments within
- defend to address solutions using community maintained apps to your last drop of blood
- all modifications must be addressed on a developer system then pushed to the test and then deployed to live server after user approval
- give back to the community when you can
- do not own customer’s problems but offer them solutions
- always test against documentation
- start all modifications with a predetermined code to simplfy fixture exports and methods specific to your solution
- generate modification codes on standard doctypes from forms using export customizations functionality