3 tenants of amateur coding