I have recently come across two terms: Software Engineering and Craftsmanship. I would like to know what the difference is between Software Engineering and developing software in a Craftsmanship style. Intuitively I understand that these two approaches are not exactly the same, but I am not sure whether they are completely different.
They are buzzwords that mean different things to different people. I expect that they mean little in practice, and will vary greatly based on who you talk to.
That said, as a compare and contrast exercise:
- Software Engineering pushes for code quality by having specifications, reusing well-known standardized components, and having processes to guide developers' work.
- Software Craftsmanship pushes for code quality by trusting the pride of the programmer making the software, using more custom specialized components for the task at hand, and having close customer feedback to guide developers' work.