Exploring best practices in software architecture, object oriented and API design, coding