Best Practices for Software engineers