<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Monomorphic &#187; programmer psychology</title>
	<atom:link href="http://www.monomorphic.org/wordpress/tag/programmer-psychology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.monomorphic.org/wordpress</link>
	<description>Nystrom re-presents</description>
	<lastBuildDate>Sun, 29 Aug 2010 06:58:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Programming languages are about people</title>
		<link>http://www.monomorphic.org/wordpress/programming-languages-are-about-people/</link>
		<comments>http://www.monomorphic.org/wordpress/programming-languages-are-about-people/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 14:40:43 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Software development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[programmer psychology]]></category>
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=337</guid>
		<description><![CDATA[Programming languages are more about people and less about machines. Programming languages are about staying inside the limitations of people&#8217;s minds and their ability to keep track of and work with abstractions. If people had no such limitations, they could code in assembly language all the time. Programming languages and supporting tools and environments are [...]]]></description>
			<content:encoded><![CDATA[<p>Programming languages are more about people and less about machines.</p>
<p>Programming languages are about staying inside the limitations of people&#8217;s minds and their ability to keep track of and work with abstractions. If people had no such limitations, they could code in assembly language all the time.</p>
<p>Programming languages and supporting tools and environments are the interface between people and the raw instruction set of a computer (or a bigger entity, like a network of computers). When we design programming languages, we must take into account not only what the machine environment will do and how it changes, but also how people create the software, how they modify it, how they think about it. Maybe programming languages should even be designed with business processes in mind, in some cases.</p>
<p>But this is also a question of what kind of programmer we want to cultivate. The language shapes the programmer, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/programming-languages-are-about-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Searching and creating</title>
		<link>http://www.monomorphic.org/wordpress/searching-and-creating/</link>
		<comments>http://www.monomorphic.org/wordpress/searching-and-creating/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 11:17:34 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[intellectual property]]></category>
		<category><![CDATA[metaphors]]></category>
		<category><![CDATA[programmer psychology]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=195</guid>
		<description><![CDATA[We distinguish between inventions and discoveries. You can own the intellectual property rights to an invention, but not to a discovery (you can&#8217;t patent the discovery of mercury or selenium, for instance). Inventions are meant to be created, and discoveries are meant to be sought for. But sometimes, the line between invention and discovery is blurry. [...]]]></description>
			<content:encoded><![CDATA[<p>We distinguish between inventions and discoveries. You can own the intellectual property rights to an invention, but not to a discovery (you can&#8217;t patent the discovery of mercury or selenium, for instance). Inventions are meant to be <em>created</em>, and discoveries are meant to be<em> sought for</em>. But sometimes, the line between invention and discovery is blurry.</p>
<p>We cannot own the rights to mathematical structures or theorems, since they follow directly from axioms. Anyone with a mathematical education would come to the same results within the same axiomatic system. The creation of a mathematical theorem can be said to be a search process, hence the term &#8220;discovery&#8221; and not &#8220;invention&#8221;.</p>
<p>We can own the rights to music and paintings, since these are considered to be inventions. But isn&#8217;t the process that leads to a painting or work of music being created also a search process? Doesn&#8217;t the artist search for possible combinations that work together, in a &#8212; albeit very large and continuous &#8212; search space? But this is considered to be creation/synthesis rather than search.</p>
<p>The software developer is, at least sometimes, somewhere in between. A vision of a user interface that interacts with end users in a certain way can perhaps be said to come from the same large, continuous space as music and paintings come from. But given the constraints imposed by such a vision, and by the platform on which the system is to be built, the available libraries, the languages, etc, I would say that the construction of much of desktop/consumer software is a search problem. We look for combinations of components that fit the constraints, and when we have decided on this combination, we must connect the pieces together correctly. The space of possible solutions here, at least for someone who follows good design principles, is in essence much smaller than the music/painting search space. Of course there are considerations of taste and style, but they are completely irrelevant to the compiled product. They are a programmer aid.</p>
<p><a href="http://www.kurzweilai.net/brain/frame.html?startThought=Artificial%20Intelligence%20(AI)">Artificial intelligence</a> problems are defined as search problems. But what are search problems, and what are &#8220;creational&#8221; problems, precisely? Is it merely a question of the size of the search/design space?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/searching-and-creating/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The ego fallacy</title>
		<link>http://www.monomorphic.org/wordpress/the-ego-fallacy/</link>
		<comments>http://www.monomorphic.org/wordpress/the-ego-fallacy/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 08:41:44 +0000</pubDate>
		<dc:creator>johan</dc:creator>
				<category><![CDATA[Software development]]></category>
		<category><![CDATA[fallacies]]></category>
		<category><![CDATA[programmer psychology]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://www.monomorphic.org/wordpress/?p=130</guid>
		<description><![CDATA[A senior manager at a company I used to work at once said that (making) software is a very social activity. I didn&#8217;t have much experience, and was very surprised at the time, since I had never thought about the human aspect of software development. But of course this aspect is extremely important. For example, [...]]]></description>
			<content:encoded><![CDATA[<p>A senior manager at a company I used to work at once said that (making) software is a very social activity. I didn&#8217;t have much experience, and was very surprised at the time, since I had never thought about the human aspect of software development. But of course this aspect is extremely important. For example, in any setting with more than one programmer working on a project, the need for well functioning communication is huge, as much as in any other job I suspect. Projects often fail due to a lack of communication.</p>
<p>Another human side to software development is that some developers, this author included, easily start seeing the code they write as their own intellectual turf. If somebody challenges the developer&#8217;s practices or code, offering a better solution, it will be met with massive resistance. Partly out of laziness, but partly, I think, out of a desire to protect their territory and their legacy.</p>
<p>I do this myself more often than I would like. And it leads to bad results because it creates obstacles to communication and means that team members pull in different directions. Thus, somehow the incentives are wrong. If everybody&#8217;s goal were to allow the team to deliver a good product quickly, this would not happen. Why is it that your goal after some time with a project sometimes becomes to defend what you have created? Why do we identify with the code we wrote, and not with the bigger project?</p>
<p>This doesn&#8217;t mean that looking to your own interests or to your ego is a bad thing &#8211; rather that it&#8217;s easy to be shortsighted about what is in your best interests.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.monomorphic.org/wordpress/the-ego-fallacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
