software craftsmanship (2)