Is software craftsman a complimentary term for a programmer or is it just neutral?
I would say adding 'craftsman' to any skilled profession would be taken to be complimentary - unless, of course, used ironically
To answer the question - certainly not neutral.
Software Craftsmen is not in common usage like the terms Software Engineer or Software Developer.
Programming is one part of the application of Computer Science to solve real world problems. As such, could be viewed as an engineering discipline. Traditionally craftsmen are called upon by engineers or artists to perform skilled manual tasks. So, if the programmer aspires to engineering the term Craftsman could be seen as limiting, however affirming it may be of "hands on" skill.
If I hear someone refer to a programmer as a Software Craftsman, I presume that they have an interest in the Software Craftsmanship community. So it's not merely a complimentary term, but also a political* affiliation.
While "Software Craftsman" is not frequently heard, "Craftsmanship" in common usage can be applied to any field or endeavor, be it engineering, the arts, or even ditch digging.
"Craftsman" typically implies a person who cares deeply about the quality of what he produces, or who strives for and achieves excellence -- one who is a master in his field. To further emphasize this "Master Craftsman" is sometimes used. To me the term is definitely complimentary.
As an experienced software professional, I take the term to be extremely complimentary. Many software professionals pride themselves in high standards of "craftsmanship." Two software products that behave identically may be crafted very differently, and one may be much more elegant than the other on the inside.
So the term increases the importance and significance of the craftsmanship and quality of the work that a professional creates.
Quoting the aptly worded Wikipedia page for Software Craftsmanship:
It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer accountability.
"Software Craftsman" is a elitist software programmer who is geekier, nerdier, and an awesome programmer. He is not certainly not the usual or regular software programmer. "Neal Ford", "Ola Bini", "Joel", "Obie Fernandaz", "Yehuda Katz", "Matz", "DHH", etc are all notable examples of "Software Craftsman".
"Software Craftsman" thus can only be an elitist title :)
The Software Craftsmen I know strive for professionalism, technical expertise, practice, continuous improvement, and community participation. At the Software Craftsmanship North America (SCNA) 2013 conference, Ken Auer told attendees that humility is also a requirement. In my opinion, anyone who calls Software Craftsmen "elitist" is ignorant of the Software Craftsmanship movement, and the nature of Craftsmanship in general.
Software Craftsmanship refers to the degree of creativity a software programmer can exhibit in his programming, thus reflecting true art or skill while writing a program. The skill involved is thus assumed to be at par with the skill used in other areas of engineering.