<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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: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>Comments on: As simple as possible&#8230;</title>
	<atom:link href="http://programming-musings.org/2006/01/19/as-simple-as-possible/feed/" rel="self" type="application/rss+xml" />
	<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/</link>
	<description>random thoughts on programming and programming languages</description>
	<lastBuildDate>Fri, 04 Nov 2011 16:12:55 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Sussmaniana &#171; programming musings</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-30848</link>
		<dc:creator><![CDATA[Sussmaniana &#171; programming musings]]></dc:creator>
		<pubDate>Sat, 28 Mar 2009 23:09:57 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-30848</guid>
		<description><![CDATA[[...] exactly how i felt during my period as a CS teacher, as i tried, rather clumsily, to explain in one of my first rants in this blog. It feels great to be in such a good [...]]]></description>
		<content:encoded><![CDATA[<p>[...] exactly how i felt during my period as a CS teacher, as i tried, rather clumsily, to explain in one of my first rants in this blog. It feels great to be in such a good [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: &#171; Life Outside The Box: Hopefully, a Story</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-1808</link>
		<dc:creator><![CDATA[&#171; Life Outside The Box: Hopefully, a Story]]></dc:creator>
		<pubDate>Sat, 16 Sep 2006 05:00:04 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-1808</guid>
		<description><![CDATA[[...] I didn&#8217;t post here to complain, however. I actually have something worthwhile to say, in fact a sort of discussion on a post I&#8217;ve read recently: As Simple As Possible on programming musings. [...]]]></description>
		<content:encoded><![CDATA[<p>[...] I didn&#8217;t post here to complain, however. I actually have something worthwhile to say, in fact a sort of discussion on a post I&#8217;ve read recently: As Simple As Possible on programming musings. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jochen</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-152</link>
		<dc:creator><![CDATA[Jochen]]></dc:creator>
		<pubDate>Sun, 23 Apr 2006 02:18:41 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-152</guid>
		<description><![CDATA[I am one of those who got spoiled by BASIC. To be precise: by GFA Basic, a dialect that has many elements of Pascal. It is simple AND powerful. After six years of coding, I can still keep control over my 20k lines of code. Of course, I might have switched to C or Java, but again, I am one of those who &quot;just have better things to do&quot;, and my GFA is good enough for the tasks I have to do. Based on substantial experience with GFA, Assembler (68K, Intel), Fortran, Javascript and VB, I still agree with Einstein, &quot;as simple as possible, but NOT simpler&quot;, but I have doubts whether the developers of programming languages have invested enough energy to test the limits of simplification.]]></description>
		<content:encoded><![CDATA[<p>I am one of those who got spoiled by BASIC. To be precise: by GFA Basic, a dialect that has many elements of Pascal. It is simple AND powerful. After six years of coding, I can still keep control over my 20k lines of code. Of course, I might have switched to C or Java, but again, I am one of those who &#8220;just have better things to do&#8221;, and my GFA is good enough for the tasks I have to do. Based on substantial experience with GFA, Assembler (68K, Intel), Fortran, Javascript and VB, I still agree with Einstein, &#8220;as simple as possible, but NOT simpler&#8221;, but I have doubts whether the developers of programming languages have invested enough energy to test the limits of simplification.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: As simple as possible… at Firmly Wedged</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-49</link>
		<dc:creator><![CDATA[As simple as possible… at Firmly Wedged]]></dc:creator>
		<pubDate>Sun, 22 Jan 2006 16:43:09 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-49</guid>
		<description><![CDATA[[...] programming musings » Blog Archive » As simple as possible… [...]]]></description>
		<content:encoded><![CDATA[<p>[...] programming musings » Blog Archive » As simple as possible… [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: aminorex</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-45</link>
		<dc:creator><![CDATA[aminorex]]></dc:creator>
		<pubDate>Fri, 20 Jan 2006 20:20:04 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-45</guid>
		<description><![CDATA[I heartily endorse your critique of the &quot;dummies&quot; approach to software.  The state of the software art is quite dismal, in comparison to its promise, in large part because of the sheer volume of poor-quality software being generated, and the immaturity or incompetence of its designers.   Rather than adopting and promoting systems which let fools shoot themselves in the foot, the useful forward path is to encapsulate and automate the products of expertise, and give the people what they really want, i.e. ways to accomplish their tasks which leverage the best techniques available.]]></description>
		<content:encoded><![CDATA[<p>I heartily endorse your critique of the &#8220;dummies&#8221; approach to software.  The state of the software art is quite dismal, in comparison to its promise, in large part because of the sheer volume of poor-quality software being generated, and the immaturity or incompetence of its designers.   Rather than adopting and promoting systems which let fools shoot themselves in the foot, the useful forward path is to encapsulate and automate the products of expertise, and give the people what they really want, i.e. ways to accomplish their tasks which leverage the best techniques available.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dennis</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-44</link>
		<dc:creator><![CDATA[dennis]]></dc:creator>
		<pubDate>Fri, 20 Jan 2006 16:21:39 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-44</guid>
		<description><![CDATA[There seems to be something in the corporate culture that says it&#039;s better to spend $10 million/year on 150 mediocre programmers and low-level managers, than to spend half that amount on 15 great programmers. So we get programmers as bricklayers, churning out repetitive java code, never realizing that if it&#039;s repetitive, the computer could automate it, and those 15 great programmers could get the computer to do the work of the 150 bricklayers, except without the mistakes.

Maybe it&#039;s a power issue. A manager can be in charge of 150 people who are easily replaceable, or 15 people who make such large individual contributions that they have clout of their own. To meet the needs of the power-hungry manager, schools churn out bricklayers, and lots of people get easy, decent-paying jobs. This is a happy result for them all, though possibly not for the users of their software.

But since real computer science is not extinct, just in the minority, another happy result is that a few great programmers can band together compete on equal terms with major corporations.

The biggest problem might be that people with the potential to grasp the real stuff get sidetracked into java coding, get bored, and turn into managers and &quot;architects,&quot; instead of advancing the state of the art.

In any case, as a slightly-above-average self-taught programmer who&#039;s trying to turn into a great one by reading books like SICP, I appreciate the moral support and the links!]]></description>
		<content:encoded><![CDATA[<p>There seems to be something in the corporate culture that says it&#8217;s better to spend $10 million/year on 150 mediocre programmers and low-level managers, than to spend half that amount on 15 great programmers. So we get programmers as bricklayers, churning out repetitive java code, never realizing that if it&#8217;s repetitive, the computer could automate it, and those 15 great programmers could get the computer to do the work of the 150 bricklayers, except without the mistakes.</p>
<p>Maybe it&#8217;s a power issue. A manager can be in charge of 150 people who are easily replaceable, or 15 people who make such large individual contributions that they have clout of their own. To meet the needs of the power-hungry manager, schools churn out bricklayers, and lots of people get easy, decent-paying jobs. This is a happy result for them all, though possibly not for the users of their software.</p>
<p>But since real computer science is not extinct, just in the minority, another happy result is that a few great programmers can band together compete on equal terms with major corporations.</p>
<p>The biggest problem might be that people with the potential to grasp the real stuff get sidetracked into java coding, get bored, and turn into managers and &#8220;architects,&#8221; instead of advancing the state of the art.</p>
<p>In any case, as a slightly-above-average self-taught programmer who&#8217;s trying to turn into a great one by reading books like SICP, I appreciate the moral support and the links!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: labsji</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-43</link>
		<dc:creator><![CDATA[labsji]]></dc:creator>
		<pubDate>Fri, 20 Jan 2006 15:59:36 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-43</guid>
		<description><![CDATA[A very interesting and insighful discussion!

reinhardgantar, indeed  &#039;computing sucks&#039; is just the tip of the ice berg of &#039;everything sucks&#039;. Yet I am oprimistic that the withering pattern discussed is indication of rejuvination cycle ahead.
Withering pattern is: pop culture -&gt; retrogression of CS -&gt; bad programming -&gt; reinforced by business practice

Rejuvination pattern: programming effecting life -&gt; Convergence of Physics, CS, and Conciousness( life, mystery of life) -&gt; reinforced by pop culture with a ground swell of interest in exploring (mistery of) life

The point I am trying to make is what is spoilt by pop culture will be fixed by the pop culture.  

How programming will be after this big leap: I hope I live long enough to see it happen within my lifetime.]]></description>
		<content:encoded><![CDATA[<p>A very interesting and insighful discussion!</p>
<p>reinhardgantar, indeed  &#8216;computing sucks&#8217; is just the tip of the ice berg of &#8216;everything sucks&#8217;. Yet I am oprimistic that the withering pattern discussed is indication of rejuvination cycle ahead.<br />
Withering pattern is: pop culture -&gt; retrogression of CS -&gt; bad programming -&gt; reinforced by business practice</p>
<p>Rejuvination pattern: programming effecting life -&gt; Convergence of Physics, CS, and Conciousness( life, mystery of life) -&gt; reinforced by pop culture with a ground swell of interest in exploring (mistery of) life</p>
<p>The point I am trying to make is what is spoilt by pop culture will be fixed by the pop culture.  </p>
<p>How programming will be after this big leap: I hope I live long enough to see it happen within my lifetime.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: reinhardgantar</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-42</link>
		<dc:creator><![CDATA[reinhardgantar]]></dc:creator>
		<pubDate>Fri, 20 Jan 2006 06:20:17 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-42</guid>
		<description><![CDATA[I&#039;m sorry for getting so worked up on you, JadePhilosopher, because it seems
(now) that you addressed jao, actually, and not me. My statements on 
Steven Seagal and Arnold Schwarzenegger are still valid, though. 

Let me add a few comments, just to show you that I&#039;m not quite the obnoxious, arrogant brat you proabably think I am. Generally I believe that we are living in the dark ages of computing, the era when everything sucks. Our posteriors will look back at our times and scratch their heads wondering how anybody could ever be so stupid, but this is probably not limited to computing. I think that a few key characteristics of software are poorly understood by most people, and that compulsively trying to find poor analogies to physical things and physical trades are to blame. Here they are, in no particular order:

1.) Programming = Typing
It might sound unbelievable, but many MBAs think that programmers
are some sort of data entry clerks, and this is their WISHFUL thinking.
They WANT programmers to be data entry clerks and are gnawing
on their lower lip when they must live with &quot;coding monkeys&quot; who are
posing as primadonnas. Those people are very glad the bubble is over
and that they can outsource programming to Bangalore, where the
drones know their place and have a more realistic concept of what they
are worth. Needless to say here, programming is not just a fancy form
of data entry. 

2.) Programming = Bricklaying
Why can&#039;t programming work like construction? Why can&#039;t we hire a few
bright people, pay them a premium for designing the whole shebang and
put batteries of lower, cheaper, dumber folks - maybe our pool of all-purpose secretaries - to do the actual work? 
This does not work because designing software is 
never done, and it&#039;s the inumerable details that constantly break even
the best design. Building software is - unlike building a house - an iterative process that requires constantly backing up, often shooting for
a moving target. Designing software perfectly before coding it would require exploring every detail before coding, but as soon as you have
unambigously explored every detail, YOU ARE DONE. This means you have already programmed it. As soon as house is designed, on the other hand, the hard part is still ahead of you.

3.) Programming = Science
Contrary to jao I don&#039;t believe that good professional programming requires sound computer science underneath. This is like saying that being a successful entrepreneur requires a sound understanding of macroeconomics. Most people who made it to the cover of Forbes magazine don&#039;t have a sound understanding of any science. They have a sound understanding of people. Professional programmers don&#039;t need a sound understanding of computer science, they need a sound understanding of communicating technical concepts, as I will point out next. And they need a something like a big &quot;window of consciousness&quot; to be aware of as many details as possible, and how they influence each other. This is probably an innate talent, just like absolute pitch or photographic memory. A sound understanding of computer science is needed for computer science, but then again, it&#039;s just applied mathematics. Some of it is even just common sense. 

4.) Programming = Code
This is probably the most harmful of all superstitions. A computer program dies as soon as it can&#039;t be extended or cleaned up anymore. In a way, the highest-level of all programming language is English and little diagrams with arrows and boxes. Unfortunately, there is no way to compile a thesis on implementing a particular web app into machine code, so we must make do with programming languages. The problem is, that most of the existing code bases in most projects are only marginally more comprehensible than a core dump. Comments are not what makes code maintainable, it is the ideas behind the constructs and the design-mistakes that preceded them. Most software is not only not documented in this way, but not documented at all. Pictures would help a lot, too, but virtually nobody uses pictures because Word Graphics and Visio suck so much and scanning in inked sketches is deemed &quot;unprofessional&quot;. And most programmers neither enjoy nor excel in putting their ideas into words. &quot;Damn the torpedos -- full speed ahead!&quot; is the official motto. And it improves job security if nobody knows how your code works. 

5.) Programming = Easy in principle, just the tools suck
This is the result of other the other errors listed here. Many people, and
this includes me, don&#039;t know by heart in which direction you have to
turn a screw to fasten it. They (literally) blow a fuse if they try to &quot;fix&quot; some electrical wiring in their homes and make a complete butt of themselves when they venture to paper the living room. Tim Allen has built a spiritual empire on craftsmanship, or lack thereof. Virtually everybody outside of hardcore do-it-yourself circles and actual professionals are ready to admit that they cannot fix a car, cannot build a house or cannot sew a button (I can sew buttons, by the way, I learned it in the army).
When it comes  to computers, everybody blames the programmers and 
the industry because Marsha and Harvey can&#039;t make the internet or the printer work or can&#039;t write their own stock analysis programs. 
This is a little weird because it is like blaming the bricks for the fact that
most of us can&#039;t build our own homes. Or like blaming the scalpel industry for not providing the tools to clip our own appendices. &quot;Hey! It&#039;s not rocket science! Just inject the fentanyl, cut your belly, pull out the kidney, cut off, stuff the kidney back in and sew the skin -- how hard is that supposed to be? Do I really need to study for ten years for that? Oh, those propellor-hats are so geeky and have absolutely no clue what makes real people tick...&quot; You catch my drift or so I hope. This pollution probably stems from the fact that computers USED to be awkward to use until the Macintosh arrived and made a difference. Since then, usability has been radically improved, but the audience is stuck in complaining- and fingerpointing mode. This brings us to the next issue.

6.) Programming = Desktop Publishing, ca. 1985
Typesetting used to be the exclusive domain of, uhm, typesetters. Then
laserprinters and Adobe came along and empowered ordinary people to
create exceptionally bad artwork and diner menus that looked like extortion mail assembled from cut-out newspaper letters. Finally the geeks had produced something useful! Finally computers could be used by ordinary people to get some real work done! It&#039;s all point and click, what you see is what you get! Next, let&#039;s empower the user to write his own software! How hard can that be? 
The problem is that programming is about sweating the small stuff, lots of it. Programming is not about manipulating images or data, it is about constructing an imaginary machine consisting of thousands of moving parts. The attractive thing about programming is that you can control every detail of the software. What you can say becomes reality, just say it comprehensively and don&#039;t forget the details. This is in stark contrast to the &quot;Fido - go... fido - bad dog... fido... over there! fido... fetch stick&quot;-world of graphical user interfaces. Point-and-click-WYSIWYG monkeys can only dream of the power command-line jockeys and programmers have at their disposal. What most people overlook is that fido and the countless details cannot be reconciled. It is not &quot;making programming available to regular folks -- how hard is that, you idiots?&quot;, it is the other way around: &quot;Just SAYING what you want in a precise, unambigous language and actually GETTING it immediately -- how much easier do you want that, you idiots?&quot; The only thing that gets in the way is that most people cannot even say what they want because the sheer complexity of all the interdependent details overwhelms them, i.e. their window of consciousness is too small. As another poor analogy, it is like a world in which you can immediately have any concubine for real that you can draw with a pencil -- sounds like  the bomb until you realize that your drawing skills are limited to cubistic stickfigures. Artists would say &quot;How much easier do you want that?&quot; and rightly so. Most users overlook that imaginary things are not limited in the way physical things are, but they are limited by imagination. 

7.) Programming = antisocial

The geek is the prototype of the introvert boffin who prefers to talk to his machines instead of other people. The fact that borderline-autism really is an occupational disease among programmers does not imply that programming REQUIRES boffins. Alright, it takes concentration and dedication to work on a software project, but communicating ideas and convincing people of them is a very important part. Every geek loves to point to the pointy-haired boss and call him a bone-head, but I have seen geeks who failed to convince their superiors of their grand schemes and ended up with implementing brain-damaged designs because they could not make a coherent statement about how and why their concepts would work better. I&#039;m not talking about a nimble sales-pitch here, I&#039;m talking about a brief, structured introduction that is not oozing arcane jargon from every pore. Most programming projects have incredible deficits in coordination and control because the team-members don&#039;t talk to each other and don&#039;t write anything down except for code. The team-members constitute a mob of boffins only vaguely aware of what the others are doing. This is in gross contrast to even the most primitive bare-feet army unit or soccer team that understands the importance of organisation and communication. Most software shops would benefit a lot from addressing this problem, either by making hiring of chatterboxes and essayists a priority or adequate professional training. Maybe it would be the best idea to start sending the propellor hats to a dating counselour and have them improve their communication skills in the jungle -- for free. The problem is so severe that for most software shops the best thing that can happen is when their programmers are wasting their time sitting in the cafeteria talking to each other or getting liquored up together after hours. 

8.) Programming = a necessary evil
Most businesses are not about software. That&#039;s what the people running
these businesses think. This observation is increasingly false because
in today&#039;s highly competitive business better processes are the only way
to cut costs and get an edge. Just ask Michael Dell... he is in the PC business, alright, but what made him the king of the hill is not building
PCs, but building them exceptionally efficiently. Dell has the best logistics,
the best quality management and the best automatization -- in a word,
Dell has the best SOFTWARE. In related news, I&#039;m hearing that Wal-Mart, probably the most streamlined company on earth, constantly tries to become more efficient by forcing vendors to integrate their IT with Wal-Mart&#039;s IT. In a word, Wal-Mart puts a lot effort into systemic integration of software systems. And now they want to deploy RFID on a large scale, probably a very large and sophisticated SOFTWARE project. I seriously doubt that Wal-Mart is outsourcing this stuff. I rather think that important parts of Wal-Mart consider themselves as software-shops that happen to move merchandise. I think Wal-Mart and Dell consider their software as important asset that makes or breaks their companies. They fear that someone could upstage them by writing better software. Seen in this light, if mathematics is the queen of science, programming is not only the queen of engineering, but also the queen of business management. The problem is, not only their bosses, but most programmers themselves don&#039;t see it this way. They are oblivious to the fact that they are not only building something, but that they are building something that is advancing civilization, like a new invention or a new scientific theory, that saves some or many companies money if executed well. New software will make some other software or some people redundant and can be replaced only by even newer and better software. They don&#039;t know that good, specialized software can contribute to the bottom line tremendously and might make or break their company. Unfortunately, their managers confirm this bogus contempt because, after all, they are higher up in the food chain and have bigger offices. This gets us to the last point.

9.) Programming = lowly

If you want more money as a programmer, there is a limit on how much you can get as a programmer. If you have the aforementioned &quot;big window of consciousness&quot; and churn out code at prodigy levels, you might be happy with what you got and live happily ever after behind your IDE until retirement unless your company goes down the tubes for some reason. If your boss is smart, he does not step on this setup and lets you do your work. If your boss wants to do you good, he will raise your salary a little, just to keep you in the company. Less enlightened bosses might arrive at the idea that you are so good at what you do, you should become a manager yourself. The result is that you might be happy with your career move, but unhappy in your new assignment. What&#039;s worse, you might suck as a manager, at least you won&#039;t be as good as a programmer. Virtually no company has a policy that you can make substantial amounts of money as a programmer -- your boss will always get more than you do, period. The only way to get a programmer more money is to make him a programmer-manager. This is insane because good, expensive programmers are no replacement for any number of bad, cheap programmers. This is because you need ONE BIG window of consicousness, not many little windows of consciousness. And as pointed out above, good programmers can make or break your company. Hollywood understands this better than the rest of the world. The idea of making a popular, charismatic actor an extra-manager is obviously bad. Some have tried to make a popular, charismatic actor a director, with frequently catastrophic results. Refraining from such a practice is not limited to actors in hollywood, it applies to screen writers, costume designers and photographers as well. Why make a super-costume designer an inferior director or producer? If you want to reward them for their performance, just throw money at them and keep them busy. Never mind that the star might get more money than the director or that the FX experts take home more than the executive producer. You need them because they make or break your movie. You have to spend money to make money -- everybody knows this but keeps forgetting it when it comes to feed and care of programmers. 

Excuse me for getting carried away with all those details, but they do relate to the topic at hand (programming languages, as I remember) because software is all about little details interacting in unexpected ways, so good and bad programming languages are rooted in contemporary business practices, professional practices and programmer folkore. Unfortunately, most of these are bogus and will be utterly puzzling to later generations of geeks.]]></description>
		<content:encoded><![CDATA[<p>I&#8217;m sorry for getting so worked up on you, JadePhilosopher, because it seems<br />
(now) that you addressed jao, actually, and not me. My statements on<br />
Steven Seagal and Arnold Schwarzenegger are still valid, though. </p>
<p>Let me add a few comments, just to show you that I&#8217;m not quite the obnoxious, arrogant brat you proabably think I am. Generally I believe that we are living in the dark ages of computing, the era when everything sucks. Our posteriors will look back at our times and scratch their heads wondering how anybody could ever be so stupid, but this is probably not limited to computing. I think that a few key characteristics of software are poorly understood by most people, and that compulsively trying to find poor analogies to physical things and physical trades are to blame. Here they are, in no particular order:</p>
<p>1.) Programming = Typing<br />
It might sound unbelievable, but many MBAs think that programmers<br />
are some sort of data entry clerks, and this is their WISHFUL thinking.<br />
They WANT programmers to be data entry clerks and are gnawing<br />
on their lower lip when they must live with &#8220;coding monkeys&#8221; who are<br />
posing as primadonnas. Those people are very glad the bubble is over<br />
and that they can outsource programming to Bangalore, where the<br />
drones know their place and have a more realistic concept of what they<br />
are worth. Needless to say here, programming is not just a fancy form<br />
of data entry. </p>
<p>2.) Programming = Bricklaying<br />
Why can&#8217;t programming work like construction? Why can&#8217;t we hire a few<br />
bright people, pay them a premium for designing the whole shebang and<br />
put batteries of lower, cheaper, dumber folks &#8211; maybe our pool of all-purpose secretaries &#8211; to do the actual work?<br />
This does not work because designing software is<br />
never done, and it&#8217;s the inumerable details that constantly break even<br />
the best design. Building software is &#8211; unlike building a house &#8211; an iterative process that requires constantly backing up, often shooting for<br />
a moving target. Designing software perfectly before coding it would require exploring every detail before coding, but as soon as you have<br />
unambigously explored every detail, YOU ARE DONE. This means you have already programmed it. As soon as house is designed, on the other hand, the hard part is still ahead of you.</p>
<p>3.) Programming = Science<br />
Contrary to jao I don&#8217;t believe that good professional programming requires sound computer science underneath. This is like saying that being a successful entrepreneur requires a sound understanding of macroeconomics. Most people who made it to the cover of Forbes magazine don&#8217;t have a sound understanding of any science. They have a sound understanding of people. Professional programmers don&#8217;t need a sound understanding of computer science, they need a sound understanding of communicating technical concepts, as I will point out next. And they need a something like a big &#8220;window of consciousness&#8221; to be aware of as many details as possible, and how they influence each other. This is probably an innate talent, just like absolute pitch or photographic memory. A sound understanding of computer science is needed for computer science, but then again, it&#8217;s just applied mathematics. Some of it is even just common sense. </p>
<p>4.) Programming = Code<br />
This is probably the most harmful of all superstitions. A computer program dies as soon as it can&#8217;t be extended or cleaned up anymore. In a way, the highest-level of all programming language is English and little diagrams with arrows and boxes. Unfortunately, there is no way to compile a thesis on implementing a particular web app into machine code, so we must make do with programming languages. The problem is, that most of the existing code bases in most projects are only marginally more comprehensible than a core dump. Comments are not what makes code maintainable, it is the ideas behind the constructs and the design-mistakes that preceded them. Most software is not only not documented in this way, but not documented at all. Pictures would help a lot, too, but virtually nobody uses pictures because Word Graphics and Visio suck so much and scanning in inked sketches is deemed &#8220;unprofessional&#8221;. And most programmers neither enjoy nor excel in putting their ideas into words. &#8220;Damn the torpedos &#8212; full speed ahead!&#8221; is the official motto. And it improves job security if nobody knows how your code works. </p>
<p>5.) Programming = Easy in principle, just the tools suck<br />
This is the result of other the other errors listed here. Many people, and<br />
this includes me, don&#8217;t know by heart in which direction you have to<br />
turn a screw to fasten it. They (literally) blow a fuse if they try to &#8220;fix&#8221; some electrical wiring in their homes and make a complete butt of themselves when they venture to paper the living room. Tim Allen has built a spiritual empire on craftsmanship, or lack thereof. Virtually everybody outside of hardcore do-it-yourself circles and actual professionals are ready to admit that they cannot fix a car, cannot build a house or cannot sew a button (I can sew buttons, by the way, I learned it in the army).<br />
When it comes  to computers, everybody blames the programmers and<br />
the industry because Marsha and Harvey can&#8217;t make the internet or the printer work or can&#8217;t write their own stock analysis programs.<br />
This is a little weird because it is like blaming the bricks for the fact that<br />
most of us can&#8217;t build our own homes. Or like blaming the scalpel industry for not providing the tools to clip our own appendices. &#8220;Hey! It&#8217;s not rocket science! Just inject the fentanyl, cut your belly, pull out the kidney, cut off, stuff the kidney back in and sew the skin &#8212; how hard is that supposed to be? Do I really need to study for ten years for that? Oh, those propellor-hats are so geeky and have absolutely no clue what makes real people tick&#8230;&#8221; You catch my drift or so I hope. This pollution probably stems from the fact that computers USED to be awkward to use until the Macintosh arrived and made a difference. Since then, usability has been radically improved, but the audience is stuck in complaining- and fingerpointing mode. This brings us to the next issue.</p>
<p>6.) Programming = Desktop Publishing, ca. 1985<br />
Typesetting used to be the exclusive domain of, uhm, typesetters. Then<br />
laserprinters and Adobe came along and empowered ordinary people to<br />
create exceptionally bad artwork and diner menus that looked like extortion mail assembled from cut-out newspaper letters. Finally the geeks had produced something useful! Finally computers could be used by ordinary people to get some real work done! It&#8217;s all point and click, what you see is what you get! Next, let&#8217;s empower the user to write his own software! How hard can that be?<br />
The problem is that programming is about sweating the small stuff, lots of it. Programming is not about manipulating images or data, it is about constructing an imaginary machine consisting of thousands of moving parts. The attractive thing about programming is that you can control every detail of the software. What you can say becomes reality, just say it comprehensively and don&#8217;t forget the details. This is in stark contrast to the &#8220;Fido &#8211; go&#8230; fido &#8211; bad dog&#8230; fido&#8230; over there! fido&#8230; fetch stick&#8221;-world of graphical user interfaces. Point-and-click-WYSIWYG monkeys can only dream of the power command-line jockeys and programmers have at their disposal. What most people overlook is that fido and the countless details cannot be reconciled. It is not &#8220;making programming available to regular folks &#8212; how hard is that, you idiots?&#8221;, it is the other way around: &#8220;Just SAYING what you want in a precise, unambigous language and actually GETTING it immediately &#8212; how much easier do you want that, you idiots?&#8221; The only thing that gets in the way is that most people cannot even say what they want because the sheer complexity of all the interdependent details overwhelms them, i.e. their window of consciousness is too small. As another poor analogy, it is like a world in which you can immediately have any concubine for real that you can draw with a pencil &#8212; sounds like  the bomb until you realize that your drawing skills are limited to cubistic stickfigures. Artists would say &#8220;How much easier do you want that?&#8221; and rightly so. Most users overlook that imaginary things are not limited in the way physical things are, but they are limited by imagination. </p>
<p>7.) Programming = antisocial</p>
<p>The geek is the prototype of the introvert boffin who prefers to talk to his machines instead of other people. The fact that borderline-autism really is an occupational disease among programmers does not imply that programming REQUIRES boffins. Alright, it takes concentration and dedication to work on a software project, but communicating ideas and convincing people of them is a very important part. Every geek loves to point to the pointy-haired boss and call him a bone-head, but I have seen geeks who failed to convince their superiors of their grand schemes and ended up with implementing brain-damaged designs because they could not make a coherent statement about how and why their concepts would work better. I&#8217;m not talking about a nimble sales-pitch here, I&#8217;m talking about a brief, structured introduction that is not oozing arcane jargon from every pore. Most programming projects have incredible deficits in coordination and control because the team-members don&#8217;t talk to each other and don&#8217;t write anything down except for code. The team-members constitute a mob of boffins only vaguely aware of what the others are doing. This is in gross contrast to even the most primitive bare-feet army unit or soccer team that understands the importance of organisation and communication. Most software shops would benefit a lot from addressing this problem, either by making hiring of chatterboxes and essayists a priority or adequate professional training. Maybe it would be the best idea to start sending the propellor hats to a dating counselour and have them improve their communication skills in the jungle &#8212; for free. The problem is so severe that for most software shops the best thing that can happen is when their programmers are wasting their time sitting in the cafeteria talking to each other or getting liquored up together after hours. </p>
<p>8.) Programming = a necessary evil<br />
Most businesses are not about software. That&#8217;s what the people running<br />
these businesses think. This observation is increasingly false because<br />
in today&#8217;s highly competitive business better processes are the only way<br />
to cut costs and get an edge. Just ask Michael Dell&#8230; he is in the PC business, alright, but what made him the king of the hill is not building<br />
PCs, but building them exceptionally efficiently. Dell has the best logistics,<br />
the best quality management and the best automatization &#8212; in a word,<br />
Dell has the best SOFTWARE. In related news, I&#8217;m hearing that Wal-Mart, probably the most streamlined company on earth, constantly tries to become more efficient by forcing vendors to integrate their IT with Wal-Mart&#8217;s IT. In a word, Wal-Mart puts a lot effort into systemic integration of software systems. And now they want to deploy RFID on a large scale, probably a very large and sophisticated SOFTWARE project. I seriously doubt that Wal-Mart is outsourcing this stuff. I rather think that important parts of Wal-Mart consider themselves as software-shops that happen to move merchandise. I think Wal-Mart and Dell consider their software as important asset that makes or breaks their companies. They fear that someone could upstage them by writing better software. Seen in this light, if mathematics is the queen of science, programming is not only the queen of engineering, but also the queen of business management. The problem is, not only their bosses, but most programmers themselves don&#8217;t see it this way. They are oblivious to the fact that they are not only building something, but that they are building something that is advancing civilization, like a new invention or a new scientific theory, that saves some or many companies money if executed well. New software will make some other software or some people redundant and can be replaced only by even newer and better software. They don&#8217;t know that good, specialized software can contribute to the bottom line tremendously and might make or break their company. Unfortunately, their managers confirm this bogus contempt because, after all, they are higher up in the food chain and have bigger offices. This gets us to the last point.</p>
<p>9.) Programming = lowly</p>
<p>If you want more money as a programmer, there is a limit on how much you can get as a programmer. If you have the aforementioned &#8220;big window of consciousness&#8221; and churn out code at prodigy levels, you might be happy with what you got and live happily ever after behind your IDE until retirement unless your company goes down the tubes for some reason. If your boss is smart, he does not step on this setup and lets you do your work. If your boss wants to do you good, he will raise your salary a little, just to keep you in the company. Less enlightened bosses might arrive at the idea that you are so good at what you do, you should become a manager yourself. The result is that you might be happy with your career move, but unhappy in your new assignment. What&#8217;s worse, you might suck as a manager, at least you won&#8217;t be as good as a programmer. Virtually no company has a policy that you can make substantial amounts of money as a programmer &#8212; your boss will always get more than you do, period. The only way to get a programmer more money is to make him a programmer-manager. This is insane because good, expensive programmers are no replacement for any number of bad, cheap programmers. This is because you need ONE BIG window of consicousness, not many little windows of consciousness. And as pointed out above, good programmers can make or break your company. Hollywood understands this better than the rest of the world. The idea of making a popular, charismatic actor an extra-manager is obviously bad. Some have tried to make a popular, charismatic actor a director, with frequently catastrophic results. Refraining from such a practice is not limited to actors in hollywood, it applies to screen writers, costume designers and photographers as well. Why make a super-costume designer an inferior director or producer? If you want to reward them for their performance, just throw money at them and keep them busy. Never mind that the star might get more money than the director or that the FX experts take home more than the executive producer. You need them because they make or break your movie. You have to spend money to make money &#8212; everybody knows this but keeps forgetting it when it comes to feed and care of programmers. </p>
<p>Excuse me for getting carried away with all those details, but they do relate to the topic at hand (programming languages, as I remember) because software is all about little details interacting in unexpected ways, so good and bad programming languages are rooted in contemporary business practices, professional practices and programmer folkore. Unfortunately, most of these are bogus and will be utterly puzzling to later generations of geeks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jao</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-41</link>
		<dc:creator><![CDATA[jao]]></dc:creator>
		<pubDate>Fri, 20 Jan 2006 02:27:49 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-41</guid>
		<description><![CDATA[JadePhilosopher, i honestly think that your points hinge on a misunderstanding of what i&#039;m trying to say. So i will recognise offhand MY ZEROTH FAILURE, namely, being unable to convey my points in an understandable manner. Thus, i don&#039;t think my trying again would get us much further. Instead, let me just add two comments to yours. First, of course not all tasks require geniuses with cosmic powers; but every task requires a minimum set of skills to be done properly, and my (possibly wrong) impression is that many people in both the industry and the academy are trying to get going without them (as reflected in the poor education students receive and in the low quality of mainstream, commercial software). Second, it&#039;s my belief that good *professional* programming is not possible without sound computer science underneath; as for easy-to-use computer languages, Smalltalk shows that one can have the best of both worlds. 

I guess i just made MY THIRD FAILURE and, with it, your case. Oh well. Alan Kay&#039;s &quot;pop culture&quot; interview, Joel Spolsky &quot;JavaSchools&quot; essay and reinhardgantar&#039;s (first) comment above beautifully describe what i was trying to say.

Thanks for sharing.]]></description>
		<content:encoded><![CDATA[<p>JadePhilosopher, i honestly think that your points hinge on a misunderstanding of what i&#8217;m trying to say. So i will recognise offhand MY ZEROTH FAILURE, namely, being unable to convey my points in an understandable manner. Thus, i don&#8217;t think my trying again would get us much further. Instead, let me just add two comments to yours. First, of course not all tasks require geniuses with cosmic powers; but every task requires a minimum set of skills to be done properly, and my (possibly wrong) impression is that many people in both the industry and the academy are trying to get going without them (as reflected in the poor education students receive and in the low quality of mainstream, commercial software). Second, it&#8217;s my belief that good *professional* programming is not possible without sound computer science underneath; as for easy-to-use computer languages, Smalltalk shows that one can have the best of both worlds. </p>
<p>I guess i just made MY THIRD FAILURE and, with it, your case. Oh well. Alan Kay&#8217;s &#8220;pop culture&#8221; interview, Joel Spolsky &#8220;JavaSchools&#8221; essay and reinhardgantar&#8217;s (first) comment above beautifully describe what i was trying to say.</p>
<p>Thanks for sharing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: reinhardgantar</title>
		<link>http://programming-musings.org/2006/01/19/as-simple-as-possible/#comment-40</link>
		<dc:creator><![CDATA[reinhardgantar]]></dc:creator>
		<pubDate>Fri, 20 Jan 2006 02:23:25 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2006/01/19/as-simple-as-possible/#comment-40</guid>
		<description><![CDATA[YOUR BIG MISTAKE is that you are trying to channel Steven Seagal in
&quot;Big Honcho Really Kicks Butt in LA&quot;. I&#039;m not really sure that this was really
the title of that particular Steven Seagal-movie, but I&#039;m sure that it was 
something with REAL ATTITUDE. I like 
attitude, especially if it is paired with total neglect of what I&#039;ve actually said. It gives me the warm feeling that I have to repeat what I&#039;ve said in
other, more elaborate words. And I like hearing my own voice just like the next guy.
I congratulate you and your son to your programming endeavours as ten-year olds, but I don&#039;t think this anecdote implies that I confuse programming with computer science. And I also doubt that one can be a competent programmer without knowing what a subroutine is, no matter
how modest the goals are this one is trying to achieve. 

Neither was I talking about genies with phenomenal cosmic powers. I was
talking about building complex software and using the right tools for it.
Of course you don&#039;t need an MD to give you a band-aid, but you are 
probably glad that there are MDs to remove a brain-tumor. You are
probably glad that those specialists don&#039;t use bolt crappers for fixing
your brain. I opinionated that current evolutionary forces in the software industry put pressure on a one-size-fits-all approach and the lowest common denominator. Neither did I say nor mean that everybody should
use Lisp or Smalltalk. You admitted, and we agree here, that you don&#039;t want bridges and skyscrapers being built in an unprofessional way or with
inadequate tools. It is amazing that you talk about me failing to see this
when this is exactly what I&#039;m proposing. It is one of those rare moments when somebody says: You are wrong and I&#039;m right because you agree with me. What gives? Quoting you: &quot;I don&#039;t think that ANYONE is recommending that computer sciense be dumbed down&quot;. I don&#039;t think that CS should be dumbed down either, and it escapes me how you&#039;d think that I do. As an aside: There ARE people who think computer science should be dumbed down, and this is a controversial subject. Joel has written a recent piece on this here: http://www.joelonsoftware.com/items/2005/12/29.html. What I&#039;ve actually said is that vocational schools should smarten up. 

Well, doing a little channeling of good ol&#039; Stevo Seagal myself, I&#039;d say your PRINCIPAL FAILURE is that you are dreaming of hot popsicles, as revealed in the last sentence: &quot;Some of [the programming languages] must become both powerful and simple enough to be useful for ordinary people.&quot; This
is a ridicolous demand for two reasons. 1.) Ordinary people, i.e. 50 percent of the population, cannot even calculate how many hours are in 285 minutes.  About 20% of them can&#039;t even read. I think this severely hampers any programming ambition, no matter how simple the programming language. Maybe a bingo-, swim-suit- or monster-wheel- programming language could do the trick, but I have serious doubts about this one. Call me elitist. Anyways, more importantly, 2.) you can&#039;t have a powerful AND simple programming language. A programming language is a purely mental artifact, only limited by imagination, or understanding. You can have a powerful, but simple car because the engine does all the work, it&#039;s not the model in your head that makes it powerful. When it comes to imaginary artefacts, simplicity equals primitivity because it is your understanding that makes it powerful. However, you are in good company with this delusion. Very many people, even whole companies, have been chasing this phony grail for decades. Now I&#039;m curious how you will continue arguing with me, that is, with yourself. Next time please channel Arnold Schwarzenegger with &quot;BIG MISTAKE&quot; or &quot;HAST LA VISTA BABY&quot; because Arnie has way more class than Steve Seagal. He sucks as governor, though. I&#039;LL BE BACK.]]></description>
		<content:encoded><![CDATA[<p>YOUR BIG MISTAKE is that you are trying to channel Steven Seagal in<br />
&#8220;Big Honcho Really Kicks Butt in LA&#8221;. I&#8217;m not really sure that this was really<br />
the title of that particular Steven Seagal-movie, but I&#8217;m sure that it was<br />
something with REAL ATTITUDE. I like<br />
attitude, especially if it is paired with total neglect of what I&#8217;ve actually said. It gives me the warm feeling that I have to repeat what I&#8217;ve said in<br />
other, more elaborate words. And I like hearing my own voice just like the next guy.<br />
I congratulate you and your son to your programming endeavours as ten-year olds, but I don&#8217;t think this anecdote implies that I confuse programming with computer science. And I also doubt that one can be a competent programmer without knowing what a subroutine is, no matter<br />
how modest the goals are this one is trying to achieve. </p>
<p>Neither was I talking about genies with phenomenal cosmic powers. I was<br />
talking about building complex software and using the right tools for it.<br />
Of course you don&#8217;t need an MD to give you a band-aid, but you are<br />
probably glad that there are MDs to remove a brain-tumor. You are<br />
probably glad that those specialists don&#8217;t use bolt crappers for fixing<br />
your brain. I opinionated that current evolutionary forces in the software industry put pressure on a one-size-fits-all approach and the lowest common denominator. Neither did I say nor mean that everybody should<br />
use Lisp or Smalltalk. You admitted, and we agree here, that you don&#8217;t want bridges and skyscrapers being built in an unprofessional way or with<br />
inadequate tools. It is amazing that you talk about me failing to see this<br />
when this is exactly what I&#8217;m proposing. It is one of those rare moments when somebody says: You are wrong and I&#8217;m right because you agree with me. What gives? Quoting you: &#8220;I don&#8217;t think that ANYONE is recommending that computer sciense be dumbed down&#8221;. I don&#8217;t think that CS should be dumbed down either, and it escapes me how you&#8217;d think that I do. As an aside: There ARE people who think computer science should be dumbed down, and this is a controversial subject. Joel has written a recent piece on this here: <a href="http://www.joelonsoftware.com/items/2005/12/29.html" rel="nofollow">http://www.joelonsoftware.com/items/2005/12/29.html</a>. What I&#8217;ve actually said is that vocational schools should smarten up. </p>
<p>Well, doing a little channeling of good ol&#8217; Stevo Seagal myself, I&#8217;d say your PRINCIPAL FAILURE is that you are dreaming of hot popsicles, as revealed in the last sentence: &#8220;Some of [the programming languages] must become both powerful and simple enough to be useful for ordinary people.&#8221; This<br />
is a ridicolous demand for two reasons. 1.) Ordinary people, i.e. 50 percent of the population, cannot even calculate how many hours are in 285 minutes.  About 20% of them can&#8217;t even read. I think this severely hampers any programming ambition, no matter how simple the programming language. Maybe a bingo-, swim-suit- or monster-wheel- programming language could do the trick, but I have serious doubts about this one. Call me elitist. Anyways, more importantly, 2.) you can&#8217;t have a powerful AND simple programming language. A programming language is a purely mental artifact, only limited by imagination, or understanding. You can have a powerful, but simple car because the engine does all the work, it&#8217;s not the model in your head that makes it powerful. When it comes to imaginary artefacts, simplicity equals primitivity because it is your understanding that makes it powerful. However, you are in good company with this delusion. Very many people, even whole companies, have been chasing this phony grail for decades. Now I&#8217;m curious how you will continue arguing with me, that is, with yourself. Next time please channel Arnold Schwarzenegger with &#8220;BIG MISTAKE&#8221; or &#8220;HAST LA VISTA BABY&#8221; because Arnie has way more class than Steve Seagal. He sucks as governor, though. I&#8217;LL BE BACK.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

