{"id":67,"date":"2008-08-16T08:04:03","date_gmt":"2008-08-16T14:04:03","guid":{"rendered":"http:\/\/jameskovacs.com\/2008\/08\/16\/A+View+From+A+Fishbowl"},"modified":"2008-08-16T08:04:03","modified_gmt":"2008-08-16T14:04:03","slug":"a-view-from-a-fishbowl","status":"publish","type":"post","link":"https:\/\/www.jameskovacs.com\/index.php\/2008\/08\/16\/a-view-from-a-fishbowl\/","title":{"rendered":"A View from a Fishbowl"},"content":{"rendered":"<p><a href=\"http:\/\/altnetconfcanada.com\">ALT.NET Canada<\/a> kicked off last night and was great fun. Bil has some initial coverage <a href=\"http:\/\/weblogs.asp.net\/bsimser\/archive\/2008\/08\/16\/alt-net-canada-day-1-immersion.aspx\">here<\/a> complete with video. Mo Khan discusses <a href=\"http:\/\/mokhan.ca\/blog\/2008\/08\/16\/The+FUNduhMENTALs.aspx\">his take<\/a> on the fishbowl topic, &#8220;Why are fundamentals important?&#8221; I wanted to take a few paragraphs and give my two cents on the topic.<\/p>\n<p>The fishbowl last night got too hung up on the particulars. The point that I personally wanted to make was that fundamentals are more important than APIs\/technologies because fundamentals give you a framework within which to understand any API or technology. That&#8217;s not to say that specific technologies aren&#8217;t important. You won&#8217;t get too far in the .NET world not knowing the BCL. \ud83d\ude42 <\/p>\n<p>I&#8217;m not a crotchety old programmer who is going to insist that you learn everything that I know about software &#8220;because I had to walk 2 km to school every day through blowing snow uphill &#8211; both ways!&#8221; I don&#8217;t expect you to (and wouldn&#8217;t want you to) spend years writing C++ code to understand just how bloody hard it is to get pointers right or manage memory. (Do I need a *&amp; or an &amp;* here? And is that one * or two **? If you don&#8217;t know what I&#8217;m talking about be thankful. Waste of brain cycles.) <\/p>\n<p>As far as what I consider fundamental&#8230; OO and design patterns, definitely. But also high level knowledge of CPUs, memory, disk, and network. The fundamental building blocks upon which all software and hardware is created. (Working at a high level of abstraction is fantastic and much more productive, but even when working at such a high level, you need to understand &#8211; to pick an arbitrary example &#8211; that durable transactions require disk I\/O and that disk I\/O is an eternity in processor cycles.) You should also be familiar with Big-O notation, data structures, and algorithms. You should understand the services provided by a managed runtime (.NET, Java, etc.). <\/p>\n<p>Are you a bad programmer because you don&#8217;t know how to implement a red-black tree from memory? Absolutely not. (I don&#8217;t personally remember either!) But you&#8217;re a good programmer for knowing that there are more data structures out there than an array. You have the fundamental knowledge to try solving problems in a myriad different ways. <\/p>\n<p>Programming languages, runtimes, and APIs come and go. If you only understand those, you have a steep learning curve to climb every time technology changes &#8211; and it does. The fundamentals will always serve you well regardless of the technologies involved.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ALT.NET Canada kicked off last night and was great fun. Bil has some initial coverage here complete with video. Mo Khan discusses his take on the fishbowl topic, &#8220;Why are fundamentals important?&#8221; I wanted to take a few paragraphs and give my two cents on the topic. The fishbowl last night got too hung up [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-67","post","type-post","status-publish","format-standard","hentry","category-events"],"_links":{"self":[{"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/posts\/67","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/comments?post=67"}],"version-history":[{"count":0,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/posts\/67\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/media?parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/categories?post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/tags?post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}