Software career best practices