{"id":316,"date":"2009-10-28T22:41:29","date_gmt":"2009-10-28T21:41:29","guid":{"rendered":"http:\/\/www.nobugs.org\/blog\/?p=316"},"modified":"2009-10-28T22:41:29","modified_gmt":"2009-10-28T21:41:29","slug":"coders-at-work","status":"publish","type":"post","link":"https:\/\/www.nobugs.org\/blog\/archives\/2009\/10\/28\/coders-at-work\/","title":{"rendered":"Coders at Work"},"content":{"rendered":"<p>The coders who are interviewed in <a href=\"http:\/\/www.amazon.com\/gp\/product\/1430219483?ie=UTF8&#038;tag=nobugs-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430219483\">&#8220;Coders at Work&#8221;<\/a> all have interesting opinions, but it&#8217;s the recurring themes which have really grabbed me.<\/p>\n<p>The first theme is that all of these people are humans.  They&#8217;re might all be famous for doing X, but hardly any of them set out consciously to do X, and none of them did what they did because they knew it&#8217;d lead them to where they are today.  When you read about how they got into their area, the recurring themes are serendipity and &#8220;I did it because it was fun&#8221;.  As Simon Peyton Jones says explicitly, the important thing is just getting started &#8211; because once you get started there&#8217;s a million interesting things you could play with.  I don&#8217;t want to downplay the cool stuff some of these guys have done, but it&#8217;s hugely enlightening to hear them talk in their own words and hear how &#8220;normal&#8221; they all are.<\/p>\n<p>The other theme I noticed is that everyone lives in their own little niche.  Very few people in the book seem to have a broad overview of computing and how it&#8217;s changed over the decades.  In particular, you can see how people&#8217;s thinking is constrained by either the era in which they learned about computers, or by the particular area that they&#8217;ve specialized in.  It&#8217;s refreshing to hear Simon Peyton Jones say that he doesn&#8217;t really have a deep understanding of OO programming, because he&#8217;s basically not done that much of it &#8211; he doesn&#8217;t knock it, either.  It&#8217;s weird to hear Peter Deustch describe his dream language without him knowing that these ideas have already been tried in Haskell.  It&#8217;s interesting to hear people who are famous as being &#8216;lisp guys&#8217; or &#8216;smalltalk guys&#8217; knocking &#8216;their own&#8217; language.  And it&#8217;s amazing to see the split between low-level and high-level thinkers.  I&#8217;m biased, because I&#8217;m into programming languages, but few people commented on the extent to which your Preferred Language affects your modes of thinking &#8211; although the results are plain to see.<\/p>\n<p>Finally, this book made me realise that I&#8217;ve been in this game for quite a long time now (I&#8217;m only 32!).  Enough time for entire chapters of knowledge to have come and gone.  Programming in assembler, gone!  Well not totally; still useful for compiler backends, security exploits and such like.  Manual memory allocation, gone!  Well not totally, there&#8217;s still kernel development and embedded stuff.  Segmented memory models, gone but back for a wee while with PAE. Implementing primitive datastructures, largely done for you! C++, gone (for me at least)!  I spend so much time getting really good at it too, hmmph.  I respect it for what it is, but there are much nicer ways to spend your life.<\/p>\n<p>But that&#8217;s all fine.  Technology reflects the era that it was born in.  C made sense when memory was expensive and CPUs slow.  Now virtual memory and VM&#8217;s make sense.  When resources were sparse, conceptual clarify was sacrificed to gain performance.  Now we usually don&#8217;t need to make that sacrifice.  The abstractions which made sense for a 1990&#8217;s desktop GUI app aren&#8217;t the ones you need for a 2009 network-based distributed system.<\/p>\n<p>Is history important?  Only partly, I think. The high level lessons are certainly important, but the details aren&#8217;t.  Do you need to be able to code up a red\/black tree today?  No.  But I think a developer should have a deep appreciation for the distinction between interface and implementation &#8211; and you should understand how the implementation choices can affect you (as a user).  Do you need to understand low level hardware\/assembler?  No, but the concepts and solutions which crop up at that level crop up elsewhere too, so it&#8217;s certainly not wasted knowledge.  Do you need to learn smalltalk?  Only really to learn the &#8216;lessons of smalltalk&#8217; &#8211; to see what you can do with a reflective, late-bound, heavily interactive system.<\/p>\n<p>All in all, I&#8217;m whimsical about the amount of technology water that&#8217;s passed under my particular bridge.  Easy come, easy go, I am not the sum of my knowledge.  I&#8217;m happy to keep absorbing new fun stuff as times change and mostly I&#8217;m quite happy to see the back of the declining technologies anyway!  It&#8217;s comforting in a way to see that there&#8217;s no real wizards out there, there&#8217;s just people hacking away on stuff that they think is cool and being ready to recognize the insights and the epiphanies when they come by.  Evolution (and some marketing $$$s) usually takes care of picking out those solutions which are suited to the present environment.  And there&#8217;s always the interesting &#8220;superior but ignored&#8221; technologies hovering around in the wings.<\/p>\n<p>Computing has only really been around for one lifetime.  Most of the first-generation guys are still alive.  It&#8217;s interesting to hear some of them reflecting on a life spend involved in this area.  I guess I&#8217;m taking a moment to reflect on where I am.<\/p>\n<p><a href=\"http:\/\/www.amazon.com\/gp\/product\/1430219483?ie=UTF8&#038;tag=nobugs-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430219483\">&#8220;Coders at Work&#8221;<\/a>: loving it<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The coders who are interviewed in &#8220;Coders at Work&#8221; all have interesting opinions, but it&#8217;s the recurring themes which have really grabbed me. The first theme is that all of these people are humans. They&#8217;re might all be famous for doing X, but hardly any of them set out consciously to do X, and none [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-316","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/posts\/316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/comments?post=316"}],"version-history":[{"count":4,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/posts\/316\/revisions"}],"predecessor-version":[{"id":320,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/posts\/316\/revisions\/320"}],"wp:attachment":[{"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/media?parent=316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/categories?post=316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/tags?post=316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}