Budgeting, Communication, Planning, Quality Assurance, Team Building 5 Best Practices for Establishing an Effective Software House