An introduction to incremental design, single responsibility, and dependency inversion for entry level developers