Is there a best practice for setting up ROS development env?

You should look into ADE. It should make this even easier! The first part of the Autoware course that is currently running touches on ADE a bit I think: Course: Self-Driving Cars with ROS 2 and Autoware.Auto