<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Michael O.Church</title>
	<atom:link href="http://michaelochurch.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://michaelochurch.wordpress.com</link>
	<description>Rants, essays, and diatribes.</description>
	<lastBuildDate>Sat, 28 Jan 2012 14:40:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='michaelochurch.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Michael O.Church</title>
		<link>http://michaelochurch.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://michaelochurch.wordpress.com/osd.xml" title="Michael O.Church" />
	<atom:link rel='hub' href='http://michaelochurch.wordpress.com/?pushpress=hub'/>
		<item>
		<title>The trajectory of a software engineer&#8230; and where it all goes wrong.</title>
		<link>http://michaelochurch.wordpress.com/2012/01/26/the-trajectory-of-a-software-engineer-and-where-it-all-goes-wrong/</link>
		<comments>http://michaelochurch.wordpress.com/2012/01/26/the-trajectory-of-a-software-engineer-and-where-it-all-goes-wrong/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 14:50:02 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=564</guid>
		<description><![CDATA[I&#8217;m going to do something difficult and controversial and, since this is a first cut at it, I probably won&#8217;t do it perfectly. I&#8217;m going to develop a system for evaluating the skill and impact of a software engineer or, at the least, outline a trajectory for the idealized growth of a software programmer. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=564&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to do something difficult and controversial and, since this is a first cut at it, I probably won&#8217;t do it perfectly. I&#8217;m going to develop a system for evaluating the skill and impact of a software engineer or, at the least, outline a trajectory for the idealized growth of a software programmer. The scale runs from 0.0 to 3.0, with each whole number representing a threshold in professional development.</p>
<p>Largely, this is an <em>engineering</em> scale based on the needs of software businesses. It&#8217;s not about mathematical ability or the capacity to write fast algorithms. Nor is it about the depth of knowledge a programmer has about the internals of the Linux kernel. Those are important, and will usually develop in tandem with an engineer&#8217;s skill, but not the primary focus of this system. It doesn&#8217;t represent everything one needs to know in order to evaluate a software developer. It&#8217;s also not a substitute for &#8220;performance reviews&#8221; or to be used for &#8220;HR matters&#8221;. Sometimes a &#8220;2.1&#8243; may need to be fired for personality reasons, whereas an amicable &#8220;1.2&#8243; is an asset to a company.</p>
<p>Finally, this scale is somewhat context-dependent, noting the difference between <em>skill</em> and <em>impact</em>. Change the programming language or technology stack, and a developer can rise or drop by a full point. Also, a developer needs to be on a team for 6 to 12 months (in most cases) to reach a level of impact commensurate with her capability. It&#8217;s tempting to speak of levels like &#8220;1.5&#8243; as if they were objective ratings of a person&#8217;s skill. More accurately, they describe scopes of contribution and fit between a person and job role. The size and needs of a company also have a major impact. Small technology companies often encourage their people to &#8220;experiment&#8221; 0.2-0.5 points above their level of demonstrated skill, and to thereby grow quickly, while large and bureaucratic firms usually slot people an equal amount <em>below</em> their skill levels (because of inherent limitations on leadership positions).</p>
<p>The scale I&#8217;m about to define comes from one insight about human organizations. Teams, in general, have four categories into which a person&#8217;s contribution can fall: dividers, subtracters, adders, and multipliers. <em>Dividers</em> are the cancerous people who have a broad-based negative effect on productivity. This usually results from problems with a person&#8217;s attitude or ethics&#8211; &#8220;benign incompetence&#8221; (except in managers, whose job descriptions allow them only to <em>be</em> multipliers or dividers) is rarely enough to have a &#8220;divider&#8221; effect. This is an &#8220;HR issue&#8221; (dividers must improve or be fired) but not the scope of this professional-development scale, which assumes good-faith and a wish for progress. <em>Subtracters</em> are people who produce less than they cost, including the time of others who must coach and supervise them. As a temporary state, there&#8217;s nothing wrong with being a subtracter&#8211; almost every software engineer starts out his career as one, and it&#8217;s common to be a subtracter in the first weeks of a new job. <em>Adders</em> are the workhorses: competent individual contributors who deliver most of the actual work. Finally, <em>multipliers</em> are those who, often in tandem with &#8220;adder&#8221; contributions, <em>make other people</em> more productive. In many industries, being a <em>multiplier</em> is thought to be the province of management alone, but in technology that couldn&#8217;t be farther from the truth, because architectural and infrastructural contributions (such as reusable code libraries) have a broad-based impact on the effectiveness of the entire company.</p>
<p>What this scale intends to measure is the transition from a subtracter to an adder (0.0 to 1.0), from an adder to a multiplier (1.0 to 2.0), and from a &#8220;local&#8221; to a &#8220;global&#8221; multiplier (2.0 to 3.0). I ignore issues associated with &#8220;dividers&#8221; (who may be highly competent engineers; as I alluded above, a 2.0+ engineer can be a &#8220;divider&#8221; if there are personality problems) because those are &#8220;HR issues&#8221; (improve quickly or fire) while this scale is concerned with <em>skill</em> and long-term professional development.</p>
<p>Approximately speaking, the ranges are:</p>
<p><strong>0.0 to 0.4: Complete novice:</strong> this is the level of a person who is still &#8220;learning programming&#8221;, by which I mean the person is likely to have trouble getting code to compile. This person has technical limitations that make unsupervised professional-level contributions impossible. Typically, this level of development is observed only in introductory programming courses. Most college interns are already at 0.5 or above when they start programming professionally.</p>
<p><strong>0.5 to 0.7: Sound grasp of fundamentals:</strong> this is the level of someone who can call herself a &#8220;programmer&#8221; but not yet an &#8220;engineer&#8221;. Can competently build small systems (up to 3000 lines of code or so) but the code is likely to be sloppy and unmaintainable. At this level, getting the code &#8220;to work&#8221; is not an issue, but the code is likely to be inefficient, and the person&#8217;s architectural skills (due to inexperience) are likely to be weak. Typical level for a college student from a strong school before her first software internship.</p>
<p><strong>0.8 to 0.9: Becoming an adder:</strong> this is a person who is aware of the practical concerns (maintenance, runtime safety) associated with software development. She can deliver useful scripts and has a decent understanding of software engineering. She is capable of using Google and online resources to answer small-scoped questions about development (such as how to do File I/O in an unfamiliar language).</p>
<p><strong>1.0 to 1.3: Full-fledged adder:</strong> this person has demonstrated full competence as a software engineer and can be trusted to manage a small project &#8220;full-cycle&#8221;: design, implementation, testing, and integration. Code will usually be of reasonable quality, but the engineer is not ready to be responsible for meeting deadlines, production support (being &#8220;the 3:00 am guy&#8221;), or company-wide concerns. A <em>team</em> of mostly 1.3 engineers can produce solid work (the <em>average</em> software engineer is around 1.1; note that the 50th-percentile software job is a low-autonomy &#8220;Java jockey&#8221; position) but a software company whose <em>best</em> engineers are in this range will struggle to produce quality software.</p>
<p><strong>1.4 to 1.6: Solid adder: </strong>well above-average (top 10%) by software-industry standards, but average (at 5-10 years&#8217; experience) in the context of the best companies (e.g. elite startups, Google, and research divisions of IBM). Can be trusted to independently solve most problems in an elegant and maintainable way. Engineer can make reasonable time estimates and communicate in both business and technical terms with management as well as other engineers. Can handle small levels of deadline/delivery responsibility and should be encouraged to participate in architectural decisions (&#8220;multiplier&#8221; concerns). Technical leadership non-urgent projects is a serious possibility.</p>
<p><strong>1.7 to 1.9: Becoming a multiplier: </strong>top 5%. Engineer is on track toward full &#8220;multiplier&#8221; status. Her contributions not only solve immediate problems, but improve the state of company infrastructure. She routinely suggests architectural and process improvements, and is ready to be &#8220;tech lead&#8221; for important projects.</p>
<p><strong>2.0 to 2.3: Full-fledged multiplier:</strong> engineer is an objective multiplier whose contributions add immense, demonstrated value to the team&#8211; an obvious technical leader. This represents the top 2-3% of software engineers in problem-solving, architectural, and leadership skills.</p>
<p><strong>2.4 to 2.6: Becoming a global multiplier (&#8220;Fellow&#8221;):</strong> engineer&#8217;s achievements are vast and astonishing. Contributions are company-wide or extend even further (e.g. to the open-source community). Represents the top 0.25% of software engineers. Can be trusted to work on independent research (with full autonomy) and lead major initiatives.</p>
<p><strong>2.7 to 3.0: Senior fellow:</strong> engineer is known within and outside the company as one of the best computer programmers alive. These are people who can design new programming languages and produce good ones.</p>
<p>How does this scale play out? What <em>practical</em> conclusions can we draw from it? Ideally, it exists to plot the trajectory that most programmers will take. Sadly, the reality of the software industry is that the <em>average</em> software engineer never gets far above 1.0. Since the difference between these awful programmers is not (at least, in my estimation) a problem of intellectual ability&#8211; perhaps it&#8217;s one of curiosity and drive&#8211; this is unfortunate.</p>
<p>Software is, by far, one of the most <em>structurally cooperative</em> systems in the world. What I mean by &#8220;structurally cooperative&#8221; is that our own well-being is correlated positively with the performance of others in our industry, even when they&#8217;re nominally (and transiently) &#8220;competitors&#8221;. Great programmers teach other programmers to be great and build great technologies, which are often released into the open-source community. Conversely, the <em>badness</em> of the average software developer causes a world of suffering for the good ones. Why are so many programming jobs (and libraries) in brain-dead languages (such as Java) rather than functional-programming languages (e.g. Scala, Ocaml, Clojure, Haskell)? Because while the Java+IDE environment makes it extremely difficult for an individual engineer to have a 1.5+ impact &#8211;there are two cases in recorded history of programmers breaking 2.0 in Java; one is Martin Odersky, who wrote Scala, and the other is Rich Hickey, who wrote Clojure&#8211; the state of the tooling makes it possible for the 0.7&#8242;s and 0.9&#8242;s to get a 0.1- to 0.3-point bump, so long as they stay within their IDEs and don&#8217;t have to work with a <em>computer</em> (gasp!) at the (God, no!) command line.</p>
<p>Sadly, the &#8220;half-life&#8221; of a software developer is about 6 years. The trajectory of an &#8220;average&#8221; software developer looks like this: he leaves a JavaSchool at a competency around 0.6 and grows by approximately 0.1 point per year&#8211; that&#8217;s not blazing along this stretch (0.1/year would be quite fast above 2.0, but it&#8217;s poky below 1.0) but a reasonable pace for a person with little mentoring and a lackluster environment. Around 1.2, he reaches a technical ceiling, convinced that &#8220;programming&#8221; has intrinsic limits on individual contribution, except for &#8220;geniuses&#8221; who have 167 IQs and 40 years of programming experience (at age 44). This is because the Java+IDE environment, and operating systems like Windows, are designed to bring up the rear (0.7 to 0.9) while holding back the best programmers, artificially imposing that &#8220;ceiling&#8221; around 1.2-1.5; these technologies are intentionally designed for a <em>performance-middling</em> effect&#8211; to make it possible for huge teams of &#8220;commodity&#8221; developers to produce <em>something</em> while holding the excellent back from producing <em>great</em> things.</p>
<p>If he had spent some time reading Hacker News and learning about this fancy &#8220;functional programming&#8221; stuff, he might have seen a credible path (for non-geniuses like this writer) to 1.5 and beyond. But he hasn&#8217;t, so he burns out on &#8220;code monkey&#8221; work and moves into management. Or he goes to law school. Or business school. Because he wrongly concluded that this &#8220;engineering&#8221; thing (as he experienced it) was just too limited and dull to do for another decade. Even after six years, he was a mediocre, bottom-90-percent programmer and so no one misses that he&#8217;s gone, but with better guidance and exposure to superior technologies, he could have become great.</p>
<p>This is what&#8217;s at stake in &#8220;language wars&#8221; and arguments about the configuration of the software industry. It&#8217;s not just about hating to write (much less maintain) code in unattractive languages like Java and C++, or use hideous and inelegant operating systems like Windows. Far more is involved here.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/564/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/564/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/564/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/564/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/564/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/564/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/564/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/564/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/564/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/564/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/564/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/564/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/564/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/564/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=564&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2012/01/26/the-trajectory-of-a-software-engineer-and-where-it-all-goes-wrong/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>How any software company can cross &#8220;The Developer Divide&#8221;</title>
		<link>http://michaelochurch.wordpress.com/2012/01/24/how-any-software-company-can-cross-the-developer-divide/</link>
		<comments>http://michaelochurch.wordpress.com/2012/01/24/how-any-software-company-can-cross-the-developer-divide/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 14:52:49 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[ocaml]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[startups]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=552</guid>
		<description><![CDATA[Nir Eyal wrote a blog post, The Developer Divide: When Great Companies Can&#8217;t Hire, on this conundrum: there are a lot of excellent technology companies that haven&#8217;t managed to attract the brightest (and generally pickiest) engineers in sufficient numbers to hire as fast as they grow, a problem that forces a company either to lower its hiring [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=552&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nir Eyal wrote a blog post, <a href="http://www.nirandfar.com/2012/01/developer-divide-when-great-companies.html">The Developer Divide: When Great Companies Can&#8217;t Hire</a>, on this conundrum: there are a lot of excellent technology companies that haven&#8217;t managed to attract the brightest (and generally pickiest) engineers in sufficient numbers to hire as fast as they grow, a problem that forces a company either to lower its hiring standards or curtail growth, neither of which is desirable.</p>
<p>What makes this problem especially hard is that it&#8217;s not about money. In marketing terminology, it&#8217;s a problem of &#8220;reach&#8221;. Many great startups, even if they offered $200,000 per year, would simply be unable to hire 25 elite (top 5%) programmers in a year. Finding one per quarter is pretty good. Compounding this difficulty is the fact that the best software engineers&#8217; job searches are infrequent and short. They usually find jobs through social connections and word-of-mouth before they start officially &#8220;looking&#8221;. They almost never cold-spam their CVs. Therefore, a company that&#8217;s consistently hiring top-5% programmers is probably extending offers to 1 applicant <em>per several hundred CVs</em> that makes its way to the hiring manager.</p>
<p>What is the Developer Divide? It comes down to this: it&#8217;s easier to get top developers if your product is something that top developers already use. Google was unequivocally the best search engine even in 2000, and nerds like new search engines, so it established itself as a desirable place to work. Facebook and Foursquare may be targeted toward &#8220;non-engineers&#8221; (i.e. mass market) but the products are used by enough of the people the firms want to hire as to generate name recognition that accumulates faster than the company needs to grow. That makes it very easy for them to attract so much talent they <em>turn away</em> more 5-percenters than they hire. But for a company whose product isn&#8217;t used already, every day, by top programmers, it becomes harder. Much harder. That&#8217;s unfortunate, because <em>a lot</em> of great businesses<br />
(most, actually) need to start out doing something lower on the established-product-sexiness scale (enterprise work and products with well-defined markets, rather than speculative &#8220;social&#8221; projects) before branching out into projects of more general interest. These companies might <em>become</em> sexy in the future, but sometimes the first clientele has to be an unsexy but reliable one, like large corporations or suburban soccer moms.</p>
<p>So, how do these great companies continue to find great talent? I&#8217;m going to state one simple (but not easy) thing that <em>any</em> software company can do to increase its attractiveness to top engineers by at least 3 binary orders of magnitude. Here it is: <strong>ditch Java/C++ and use a decent programming language.</strong></p>
<p>What&#8217;s a decent programming language, for this purpose? It&#8217;s one that a 5-percenter would use for a personal side project, or if she were calling the shots. That language might <strong>Scala</strong>, <strong>Python</strong>, or <strong>Ocaml</strong>. It might (for a project such as an operating system) be C. It would amost certainly not, in 2012, be Java or C++.</p>
<p>A clarification must be made, because it&#8217;s confusing to people outside of technology: C++ is not a substitute, nor  an improvement on, C. In fact, C is great for programs where low-level concerns are critical in producing a quality system: operating systems, device drivers, hard real-time, and runtime environments for the high-level garbage-collected languages we all love (such as Ocaml and Haskell). Much of the world is built on C. It&#8217;s an <em>excellent</em> and immensely successful mid-level language,  as opposed to C++ which is a miserably failed attempt at a C-like high-level language. So do not confuse the two.</p>
<p>If you ask a 5-percenter for his opinions on C and C++, he&#8217;ll probably praise the former while trashing the latter. From a non-technical business perspective, this might seem inconsistent, given that C is a proper subset of C++. &#8220;Anything you can do in C, you can do in C++.&#8221; That makes C++ &#8220;strictly better&#8221;, right? Well, no. A 5-percenter has the professional maturity to realize that he or she will not be coding in a vacuum, and that <em>reading</em> code is as important an act as <em>writing</em> it, and that therefore adding ill-considered features to a good language doesn&#8217;t improve it, but ruins it if people are stupid enough to actually use them.</p>
<p>I&#8217;ll stop talking about C++, because it&#8217;s not even relevant to most startups. Startups can&#8217;t afford it, because they need to accomplish big things with small teams and C++ doesn&#8217;t make it possible. C++ is mostly that skulking monster that lives in the bowels of legacy systems at banks, something you expect to fight in the 2300 AD (post-apocalyptic) world of Chrono Trigger.</p>
<p>Java&#8217;s problem is somewhat different and new. C++ is a bad language because it was poorly designed, but it was at least designed for good programmers (and it&#8217;s disastrous when used by inept ones). Java, in contrast, was explicitly designed to favor the interests of massive (100+) teams of mediocre developers over excellent individual contributors, whom it slows down to a small fraction of their typical speed. It came out of a failed experiment to create a home for low-skill &#8220;commodity&#8221; developers who haven&#8217;t learned a new skill since college and who need to consult the One Smart Person on the team if (God forbid) their RAM-munching IDE breaks. Java has succeeding in making commodity developers marginally effective (as opposed to negatively productive, as they are in more powerful languages) but at the expense of hobbling the best, forcing them to endure ugliness (inherent to a language designed to be used exclusively through IDEs, while 5-percenters overwhelmingly prefer the command-line interface and &#8220;classic&#8221; editors like vim and emacs) and accidental complexity. Needless to say, 5-percenters despise Java. More correctly, they despise <em>the Java language</em>.  (I emphasize &#8220;the language&#8221; because the Java Virtual Machine itself is a pretty powerful tool, and because there are superior languages&#8211; Scala and Clojure coming to mind&#8211; that also run on the JVM.)</p>
<p><strong>If you want to build a large team of 50+ &#8220;commodity&#8221; developers, content to maintain legacy code or work on mind-numbingly boring stuff, use Java or C++. If you&#8217;re a startup, you need to build a small team of excellent developers, so use something else. If you want to hire 5-percenters now but might need to hire Java jockeys later, strongly consider Scala and Clojure, which are highly powerful languages but run in the JVM environment.</strong></p>
<p>Why is this so important? It&#8217;s not just about the language. It&#8217;s about signaling. As a startup, you have to show that you <em>get it</em>, and that the opportunity you offer isn&#8217;t Yet Another Java Job. You <em>can</em> get 5-percenters to use C++ or Java (Google has made this happen, and so have many investment banks, which have huge legacy codebases in C++) but you pretty much have to be a big-name company to pull this off, and you can expect to shell out an obscene of money&#8211; a 50-100 percent markup to account for the negatives of maintaining code in a terrible language, and the career stagnation this kind of work invites. If you want a 5-percenter to work 60 hours per week for $100,000 per year, use a great language. If you want him to work 9-to-5, with two-hour lunches and personal errands deducted from the workday, for $250,000 per year, then Java and C++ are options.</p>
<p>More than anything else, <strong><em>5-percenters want to work with other 5-percenters</em></strong>. This is <strong><em>far</em></strong> more important to them than prestige or money (the reason 5-percenters default to rich, prestigious companies when nothing more interesting crosses their transom is because these companies have other 5-percenters). It is, moreover, even more important than programming language selection itself. Language selection, as I&#8217;ve said, an objective mechanism of signaling. This is what creative writing calls the <em>&#8220;show, don&#8217;t tell&#8221;</em> principle (don&#8217;t say &#8220;Eric was honorable&#8221;; have him do something honorable). Every company says (&#8220;telling&#8221;) it has world-class talent, but language choice is an objective decision that <em>shows</em> that a company is, at the very least, interested in hiring 5-percenters. For that reason, there&#8217;s a good chance that it employs some.</p>
<p>To reiterate, because I don&#8217;t want a flame war, is it possible to find 5-percenters who will write Java and C++ on a full-time basis? Absolutely, and if you want to compete with Goldman Sachs on salary, you might be able to hire one. Will they take on the risk of working for $5,000 (pre-tax) per month at a risky, seven-person startup in these languages? Not a chance. Five-percenters tolerate C++ jobs at Google because they know that company&#8217;s existence doesn&#8217;t rely on their individual productivity. In a startup, individual productivity is an <em>existential concern</em>, and the Aspergerian &#8220;pathological honesty&#8221; that top programmers almost invariably have precludes them from working in low-productivity languages that they believe will retard and destroy their employer.</p>
<p>I&#8217;ve said enough about the awfulness of C++ and Java. What are some good languages? I&#8217;ll give a list, which is not at all inclusive, of highly-powerful languages that the best developers love. <strong>Ocaml, Haskell, Erlang, Scala, Lisp, Clojure. </strong>Less strong but still formidable are<strong> Python</strong> and<strong> Ruby</strong>. (Many 5-percenters love Python, and almost all will tolerate it, but the median Python programmer is closer to a &#8220;10-percenter&#8221;.) Why is it this way? First, great developers program and learn technology in their spare time, and a 1-person, 15-hour-per-week project must be written in a real language if it is going to amount to anything. Second, most of these languages are only used by the best employers and only taught by the best universities, so a person deeply familiar with one of them is either (a) coming from elite exposure, or (b) possessive of enough individual curiosity to indicate a high likelihood of skill and success as a computer programmer. People who want to become great programmers quickly discover languages in which it&#8217;s possible for them to be 10 times as productive as they would be in Java&#8211; and they never look back.</p>
<p>Are all programmers in great languages 5-percenters? The answer is no. Users of languages like Ocaml and Scala tend to fall into two categories: (a) the 5-percenters, and (b) those who are <em>becoming</em> 5-percenters. Not all of them are there yet, but they&#8217;re almost all improving at a rapid pace. I&#8217;ve worked for almost 4 years in JVM languages (Java, Scala, and Clojure) and what I&#8217;ve learned (perhaps astonishingly) is that, per unit time, the Scala and Clojure developers learn about Java <em>faster</em> than those using Java! Because they are in high-productivity languages, they can accomplish more, and because they&#8217;re achieving more, they&#8217;re learning more along the way.</p>
<p>From a practical standpoint: with so many great languages to choose from, which one of those awesome languages should a person pick? CTOs making this decision have some idea, but this would be an impossible decision for a non-technical CEO to make on direct experience. For a very small team, the answer is easy: whatever the best programmers want to use. I like Scala much better than Python, but if I were in a non-coding role and tasked with hiring a great programmer, and if she preferred Python, I&#8217;d have her use that, because the benefit of letting her use the language she thought was best for the job outweighs (for a small team and with no maintenance burden) any benefit conferred by using one powerful language over another. So my answer to the language-selection question to a non-programmer CEO is: ask your best developer.</p>
<p>For my part, I&#8217;d recommend <strong>Scala</strong>. It&#8217;s not the best language for <em>all</em> purposes, but it&#8217;s a great general-purpose language and (among mainstream languages) may be best choice overall for most purposes. Because it runs in the Java Virtual Machine (JVM) it has full access to all of Java&#8217;s assets. (Clojure, an excellent JVM lisp, has the same advantage, but is not as performant and does not have static typing, a feature I find invaluable.)</p>
<p>A person versed in economics might find my argument tenuous. If a set of &#8220;elite&#8221; languages can be used by programmers and employers as a signal of high competency, what&#8217;s to stop the less competent from &#8220;faking&#8221; this signal once they catch on to the fact that it exists? A few answers come to mind. The first is that programming in a high-power language requires an adjustment that mediocre, 9-to-5, programmers are not likely to want to make. From first principles, functional programming isn&#8217;t intellectually harder than object-oriented programming: a 120 IQ is more than enough. It&#8217;s actually simpler. (Doing object-oriented programming correctly, and rigorously understanding what one is doing with it, is much harder and much more intellectually complex than succeeding in functional programming; this is a rant for another time, but 99% of people doing &#8220;object-oriented-programming&#8221; are like crude teenagers with regard to sex&#8211; loud about it, but doing it badly.) Nonetheless, the intellectual difficulty of re-learning software on sound principles is not an easy one to make. Like the transitions from memorization to pattern recognition, and then from pattern recognition to rigorous proof in mathematics, these context-switches require a lot of work (months of serious study). Successfully learning Scala or Clojure is a sign of a very strong work ethic. (It goes without saying that your interview process should establish that the candidates actually <em>know</em> these languages, and aren&#8217;t playing &#8220;buzzword bingo&#8221;.)</p>
<p>What about mediocre businesses using language selection as a false signal? That&#8217;s even more unlikely. A recruiter (for an elite startup, currently at less than 20 people) I spoke to told me that about 70% of Clojure candidates, 40% of Python candidates, and 5% of Java candidates that he invites to an in-office, full-day interview are good enough to hire. For a startup, interviews are far more expensive (in terms of opportunity cost) than for large companies: it costs about $100 to run a technical phone screen and $1000 to conduct a full-cycle interview, because startups have to involve senior people in their interview process in order to assess quality. Put another way, this means that it costs $1429 to hire a 5-percenter in Clojure and $2500 to hire one in Python&#8211; chump change as far as recruiting expenses go. But it costs $20,000 to hire a Java developer, <em>if you insist on the &#8220;5-percenter&#8221; standard of quality</em>.</p>
<p>There&#8217;s one variable I haven&#8217;t mentioned, though, and that&#8217;s the number of CVs he gets in each language: several hundred times as many Java developers than developers in Clojure or Ocaml. Most companies need (or think they need) warm bodies in large numbers to maintain legacy horrors, not top-talent and the attitude that comes with it. Also, it&#8217;s awful that it&#8217;s this way, and I think it will change in the future, with the limiting factor being work ethic and engagement rather than innate ability, but the software world is a pyramid, with a few stars at the pinnacle and a large number of incompetents at the base. This holds for programmers and for programmer jobs, of which 90 to 95 are mind-numbingly boring. It&#8217;s also seen in the distribution of language preference (and I say &#8220;preference&#8221; because there are tens of thousands of excellent programmers writing C++ and Java right now, but very few <em>prefer</em> them). The result of this is that the mediocre languages have the most programmers. If a company needs to hire 200 programmers per month, it simply cannot choose Haskell as its main development language; within a couple years, it would have absorbed the entire Haskell community!</p>
<p>Historically, that has been a serious concern for companies when it comes to language selection. Because there are hundreds of times more Java developers than Haskell or Ocaml hackers, there are at least fives of times more half-decent ones. Thus, the worst languages paradoxically have the strongest library support. This is compounded by the fact that powerful tools (such as IDEs, which are a mixed bag of neatness and horror, but sometimes quite useful and outright required when developing in Java) must be written to compensate the shortcomings of hobbled languages. There&#8217;s no Lisp IDE because emacs does just fine, but there are a slew of Java IDEs because it&#8217;s a revolting experience to write Java without one. From a non-technical CEO&#8217;s perspective, this makes Java look better because it has the best supporting tools.</p>
<p>What all this means is that mediocre software shops are not going to switch over to Haskell in order to ape this signaling mechanism. They can&#8217;t, because the bottom contingent of their software staff with drop like flies, and because their leadership is unlikely to understand the language selection problem in the first place. There might be some <em>unestablished</em> software companies using elite languages, and of them, I make the same argument that I&#8217;d make of &#8220;15-percenters&#8221; who nonetheless show interest and competence in &#8220;elite&#8221; languages&#8211; they may not be 5-percenters now, but if they keep at it, they will be shortly!</p>
<p>What about the (admitted) shortcomings of elite languages? Except for Scala and Clojure, which have access to the JVM and interoperate cleanly with Java, these languages <em>don&#8217;t</em> have the breadth of tooling that C++ and Java do. The answer to that is almost stereotypically &#8220;hackerish&#8221;: write them! This effort is not wasted, not in the least. Writing high-quality open-source tools to support elite languages is one of the best things a software company can do to establish its reputation. This, again, is an opportunity to <em>show</em>, not <em>tell</em>.</p>
<p>For a small company attempting to define and establish itself, attracting top talent is <em>hard. </em>The best programmers are on the job market so rarely and for such short intervals that attracting them takes concerted effort. Growing companies do not have the name recognition, and cannot afford the immense salaries (over $250,000 for a senior developer) that would attract these &#8220;5-percenters&#8221; using <em>economic</em> means, so they must win on <em>technical</em> grounds. Language selection is a simple (but not <em>easy</em>, because it&#8217;s difficult to adopt new and dramatically more powerful tools) way to do so. The best languages (Ocaml, Scala, Haskell, Python) are &#8220;shibboleths&#8221; that elite programmers use to identify each other, so adopting one of them is a one-stop choice that instantly establishes &#8220;hacker cred&#8221; or, to use Nir Eyal&#8217;s terminology, bridges &#8220;The Developer Divide&#8221;.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/552/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/552/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/552/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/552/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/552/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/552/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/552/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/552/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/552/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/552/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/552/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/552/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/552/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/552/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=552&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2012/01/24/how-any-software-company-can-cross-the-developer-divide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>Santorum Children Beg Father to Plug Presidential Campaign</title>
		<link>http://michaelochurch.wordpress.com/2012/01/19/santorum-children-beg-father-to-plug-presidential-campaign/</link>
		<comments>http://michaelochurch.wordpress.com/2012/01/19/santorum-children-beg-father-to-plug-presidential-campaign/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 13:30:54 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[Satire]]></category>
		<category><![CDATA[fake news]]></category>
		<category><![CDATA[frothy mixture]]></category>
		<category><![CDATA[rick santorum]]></category>
		<category><![CDATA[santorum]]></category>
		<category><![CDATA[sludge]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=513</guid>
		<description><![CDATA[Penn Hills, Pennsylvania&#8211; It&#8217;s typical for national political campaigns to be hard on candidates&#8217; families, but Rick Santorum&#8217;s six children, all of whom are currently in school and have been smeared by the negative associations with the Santorum name, have reached a unanimous decision: their father should not be running for President. Late last night, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=513&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Penn Hills, Pennsylvania&#8211; It&#8217;s typical for national political campaigns to be hard on candidates&#8217; families, but Rick Santorum&#8217;s six children, all of whom are currently in school and have been smeared by the negative associations with the Santorum name, have reached a unanimous decision: their father should not be running for President. Late last night, the Santorum children held an intervention in which they entreated their father to stop the campaign.</p>
<p>&#8220;That revolting <a href="http://en.wikipedia.org/wiki/Santorum_%28sexual_neologism%29">neologism </a>was on its way down the drain,&#8221; said Santorum&#8217;s 19-year-old son, John. &#8220;I was so glad to be rid of all the &#8216;frothy mixture&#8217; jokes. I thought it was all washed up. Now, Dad sneaks back out and does this. How in the fuck is a college student supposed to get laid with that association to his name?&#8221;</p>
<p>Santorum&#8217;s presidential run has been difficult not only for the candidate&#8217;s own children, but for the 2,319 American schoolchildren sharing that surname, which, before Santorum&#8217;s political career, held no sexual connotation. The candidate&#8217;s humiliating defeat in 2006 at the hands of Bob Casey, Jr. afforded these children a reprieve from surname-derived harassment, but one that was unfortunately short-lived. According to the American Bullying Institute, students with the afflicted surname have been the butt of 135 percent more jokes since the 2011 resurgence of Santorum&#8217;s political campaign.</p>
<p>Asked for comment, Rick Santorum expressed faith that his children would overcome the harassment, which he expected to &#8220;dry out overnight&#8221;. In a press conference he said, on the matter, &#8220;They&#8217;re tough little buggers.&#8221;</p>
<p>Not all in the family have been upset by the negative attention given to Rick Santorum&#8217;s name. Elizabeth, the candidate&#8217;s 20-year-old daughter, said, &#8220;The bright side of this &#8216;Santorum&#8217; muckraking is that it distracts people from what a fascistic, mean-spirited, uncultured, stupid and downright-fucking-insane bigot he is.&#8221;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/513/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=513&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2012/01/19/santorum-children-beg-father-to-plug-presidential-campaign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>#FireSOPA #FirePIPA &#8212; Vote the bastards out.</title>
		<link>http://michaelochurch.wordpress.com/2012/01/18/firesopa-firepipa-vote-the-bastards-out/</link>
		<comments>http://michaelochurch.wordpress.com/2012/01/18/firesopa-firepipa-vote-the-bastards-out/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 15:55:51 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/2012/01/18/firesopa-firepipa-vote-the-bastards-out/</guid>
		<description><![CDATA[I, Michael O. Church, hereby state that in the election of 2012, I will vote against any Senatorial or House candidate who supported or voted for SOPA and PIPA during this term. Even if the opponent is a conservative Republican religious nutcase (and I assure you that I am not one) I will be voting [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=544&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I, Michael O. Church, hereby state that in the election of 2012, I will vote <em>against</em> any Senatorial or House candidate who supported or voted for SOPA and PIPA during this term. Even if the opponent is a conservative Republican religious nutcase (and I assure you that I am not one) I will be voting for that person in order to oust the incumbent. No exceptions. </p>
<p>Please join me in voting out of office as many SOPA/PIPA supporters as we can. #FireSOPA, #FirePIPA.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/544/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=544&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2012/01/18/firesopa-firepipa-vote-the-bastards-out/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>A problem with the term, programming &#8220;language&#8221;</title>
		<link>http://michaelochurch.wordpress.com/2012/01/15/the-problem-with-programming-language/</link>
		<comments>http://michaelochurch.wordpress.com/2012/01/15/the-problem-with-programming-language/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 16:50:32 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[language wars]]></category>
		<category><![CDATA[linguistics]]></category>
		<category><![CDATA[natural language]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=516</guid>
		<description><![CDATA[I&#8217;m going to make a radical and perhaps offensive assertion: most of the time, when programmers use the phrase &#8220;programming language&#8221;, they are using it inappropriately, and creating a dangerously fallacious analogy, one for which few programmers but many decision-makers in business fall: that programming languages can be compared and assessed as one would for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=516&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to make a radical and perhaps offensive assertion: most of the time, when programmers use the phrase &#8220;programming language&#8221;, they are using it inappropriately, and creating a dangerously fallacious analogy, one for which few programmers but many decision-makers in business fall: that programming languages can be compared and assessed as one would for natural languages.</p>
<p>The problem is twofold. First, natural languages don&#8217;t have the massive variations in capability observed in programming languages. French is not superior to English (or vice versa) in the way that Scala is superior to Java. Second, &#8220;switching costs&#8221; associated with acquiring a new natural language are high, because it&#8217;s hard for an adult human to learn a new natural language well: it takes years of exposure, preferably in the context of contact with native speakers. This is not as true of programming languages; learning <em>programming</em> is hard, but a skilled programmer can become capable in a new language in a few weeks and be proficient after months. Because of this clumsy analogy, decision-makers in the software industry often make a decision that is the obvious right one with regard to natural languages, and almost always the wrong one (because &#8220;the standard&#8221; is usually an underpowered legacy language like Java or C++) in selecting a programming language: they default to the standard.</p>
<p>My intention is not to discuss specific programming languages <em>per se</em>, but the problem inherent in the phrase &#8220;programming language&#8221;. It is a correct phrase: a programming language <em>is </em>a form of language, with grammar, syntax and semantics. On the other hand, it admits a certain confusion inherited from something we know about <em>natural languages</em> like English and Spanish: despite their evident differences, human languages are much more alike than they are different. Natural languages have their quirks and are may be more capable in specific ways&#8211; character languages are more compact, while letter languages&#8217; smaller alphabets make it easier to convert written words into spoken form&#8211; but none is uniformly or astronomically superior to any other.</p>
<p>For example, there&#8217;s no natural language where to express an average English sentence (15 words) requires two hundred words, but there are languages (Scala, Python) that are 15 times more concise than Java. There&#8217;s also no language that is 100 times easier for the human brain to convert into meaningful instructions than English, but there are programming languages in which programs run 100 times faster than others. Nor is there a natural language where it&#8217;s impossible for a syntactically correct sentence (e.g. &#8220;the moon ate the moon&#8221;) to be nonsensical; this assurance, to a large degree, can be achieved in statically typed languages. While it might be offensive even to consider that natural languages might vary in &#8220;quality&#8221;, I think it quite reasonable to assert that they don&#8217;t. To my knowledge, there <em>aren&#8217;t</em> major, order-of-magnitude, variations in capability among natural languages. For this reason, it&#8217;s appropriate to communicate (e.g. to conduct business) in the language of which the involved parties will have the best comprehension. The right decision, in selecting a natural language, is to use &#8220;the standard&#8221;. In New York, that&#8217;s usually English. In Moscow, it&#8217;s Russian. Every locale has a small set (sometimes only one) of natural languages that are likely to be well-comprehended by most people. For this reason, it would be absurd for a Silicon Valley firm to make the decision to conduct all business in Swahili, even if Swahili were 10 or 50 percent better suited to that company&#8217;s needs.</p>
<p>Programming languages are different: there <em>are</em> order of magnitude variations. Rewrite a C program in Java, and the program becomes immune to a wide class of errors (due to Java&#8217;s automatic memory management) but one loses the ability to explicitly manage memory, and program performance becomes nondeterministic. Sometimes this is a desirable change; sometimes not. Rewrite the Java program in Python and the source code usually becomes one-tenth of its previous size, making the program easier to maintain and (in the long-run) better, but one forgoes access to the Java libraries (using Python&#8217;s, which are strong but less developed) and programs take 10 to 20 times longer to run. Rewrite the Python program in Scala and one regains access to the Java libraries and Java&#8217;s speed, but loses access to Python&#8217;s libraries and will have trouble transliterating some of Python&#8217;s (controversial, but sometimes powerful) most dynamic features.</p>
<p>Order-of-magnitude differences exist among programming languages, with the winners depending largely on one&#8217;s definition of &#8220;quality&#8221;. Python is expressive but the interpreter is slow. Java is fast but verbose and horrendous to read, making source code difficult to maintain and &#8220;code rot&#8221; inevitable. Scala is fast and concise, with a powerful type system, but few people understand the language or its type system well, so it&#8217;s not really possible to hire 50 Scala developers per month. C is verbose (for large-scale, complex software) and without many features, but the best or only choice for a variety of problems, such as writing device drivers, real-time programs, and operator systems. No programming language can be categorized as the uniform &#8220;best&#8221;; all have their strengths and weaknesses (except for C++, which is a bastardization of C and should never be used except to troll people).</p>
<p>This essay isn&#8217;t about what languages are good and which not, but it answers a question: <em>why do most businesses use the wrong programming languages?</em> Why are so many development shops using C++ and Java, when they could accomplish four times as much per developer-month using a more expressive language like Python or Scala? I think a major part of it comes from the fact that we call them programming <em>languages</em>. For an analogous question:<em> Why do most American businesses use English?</em> Not because English is the &#8220;best&#8221; language (if such a notion could even be defined for a natural language, and I doubt it can) but because it&#8217;s &#8220;the standard&#8221;: it&#8217;s what most other Americans use to communicate. With natural languages, there aren&#8217;t order-of-magnitude differences in capabilities, and the difficulty of learning a new natural language is high (the American &#8220;founding fathers&#8221; despised the British so much that they tried to replace English with French or Hebrew as the new country&#8217;s &#8220;official language&#8221;, and failed) so choosing the default natural language is such an obvious choice that it&#8217;s often not even a conscious decision.</p>
<p>Java and C++, analogously, are favored in the software industry because they&#8217;re &#8220;the standard&#8221;, like English. To a businessperson unfamiliar with technology, a proposal to implement software in Scala seems like the suggestion that all business should be conducted in Swahili&#8211; for a New York firm, ridiculous. This is why many software shops are far more skeptical of &#8220;other languages&#8221; than they would be if they understood the situation and the potential gains.</p>
<p>How do we dispel these notions? I think one change should be in our terminology. Often, when we debate <em>languages</em>, we&#8217;re actually discussing <em>technologies</em> built on languages. For example, sentences like &#8220;C is fast&#8221; and &#8220;Python is slow&#8221; are ridiculous as stated. A <em>language</em> (formally speaking) is just a set of strings of symbols, with no intrinsic concept of &#8220;speed&#8221;. What people mean, in fact, is that &#8220;compiled C programs have excellent performance due to advanced compilers and the language&#8217;s support for powerful optimizations&#8221; and &#8220;Python executables run about 10 to 20 times more slowly than analogous programs in C&#8221; (but still <em>fast</em>, because all computers are &#8220;fast&#8221; these days).  Speed isn&#8217;t an intrinsic trait of the language, but rather one of the <em>technologies</em> to compile and interpret it.  Likewise, the common justification for using Java is that &#8220;It&#8217;s has the largest set of active libraries.&#8221; Well, not exactly. There are a variety of exciting (and superior) JVM languages&#8211; most notably Scala and Clojure&#8211; that can use the bulk of these tools equally seamlessly, which means that there&#8217;s no excuse (in most cases) for preferring Java.</p>
<p>Programming languages are <em>languages</em>, but the decision to adopt one programming language over another has no similarity to such a decision over natural languages. The relevant comparison, in technology, is one of <em>platforms</em>, programming styles, capabilities, and supporting technologies. Referring to this decision-making process as a &#8220;language debate&#8221; is, in this context, myopic. Far more is at stake than the choice of &#8220;language&#8221; alone; the chosen programming language influences the types of programs one can write, and the variation in program quality that is staked on language selection alone is quite high.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/516/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=516&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2012/01/15/the-problem-with-programming-language/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>The U.S. upper class: Soviet blatnoys in capitalist drag.</title>
		<link>http://michaelochurch.wordpress.com/2011/10/26/the-u-s-upper-class-soviet-blatnoys-in-capitalist-drag/</link>
		<comments>http://michaelochurch.wordpress.com/2011/10/26/the-u-s-upper-class-soviet-blatnoys-in-capitalist-drag/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 13:14:22 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[politics]]></category>
		<category><![CDATA[blat]]></category>
		<category><![CDATA[blatnoy]]></category>
		<category><![CDATA[capitalism]]></category>
		<category><![CDATA[communism]]></category>
		<category><![CDATA[corporate elite]]></category>
		<category><![CDATA[corruption]]></category>
		<category><![CDATA[economics]]></category>
		<category><![CDATA[fascism]]></category>
		<category><![CDATA[socialism]]></category>
		<category><![CDATA[tyranny]]></category>
		<category><![CDATA[united states]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=492</guid>
		<description><![CDATA[One thing quickly learned when studying tyranny (and lesser , more gradual, failures of states and societies such as observed in the contemporary United States) is that the ideological leanings of tyrants are largely superficial. Those are stances taken to win popular support, not sincere moral positions. Beneath the veneer, tyrants are essentially the same, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=492&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One thing quickly learned when studying tyranny (and lesser , more gradual, failures of states and societies such as observed in the contemporary United States) is that the ideological leanings of tyrants are largely superficial. Those are stances taken to win popular support, not sincere moral positions. Beneath the veneer, tyrants are essentially the same, whether fascist, communist, religious, or centrist in nature. Supposedly &#8220;right-wing&#8221; fascists and Nazis would readily deploy &#8220;socialist&#8221; innovations such as large public works projects and social welfare programs if it kept society stable in a way they preferred, while the supposedly &#8220;communist&#8221; elites in the Soviet Union and China were self-protecting, deeply anti-populist, and brutal&#8211; not egalitarian or sincerely socialist in the least. The U.S. upper class is a different beast from these and, thus far, less malevolent than the communist or fascist elites (although if they are unchecked, this will change). It probably shares the most in common with the French aristocracy of the late 18th-century, being slightly right-of-center and half-hearted in its authoritarianism, but deeply negligent and self-indulgent. For a more recent comparison, I&#8217;m going to point out an obvious and increasing similarity between the &#8220;boardroom elite&#8221; (of individuals who receive high-positions in established corporations despite no evidence of high talent or hard work) and an unlikely companion: the elite of the Soviet Union.</p>
<p>Consider the Soviet Union. Did political and economic elites disappear when &#8220;business&#8221; was made illegal? No, not at all. Did the failings of large human organizations suddenly have less of a pernicious effect on human life? No; the opposite occurred. What was outlawed, effectively, was not the corporation (corporate power existed in the government) but <em></em>small-scale entrepreneurship&#8211; a <em>necessary</em> social function. Certainly, elitism and favoritism didn&#8217;t go away. Instead, money (which was subject to tight controls) faded in importance in favor of <em>blat</em>, an intangible social commodity describing social connection as well as the peddling of influence and favors. With the money economy hamstrung by capitalism&#8217;s illegality, blat became a medium of exchange and a mechanism of bribery. People who were successful at accumulating and using social resources were called <em>blatnoys</em>. The blatnoy elite drove their society into corruption and, ultimately, failure. But&#8230; that&#8217;s irrelevant to American capitalism, right?</p>
<p>Well, no. Sadly, corporate capitalism is not run by &#8220;entrepreneurs&#8221; in any sense of the word. Being an entrepreneur is about putting capital at risk to achieve a profit. Someone who gets into an elite college because a Senator owes his parents a favor, spends four years in investment banking getting the best projects because of family contacts, gets into a top business school because his uncle knows disgusting secrets about the dean of admissions, and then is hired into a high position in a smooth-running corporation or private equity firm, is <strong><em>not</em></strong> an entrepreneur. Anything but. That&#8217;s a glorified private-sector bureaucrat at best and, at worst, a brazen, parasitic trader of illicit social resources.</p>
<p>There are almost no entrepreneurs in the American upper class. This claim may sound bizarre, but first we must define terms&#8211; namely, &#8220;upper class&#8221;. Rich people are not automatically upper class. Steve Jobs was a billionaire but never entered it; he remained middle-class (in social position, not wealth) his entire life. His children, if they want to enter its lower tier, have a shot. Bill Gates is lower-upper class at best, and has worked very hard to get there. Money alone won&#8217;t buy it, and entrepreneurship is (by the standards of the upper class) the least respectable way to acquire wealth. Upper class is about social connections, not wealth or income. It&#8217;s important to note that being in the upper class does not <em>require</em> a high income or net worth; it does, however, require the ability to secure a position of high income reliably, because the upper class lifestyle requires (at a minimum) $300,000 after tax, per person, per year.</p>
<p>The wealth of the upper class follows from social connection, and not the other way around. Americans frequently make the mistake of believing (especially when misled on issues related to taxation and social justice) that members of the upper class who earn seven- and eight-digit salaries are scaled-up versions of the $400,000-per-year, upper-middle-class neurosurgeon who has been working intensely since age 4. That&#8217;s not the case. The hard-working neurosurgeon and the well-connected parasite are diametric opposites, in fact. They have nothing in common and could not stand to be in the same room together. their values are at odds. The upper class views hard work as risky and therefore a bit undignified. It perpetuates itself because there is a huge amount of excess wealth that has congealed at the apex of society, and it&#8217;s relatively easy to exchange money and blat on an informal but immensely pernicious market.</p>
<p>Consider the fine art of politician bribery. The cash-for-votes scenario, as depicted in the movies, is actually very rare. The Bush family did have their their &#8220;100k club&#8221; when campaign contributions were limited to $1000-per-person, but entering that set required arranging for 100 people to donate the maximum amount. <em>Social</em> effort was required to curry favor, not merely a suitcase full of cash. Moreover, to walk into even the most corrupt politician&#8217;s office today offering to exchange $100,000 in cash for voting a certain way would be met with a nasty reception. Most scumbags don&#8217;t realize that they&#8217;re scumbags, and to make a bribe as overt as that is to call a politician a scumbag. Instead, politicians must be bribed in more subtle manners. Want to own a politician? Throw a party every year in Aspen. Invite up-and-coming journalists just dying to get &#8220;sources&#8221;. Then invite a few private-equity partners so the politician has a million-dollar &#8220;consulting&#8221; sinecure waiting if the voters wise up and fire his pasty ass. Invite deans of admissions from elite colleges if he has school-age children. This is an effective strategy for owning (eventually) nearly all of America&#8217;s decision makers; but it&#8217;s hard to pull off if you don&#8217;t own <em>any</em> of them. What I&#8217;ve described is the process of earning interest on blat and, if it&#8217;s done correctly and without scruples, the accrual can occur rapidly&#8211; for people with enough blat to play.</p>
<p>Why is such &#8220;blat bribery&#8221; so common? It makes sense in the context of the mediocrity of American society. Despite the image of upper management in large corporations as &#8220;entrepreneurial&#8221;, they&#8217;re actually not entrepreneurs at all. They&#8217;re not the excellent, the daring, the smartest, or the driven. They&#8217;re successful social climbers; that&#8217;s all. The dismal and probably terminal mediocrity of American society is a direct result of the fact that (outside of some technological sectors) it is incapable of choosing leaders, so decisions of leadership often come down to who holds the most blat. Those who thrive in corporate so-called capitalism are not entrepreneurs but the &#8220;beetle-like&#8221; men who thrived in the dystopia described in George Orwell&#8217;s <em>1984</em>.</p>
<p>Speaking of this, what is corporate &#8220;capitalism&#8221;? It&#8217;s neither capitalism nor socialism, but a clever mechanism employed by a parasitic, socially-closed but internally-connected elite to provide the worst of both systems (the fall-flat risk and pain of capitalism, the mediocrity and procedural retardation of socialism) while providing the best (the enormous rewards of capitalism, the cushy safety of socialism) of both for themselves.</p>
<p>These well-fed, lily-livered, intellectually mediocre blatnoys aren&#8217;t capitalists or socialists. They&#8217;re certainly not entrepreneurs. Why, then, do they adopt the language and image of alpha-male capitalist caricatures more brazen than even Ayn Rand would write? It&#8217;s because entrepreneurship is a <em>middle</em>-class virtue. The middle class of the United States (for not bad reasons) still has a lot of faith in capitalism. Upper classes know that they have to <em>seem</em> deserving of their parasitic hyperconsumption, and to present the image of success as perceived by the populace at large. Corporate boardrooms provide the trappings they require for this. If the middle class were to suddenly swing toward communism, these boardroom blatnoys would be wearing red almost immediately.</p>
<p>Sadly, when one views the social and economic elite of the United States, one sees blatnoys quite clearly if one knows where to look for them. Fascists, communists, and the elites of corporate capitalism may have different stated ideologies, but (just as Stephen King expressed that <em>The Stand</em>&#8216;s villain, Randall Flagg, can represent accurately any tyrant) they&#8217;re all basically the same guy.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/492/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=492&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2011/10/26/the-u-s-upper-class-soviet-blatnoys-in-capitalist-drag/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>Criminal Injustice: The Bully Fallacy</title>
		<link>http://michaelochurch.wordpress.com/2011/10/18/criminal-injustice-the-bully-fallacy/</link>
		<comments>http://michaelochurch.wordpress.com/2011/10/18/criminal-injustice-the-bully-fallacy/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 12:43:20 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[politics]]></category>
		<category><![CDATA[bully fallacy]]></category>
		<category><![CDATA[bullying]]></category>
		<category><![CDATA[crime]]></category>
		<category><![CDATA[criminal justice]]></category>
		<category><![CDATA[economics]]></category>
		<category><![CDATA[narcissism]]></category>
		<category><![CDATA[prison]]></category>
		<category><![CDATA[psychopathy]]></category>
		<category><![CDATA[punishment]]></category>
		<category><![CDATA[reinforcement]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=486</guid>
		<description><![CDATA[As a society, we get criminal justice wrong. We have an enormous number of people in U.S. prisons, often for crimes (such as nonviolent drug offenses) that don&#8217;t merit long-term imprisonment at all. Recidivism is shockingly high as well. On the face of it, it seems obvious that imprisonment shouldn&#8217;t work. Imprisonment is a very [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=486&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As a society, we get criminal justice wrong. We have an enormous number of people in U.S. prisons, often for crimes (such as nonviolent drug offenses) that don&#8217;t merit long-term imprisonment at all. Recidivism is shockingly high as well. On the face of it, it seems obvious that imprisonment shouldn&#8217;t work. Imprisonment is a very negative experience, and a felony conviction has long-term consequences for people who are already economically marginal. The punishment is rarely appropriately matched to the crime, as seen in the (racially charged) discrepancies in severity of punishment for possession of crack vs. cocaine. What&#8217;s going on? Why are we doing this? Why are the punishments inflicted on those who fail in society often so severe?</p>
<p>I&#8217;ll ignore the more nefarious but low-frequency ills behind our heavy-handed justice system, such as racism and disproportionate fear. Instead, I want to focus on a more fundamental question. Why do average people, with no ill intentions, believe that negative experiences are the best medicine for criminals, despite the overwhelming amount of evidence that most people behave worst after negative experiences? I believe that there is a simple reason for this. The model that most people have for the criminal is one we&#8217;ve seen over and over: The Bully.</p>
<p>A topic of debate in the psychological community is whether bullies suffer from low or high self-esteem. Are they vicious because they&#8217;re miserable, or because they&#8217;re intensely arrogant to the point of psychopathy? The answer is both: there are low-self-esteem bullies and high-self-esteem bullies, and they have somewhat different profiles. Which is more common? To answer this, it&#8217;s important to make a distinction. With <em>physical</em> bullies, usually boys who inflict pain on people because they&#8217;ve had it done to themselves, I&#8217;d readily believe that low self-esteem is more common. Most physical bullies are exposed to physical violence either by a bigger bully or by an abusive parent. Also, physical violence is one of the most self-damaging and risky forms of bullying there is. Choosing the wrong target can put the bully in the hospital, and the consequences of being caught are severe. Most physical bullies are, on account of their coarse and risky means of expression, in the social bottom-20% of the class of bullies. On the whole, and especially when one includes adults in the set, most bullies are <em>social</em> bullies. Social bullies include &#8220;mean girls&#8221;, office politickers, those who commit sexual harassment, and gossips who use the threat of social exclusion to get their way. Social bullies may occasionally use threats of physical violence, usually by proxy (e.g. a threat of attack by a sibling, romantic partner, or group) but their threats generally involve the deployment of social resources to inflict humiliation or adversity on other people. In the adult world, almost all of the big-ticket bullies are social bullies.</p>
<p>Physical bullies are split between low- and high-self-esteem bullies. Social bullies, the only kind that most people meet in adult life, are almost always high-self-esteem bullies, and often get quite far before they are exposed and brought down. Some are earning millions of dollars per year, as successful contenders in corporate competition. Low self-esteem bullies tend to be pitied by those who understand them, which is why most of us don&#8217;t have any desire to hunt down the low self-esteem bullies who bothered us as children. It&#8217;s high self-esteem bullies that gall people the most. High self-esteem bullies never show remorse, often are excellent at concealing the damage they do, even to the point of bringing action consequences of their actions to the bullied instead of to themselves, and they generally become more effective as they get older. It&#8217;s easy to detest them; it would be unusual not to.</p>
<p>How is the high self-esteem bully relevant to criminal justice? At risk of being harsh, I&#8217;ll assert what most people feel regarding criminals in general, because for high-self-esteem bullies it&#8217;s actually true: the best medicine for a high self-esteem bully is an intensely negative and humiliating experience, one that associates undesirable and harmful behaviors with negative outcomes. This makes high-self-esteem bullies different from the rest of humanity. They are about 3 percent of the population, and they are <em>improved</em> by negative, humiliating experiences. The other 97 percent are, instead, made <em>worse</em> (more erratic, less capable of socially desirable behavior) by negative experiences.</p>
<p>The most arrogant people only <em>respond</em> to direct punishment, because nothing else (reward or punishment) can matter to them, coming from people who &#8220;don&#8217;t matter&#8221; in their minds. Rehabilitation is not an option, because such people would rather create the appearance of improvement (and become better at getting away with negative actions) than actually improve themselves. The only way to &#8220;matter&#8221; to such a person is to defeat him. If the high-self-esteem bully&#8217;s negative experiences are paralyzing, all the better.</p>
<p>Before going further, it&#8217;s important to say that I&#8217;m not advocating a massive release of extreme punishment on the bullies of the world. I&#8217;m not saying we <em>should</em> make a concerted effort punish them all so severely as to paralyze them. There are a few problems with that. First, it&#8217;s extremely difficult to determine, on an individual basis, a high self-esteem bully from a low-self-esteem one, and inflicting severe harm on the latter kind will make him worse. Humiliating a high-self-esteem bully punctures his narcissism and hamstrings him, but doing so to a low-self-esteem bully accelerates his self-destructive addiction to pain (for self and others) and leads to erratic, more dangerous behaviors. What comes to mind is the behavior of Carl in <em>Fargo</em>: he begins the film as a &#8220;nice guy&#8221; criminal but, after being savagely beaten by Shep Proudfoot, he becomes capable of murder. In practice, it&#8217;s important to know which kind of bully one is dealing with before deciding whether the best response is rehabilitation (for the low self-esteem bully) or humiliation (for the high self-esteem bully). Second, if bullying were associated with extreme punishments, the people who&#8217;d tend to be attracted to positions able to affix the &#8220;bully&#8221; label would be, in reality, the worst bullies (i.e. a witch hunt). That high self-esteem bullies are (unlike most people) improved by negative experience is a fact that I believe few doubt, but &#8220;correcting&#8221; this class of people at scale is a very hard problem, and doing so severely involves risk of morally unacceptable collateral damage.</p>
<p>How does this involve our criminal justice policy? Ask an average adult to name the 3 people he detests most among those he personally knows, and it&#8217;s very likely that all will be high self-esteem bullies, usually (because physical violence is rare among adults) of the social variety. This creates a template to which &#8220;the criminal&#8221; is matched. We know, as humans, what should be done to high-self-esteem bullies: separation from their social resources in an extremely humiliating way. Ten years of extremely limited freedom and serious financial consequences, followed by a lifetime of difficulty securing employment and social acceptance. For the office politicker or white-collar criminal, that <em>works</em> and is exactly the right thing. For the small-time drug offender or petty thief? Not so much. It&#8217;s the wrong thing.</p>
<p>Most caught criminals are <em>not</em> high self-esteem bullies. They&#8217;re drug addicts, financially desperate people, sufferers of severe mental illnesses, and sometimes people who were just very unlucky. To the extent that there are bullies in prison, they&#8217;re mostly the low-self-esteem kind&#8211; the underclass of the bullying world, because they got caught, if for no other reason. Inflicting negative experiences and humiliation on such people does <em>not</em> improve them. It makes them more desperate, more miserable, and more likely to commit crimes in the future.</p>
<p>I&#8217;ve discussed, before, why Americans so readily support the interests of the extremely wealthy. Erroneously, they believe the truly rich ($20 million net worth and up) to be scaled-up versions of the most successful members of the middle class. They conflate the $400,000-per-year neurosurgeon who has been working hard since she was 5 with the parasite who earns $3 million per year &#8220;consulting&#8221; with a private equity firm on account of his membership in a socially-closed network of highly-consumptive (and socially negative) individuals. Conservatives mistake the rich for the highly productive because, <em>within</em> the middle class, this correlation of economic fortune and productivity makes some sense, while it doesn&#8217;t apply <em>at all</em> to society&#8217;s extremes. The same is at hand in the draconian approach this country takes to criminal justice. Americans project the faces of the bullies onto the criminal, assuming society&#8217;s worst actors and most dangerous failures to be scaled-up version of the worst bullies they&#8217;ve dealt with. They&#8217;re wrong. The woman who steals $350 of food from the grocery store out of desperation is <strong>not</strong> like the jerk who stole kids&#8217; lunch money for kicks, and the man who kills someone believing God is telling him to do so (this man will probably require lifetime separation from society, for non-punitive reasons of public safety and mental-health care) is <strong>not</strong> a scaled-up version of the playground bully.</p>
<p>In the U.S., the current approach isn&#8217;t working, of course, unless its purpose is to &#8220;produce&#8221; more prisoners (&#8220;repeat customers&#8221;). Few people are improved by prison, and far fewer are helped by the extreme difficulty that a felony conviction creates in the post-incarceration job search. We&#8217;ve got to stop projecting the face of The Bully onto criminals&#8211; especially nonviolent drug offenders and mentally ill people. Because right now, as far as I can tell, we are The Bully. And reviewing the conservative politics of this country&#8217;s past three decades, along with its execrable foreign policy, I think there&#8217;s more truth in that claim than most people want to admit.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/486/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=486&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2011/10/18/criminal-injustice-the-bully-fallacy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>What made Steve Jobs rare?</title>
		<link>http://michaelochurch.wordpress.com/2011/10/07/what-made-steve-jobs-rare/</link>
		<comments>http://michaelochurch.wordpress.com/2011/10/07/what-made-steve-jobs-rare/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 13:22:01 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=478</guid>
		<description><![CDATA[Steve Jobs was one of our generation&#8217;s best innovators, if not the best. What he represented was singular and rare: a person in charge of a major company who actually had a strong and socially positive vision. Corporate executives are expected to have some quantity of vision and foresight, but so very few, across the Fortune [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=478&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Steve Jobs was one of our generation&#8217;s best innovators, if not the best. What he represented was singular and rare: a person in charge of a major company who actually had a strong and socially positive vision. Corporate executives are <em>expected</em> to have some quantity of vision and foresight, but so very few, across the Fortune 1000, ever actually have it that there is a certain surprise associated with learning of one who does. Most corporate executives are mediocrities if not negative in their contribution, meddling with those who are actually getting work done with constant churn and (in the negative sense) disruption. Steve Jobs, on the other hand, was integral to the success of Apple. As Apple&#8217;s posthumous tribute to him said, only he could have built that company. Unlike the typical businessman, Jobs was not especially charismatic. He was an effective salesman only because the quality of what he sold was so high; he could sell because he believed in his products. What he was is creative, courageous, disciplined, and effective. He had a sharp aesthetic sense, but also the clarity of vision to ship a real, working product.</p>
<p>Why do people like him appear only a few times in a generation? It&#8217;s not that there is a lack of talent. Not to denigrate Steve Jobs, because his talents are in any case uncommon, but I&#8217;d bet heavily (on statistical grounds) that there are at least a few hundred or thousand people like him out there, hacking away at long-shot startups, cloistered in academia, or possibly toiling in corporate obscurity. The issue is that people with his level of talent <em>almost never succeed</em> in human organizations such as large corporations. A keen aesthetic sense is a severe liability in most corporate jobs, as the corporate style of &#8220;professionalism&#8221; requires tolerance of ugliness rather than the pursuit of aesthetic integrity at all costs. Creative talent also becomes a negative in environments that expect years of unfulfilling dues-paying before one gets creative control of anything. People like Jobs can&#8217;t stand to waste time and so, in corporate America, they rarely make it. When they are set to boring work, the part of their brains not being used scream at them and that makes it impossible for them to climb the ladder.</p>
<p>That human organizations are poor at selecting leaders is well-known, and startups are an often-cited antidote to this problem. The issue there is that a herd mentality still exists in venture capital and startup press. The herd almost never likes people of high talent, and for every independent thinker in a true king-making role, there are twenty overfed bureaucrats making decisions based on &#8220;track record&#8221; and similarity to existing successes&#8211; a fact not in the favor of a 22-year-old Steve Jobs in 2011. To be honest, I don&#8217;t think such a person would have a chance in hell of acquiring venture capital funding on his own, unless born into the necessary connections. Elite incubators such as Y Combinator are solving this problem, and quite well, by connecting young talent with the necessary resources and connections. Are they doing enough? Will they succeed in changing the dynamics of startup funding and traction? I don&#8217;t have the foresight to answer that question yet; honestly, I have no idea. Time will tell.</p>
<p>I think a lot of people around my age (28) have spent some time thinking: <em>How can I be more like Steve Jobs?</em> That&#8217;s the wrong question to be asking. The perfect storm that enables even a moderately creative person (much less an out-and-out disruptive innovator like Jobs) to overcome the enormous obstacles human organizations throw at them is an event that occurs less often than a $100-million lottery windfall. The right question is closer to this: <em>what can I do that makes people with immense creative talents, like Steve Jobs, more likely to succeed?</em> So this, I believe, is a more reliable path to success and an indirect sort of greatness. It&#8217;s great to have dreams and work hard to achieve them, but it&#8217;s equally noble (and more often successful) to help others with great ideas realize theirs. Right now, most people with great ideas almost always linger in obscurity, with powerful people and institutions actively working to keep them there. That has been the case for nearly all of human history, but technology can change it.</p>
<p>How? I&#8217;m not sure. I spend a lot of time thinking about this issue. How can a world with so much creative talent in it (on account of having nearly 7 billion living people, at least a billion of whom now have the minimum resources to express creativity and at least a few million among those having the talent) be achieving so little? Why is there so much ugliness, inertia and failure? How do we empower people to change it? These questions are too big for me to answer, at least for now. I&#8217;m going to focus on one thing: the process of turning talent into greatness, the former being abundant and the latter being desperately uncommon. How do we get people with high talent to such a degree of skill that they can, as individual contributors, contribute to society substantially&#8211; so much so as to overcome the general mediocrity of human institutions?</p>
<p>This is an educational problem, but not one solved by traditional schooling. Greatness doesn&#8217;t come from completing assignments or acing tests, obviously. It requires personal initiative, a will to innovate, and courage. Then it requires recognition; people who show the desire to achieve great things should be given the resources to try. It doesn&#8217;t seem like it, but I&#8217;ve exposed an extremely difficult problem, one that I don&#8217;t know how to solve. Educational processes that encourage creativity make it extremely difficult to measure performance, and therefore fail to gain the social trust necessary to propel their pupils into positions of creative control in major organizations. On the other hand, those educational processes in which it&#8217;s easy to measure performance generally favor conformity and the ability to &#8220;game the system&#8221; over useful creative talents or skills. Moreover, there&#8217;s a variety of grade inflation that exists far beyond academia whose effect is socially pernicious.</p>
<p>Grade inflation seems like a &#8220;feel good&#8221; consequence of people being &#8220;too nice&#8221;, but from a zero-sum economic perspective, it actually reflects a society that stigmatizes failure heavily. If an average performance is rated at 2 (a C grade) on a 0-to-4 scale, then excellence in one course (A, 4.0) cancels out failure (F, 0.0) in another. On the other hand, if the average is 3.2 out of 4, then it takes <em>four</em> excellent grades to cancel out one failure. This makes failing a course substantially more costly. This reflects risk-aversion on the part of the educational system&#8211; the student who puts forth a mediocre performance in three courses is superior to one who excels in two but fails the third&#8211; and engenders risk-averse behavior on the part of students. That said, I&#8217;m not especially concerned with this problem in the educational system, which is far more forgiving of good-faith failure than most human organizations. A failed course can damage one&#8217;s average but rarely results in expulsion. I&#8217;m more worried about how this mentality plays out in real life.</p>
<p>This style of risk-aversion is reflected in human organizations such as corporations. An employee who has four great years followed by a bad one is likely to be fired for the damaged reputation acquired in that failed fifth year. People are measured according to their worst-case performance (reliability) rather than their best-case capability (talent). This is a problem for a person like Steve Jobs, obviously capable of hitting the highest of the high notes, but liable to show negative contribution (pissing people off) at his worst. It&#8217;s also a more general problem that leaves large organizations unable to tap their best people. Why? Those best people tend overwhelmingly to be &#8220;high-variance&#8221; people&#8211; those whose job performance becomes weak if they lose motivation, and who become so passionate about the quality of work that they invariably end up in personality conflicts. Low-variance individuals&#8211; generally lacking creativity but capable of sustaining a middling performance for decades, thereby showcasing &#8220;professionalism&#8221;&#8211; tend to win out in their stead. The creatively desolate world we observe in the leadership of major human organizations is a direct result of this.</p>
<p>In some cases, measuring performance at a person&#8217;s bottom rather than top makes sense. As Lord Acton said, &#8220;Judge talent at its best and character at its worst.&#8221; People who behave in a way that is outright unethical have proven themselves not worthy of trust, regardless of their best-case capabilities. On the other hand, a person like Steve Jobs fails in a mainstream corporate environment fails not because he is <em>unethical</em> but because he&#8217;s merely <em>difficult</em>. That is what is in error. In general, human organizations develop a toddler-like, black-and-white view in evaluation of their members and thereby lose the ability to discriminate between those who are outright criminal (and should be distrusted, terminated from employment, and possibly punished regardless of their talents) from those who have difficult personalities or who suffer a good-faith failure (a risk one must be able to afford if one wants to achieve <em>anything</em>).</p>
<p>There&#8217;s a solution to that problem, but a touchy one. In technology, programmers have taken to the open-source community as a means of building an organization-independent career. This reflects what academia has had for a long time: active encouragement for its members (graduate students and post-docs especially) to build reputations outside of their institutions. This allows people to demonstrate their best-case capabilites to the world at large. Unfortunately, there is an <em>extremely</em> touchy political matter here. Corporations and managers within them would generally prefer that subordinates <em>not</em> dedicate energy to the cultivation of an external reputation, a process that (a) distracts them from their &#8220;real work&#8221; and dues-paying, and (b) makes them more expensive to retain. Many large companies forbid employees to take consulting work or publish papers for this precise reason.</p>
<p>Now that I&#8217;ve laid out a few problems and ideas, I&#8217;ve noticed that both time (9:08 am, and I haven&#8217;t yet left for work) and word count (1683 and rising) are encouraging me to finish up. For a closing thought, I&#8217;ll admit that I don&#8217;t have many answers to the &#8220;big picture&#8221; problems here. I don&#8217;t know what it will take to fix the problems of large human organizations that lead to their pervasive mediocrity. I don&#8217;t even know if it can be done. Where to focus? Something smaller and tractable, something grass-roots.</p>
<p>Brilliant people, like Steve Jobs, aren&#8217;t born fully-fledged like Venus from the sea. Jobs became what he was due to a thousand influences&#8211; his friendship with Steve Wozniak, his early successes, later failures, and yet-later successes. That much is obvious. He was always <em>talented</em> but he became <em>great</em> on account of the opportunities he had&#8211; the successes and failures that refined his aesthetic sense until (in his later adulthood) it was a finished product. I also believe that there are thousands of people much like him in existence, their talents unexpressed. I don&#8217;t think we need to work hard to &#8220;find&#8221; them. These people are loud and obnoxious enough that this is an easy task. What we need to do, as much as we can, is enable such people to overcome the hurdles imposed by large human organizations more interested in protecting entrenched mediocrity than in pursuing excellence. We need to fight that battle as much as we can. And yet, we must accept that we aren&#8217;t likely to get very far. There&#8217;s more we need to do.</p>
<p>We need to rethink <em>education</em>. I&#8217;m not just talking about schooling. Instead, I&#8217;m talking about technology and business and culture. We need to remove from ourselves the notion that education is a &#8220;product&#8221; to be &#8220;consumed&#8221; by those rendered economically useless by their youth and inexperience. Education needs to be an ongoing process. It needs to pervade everything we do. Instead of writing code, managing people, or running businesses we need to focus on <em>teaching</em> people what we can, and on <em>learning</em> from them reciprocally. We need to reinvent corporate and organizational cultures outright so that talent is <em>naturally</em> turned into greatness, and so that excellence isn&#8217;t a weird, socially counterproductive personality trait but something that all strive toward.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/478/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=478&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2011/10/07/what-made-steve-jobs-rare/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>Half of 56 is 28</title>
		<link>http://michaelochurch.wordpress.com/2011/10/05/half-of-56-is-28/</link>
		<comments>http://michaelochurch.wordpress.com/2011/10/05/half-of-56-is-28/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 02:18:40 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[death]]></category>
		<category><![CDATA[steve jobs]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=473</guid>
		<description><![CDATA[Steve Jobs just died. His Stanford commencement speech is already legendary, but I&#8217;ll add one more link to it. Call me a &#8220;fanboy&#8221; or a crowd-follower for liking it; it really is worth listening to. This is a poignant reminder to all of us that we may have less time than we think we do. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=473&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Steve Jobs just died. His <a href="http://www.youtube.com/watch?v=UF8uR6Z6KLc">Stanford commencement speech</a> is already legendary, but I&#8217;ll add one more link to it. Call me a &#8220;fanboy&#8221; or a crowd-follower for liking it; it really is worth listening to.</p>
<p>This is a poignant reminder to all of us that we may have less time than we think we do. Society, with this expressed most prominently in the early rounds of the career game, expects young people to deny their mortality&#8211; to delay creative expression and fulfilling work to a distant, prosperous future that might never come. Jobs never denied his mortality. He did what he loved. This <em>is</em> the only reasonable approach because, in the end, mortality <em>refuses</em> to be denied.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/473/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=473&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2011/10/05/half-of-56-is-28/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
		<item>
		<title>Taxation without representation: why code maintenance fails&#8211; and how to fix it.</title>
		<link>http://michaelochurch.wordpress.com/2011/09/23/taxation-without-representation-why-code-maintenance-fails-and-how-to-fix-it/</link>
		<comments>http://michaelochurch.wordpress.com/2011/09/23/taxation-without-representation-why-code-maintenance-fails-and-how-to-fix-it/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 12:48:15 +0000</pubDate>
		<dc:creator>michaelochurch</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software engineer]]></category>
		<category><![CDATA[code maintenance]]></category>

		<guid isPermaLink="false">http://michaelochurch.wordpress.com/?p=462</guid>
		<description><![CDATA[The software industry, as a whole, has fallen into a dismal state. Software development is supposed to be a creative endeavor, but often it&#8217;s not. An overwhelming portion (more than 80% on mature codebases) of software engineering time is spent on software &#8220;maintenance&#8221; instead of new invention, a morale-killer that contributes to the high burnout [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=462&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The software industry, as a whole, has fallen into a dismal state. Software development is <em>supposed</em> to be a creative endeavor, but often it&#8217;s not. An overwhelming portion (more than 80% on mature codebases) of software engineering time is spent on software &#8220;maintenance&#8221; instead of new invention, a morale-killer that contributes to the high burnout rate in software engineering. In spite of these sacrifices on the part of developers, code quality seems nonetheless to decline inexorably, to the point where many software projects become intractably unfixable after a certain amount of time. Not only is maintenance painful, but it doesn&#8217;t seem to be working very well. What causes this? How does it happen? There are many factors, but I think the biggest problem the software industry faces is organizational: by failing to allocate maintenance responsibilities properly, the result is that these jobs are done poorly and the legacy/maintenance load becomes enormous.</p>
<p>Before reading further, I ask the reader to peruse Jeff Atwood&#8217;s <a href="http://www.codinghorror.com/blog/2006/06/the-noble-art-of-maintenance-programming.html">excellent blog post</a>, a header for what I&#8217;m about to write. In my mind, the most important point he makes is this one: <em>We should probably have our best developers doing software maintenance, not whoever draws the shortest straw. </em></p>
<p>Code maintenance, as usually practiced, is dull and lacks creativity. It&#8217;s also usually a career tarpit, because new invention is generally superior (from a developer&#8217;s perspective) in terms of visibility, education and advancement. Maintenance work rarely delivers on any of these. Maintaining <em>one&#8217;s own</em> code is a crucial educational experience, in which the developer sees first-hand the consequences of her architectural decisions. Maintaining the monstrosities created by others? It&#8217;s not much of a learning experience after the first time it&#8217;s done, and it&#8217;s rarely visible either. This incentive structure is perverse, because a working, healthy system that fulfills known, existing needs (i.e. the outcome of a successful maintenance project) is of more value than a new one that may or may not prove to be useful.</p>
<p>Maintenance is extremely important work; it&#8217;s the upkeep of one of a software company&#8217;s most important assets. Unfortunately, certain systemic aspects of organizational cultures make it unlikely to be rewarded in accord with its importance. The consequence is that maintenance work tends to &#8220;roll downhill&#8221; until it reaches junior programmers who lack the leverage to work on anything else. The result of this is that maintenance projects are usually done by people who don&#8217;t have the organizational knowledge, level of skill, or, most importantly, the political pull to do the job properly.</p>
<p>Inept or even average-case software maintenance fails to improve the general health of the code. A few bugs may be fixed or reactive features added, but the overall health of the software tends to decline. Methods become longer, dependencies are added, junk parameters are added to existing functions, and the architectural intentions behind the original system are buried under thousands of hacks. Code maintenance as practiced tends to beget an even greater maintenance burden in the future.</p>
<p>What needs to change? There&#8217;s a simple answer. <strong>Give maintainers power.</strong> The reason why the vast majority of software maintenance projects fail to improve code health whatsoever is that the developers in a maintenance role (usually junior programmers with no clout) lack the political pull to do their jobs properly. Telling a more senior developer, who was &#8220;promoted away&#8221; from maintenance duties years ago, to drop everything and document prior work is generally not an option for the maintenance programmer. Nor is removing ill-advised functionality from interfaces (someone more senior is guaranteed to &#8220;need&#8221; that function) or declaring a project in need of a rewrite. This is the sort of clout that a maintainer needs to have in order to have any shot whatsoever at succeeding.</p>
<p>There&#8217;s a flip side of this. If code maintenance work implies power, it absolutely <em>shouldn&#8217;t</em> be delegated to junior developers who can&#8217;t yet be trusted with that kind of power.</p>
<p>Giving software maintainers power will remove most of the stigma associated with such projects, seeing as they are hated because of the lack of power they often entail. It&#8217;s taxation without representation. Often, the maintainer&#8217;s job is specified in uninspiring and untenable terms like, &#8220;Make it work exactly like the old system, but faster&#8221;. Bug-for-bug replications, as well as faithful reproductions of any software without a spec, are doomed to failure. Improving code health necessitates imposing change on client developers. Rarely are such costs considered tolerable for the sake of &#8220;mere&#8221; upkeep, and maintenance projects usually, for that reason, fail to provide lasting improvement. The low rate of success observed on such projects makes them undesirable, and therefore they are avoided by the most skilled developers.</p>
<p>On the other hand, if maintenance responsibilities were coupled with sufficient power to restore the health of the codebase, such projects could become attractive enough that those with skill and seniority would want to do them. People who work on a daily basis with software generally develop a deep interest in the system&#8217;s health, and this alone can be motivation to commit time to its upkeep. Software maintenance has the reputation of grunt work, but it really isn&#8217;t <em>intrinsically</em> unpleasant for all developers; there are people who would enjoy such projects immensely if they were properly structured.</p>
<p>On structure, it&#8217;s critical that a company of any size separate the &#8220;software engineer&#8221; job description (which currently entails creative, new invention as well as maintenance) into two separate job descriptions. One (I&#8217;ll call it the &#8220;software architect&#8221; track) exists for the creative engineers who tend to fail at maintenance efforts because of their inability to tolerate ugliness. The other (I&#8217;ll call it the &#8220;maintenance engineer&#8221; track) exists for the &#8220;Sherlock Holmes&#8221; sort who enjoy deciphering ineptly- or even hostilely-written code. Since qualified maintenance engineers are uncommon, and since most developers find that work undesirable, maintenance engineers should be paid highly. I would argue that a 30% premium is not unreasonable. Moreover, they must be given social status and clout, since their job is to be pains in the asses of developers who are potentially more senior than they are. If maintenance projects are structured and allocated in this way, it&#8217;s very unlikely that they will dominate engineering time as they do now.</p>
<p>One thing I would argue against, however, is any suggestion that the maintenance engineer&#8217;s existence should absolve developers of the responsibility for maintaining <em>their own</em> code. It doesn&#8217;t. Maintenance engineers may be given a supervisory role in code and design review, but maintenance of one&#8217;s own work should remain each developer&#8217;s own responsibility; otherwise, &#8220;moral hazard&#8221; kicks in. I will also note that it is a terrible practice for developers to be &#8220;promoted away&#8221; from maintenance responsibilities, those being delegated to less important folk, as a reward for a successful launch. If the launch&#8217;s success came at the expense of enormous &#8220;technical debt&#8221; (the interest on which is usurious) then a maintenance time-bomb has been built.</p>
<p>I&#8217;ve addressed the social changes required in order to allow successful software maintenance. What will this entail in terms of project structure? In-place maintenance of defective systems&#8211; any software module that requires full-time maintenance effort fits the bill for &#8220;defective&#8221;&#8211; will become rarer, with outright replacement more common. That&#8217;s a good thing, because software either enervates or empowers and the former kind can rarely be upgraded to the latter through incremental changes. Note here that I&#8217;m advocating replacement, not &#8220;complete rewrites&#8221;. In my opinion, total rewrites (unless specific efforts are made to avoid prior mistakes) are often as inadvisable as in-place maintenance; the latter keeps defective software on life support, but the former practice often generates new defects&#8211; often more flaws, on account of the time pressure that complete-rewrite projects usually face.</p>
<p>What is gained in doing all this? First of all, job satisfaction among software engineers improves dramatically. Instead of the industry being characterized by a gloomy, never-ending maintenance slog, the proper allocation of such work ensures that it&#8217;s done properly and quickly rather than being passed from one hapless junior developer to another. Second, engineer productivity goes through the roof, because engineers with creative and architectural talents can unlock them instead of being forced to contend with legacy misery. Third, employee retention is improved not only for individual software companies but for the industry as a whole. Instead of architecturally-inclined engineers being burned out in droves (I&#8217;ll note that people with strong architectural talents tend to be notoriously intolerant of ugliness, to a point that can be emotionally and intellectually crippling in software maintenance) by the legacy burden that is the current reality of the industry, they&#8217;re encouraged to make a career of it, the result being better software architecture across the board. The result of these improvements in architectural know-how will be better products&#8211; more comprehensible, more attractive, easier to improve and keep up, and more profitable.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelochurch.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelochurch.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelochurch.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelochurch.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelochurch.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelochurch.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelochurch.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelochurch.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelochurch.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelochurch.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelochurch.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelochurch.wordpress.com/462/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelochurch.wordpress.com/462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelochurch.wordpress.com/462/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelochurch.wordpress.com&amp;blog=12019234&amp;post=462&amp;subd=michaelochurch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelochurch.wordpress.com/2011/09/23/taxation-without-representation-why-code-maintenance-fails-and-how-to-fix-it/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ae4247fe7294fc3f7bc6683a2fbdb46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelochurch</media:title>
		</media:content>
	</item>
	</channel>
</rss>
