What do you guys think of Software Craftsmanship?

Hi, I have been reading a bit recently about things like Software Craftsmanship, Clean Code, and the SOLID principles etc. What do the redditors think about such things?

Sometimes I get the feeling that many redditors, like those on r/programming mock or disagree with such ideas. Perhaps it is just two different cultures, and both are valid, or perhaps things like Software Craftsmanship is targeted at a different type of developer than we find here on reddit.

It seems like there are a lot of "movements" and communities out there, I am sure they are all valid in their own way, but probably not all at once, for all developers at all stages of their careers.

Are there any thoughts out there on which of these many ideas are relevant for developers at different skill levels etc? Is there any roadmap or anything?

Posted Mar 14, 2011, 10:27 AM UTC

42
defrost•

I'd never heard of Software Craftmanship

[ . . ] an approach to software development that emphasizes the coding skills of the software developers themselves. 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.

Historically, programmers have been encouraged to see themselves as practitioners of the well-defined statistical analysis and mathematical rigor of an engineering approach with the connotations of predictability, precision, mitigated risk and professionalism. This perspective led to calls for licensing, certification and codified bodies of knowledge as mechanisms for maturing the field.

The Agile Manifesto, with its emphasis on "individuals and interactions over processes and tools" questioned some of these assumptions. The Software Craftsmanship Manifesto extends and challenges further the assumptions of the Agile Manifesto, drawing a metaphor between modern software development and the apprenticeship model of medieval Europe.

Judging by that I'd say it's a fuzzy minded branding exercise that extends the woolly headed stuff put forward earlier.

Let's be clear, learning from mentors and exchanging code with peers are both incredibly important parts of learning programming well; while neither is strictly essential as counter examples abound, having a rich environment of peers and mentors that you communicate well with gives a hell of a leg up to your learning curve.

Here's a tip though, none of this is breaking away from either mathematics or engineering which have long been peer sponsored journeyman like guilds.

Most of the ideas put forward by most of the communities are excellent ideas, in an appropriate context, they all have merit, but at the end of the day it'll only be some of these ideas that'll actually work for you.

Keep your interfaces as simple as they can be and test edge cases as you go in a manner that allows the tests to be repeated later.

3
zmeefy•

Judging by that I'd say it's a fuzzy minded branding exercise that extends the woolly headed stuff put forward earlier.

IMO all of these methodologies are. When marketing and the "burocrat mind" meets engineering, you get that sort of thing.

In the 90's I spent a lot of money on programming methodologies. All of them take the same few principles, call it something else and then sell millions of books. Don't repeat yourself, build often, commit often, test units, automate what's possible, don't curse your colleagues....take all of that, call it something else, profit.

2