Software Craftsmanship emphasizes not just working software but well-crafted software, steadily adding value through change. Code smells are indicators that code may need refactoring to improve design. Common code smells include lost intent where code purpose is unclear, duplicated code, long methods, large classes, and primitive obsession where code is too simplistic. Refactoring helps reduce technical debt by improving code design without changing functionality.