Friday, September 24, 2010

The Hacker, The Novice, The Artist, and The Craftsman.

In my last blog  "Too Small to Refactor", I made the statement:
"Clean code has always been about money, and has never been about art."  
Apparently this took a few people by surprise.  One person comented:
"...I thought we were talking about craft, and the cost-cutting as a subproduct..."
So what is the difference between a craftsman and an artist?  And just to add some spice, how do they differ from a hacker and a novice?

I realize that I am making a Myers-Briggs type error.  People cannot truly be classified using binary attributes.  A person classified by MBTI as an introvert, certainly has some extrovert characteristics.  By the same token a programmer who shows some attributes of a hacker, probably also shows some attributes of a craftsman.

Still, I think the definitions of these terms can be useful as a way to classify programmer behaviors.

What is the difference between the Hacker, the Novice, the Artist, and the Craftsman?  It's all about their personal definition of "Done".

The Artist is done when the structure and behavior of the artist's code has achieved perfection in the artist's eyes.  There is no consideration of money spent, or money to be earned.  The artist does not care about ROI.  The artist does not care how long it takes.  The artist cares only about the final result.

An artist will spend hours, days, even weeks, on a single line of code.  An artist will throw away whole functions and modules because they somehow don't feel right.  An artist polishes, and polishes, and polishes in pursuit of some elusive goal of perfection.  

The Hacker is done when the behavior of the code achieves some personal goal.  The Hacker is not concerned with ROI.  The Hacker does not care about the code at all.  The Hacker does not care about how much, or how little, is spent creating the code.  The Hacker does not care if anyone else ever uses the code.  The Hacker only cares about making it work -- once.  After that, the Hacker loses interest.

The Novice is done as soon as the code works "well enough".  The Novice strives to minimize initial coding time.   The Novice is not concerned about ROI.  The future cost of the code is of no concern to the Novice.  Nor does the Novice care about the number of hidden and/or subtle defects left in the code.  The Novice simply wants to get to the next task as soon as possible.  The Novice is driven by schedule; or rather, the Novice is driven by pleasing managers who are driven by schedule.

The Craftsman is done when ROI has been maximized.  The Craftsman strives to be a good steward of the monies being spent.  The Craftsman want to make sure that every dollar goes as far as it can, and earns as much as it can in return.  Therefore the Craftsman makes sure the code works, and can be kept working with minimum extra cost. 

The Craftsman understands that most defects in behavior and structure will be very expensive to repair later and very inexpensive to eliminate now.  So the Craftsman pushes towards a very clean implementation.  But the Craftsman also recognizes that some rare defects in behavior and structure are going to cost more to eliminate than to tolerate; and so the Craftsman uses judgment, acquired over years, to maximize ROI.

33 comments:

  1. In terms of furniture production, we know from the growth of cheap furniture companies that true craftsman become a rare and endangered species. This is not because the cheap furniture is as good, but because it's good *enough*.

    I like to be a craftsman for my private projects, but I need to exercise more restraint when working professionally simply because if I don't I'll be priced out of the market. Most customers I know what something that's good enough.

    Or maybe that's the artist in me speaking? I agree that these classifications are useful for identifying attitudes, even if we exhibit more than one, or change our behaviour based on external influences.

    ReplyDelete
  2. I do not for one second believe that "good enough" implies that you can not be a crafts-person. The crafts-people are doing things such that "good enough" doesn't slow down the entire companies development efforts over time ... they make sure that good enough is still unit tested, still has simplicity and still works as well as they can make it work. Those are the traits that make them a crafts-person and keep the company from suffering in the long run.

    ReplyDelete
  3. I am definitely an Artist with Craftsman leanings. However the fact that I am conscious of this, and have been for a long time, fact helps lean further & further towards craftsmanship.

    The Novice title though should be separated into 2 categories; Novice who doesn't *yet* know any better and the ???? who either doesn't care or doesn't care enough to know better.

    ReplyDelete
  4. ... you know what's interesting? How Unit Testing brings all these types in line.

    ReplyDelete
  5. I apply these case by case... Having a degree in Art and a self educated developer, I will build "novice projects" for myself or for artistic expression. Built to "just work" but also built using my "artist sense", or "emotion & feeling" of what should stay or go.

    I also consult for clients, which have to be built to max ROI. Which I do, and do well (Or I wouldn't be self employed). Oh, and I have always been a hacker, I love finding new or unusual ways to make things work. Just offering a different point of view from someone who aspires to do it all.

    ReplyDelete
  6. "People cannot truly be classified using binary attributes."

    But that's exactly what you are doing. You claim you are either a craftsman and care about ROI or you aren't a craftsman and don't care about ROI. Then you give some very broad reasons why you may not care about ROI, either by ignoring it or through ignorance. You are only acknowledging that there are many reasons that someone can disagree with you. But every time they are wrong while you remain right.

    I know a few management/lead types that are deeply concerned about ROI, and make the most breathtaking and boneheaded decisions because of it. They are not craftsman by any stretch of the imagination, except that they 1) aren't hackers, artists or n00bs and 2) "maximize" ROI.

    I remember when craftsmanship meant something other than "agreeing with the way I think".

    ReplyDelete
  7. The term hacker was defined perhaps before you were born. You should read up on it:

    http://www.catb.org/esr/faqs/hacker-howto.html

    ReplyDelete
  8. I feel like The Engineer should be in this list.

    ReplyDelete
  9. @blowmage
    Is it really all about being right?

    The Artist, who writes clean code for its beauty and elegance, is probably your best bet on an open source project where there is no monetary ROI to calculate.

    The Hacker is probably great at delivering a throw-away prototype, or researching a new technology and determining pitfalls before integrating it into a system.

    The Novice doesn't force you to explain why sometimes faster is better than better when you have a time-critical bug or feature request in a legacy system that is complex and untested.

    That's not to say the Craftsman's input isn't valuable in all of these situations. If I had to pick only one of those traits to fill an entire team, I'd prefer Craftsmen. But then, I once heard someone say, "When all you have is a hammer, every problem starts to look like your thumb."

    Never be ashamed of a diverse toolbox, even if you don't use your wire-cutters as often as your hammers or your screwdrivers.

    ReplyDelete
  10. Naive characterizations. Look at the any of the multiple models about stages of "expertise", such as Dreyfus. Although some characteristics you mention are more personality-based, and may exist across different stages of a career, the majority are simple stages in the advancement (or lack-there-of) within a craft.

    As for the "When ROI has been maximized", it is very Lean of you. And has about as much chance of existing in reality as a project without politics attached. And the sea being boiling hot. And pigs having wings (thank you Lewis Carroll).

    ReplyDelete
  11. In "Professional Software Development", Steve McConnell says:

    When interviewing candidates for programming jobs, one of my favorite interview questions is, "How would you describe your approach to software development?" I give them examples such as carpenter, fire fighter, architect, artist, author, explorer, scientist, and archeologist, and I invite them to come up with their own answers. Some candidates try to second-guess what I want to hear; they usually tell me they see themselves as "scientists." Hot-shot coders tell me they see themselves as commandos or swat-team members. My favorite answer came from a candidate who said, "During software design, I'm an architect. When I'm designing the user interface, I'm an artist. During construction, I'm a craftsman. And during unit testing, I'm one mean son of a bitch!"

    Seriously though, I guess a good interview process should try to establish in which quadrant(s) (Artist, Craftsman, Hacker, Novice) a candidate's behaviour falls.

    ReplyDelete
  12. اليك خدمات منزلية متقدمة تساعدنا علي الارتقاء بشركة ركن البيت في مدينة الدمام من خلال اعمالها المتميزة التي تقدمها في مجال النظافة والقضاء علي الحشرات فخدماتنا متنوعة مثل شركة تنظيف بالدمام التي تكون متخصصة في اعمال النظافة العامة التي تتمثل في المنشأت الكبيرة والصغيرة بجميع انواع واليك خدمة متميزة ايضا وهي شركة تنظيف فلل بالدمام التي تكون لديها كل الامكانيات المثالية التي تساعدنا في تنفيذ خدمات نظافة الفلل المستعملة والمفروشة بواسطة فريق فني لديه كل الامكانيات التي تساعده في تقديم ذلك ولديك خدمة ايضا نظافة الشقق بواسطة شركة تنظيف شقق بالدمام وعمل التنظيف اللازم لها بواسطة فريق لديه اعمال التميز والتنفيذ في تقديم الخدمات المخصصة في اعمال النظافة واليك خدمة مثالية نقدمها في القضاء علي الحشرات الصغيرة بواسطة مبيدات طبيعة تساعدنا في ذلك فتعاملك مع شركة مكافحة حشرات بالدمام لديها امكانيات متميزة تساعدك علي ان تخلصك من الحشرات لان تجد كل ذلك الا من خلال ركن البيت التي لديها كل الامكانيات في البحث عن شركة رش مبيدات بالدمام التي تقوم بالرش بواسطة فني مختص معه الادوات اللازمة للقيام بذلك وعطائك الضمانات اللازمة علي ذلك واليك خدمة نقل اثاث منزلية تساعدك في الوصول الي مكانك الجديد بواسطة شركة نقل اثاث بالدمام التي لديها كل الامكانيات والسيارات التي تساعدك علي تحقيق ذلك

    ReplyDelete
  13. This blog is so nice to me. I will continue to come here again and again. Visit my link as well. Good luck
    cara menggugurkan kandungan
    obat penggugur kandungan

    ReplyDelete
  14. تمتع الان معنا مع افضل المميزات وباقل الخصومات التى نقدمة الان من صيانة كاريير المتحخصص فى كافة انةواع الصيانة الان فى مصر وعلى اعلى مستوى ممكن وباقل الاسعار المختلفة الان من توكيل كاريير التى نقدمة الان فى مصر صيانة تكييفات كاريير


    http://www.carrier-maintenance.com/

    ReplyDelete
  15. سارع الان بالتوالص معن مع افضل فريق الان على اعلى مستوى ممكن وباقل الخصومات الممكن من شركة حراسات امينة التى نقدمة الان , كما اننا نقدم افضل العروض الان من شركة امن وحراسه فى كافة المحافظات وباقل الاسعار المخلتفة

    ReplyDelete
  16. يمكنكم الان الحصول على افضل الخصومات التىة نقدمة الان من دار مسنين بمدينة نصر التى نقدمة الان وعلى اعلى ومستوى ممكن الان فى مصر دار مسنين التى نقدمة الان

    ReplyDelete
  17. تمتع الان معنا مع افضل المميزات من زراعة الشعر الان من زراعة الشعر فى تركيا التى لا احد يقدمة الان , كما اننا نقدم افضل مركز زراعة الشعر التى نقدمة الان فى كافة انحاء تركيا

    ReplyDelete
  18. تواصل الان معنا مع افضل المميزات العالمية الان وعلى اعلى مستوى ممكن الان وباقل التكاليف الممكن من مظلات سيارات التى نقدمة الان للحافظ على السيارات الان , كما اننا نقدم افضل مظلات حدائق الان ايضا وباقل التكالبف الان ونقدم افضل سواتر قماش

    ReplyDelete
  19. الان يمكنكم الحصول على افضل فريق الان من المتخصصون فى كافة انواع صيانة يونيون اير الان فى مصر , كما اننا نقدم افضل الخصومات الان من توكيل يونيون اير فى مصر التى نقدمة الان فى مصر يمكنكم الان الحصول على الان فى مصر

    ReplyDelete
  20. الان يمكنكم الحصو على افضل الخصومات الان فى مصر وعلى اعلى مستوى ممكن من شركة تصميم مواقع التى نقدمة الان باقل الاسعار المختلفة من شركة تسويق الكتروني الان وباقل الخصومات الممكن

    ReplyDelete
  21. تعرف الان عهلى افضل تجهيزات مطاعم الخصومات والمميزات الان من تجهيزات محلات الان فى مصر لاننا نقدم افض المعدات ,العالمية الن وعلى تجهيزات سوبر ماركت افضل المميزات

    ReplyDelete
  22. شركة نظافة خزانات بمكة تقدم خدمات لا يوجد شركة تنظيف بمكة منشأة لا تحتاج لها حيث أن الخزانات تعد من أهم المحتويات التي تحتاج لها المنشآت المختلفة خاصة شركة مكافحة حشرات بمكة في المملكة العربية السعودية التي تعتمد على المياه الجوفية ومياه الآبار شركة تنظيف خزانات بمكة والعيون وتخزينها في خزانات شركة تنظيف بالبخار بمكة بعد تصفيتها وتنقيتها لذا ظهرت الحاجة الشديدة للاستعانة بشركة متخصصة شركة نقل عفش بمكة يستعين بها مختلف الأشخاص في تنظيف وتعقيم الخزانات لديهم من أجل الحفاظ على المياه نظيفة وغير ملوثة

    ReplyDelete
  23. تعمل على توفير كل خدمات عمليات التنظيف شركة تنظيف بالبخار بجدة بالإضافة إلى الخدمات الاخري شركة تنظيف كنب بالبخار بجدة التي تحتاجها ربات البيوت وأصحاب الشركات شركة تنظيف سجاد بالبخار بجدة والعقارات ومن خلال شركتنا المتمزية فى خدمات تنظيف المفروشات شركة تنظيف مجالس بالبخار بجدة بالبخار بافضل الاسعار تعرف على كافة شركة تنظيف بالبخار بمكة الخدمات المتميزة التى نقدمها شركة نقل عفش بمكة اليكن والى كل عملائنا الكرام

    ReplyDelete
  24. العمالة الفلبينية معروفة بأنها تتعلم شركة نقل عفش بجدة بسرعة كبيرة وجميع الأعمال التي تسند اليها تخرج جودتها بمستوى عالية فى حين ان مستوى الاجور لها منخفض وعليه فإن الشركة شركة تنظيف بالبخار بجدة تعمل على توفير تلك النوعية شركة تنظيف دكت المكيفات بمكة من العمالة ومن خلال افضل شركة نقل عفش بجده شركة تنظيف دكت المكيفات بجدة عمالة فلبينية سوف يتم الحصول على عمال متفوقين وقادرين شركة تنظيف دكت المكيفات بالطائف على نقل الاثاث بعناية كبيرة من اي مكان حتى الادوار العالية وتتم عملية النقل تبعا للأسلوب الحديث وهي كالتالي :-

    ReplyDelete
  25. توفر شركة تنظيف دبي أفضل خدمات نظافة شركة تنظيف بدبي من خلال خبراء في عالم النظافة شركة تنظيف كنب بدبي لديهم احتراف ومهارة عالية وعلى درجة كبيرة من الأمانة والالتزام لديهم حلول شركة تنظيف عجمان عملية وسريعة لجميع شركة تنظيف بالشارقة مشاكل التنظيف ملتزمون بتلبية شركة تنظيف ابو ظبي رغبات العملاء وتنفيذها وعدم إهدار الوقت

    ReplyDelete
  26. تنظيف المساحات الشاسعة ليس بالأمر الهين شركة تنظيف دبي ولا يقدر عليه فرد واحد أو الخدم الذين قد يتواجدون شركة تنظيف ابو ظبي بالمنشأة حيث أنه يلزم توافر معدات خاصة شركة تنظيف كنب بدبي من أجل التنظيف تساعد شركة تنظيف بالشارقة على تقديم أفضل الخدمات وتعمل على تيسيرها بأسعار لا تعد عبء على من يبحث عن شركة تنظيف عجمان هذه الخدمات لذا تقدم الشركة كافة الخدمات التي تلزم في تنظيف الفلل شركة تنظيف العين بما تحتويه من محتويات وأغراض

    ReplyDelete
  27. ويتميز شركة تنظيف كنب بدبي بانجاز العمل بتقنية شركة تنظيف بدبي وجودة عالية، وفي أسرع وقت شركة تنظيف بالشارقة ،وتحرص شركة تنظيف بالعين بتوفير احدث شركة تنظيف بالعين الأجهزة الكهربائية شركة تنظيف بدبي والمعدات الحديثة اللازمة والمستخدمة في شركة تنظيف بعجمان عمليات التنظيف، وذلك حرصا من الشركة علي توفير شركة تنظيف كنب بدبي ومساعدة عملائها الكرام في القيام بإعمال

    ReplyDelete
  28. يمكنكم اللجوء لتنظيف منازل عجمان إذا شركة تنظيف دبي أصبحتم في حاجة إلى تنظيف المنزل شركة تنظيف عجمان في أي وقت تحددوه أنتم , فقط اتصلوا بتنظيف منازل عجمان شركة تنظيف بالشارقة وسوف يرد عليكم فريق متخصص من خدمة العملاء والذي يحدد معكم المطلوب شركة تنظيف ابو ظبي والوقت المحدد لإتمام تلك المهمة الضرورية وفي أسرع وقت ممكن سوف تجدونها انتهت شركة تنظيف كنب بدبي , فقط انسوا هم الأسعار التي تقلق الجميع في حالة الرغبة في التعامل مع أي شركة نظافة

    ReplyDelete
  29. German Translation Legal Translation services German Translation The German German Translation dubai language has a great influence on the world because Germany plays a vital role in the European Union chinese Translation dubai . Also, the economy of Germany russian translation in dubai encourages the growth Translation services in Dubai of the English Translation dubai German translation industry.

    ReplyDelete
  30. كما يقوم فريق العمل بتنظيف الموكيت حيث أن الموكيت شركة تنظيف بدبي يعتبر من أهم الأشياء التي توجد في المنزل ويتميز بوجود الزخارف المختلفة شركة تنظيف بالعين به، لهذا فإنه يحتاج إلى التنظيف بكل دقة وحرص ويتم هذا من خلال استخدام شركة تنظيف عجمان الماء الفاتر والمنظفات المخصصة للموكيت، أو يتم تنظيفه عن طريق البخار شركة تنظيف كنب بدبي حتى يعطي أفضل النتائج وفي أسرع وقت
    تعتبر طريقة التنظيف بالبخار من أفضل شركة تنظيف بدبي وأحدث الطرق التي تستخدم في عمليات التنظيف شركة تنظيف كنب بدبي للوصول إلى أفضل النتائج، وتقوم شركة تنظيف بالبخار في دبي شركة تنظيف بالشارقة في استخدامه في العديد من عمليات التنظيف؛ لهذا فإن جميع الأعمال شركة تنظيف ابو ظبي التي تقوم بها الشركة شركة تنظيف بعجمان تكون على درجة شركة تنظيف بدبي عالية من الكفاءة شركة تنظيف بالشارقة

    ReplyDelete