{"id":1882,"date":"2009-04-09T08:58:04","date_gmt":"2009-04-09T12:58:04","guid":{"rendered":"http:\/\/www.starkeith.net\/coredump\/2009\/04\/09\/communication-and-programming\/"},"modified":"2009-04-12T21:47:19","modified_gmt":"2009-04-13T01:47:19","slug":"communication-and-programming","status":"publish","type":"post","link":"https:\/\/www.starkeith.net\/coredump\/2009\/04\/09\/communication-and-programming\/","title":{"rendered":"Communication and Programming"},"content":{"rendered":"<p><strong>Programming is all about communicating.<\/strong><\/p>\n<p>Let\u2019s face it \u2013 when you really break it down, programming is just a very specialized and highly technical form of communication. It\u2019s communication between the programmer and the computer (or compiler) of course, but it\u2019s also communication with other programmers and with end-users of the software.<\/p>\n<p>So it naturally follows that to be a good programmer, you need to be a good communicator. You might even argue that a good programmer is <em>by definition<\/em> a good communicator.<\/p>\n<p>Now, we know that the only way to become a better programmer is to program \u2013 that is, you get better at programming <strong>by programming more<\/strong>. Experience, in other words, counts for an awful lot, and is a wonderful teacher \u2013 better than any book or school. <\/p>\n<p>But how do you become a better <em>communicator?<\/em><\/p>\n<p>One way to improve your communications skills is to start a blog (which <a href=\"http:\/\/www.starkeith.net\/coredump\/2008\/06\/06\/blogging-is-hard\/\">I\u2019ve written about before<\/a>), and that\u2019s all well and good, but blogging can only take you so far \u2013 it is, by its very nature, rather one-sided; you write, other people read (and sometimes comment). <\/p>\n<p>Another way to improve your communications skills \u2013 which I have found to work very well myself, and which might be very beneficial in these troubled economic times is, ironically, to <strong>work from home<\/strong>. <\/p>\n<p>It sounds crazy \u2013 how can isolating yourself at home <em>improve<\/em> your communications skills? Won\u2019t you be communicating <em>less<\/em>? How can this possibly work?<\/p>\n<p>I\u2019m not entirely sure of the answers myself, but my theory is that it\u2019s a bit like learning to swim by being thrown into a pool \u2013 you are <em>forced<\/em> to learn. And when you work from home (or work remotely), you sort of are <em>forced<\/em> to become a better communicator. <\/p>\n<p>Think about it: suddenly, you can\u2019t just walk over to someone and ask them a question \u2013 you\u2019ll have to use email, IM, or the phone. And since you don\u2019t have all the wonderful subtleties of facial expressions and hand gestures, you\u2019re going to have to learn how to communicate all of that <strong>clearly and concisely<em> \u2013 <\/em><\/strong>probably in written form, although over the phone works too (at least then you get the benefit of being able to use \u201ctone of voice\u201d). And for a programmer, there is no greater skill than that of being <strong>clear and concise<\/strong> \u2013 after all, the best code is that which is <strong>clear<\/strong> in its intent and <strong>concise<\/strong> with regards to its form. (If code isn\u2019t clear and concise, it\u2019s no better than \u201cspaghetti code.\u201d)<em><strong>&#160;<\/strong><\/em><\/p>\n<p>In a way, it\u2019s like being deaf or blind \u2013 you learn to use your other senses even more to compensate. So to make up for the lack of direct, person-to-person communications, you develop your writing (and phone) skills to an even higher level to compensate. You learn to:<\/p>\n<ul>\n<li>Eliminate ambiguity and write (or speak) clearly and to-the-point<\/li>\n<li>Get to the point quickly so as not to waste people\u2019s time<\/li>\n<li>Structure your writing (or speaking) for maximum effect with minimum effort<\/li>\n<\/ul>\n<p>All of these things help make you a better communicator \u2013 and by being a good communicator, you\u2019ll be a better programmer.<\/p>\n<p>Unfortunately, working from home has an awful stigma attached to it \u2013 people look down on working from home &#8211; which is truly unfortunate, as there are so many benefits. Of course, it\u2019s true that working from home isn\u2019t for everyone \u2013 there certainly are types of jobs where it\u2019s simply not an option. But those reasons should be integral to the job itself, not artificially imposed from the outside \u2013 for example, a cashier can\u2019t work from home, for obvious reasons. But most office workers \u2013 and especially \u201cknowledge\u201d workers, like programmers \u2013 could work from home without any trouble. The only limiting factor is really the organization\u2019s willingness to allow it. <\/p>\n<p>On the other side of the coin, there are of course some people who just can\u2019t handle working from home \u2013 people who lack the self-discipline to focus on their work while at home, or who don\u2019t have a \u201cspace\u201d in their home to work from in the first place. While there\u2019s not much that can be done for the latter problem, the former should be easy enough for any good programmer to overcome. After all, ours is a job that requires <em>focus<\/em> \u2013 if you can\u2019t focus, you have no business being a programmer in the first place. <\/p>\n<p>It\u2019ll be interesting to see if more companies begin to embrace the idea of working from home in the coming years. The economic benefits from it can be great \u2013 the company can spend less on office space and the employees can save on gas and commuting costs. The incidental costs of good Internet connections and maybe some IT infrastructure to support remote workers is miniscule in comparison. And as for the stigma associated with working from home \u2013 well, I can only hope that it will erode with time. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Programming is all about communicating &#8211; communicating with the computer, and with other people. So it follows that to be a good programmer, you need to be a good communicator, too.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"webmentions_disabled_pings":false,"webmentions_disabled":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[199,201],"tags":[107],"class_list":["post-1882","post","type-post","status-publish","format-standard","hentry","category-my-opinion","category-software-technology","tag-programming","entry"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pimUj-um","jetpack-related-posts":[{"id":4398,"url":"https:\/\/www.starkeith.net\/coredump\/2013\/06\/19\/know-your-code\/","url_meta":{"origin":1882,"position":0},"title":"Know Your Code","author":"Keith Survell","date":"June 19, 2013","format":false,"excerpt":"Q: As a .NET programmer, why do you care about being familiar with the Win32 API? A: Because the .NET framework is just another abstraction, and I like to think that I'm a good programmer - and good programmers know that all abstractions are leaky.","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.starkeith.net\/coredump\/category\/technology\/software-technology\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1281,"url":"https:\/\/www.starkeith.net\/coredump\/2008\/08\/13\/10-tips-for-new-programmers\/","url_meta":{"origin":1882,"position":1},"title":"10 Tips for New Programmers","author":"Keith Survell","date":"August 13, 2008","format":false,"excerpt":"It occurred to me the other day that I've been doing this stuff (programming) for more than a few years now - most of them in a very much \"professional\" manner. So I guess that makes me qualified to come up with lists like this! Learn the machine. Build yourself\u2026","rel":"","context":"In &quot;My Opinion&quot;","block_context":{"text":"My Opinion","link":"https:\/\/www.starkeith.net\/coredump\/category\/personal\/my-opinion\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":493,"url":"https:\/\/www.starkeith.net\/coredump\/2005\/05\/12\/joel-on-software-back-to-basics\/","url_meta":{"origin":1882,"position":2},"title":"Joel on Software &#8211; Back to Basics","author":"Keith Survell","date":"May 12, 2005","format":false,"excerpt":"This article makes a good point about something very important; namely, that to be a good software programmer, you have to know a lot about the nuts & bolts of how the computer works - from raw CPU instructions right up to drivers & other high-level nonsense.","rel":"","context":"In &quot;personal&quot;","block_context":{"text":"personal","link":"https:\/\/www.starkeith.net\/coredump\/category\/personal\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1255,"url":"https:\/\/www.starkeith.net\/coredump\/2008\/08\/06\/keithius-the-barefoot-programmer\/","url_meta":{"origin":1882,"position":3},"title":"Keithius, the Barefoot Programmer","author":"Keith Survell","date":"August 6, 2008","format":false,"excerpt":"Call me \"the barefoot programmer.\" Actually, that's not 100% accurate - I only go barefoot during the summertime. It's just more comfortable - and it helps you stay cool. Of course, since I work from home, this is not a problem. (It's nice when the buns come by and say\u2026","rel":"","context":"In &quot;My Life&quot;","block_context":{"text":"My Life","link":"https:\/\/www.starkeith.net\/coredump\/category\/personal\/my-life\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1017,"url":"https:\/\/www.starkeith.net\/coredump\/2008\/01\/04\/on-being-a-programmer-in-a-world-of-non-programmers\/","url_meta":{"origin":1882,"position":4},"title":"On Being a Programmer in a World of Non-Programmers","author":"Keith Survell","date":"January 4, 2008","format":false,"excerpt":"This post over at The Daily WTF struck a chord with me. I can definitely feel the pain of trying to explain programming to non-programmer \u2013 or even just explaining what it is I do. Most times, I just get blank stares. To most people, \"I work with computers\" is\u2026","rel":"","context":"In &quot;Rants&quot;","block_context":{"text":"Rants","link":"https:\/\/www.starkeith.net\/coredump\/category\/rants\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4549,"url":"https:\/\/www.starkeith.net\/coredump\/2014\/08\/14\/night-watch-programmer-humor\/","url_meta":{"origin":1882,"position":5},"title":"The Night Watch (Programmer Humor)","author":"Keith Survell","date":"August 14, 2014","format":false,"excerpt":"Ran across this article\/story recently (it's a PDF link) and had to share some of the more entertaining little excerpts from it - though you might need to be a programmer\/sysadmin in order to appreciate the humor in some of these... Systems people discover bugs by waking up and discovering\u2026","rel":"","context":"In &quot;fun stuff&quot;","block_context":{"text":"fun stuff","link":"https:\/\/www.starkeith.net\/coredump\/category\/fun-stuff\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/posts\/1882","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/comments?post=1882"}],"version-history":[{"count":0,"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/posts\/1882\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/media?parent=1882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/categories?post=1882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.starkeith.net\/coredump\/wp-json\/wp\/v2\/tags?post=1882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}