{"id":283,"date":"2009-03-14T12:38:10","date_gmt":"2009-03-14T20:38:10","guid":{"rendered":"http:\/\/jaredrobinson.com\/blog\/?p=283"},"modified":"2009-03-14T12:38:10","modified_gmt":"2009-03-14T20:38:10","slug":"mwrc-learn-from-programming-masters-by-philippe-hanrigou","status":"publish","type":"post","link":"https:\/\/jaredrobinson.com\/blog\/mwrc-learn-from-programming-masters-by-philippe-hanrigou\/","title":{"rendered":"mwrc: Learn from programming masters by Philippe Hanrigou"},"content":{"rendered":"<p>Philippe Hanrigou: What The Ruby Craftsman Can Learn From The Smalltalk Master<\/p>\n<p>He talked about Picasso and how he studied the grand masters of classical art<br \/>\nfor his entire life. He didn&#8217;t imitate them, but he used them for inspiration,<br \/>\nand he was considered a genius.<\/p>\n<p>We, as programmers, can learn from the masters of previous generations. [I dislike Picasso&#8217;s art, but agree with the analogy].<\/p>\n<p>&#8211; Naming is crucial.<br \/>\n&#8211; Use a role-suggesting name<\/p>\n<p>Cognitive Scalability<\/p>\n<p>As our software grows and becomes more complex, how do we maintain the ability<br \/>\nto change the software? It&#8217;s so easy for software to get &#8220;out of control&#8221;.<\/p>\n<p>Look at Ruby&#8217;s String class and how many methods it has. It&#8217;s a mess.<br \/>\nEverything depends on String. If, every time we add a method to convert a<br \/>\nstring to something else (to the String class), then we add a reverse<br \/>\ndependency on the other classes. Instead of `&#8221;3\/14\/2009&#8243;.to_s`, let&#8217;s do<br \/>\n`Date.from_string(&#8220;3\/14\/2009&#8221;)`.<\/p>\n<p>Reduce code to the Essence. Let&#8217;s learn from Haiku, which values conciseness.<\/p>\n<p>Symmetry. The Taj Mahal isn&#8217;t geometrically symmetrical, but is designed to look that way from one perspective. Symmetry will allow your code to be easier to read and understood. Kent Beck calls this &#8220;Reversing Method&#8221;.<\/p>\n<p>We should spend more time studying the software grand masters from the lisp<br \/>\nand the smalltalk communities. And read Kent Beck&#8217;s books on Smalltalk best<br \/>\npractice patterns and\/or Implementation Patterns.<\/p>\n<p>Give him feedback on his ideas at [http:\/\/ph7spot.com](http:\/\/ph7spot.com)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Philippe Hanrigou: What The Ruby Craftsman Can Learn From The Smalltalk Master He talked about Picasso and how he studied the grand masters of classical art for his entire life. He didn&#8217;t imitate them, but he used them for inspiration, and he was considered a genius. We, as programmers, can learn from the masters of &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/jaredrobinson.com\/blog\/mwrc-learn-from-programming-masters-by-philippe-hanrigou\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;mwrc: Learn from programming masters by Philippe Hanrigou&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[20,21],"class_list":["post-283","post","type-post","status-publish","format-standard","hentry","category-programming","tag-mtnwestrubyconf","tag-mwrc"],"_links":{"self":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":1,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/283\/revisions"}],"predecessor-version":[{"id":284,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/283\/revisions\/284"}],"wp:attachment":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/media?parent=283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/categories?post=283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/tags?post=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}