<?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: Why Comp Sci Grads Can&#8217;t Hack (and why you need them anyway&#8230;)</title>
	<atom:link href="http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/feed/" rel="self" type="application/rss+xml" />
	<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/</link>
	<description>(notes from an average programmer studying the hard stuff)</description>
	<lastBuildDate>Thu, 21 May 2009 01:17:58 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: James Peckham</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1777</link>
		<dc:creator>James Peckham</dc:creator>
		<pubDate>Sat, 01 Mar 2008 00:59:22 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1777</guid>
		<description>I am a &quot;street programmer&quot; and i liked your article. It is definitely interesting how most of the CS grads we come into contact with are clueless when it comes to the specifics of a lanuage or the real way to implement a solution.</description>
		<content:encoded><![CDATA[<p>I am a &#8220;street programmer&#8221; and i liked your article. It is definitely interesting how most of the CS grads we come into contact with are clueless when it comes to the specifics of a lanuage or the real way to implement a solution.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Charles Agenda &#187; Blog Archive &#187; Quick tab sweep</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1744</link>
		<dc:creator>Colin Charles Agenda &#187; Blog Archive &#187; Quick tab sweep</dc:creator>
		<pubDate>Wed, 16 Jan 2008 09:51:19 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1744</guid>
		<description>[...] Why Comp Sci Grads Can&#8217;t Hack (and why you need them anyway&#8230;) - Its refreshing seeing this in words, from someone else, other than me. Reading this, and the article that spurred it: Is Computer Science Dying? &gt; Computer Scientists Can&#8217;t Program! can be pretty useful. A 3-4 year bachelors teaches you an array of languages and concepts, that in the end, one becomes something of a &#8220;know it all&#8221;, yet not an expert in any domain. There is just no room for you to become an expert, because the curriculum just isn&#8217;t free-flowing. Writing a library management system over and over again, in a different language even, just makes no sense at all, does it? (I picked on a library management system because Ditesh, Prabu and I had a good laugh about this yesterday). [...]</description>
		<content:encoded><![CDATA[<p>[...] Why Comp Sci Grads Can&#8217;t Hack (and why you need them anyway&#8230;) &#8211; Its refreshing seeing this in words, from someone else, other than me. Reading this, and the article that spurred it: Is Computer Science Dying? &gt; Computer Scientists Can&#8217;t Program! can be pretty useful. A 3-4 year bachelors teaches you an array of languages and concepts, that in the end, one becomes something of a &#8220;know it all&#8221;, yet not an expert in any domain. There is just no room for you to become an expert, because the curriculum just isn&#8217;t free-flowing. Writing a library management system over and over again, in a different language even, just makes no sense at all, does it? (I picked on a library management system because Ditesh, Prabu and I had a good laugh about this yesterday). [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sadek Drobi&#8217;s Blog &#187; Crosswords :: Decisions driven by productivity concerns: Reasons, implications and limitations</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1681</link>
		<dc:creator>Sadek Drobi&#8217;s Blog &#187; Crosswords :: Decisions driven by productivity concerns: Reasons, implications and limitations</dc:creator>
		<pubDate>Sat, 05 Jan 2008 01:13:45 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1681</guid>
		<description>[...] are likely to occur and the product requires more and more customization. As highlighted by Lispy, many teams &#8220;implement awful hacks&quot; to adapt rapidly to new needs and &quot;to keep a client happy enough to keep the money coming in.&#8221; This is what he refers [...]</description>
		<content:encoded><![CDATA[<p>[...] are likely to occur and the product requires more and more customization. As highlighted by Lispy, many teams &#8220;implement awful hacks&quot; to adapt rapidly to new needs and &quot;to keep a client happy enough to keep the money coming in.&#8221; This is what he refers [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Myron</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1648</link>
		<dc:creator>Myron</dc:creator>
		<pubDate>Sun, 30 Dec 2007 01:32:29 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1648</guid>
		<description>@Brian, Re &quot;That being said, a team of developers should be a mix of people with different skills who can learn from each other and make the overall product better.&quot;

I agree, but I think this leads to the point that we&#039;re really missing here: a singular, good programmer is someone who can wear many hats (cs, seng, engr, math, writing and probably a few more for the right brain side of things).  Realistically, no one graduates with all of this and I think schools realize this.  Instead, they set out to give you a choice of degrees to start with as the basis for a good programming career.  The rest of the way is left to the individual in cooperation with whoever they work for or with.</description>
		<content:encoded><![CDATA[<p>@Brian, Re &#8220;That being said, a team of developers should be a mix of people with different skills who can learn from each other and make the overall product better.&#8221;</p>
<p>I agree, but I think this leads to the point that we&#8217;re really missing here: a singular, good programmer is someone who can wear many hats (cs, seng, engr, math, writing and probably a few more for the right brain side of things).  Realistically, no one graduates with all of this and I think schools realize this.  Instead, they set out to give you a choice of degrees to start with as the basis for a good programming career.  The rest of the way is left to the individual in cooperation with whoever they work for or with.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: slucas</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1617</link>
		<dc:creator>slucas</dc:creator>
		<pubDate>Thu, 27 Dec 2007 16:35:07 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1617</guid>
		<description>JFred is right about clueless management.  The dotcom era brought in a lot of phonies who claimed to be IT pros, web developers, etc. It also has affected reality of what it really takes to create a scalable system. These phonies some squirmed their way into management positions without any real IT experience. They have to schedule meetings to avoid decisions. A few of these so-called IT managers have CS degrees, some even masters. But generally, after 25 years in IT at all levels. The CS people fail. Some over analyze, some implement so many layers, even to talented can&#039;t save the projects. Don&#039;t forget to add the insecurity factor in the mix. I&#039;ve seen many projects fail because the manager is afraid to have anyone &quot;smarter&quot; than he on the project. Duh. If course, then there is the common sense factor. Probably, the most important skill over any IT, or CS or EE skill. Sorry for the vent. It just happens so often.</description>
		<content:encoded><![CDATA[<p>JFred is right about clueless management.  The dotcom era brought in a lot of phonies who claimed to be IT pros, web developers, etc. It also has affected reality of what it really takes to create a scalable system. These phonies some squirmed their way into management positions without any real IT experience. They have to schedule meetings to avoid decisions. A few of these so-called IT managers have CS degrees, some even masters. But generally, after 25 years in IT at all levels. The CS people fail. Some over analyze, some implement so many layers, even to talented can&#8217;t save the projects. Don&#8217;t forget to add the insecurity factor in the mix. I&#8217;ve seen many projects fail because the manager is afraid to have anyone &#8220;smarter&#8221; than he on the project. Duh. If course, then there is the common sense factor. Probably, the most important skill over any IT, or CS or EE skill. Sorry for the vent. It just happens so often.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mr T.</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1615</link>
		<dc:creator>Mr T.</dc:creator>
		<pubDate>Thu, 27 Dec 2007 13:52:33 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1615</guid>
		<description>If you try to teach people how to program you need to teach them something that looks like Pascal. If you don&#039;t do that, you will spend endless time trying to rescue people lost in weird syntax badlands. And they will have problems finishing their tasks.

Any language that uses curly braces will mess up the students minds and they should not be exposed to those languages before they can program.

In ancient times C++ shops would recruit people who started out with Ada because they were far better programmers than people who started out with C++. 

A 50% reduction in time spent to finish a task was never an argument for Comp Sci graduates to change programming language. So much for science.

greetings,</description>
		<content:encoded><![CDATA[<p>If you try to teach people how to program you need to teach them something that looks like Pascal. If you don&#8217;t do that, you will spend endless time trying to rescue people lost in weird syntax badlands. And they will have problems finishing their tasks.</p>
<p>Any language that uses curly braces will mess up the students minds and they should not be exposed to those languages before they can program.</p>
<p>In ancient times C++ shops would recruit people who started out with Ada because they were far better programmers than people who started out with C++. </p>
<p>A 50% reduction in time spent to finish a task was never an argument for Comp Sci graduates to change programming language. So much for science.</p>
<p>greetings,</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JFred</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1613</link>
		<dc:creator>JFred</dc:creator>
		<pubDate>Thu, 27 Dec 2007 12:22:29 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1613</guid>
		<description>I&#039;ve been coding and learning and taking courses since the 1960&#039;s.  There was no undergraduate major in CS back then.

Being a good &#039;street programmer&#039; or hacker is an excellent background for understanding CS courses.  I found that I understood the questions automatically and the answers reasonable soon.  It also helped me get through my projects more quickly.

I also found that CS courses made me a much better programmer, and wish I could have taken a graduate degree in CS, but that just wasn&#039;t practical.

Nothing, however, prepares you for dealing with truly clueless management.  The only solution is to be the manager.  I&#039;ve worked for people who actually did not know what a computer is.  Period.  This was extremely difficult.  Nowadays most managers have some computer experience (even if they&#039;re managing a shoe factory) or software development experience (if it&#039;s a software or web house).

Often overlooked is the need for an application specialist.  This can be a person who knows next to nothing about computers but is a real expert on the domain area, be it mathematics, accounting, the telephone network, aviation, whatever.   Getting questions answered and the requirements right is more than half the battle.  

This is because CS types, street programmers and hackers are often totally clueless about mathematics, accounting, the phone network, aviation, and so on.

In the US, but not Europe, Registered Nurses make more money than CS grads.  I think the RN&#039;s may have a harder job, too.  And certainly more responsibility.  I just thought you&#039;d like to know.

Engineering and physics have turned out to be good backgrounds for software developers, but I think a CS or SE degree is better.

One area that does not help much is the part of &quot;Software Engineering&quot; that studies methods, methodology, CASE tools, flowchart generators, UML, CMM, waterfall versus agile, and on and on.  They should, but they don&#039;t.  One reason is that in business, the structure of a project is dominated by budgets and schedules, and anything that contradicts that tends to get crushed.  This especially true in aerospace firms and the like.  It is less true in advanced software organizations like Google and Microsoft.  I think tools and solutions in these areas are needed, I just think we don&#039;t have them yet.  Of course, they&#039;ve been selling them for over 20 years.

Another area that hasn&#039;t helped is Verificationism.  This is the set of ideas to &quot;Prove programs correct&quot;.  Someday we&#039;ll have tools in the bigger IDE&#039;s to help us do this, but that day is not here.  And bigger IDE&#039;s may require enormous computing resources.  100 cores, anyone?  In a laptop?

Large teams of developers are hard to organize and manage.  Communication is harder.  Higher level languages enable development with smaller teams.  Ruby, Python and Lisp lead the way, Perl too, but there has to be a next step, a higher level language that will enable even more functionality from manageable human resources.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been coding and learning and taking courses since the 1960&#8217;s.  There was no undergraduate major in CS back then.</p>
<p>Being a good &#8217;street programmer&#8217; or hacker is an excellent background for understanding CS courses.  I found that I understood the questions automatically and the answers reasonable soon.  It also helped me get through my projects more quickly.</p>
<p>I also found that CS courses made me a much better programmer, and wish I could have taken a graduate degree in CS, but that just wasn&#8217;t practical.</p>
<p>Nothing, however, prepares you for dealing with truly clueless management.  The only solution is to be the manager.  I&#8217;ve worked for people who actually did not know what a computer is.  Period.  This was extremely difficult.  Nowadays most managers have some computer experience (even if they&#8217;re managing a shoe factory) or software development experience (if it&#8217;s a software or web house).</p>
<p>Often overlooked is the need for an application specialist.  This can be a person who knows next to nothing about computers but is a real expert on the domain area, be it mathematics, accounting, the telephone network, aviation, whatever.   Getting questions answered and the requirements right is more than half the battle.  </p>
<p>This is because CS types, street programmers and hackers are often totally clueless about mathematics, accounting, the phone network, aviation, and so on.</p>
<p>In the US, but not Europe, Registered Nurses make more money than CS grads.  I think the RN&#8217;s may have a harder job, too.  And certainly more responsibility.  I just thought you&#8217;d like to know.</p>
<p>Engineering and physics have turned out to be good backgrounds for software developers, but I think a CS or SE degree is better.</p>
<p>One area that does not help much is the part of &#8220;Software Engineering&#8221; that studies methods, methodology, CASE tools, flowchart generators, UML, CMM, waterfall versus agile, and on and on.  They should, but they don&#8217;t.  One reason is that in business, the structure of a project is dominated by budgets and schedules, and anything that contradicts that tends to get crushed.  This especially true in aerospace firms and the like.  It is less true in advanced software organizations like Google and Microsoft.  I think tools and solutions in these areas are needed, I just think we don&#8217;t have them yet.  Of course, they&#8217;ve been selling them for over 20 years.</p>
<p>Another area that hasn&#8217;t helped is Verificationism.  This is the set of ideas to &#8220;Prove programs correct&#8221;.  Someday we&#8217;ll have tools in the bigger IDE&#8217;s to help us do this, but that day is not here.  And bigger IDE&#8217;s may require enormous computing resources.  100 cores, anyone?  In a laptop?</p>
<p>Large teams of developers are hard to organize and manage.  Communication is harder.  Higher level languages enable development with smaller teams.  Ruby, Python and Lisp lead the way, Perl too, but there has to be a next step, a higher level language that will enable even more functionality from manageable human resources.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1609</link>
		<dc:creator>Kevin</dc:creator>
		<pubDate>Thu, 27 Dec 2007 09:02:16 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1609</guid>
		<description>@Brian

I don&#039;t believe that&#039;s true. There&#039;s no reason a mechanical engineer would be a better programmer than a CS major. If both get their degrees and then learn software development, most likely the CS major will blow the MechE out of the water.

I like the analogy of physics:bridges as CS:software. You could train a physicist to be a great bridge builder, but he won&#039;t come out of his undergraduate degree being one! The same goes for the CS grad.</description>
		<content:encoded><![CDATA[<p>@Brian</p>
<p>I don&#8217;t believe that&#8217;s true. There&#8217;s no reason a mechanical engineer would be a better programmer than a CS major. If both get their degrees and then learn software development, most likely the CS major will blow the MechE out of the water.</p>
<p>I like the analogy of physics:bridges as CS:software. You could train a physicist to be a great bridge builder, but he won&#8217;t come out of his undergraduate degree being one! The same goes for the CS grad.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dominic Chambers</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1589</link>
		<dc:creator>Dominic Chambers</dc:creator>
		<pubDate>Thu, 27 Dec 2007 04:49:15 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1589</guid>
		<description>I think you&#039;re making this too complicated. IMO there are only 3 primary skills a software engineer needs to master:

1. how to program (or, how to represent a conceptual problem in a programming language)
2. generalization (or, how not to copy &amp; paste)
3. abstraction (or, how to find the most dumbed down way of communicating with some external module(s) that still allows us to achieve everything we want without being affected by major refactoring)

Now, these 3 problems take about 10 years-ish for a really smart dev. to fully crack. Let&#039;s say, for arguments sake, a year for the first, a few years for the second, and the rest of the time for the third. The reason for that is because it requires much longer to get burned by screwing up abstraction then it does by screwing up generalization, and so there is a quicker feedback loop, and so learning happens at a quicker pace.

Now, there are shit loads of secondary skills -- too many to iterate, but some include:

visually representing problem domains -- knowing when to use them and which diagram types to use
time complexity analysis -- being able to immediately appreciate when one algorithim is significantly faster than other (i.e. the difference between seconds, hours, and infinity) and learning not to waste time with insignificant optimizations except where they are shown to be on the critical path

For me, even though CompSci doesn&#039;t create good programmers (and it certainly doesn&#039;t have the 10 years to create great programmers), it is still a great curriculum because it encourages people to think pure thoughts (even if they&#039;re not great at implementing them) and leaves the dirt and grime of real development for the on job. If you can remember the higher aspirational goals the CompSci people taught you, you&#039;ll be less like to miss a trick, and forge ahead with an approach when a much more elegant one is available.

That&#039;s basically it. The perfect example of this is all the donuts that use regexps for modifying code, and of course it&#039;s full of bugs!!! If they didn&#039;t remember their parser class at this point then WTF!</description>
		<content:encoded><![CDATA[<p>I think you&#8217;re making this too complicated. IMO there are only 3 primary skills a software engineer needs to master:</p>
<p>1. how to program (or, how to represent a conceptual problem in a programming language)<br />
2. generalization (or, how not to copy &amp; paste)<br />
3. abstraction (or, how to find the most dumbed down way of communicating with some external module(s) that still allows us to achieve everything we want without being affected by major refactoring)</p>
<p>Now, these 3 problems take about 10 years-ish for a really smart dev. to fully crack. Let&#8217;s say, for arguments sake, a year for the first, a few years for the second, and the rest of the time for the third. The reason for that is because it requires much longer to get burned by screwing up abstraction then it does by screwing up generalization, and so there is a quicker feedback loop, and so learning happens at a quicker pace.</p>
<p>Now, there are shit loads of secondary skills &#8212; too many to iterate, but some include:</p>
<p>visually representing problem domains &#8212; knowing when to use them and which diagram types to use<br />
time complexity analysis &#8212; being able to immediately appreciate when one algorithim is significantly faster than other (i.e. the difference between seconds, hours, and infinity) and learning not to waste time with insignificant optimizations except where they are shown to be on the critical path</p>
<p>For me, even though CompSci doesn&#8217;t create good programmers (and it certainly doesn&#8217;t have the 10 years to create great programmers), it is still a great curriculum because it encourages people to think pure thoughts (even if they&#8217;re not great at implementing them) and leaves the dirt and grime of real development for the on job. If you can remember the higher aspirational goals the CompSci people taught you, you&#8217;ll be less like to miss a trick, and forge ahead with an approach when a much more elegant one is available.</p>
<p>That&#8217;s basically it. The perfect example of this is all the donuts that use regexps for modifying code, and of course it&#8217;s full of bugs!!! If they didn&#8217;t remember their parser class at this point then WTF!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1588</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Thu, 27 Dec 2007 03:12:53 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/11/30/why-compsci-grads-cant-hack-and-why-you-need-them-anyway/#comment-1588</guid>
		<description>I really believe that engineering (non computer) provide a much better background than CS.  Software development is first and foremost about solving problems which is what engineers traditionally train for.  The tools are necessary to get there but they aren&#039;t the goal of the software.  That being said, a team of developers should be a mix of people with different skills who can learn from each other and make the overall product  better.</description>
		<content:encoded><![CDATA[<p>I really believe that engineering (non computer) provide a much better background than CS.  Software development is first and foremost about solving problems which is what engineers traditionally train for.  The tools are necessary to get there but they aren&#8217;t the goal of the software.  That being said, a team of developers should be a mix of people with different skills who can learn from each other and make the overall product  better.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
