The Software Craftsmanship movement…accountabilty or elitism ?
I recently “attended” the virtual hack.summit() conference (https://hacksummit.org/). It was actually pretty great….an amazing assortment of speakers from all backgrounds (from the co-founder of Stack Overflow to the creator of Google Glasses to the creator of Ruby on Rails to the “big data” manager of Facebook and on and on). The sessions were very interactive “fireside chats” with each speaker, all of which were amazingly open and informal. One topic that came up in several was the notion of “software craftsmanship”. Maybe I have just been too “head down” in my own work over the years, but this was a new one on me (I think it really got started around 2011 anyways haha). Heard of it?
Well, one of the speakers was Robert Martin(https://en.wikipedia.org/wiki/Robert_Cecil_Martin)….also known as “Uncle Bob”…who was one of the creators of the “Agile Manifesto”…and later the “Software Craftsmanship Manifesto”. As I understand it, the idea of “software craftsmanship” was born out of what he and others saw happening in the Agile world. As he put it, when Agile began, it was a “programmers’ thing”….meant for developers. As Agile caught on, he saw where there were lots of people being certified as “Scrum Masters” who had absolutely no programming background…often project managers looking for a new role. This did not sit well with him as he thought “how can someone with no programming background really understand and appreciate Agile and its outcome….to produce great code”. So, he (and others) hit upon the idea of “software craftsmanship” (Manifesto for Software Craftsmanship) where the “craft” itself of programming/development is held to a higher level…..in an nutshell as they state “raising the bar of professional software development by practicing it and helping others learn the craft”. As Bob stated, when he started coding, it couldn’t kill you….today however, software can kill people or crash economies literally because of how dependent most all things in our world are on it….therefore, we must hold it’s creation to a higher level. Personally, I can see the merits of this on the one hand….don’t we all who develop software/apps/etc want to crank out good, well-written code? do not all of us hold ourselves to a certain level such that we create code we are proud of?…well sadly, the answer is “no”….so in that sense, I can see where they are going with this.
On the flip side of this was David Heinermeier’s (creator of Ruby on Rails) session. When asked his thoughts on “software craftsmanship”, he had a MUCH different view. He argued that those considering themselves “craftsman” get too caught up on the “beauty” of their work (and it becomes an ego thing) versus producing the functioning software intended. Furthermore, it lends itself to a kind of elitism among the programming world. For example, you might get those “craftsman” types considering themselves above/better than say some guy learning PHP that cranked out a great site because the “craftsman” might argue PHP is not a real language….but isn’t it still all programming? And that too is another point of contention for him…..he got into programming because it is so open and accepting. You do not have to be a trained programmer or software engineer to pick up programming and do it. All you need is an interest in it….and a passion for it and learning does not hurt either. (haha) Attempting to divide the already divided developer community (often wrongly segmented by degree/certification, development language, world region, age, etc.) by yet another “scale” is just more evil than good.
Feel free to Google arguments on both sides of this…there are lots out there (like I said up front, this was a new idea to me, so I spent a bit of time researching both sides as well). I am curious to hear your thoughts on it as well (and if you think it can/should be applied in our SAP world!). I think you can also still sign-up for the hack.summit() site (use promo code CODESCHOOL) and view all the recordings of the sessions.
(edit: you can find the recordings of the conference sessions on YouTube by searching “hack.summit() 2016” and/or looking for user “Ed Roman”).
Thanks for sharing Chris!
I've signed up as well, and looking forward to hearing some of the replays.
With regard to the Software Craftmanship movement: I can't decide whether it's just a smart marketing scheme (Uncle Bob is very commerce-savvy, if that's a word), or that they really want the industry to move forward, which is still very much needed and a laudable goal.
I've got to confess, I can lose myself in the beauty of elegant code sometimes (always written by others of course), which doesn't help anyone 🙂 .
Curious to hear other's opinions...
Fred
Yeh, I agree on admiring the "beauty" of code. Heck, one of my favorite sayings is "Programming is the only art that fights back."....and like art, I am continually "fiddling" with my code even after it is functionally complete. I love to refactor and find some new/different way to handle a chunk of processing....have a "creative moment" and work something up I didn't think of before....and like art (such as painting which I do enjoy doing), there comes a time when I have to catch myself and have that inner struggle where I say "you are DONE!"...otherwise, I can never fully move on and focus on the next thing I am working on. (haha).....so should we all be "craftsman" in our own minds? I think so. We should be proud of our work and strive to put out the best work we can. Should this be formalized across the community? That I find dangerous....and the irony being that just like the concept of "software craftsman", I think folks could literally get lost on the details of what that really means and not move the execution of it forward. 😛
Awesome blog, Christopher, and thanks for the summary! I have not heard about any "craftsmanship" movement either, but I don't go out of SAP much. It definitely doesn't seem to be a thing in ABAP. 🙂
Having heard both sides I'm not sure why we cannot have it both ways? "Craftsmanship or bust" approach just does not seem practical, but we all can strive to be better. Don't think there is a reason to dis one side as elitist egomaniacs and the other as lazy nincompoops. It's not that binary.
Totally understand where David Heinermeier is coming from - I also appreciate programming as very accepting and open profession. However, looking at some posts in the ABAP forum here, I sometimes think if there should be some licensing involved. Forget craftsmanship, so many people lack basic logic and common sense, sigh...
Certainly the "helping others learn the craft" part is more than welcome. But you'll never teach anyone anything if you don't respect them and are more preaching than teaching. With this in mind, I wish there was more teaching (especially in the SAP world and on SCN) that was simple, short and practical.
Thanks again!
First off, thanks Jelena! (having your comment grace my blog gets me all giddy and smiling! haha 🙂 )....it is an interesting concept....and as in the blog, I invite others to look into it....and also try to check out/listen to those two speakers' sessions to get a bit of their take (overall, David's was great!...though be warned, LOTS of "language" that might offend some. haha) . Like you, I can see both sides of it....but also, we do now have data scientists, software engineers, etc. who do go through formal training, so I am not so sure if another accreditation is needed.
As mentioned, I can also see the motivation from "some" people if money is involved. I clearly remember the rush of folks to get "Scum Master"/Agile certified, and I got how that soon diluted the initial intent. So now having another "gating" in place (everything old is new again? haha), especially if revenue generating, does clearly spotlight possible agendas....and I don't care to see that again.
Why didn't you say so? Now I'm definitely watching! 🙂
By the way, you might want to add "abap" tag, I found that "abap_development" tag does not show up in ABAP space (although tags seem to be broken at the moment).
I was rather expecting to see like 100 comments by now, but this space is probably not very popular. Either that or everyone is just in awe and has nothing to add after Lars Breddemann spoke. 🙂
abap tag in the SAPUI5 DC? How tragic...
On the actual subject, I suspect it is more than a bit of both elitism and accountability. Throw it over the wall is wrong regardless of how good of a Craftsman the developer actually is with coding. But fun to read all the comments.
Cheers, Mike
SAP Technology RIG
Hmmm it has the ABAP tag already.....must not be working...as you said. 😛
'abap_development' <> 'abap'. 🙂
However, tags aren't working at the moment, generally.
They are BOTH tagged....and doubly ignored. 😐
The space tagging issue is being tracked in Tag not displaying the post in the space. A fix is supposedly going to be pushed out on Monday.
>> I sometimes think if there should be some licensing involved.
That sounds like elitism to me 😆
You might want to look up the definition in the dictionary. By that logic all the drivers out there (well, the licensed ones anyway) are "elitist".
I did not yet listen the two speakers and just rely in the "Manifesto" Chirstopher posted.
And i do not see this "elitarism" in it.
I try to translate in ABAP/SAP world how i read it
Not only the code works, but it's readable, clean, well structured and with good performances.
We do not apply a quick change based on the request of the moment, but we try to see a couple of steps further and try to prevent further requests suggesting and planning improvements.
We try to organize in community and share knowledge (here, with collegue) because together we can improve, alone we fall.
Teaching and learning is continuum process.
We do not have to focus only the result of the moment (golive of the project, complete the report...) but we have to build relationships that go over and allow us to improve.
It doesn't seems to me so "bad".
If I synth what I understand in a statement is: developers have to keep improving and improving, sharing their knowledge and help others doing the same. Who doesn't want to do it is a bad developer.
It's so bad? Not to me.
Really a nice blog to read and thanks for hint to registration for hack.submit()!
Personally I've heard and read of the software craftmanship before. It surely started quite a long time ago (seeing that pre-cursory books like Code Complete 2 and Clean Code date back more than a decade ... Amazon.com: software craftsmanship: Books).
Mr Heinemeier (DHH) does indeed have a good angle on the traditional wisdom of our industry (also see TDD is dead. Long live testing. (DHH) for example), but I see some very positive aspects in the craftmanship approach.
The (self-imposed) obligation to better your own work as a developer - even if there is no hard and always true yardstick to it - is an important step on the way of our line of business. Compared to other professions, computer programming is still in it's infancy.
Even the more general name for it - software engineering - is more a want-to-be statement than a description (Why Computer Programmers Should Stop Calling Themselves Engineers - The Atlantic)
While DHH seems to be very right about entry into the programming culture and openness to new ideas, as "SAPlers" we work in a corner of the industry, where predictable outcome, quality of work and "standard solutions" are asked for most often.
So, my impression is that in the SAP part of the world, things like the craftmanship approach could work very well.
I'm writing 'could' since it's not the norm (at least in my experience) that you find knowledgeable people on SAP projects that actually share knowledge. Unless of course, this is specifically part of their goals or deliverables.
What I wonder though is this: both Uncle Bob and DHH argue from a very comfortable position. They both made fortunes and became famous in coding circles. They are not what the majority of computer programmers look like.
For them clinging on to whatever little advantage in knowledge they have compared to the rest of the project is not what keeps them employed. But for a lot of others, this is exactly the reason.
Just yesterday I overheard a conversation of a consultant who had been in the job for many years, stating that "...you just have to be a page ahead of the customer in the training material...". This person certainly won't do much knowledge transfer anytime soon, as this would mean to loose the edge on the others.
What I personally find most interesting with the craftmanship manifesto as well as with the agile manifesto is that these are about values. Both are a confession to a certain ethic about what is the right thing to do in the area of computer programming.
Even though this aspect is not part of anybodies deliverables, it's - in my opinion - what our profession needs: a clear understanding of what is the right thing to do and why it is the right thing.
Teaching and learning, programming better and involving clients sooner and deeper into the software creation are all aspects of this. And given the impact our work can have to the life of people we don't even know, it's more important then ever to not ignore that there are ethical aspects to it, that we must not ignore.
Last paragraph of your reply....WELL SAID! 😉
Bob echoed this in his closing advice as he said:
"You should, as a programmer, make it your goal to go home [from work] every day proud of what you did that day....proud of the way you did it....proud of what you did....because you did it in a way that was ethical and principled and held to standards."
Good stuff!