{"id":369,"date":"2012-02-12T00:56:41","date_gmt":"2012-02-12T06:56:41","guid":{"rendered":"http:\/\/rrbits.com\/epb\/?p=369"},"modified":"2012-02-12T01:08:30","modified_gmt":"2012-02-12T07:08:30","slug":"programmers-should-expand-knowledge-bases","status":"publish","type":"post","link":"https:\/\/rrbits.com\/epb\/2012\/02\/12\/programmers-should-expand-knowledge-bases\/","title":{"rendered":"Programmers should strive to Expand their Knowledge Bases"},"content":{"rendered":"<p>With a title like &#8220;Programmers should strive to Expand their Knowledge Bases&#8221; you&#8217;d think I was referring to things like OOP, DRY, and other acronyms. However, I am not.\u00a0 I&#8217;m not referring to learning additional programming languages or algorithms.\u00a0 I&#8217;m talking about learning things from other domains entirely.\u00a0 For example: science, knitting, cat photography, cat photograph captioning and so on.\u00a0 Honestly it&#8217;s a little bit of a weak point for me as well.\u00a0 My grammar is a sore example.\u00a0 Of course, I&#8217;m a mediocre-self-taught-programmer, so that is to be expected anyway.\u00a0 First off there&#8217;s knowledge you can apply directly to programming problems.<\/p>\n<p>Having knowledge about other fields allows you to more readily solve programming problems that involve those fields.\u00a0 There&#8217;s even a term for this: domain knowledge or domain-specific knowledge.\u00a0 You don&#8217;t necessarily need to be an expert either.\u00a0 For example, with a base level of knowledge it become easier to get input from experts in a particular domain This is because you already have a base understanding.\u00a0 There are two less-obvious benefits though, and I think they are more important.<\/p>\n<p>First, having a broad base of knowledge to pull from enhances problem solving skills. I don&#8217;t have solid numbers to back this statement up though. (This is a blog, not a peer-reviewed paper.) Usually, when confronted with a problem in different domains the manner in which you come to a solution differs based on the domain at hand.\u00a0 More specifically: you think differently.\u00a0 Being able to solve problems in programming often requires you to shift your way of thinking and having more experience approaching problems from different angles can be very beneficial.\u00a0 It can even apply to learning new programming paradigms.\u00a0 I didn&#8217;t fully grasp OOP until I considered things in terms of chemistry.<\/p>\n<p>Second, having a broad knowledge base can make it easier to communicate with people of different backgrounds.\u00a0 Much like dealing with experts above, but often a little more general.\u00a0 This is also somewhat tied to the problem solving mentioned previously.\u00a0 When you can shift thinking readily, it becomes far easier to think like the person you are communicating with and explain things with terms or analogies that that person can understand.\u00a0 As a personal example of this: I&#8217;ve explained the Linux boot process almost entirely with car analogies to a car guy.\u00a0 I&#8217;m pretty certain that had i never taken auto shop, this would have been impossible.<\/p>\n<p>tl;dr version: Learn stuff. It makes you a better problem solver and communicator.\u00a0 Soft skills for the win.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With a title like &#8220;Programmers should strive to Expand their Knowledge Bases&#8221; you&#8217;d think I was referring to things like OOP, DRY, and other acronyms. However, I am not.\u00a0 I&#8217;m not referring to learning additional programming languages or algorithms.\u00a0 I&#8217;m talking about learning things from other domains entirely.\u00a0 For example: science, knitting, cat photography, cat&#8230;  <a class=\"excerpt-read-more\" href=\"https:\/\/rrbits.com\/epb\/2012\/02\/12\/programmers-should-expand-knowledge-bases\/\" title=\"ReadProgrammers should strive to Expand their Knowledge Bases\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3999],"tags":[],"class_list":["post-369","post","type-post","status-publish","format-standard","hentry","category-programming"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/posts\/369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/comments?post=369"}],"version-history":[{"count":5,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/posts\/369\/revisions"}],"predecessor-version":[{"id":376,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/posts\/369\/revisions\/376"}],"wp:attachment":[{"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/media?parent=369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/categories?post=369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/tags?post=369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}