Introduction to Clean Code and Software Design Principles