<?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: Meet the New Problem&#8230; Same as the old Problem</title>
	<atom:link href="http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/feed/" rel="self" type="application/rss+xml" />
	<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/</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: Advanced Codemunging: A Report from the Trenches &#171; Learning Lisp</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1843</link>
		<dc:creator>Advanced Codemunging: A Report from the Trenches &#171; Learning Lisp</dc:creator>
		<pubDate>Wed, 14 May 2008 11:17:31 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1843</guid>
		<description>[...] I wasted some time blogging about programming practices and things gradually culminated into a manifesto of sorts. While I now had enough technical know-how to address some of the biggest problems [...]</description>
		<content:encoded><![CDATA[<p>[...] I wasted some time blogging about programming practices and things gradually culminated into a manifesto of sorts. While I now had enough technical know-how to address some of the biggest problems [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1231</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Sat, 15 Dec 2007 01:23:28 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1231</guid>
		<description>I should mention that another obstacle is the baggage that a language brings with it, like how it flags errors, and how it enables debugging. When you&#039;re creating a language you&#039;re literally creating a new model for computing, so it pays to take a holistic approach to it.</description>
		<content:encoded><![CDATA[<p>I should mention that another obstacle is the baggage that a language brings with it, like how it flags errors, and how it enables debugging. When you&#8217;re creating a language you&#8217;re literally creating a new model for computing, so it pays to take a holistic approach to it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1230</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Sat, 15 Dec 2007 01:19:08 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1230</guid>
		<description>@Lispy:

Alright. I misunderstood you. It just seemed like you went right from the ad to implying a host of problems with the job. It left me wondering, &quot;Hmm. Perhaps Lispy is a bit jaded and is venting?&quot; I didn&#039;t follow the links. Perhaps that would&#039;ve filled me in.

I agree with you about ownership of the code and trying to make improvements to the architecture (like using your library) over time. My main obstacle with some jobs has been I don&#039;t have the time to do the project right. The budget is constrained by the customer, so even if I wanted to do it up right and had ownership, the budget doesn&#039;t allow it unless I feel like doing it gratis. On bigger corporate projects I&#039;ve been able to sneak in refactoring as part of bug fixing, but I agree, it has to be innocuous.

I think the reason employers get queezy about developers creating their own languages is the prospect that from then on every developer they hire will have to learn it. I think that&#039;s an expectation most employers should have anyway, but in this age when knowing a popular language is the expected norm in business it can be difficult to get over that hump. I think something that can set their mind at ease is if you make a commitment (this may require stressing the importance of this with your employer) to write documentation for the language, and do it well, so that others can learn it easily. The reason I say &quot;stress the importance&quot; is it needs to be a project task. Unless it&#039;s real simple it&#039;s not something that can be written up in a half-hour.</description>
		<content:encoded><![CDATA[<p>@Lispy:</p>
<p>Alright. I misunderstood you. It just seemed like you went right from the ad to implying a host of problems with the job. It left me wondering, &#8220;Hmm. Perhaps Lispy is a bit jaded and is venting?&#8221; I didn&#8217;t follow the links. Perhaps that would&#8217;ve filled me in.</p>
<p>I agree with you about ownership of the code and trying to make improvements to the architecture (like using your library) over time. My main obstacle with some jobs has been I don&#8217;t have the time to do the project right. The budget is constrained by the customer, so even if I wanted to do it up right and had ownership, the budget doesn&#8217;t allow it unless I feel like doing it gratis. On bigger corporate projects I&#8217;ve been able to sneak in refactoring as part of bug fixing, but I agree, it has to be innocuous.</p>
<p>I think the reason employers get queezy about developers creating their own languages is the prospect that from then on every developer they hire will have to learn it. I think that&#8217;s an expectation most employers should have anyway, but in this age when knowing a popular language is the expected norm in business it can be difficult to get over that hump. I think something that can set their mind at ease is if you make a commitment (this may require stressing the importance of this with your employer) to write documentation for the language, and do it well, so that others can learn it easily. The reason I say &#8220;stress the importance&#8221; is it needs to be a project task. Unless it&#8217;s real simple it&#8217;s not something that can be written up in a half-hour.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lispy</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1212</link>
		<dc:creator>lispy</dc:creator>
		<pubDate>Fri, 14 Dec 2007 14:09:59 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1212</guid>
		<description>Mark... we don&#039;t seem to be connecting on this one.  I don&#039;t have any axe to grind with .Net&#039;s language integration features or even with the fact that &quot;better&quot; tools are being set aside for &quot;popular&quot; ones.

I also don&#039;t have any problem with the ad or with the people that run shops like that.  I was looking for a specific example to give a real context to the discussion.  I chose that one in particular after reading though about 6 or 8 postings because it sounded sorta like the kind of pressures that gave rise to Ruby on Rails-- and as a bonus it was more or less the same problem that Paul Graham solved back in the nineties up in his attic with a couple of other Lisp hackers.  It sounded to me like a situation where custom tool construction even at the lone developer level would pay dividends in a matter of months.

If I was applying for the job, my main question would be who would have &quot;ownership&quot; of the code.  Would I be allowed to refactor the code or not?

If I took the job, I would stay in maintenance mode for a while.  If I saw repetitive patterns accross the code base, I&#039;d start making a library.  I&#039;d review existing tools and libraries to make sure I wasn&#039;t reinvinting the wheel.  I&#039;d look at ways of increasing the configurability/adaptability of the classes/routines.

I&#039;d start using the new library on all new development work... and I would consider applying it to the older web pages if I ever had to go into them for a set of major changes or additions.  If it&#039;s possible to write Emacs macros to make automate some of the rewriting, I&#039;d do it even if it takes a little longer.

If the library was a big success and if even doing minor maintenance on the legacy pages was a pain, I&#039;d consider sneaking in and changing them some time.  If my library eliminated a certain class of bugs altogether, I&#039;d have all the more reason to do this.  If I didn&#039;t think I could pull the change off without anyone noticing, I&#039;d hesitate to do this.

At this point I&#039;d look at the code base and start trying to imagine the tool that would make my work even easier.  The place to look is... after I done all of the easy refactoring and made my library as powerful as I can... what&#039;s left?  Where&#039;s the muck?  It&#039;s at this point that we might be entering DSL and/or code generation territory.  (If we drink the .Net cool aide, we may even want to look at Workflow foundation here.)

Then we have the phase of dreaming about every aspect of the problem, reading books on the weekends, and building small proof of concept applications.  When the idea is hammered out enough, you have a business proposal on your hands: we can hire a &quot;junior&quot; programer to maintain all the old sites if we have this framework-- he&#039;ll be able to do so much without very much programming.  All the hard stuff is done.  I get to work on extending the framework so that we can expand the domain of people that we&#039;re selling to... and we take this business to the next level.  Something like that.

The tool vs. &quot;not tool&quot; dilemma is not really a big problem.  We should always have a &quot;tool&quot; mindset even when we&#039;re just trying to get stuff done.  The framework can slowly grow over time without a huge investment of time all at once... and it doesn&#039;t have to be implemented until it can justify its existence.</description>
		<content:encoded><![CDATA[<p>Mark&#8230; we don&#8217;t seem to be connecting on this one.  I don&#8217;t have any axe to grind with .Net&#8217;s language integration features or even with the fact that &#8220;better&#8221; tools are being set aside for &#8220;popular&#8221; ones.</p>
<p>I also don&#8217;t have any problem with the ad or with the people that run shops like that.  I was looking for a specific example to give a real context to the discussion.  I chose that one in particular after reading though about 6 or 8 postings because it sounded sorta like the kind of pressures that gave rise to Ruby on Rails&#8211; and as a bonus it was more or less the same problem that Paul Graham solved back in the nineties up in his attic with a couple of other Lisp hackers.  It sounded to me like a situation where custom tool construction even at the lone developer level would pay dividends in a matter of months.</p>
<p>If I was applying for the job, my main question would be who would have &#8220;ownership&#8221; of the code.  Would I be allowed to refactor the code or not?</p>
<p>If I took the job, I would stay in maintenance mode for a while.  If I saw repetitive patterns accross the code base, I&#8217;d start making a library.  I&#8217;d review existing tools and libraries to make sure I wasn&#8217;t reinvinting the wheel.  I&#8217;d look at ways of increasing the configurability/adaptability of the classes/routines.</p>
<p>I&#8217;d start using the new library on all new development work&#8230; and I would consider applying it to the older web pages if I ever had to go into them for a set of major changes or additions.  If it&#8217;s possible to write Emacs macros to make automate some of the rewriting, I&#8217;d do it even if it takes a little longer.</p>
<p>If the library was a big success and if even doing minor maintenance on the legacy pages was a pain, I&#8217;d consider sneaking in and changing them some time.  If my library eliminated a certain class of bugs altogether, I&#8217;d have all the more reason to do this.  If I didn&#8217;t think I could pull the change off without anyone noticing, I&#8217;d hesitate to do this.</p>
<p>At this point I&#8217;d look at the code base and start trying to imagine the tool that would make my work even easier.  The place to look is&#8230; after I done all of the easy refactoring and made my library as powerful as I can&#8230; what&#8217;s left?  Where&#8217;s the muck?  It&#8217;s at this point that we might be entering DSL and/or code generation territory.  (If we drink the .Net cool aide, we may even want to look at Workflow foundation here.)</p>
<p>Then we have the phase of dreaming about every aspect of the problem, reading books on the weekends, and building small proof of concept applications.  When the idea is hammered out enough, you have a business proposal on your hands: we can hire a &#8220;junior&#8221; programer to maintain all the old sites if we have this framework&#8211; he&#8217;ll be able to do so much without very much programming.  All the hard stuff is done.  I get to work on extending the framework so that we can expand the domain of people that we&#8217;re selling to&#8230; and we take this business to the next level.  Something like that.</p>
<p>The tool vs. &#8220;not tool&#8221; dilemma is not really a big problem.  We should always have a &#8220;tool&#8221; mindset even when we&#8217;re just trying to get stuff done.  The framework can slowly grow over time without a huge investment of time all at once&#8230; and it doesn&#8217;t have to be implemented until it can justify its existence.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1209</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Fri, 14 Dec 2007 10:35:36 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1209</guid>
		<description>@Lispy:

Though I&#039;m not really in the mood for defending .Net I feel the need to correct your premise that a job that requires a programmer to work in C# and VB.Net somehow makes it impossible to integrate the two. This is not the case. So long as they&#039;re compiled into separate assemblies one language can use the other&#039;s stuff very easily. That&#039;s one of the things .Net was designed for.

Your examples of &quot;what are we going to tell the developer?&quot; are based on reality for many shops, but I don&#039;t see the connection to the ad. A lot of programming ads are like this, even if they encourage best practices.

I think your argument boils down to computing architecture (in software); use what&#039;s appropriate. ocean&#039;s basic point is &quot;don&#039;t reinvent the wheel&quot;, I think. Both are valid points, IMO. The thing is our industry has a screwed up way of determining what&#039;s the best architecture for a job. By architecture I mean the language, the VM, and any frameworks that are used with it. Often what gets picked is out of what&#039;s popular, and that&#039;s the sole criteria, not what&#039;s most appropriate for the technical problem. You know as well as I do that the web architectures most places use is overly complex and I think it&#039;s fair to say &quot;rickety&quot;. It&#039;s improved from the days of Perl and C++, but the challenge is still how to keep track of session state. Seaside running in Squeak/Smalltalk handles this well by almost totally eliminating the need for the programmer to keep track of session state. Ruby on Rails does a good job of removing the complexity of modeling a database app. on the web. Though I haven&#039;t reviewed them, I&#039;m sure there are Lisp web frameworks that do a good job as well of managing these things. Here&#039;s the rub--hardly anyone uses these technologies. So what you get is the result of the &quot;worse is better&quot; mentality. So while &quot;don&#039;t reinvent the wheel&quot; is valid, I think we need to be looking at the &lt;i&gt;quality&lt;/i&gt; of the wheel before we make that argument. If the &quot;wheel&quot; we&#039;re using is squares on axles, and we&#039;re using that because that&#039;s what everyone else uses, then we deserve what we get...</description>
		<content:encoded><![CDATA[<p>@Lispy:</p>
<p>Though I&#8217;m not really in the mood for defending .Net I feel the need to correct your premise that a job that requires a programmer to work in C# and VB.Net somehow makes it impossible to integrate the two. This is not the case. So long as they&#8217;re compiled into separate assemblies one language can use the other&#8217;s stuff very easily. That&#8217;s one of the things .Net was designed for.</p>
<p>Your examples of &#8220;what are we going to tell the developer?&#8221; are based on reality for many shops, but I don&#8217;t see the connection to the ad. A lot of programming ads are like this, even if they encourage best practices.</p>
<p>I think your argument boils down to computing architecture (in software); use what&#8217;s appropriate. ocean&#8217;s basic point is &#8220;don&#8217;t reinvent the wheel&#8221;, I think. Both are valid points, IMO. The thing is our industry has a screwed up way of determining what&#8217;s the best architecture for a job. By architecture I mean the language, the VM, and any frameworks that are used with it. Often what gets picked is out of what&#8217;s popular, and that&#8217;s the sole criteria, not what&#8217;s most appropriate for the technical problem. You know as well as I do that the web architectures most places use is overly complex and I think it&#8217;s fair to say &#8220;rickety&#8221;. It&#8217;s improved from the days of Perl and C++, but the challenge is still how to keep track of session state. Seaside running in Squeak/Smalltalk handles this well by almost totally eliminating the need for the programmer to keep track of session state. Ruby on Rails does a good job of removing the complexity of modeling a database app. on the web. Though I haven&#8217;t reviewed them, I&#8217;m sure there are Lisp web frameworks that do a good job as well of managing these things. Here&#8217;s the rub&#8211;hardly anyone uses these technologies. So what you get is the result of the &#8220;worse is better&#8221; mentality. So while &#8220;don&#8217;t reinvent the wheel&#8221; is valid, I think we need to be looking at the <i>quality</i> of the wheel before we make that argument. If the &#8220;wheel&#8221; we&#8217;re using is squares on axles, and we&#8217;re using that because that&#8217;s what everyone else uses, then we deserve what we get&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Phelps</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1177</link>
		<dc:creator>Ryan Phelps</dc:creator>
		<pubDate>Thu, 13 Dec 2007 14:55:22 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1177</guid>
		<description>I&#039;ve usually seen that developers are so intent on forcing their problems to fit some existing framework or XML-powered whatsit that they lose sight of what their problem looks like. I&#039;ve found that developers who take pains to make their own tools and DSLs are usually competent and successful. What&#039;s really bad is when developers neither use existing tools nor create their own. 

I think that a developer&#039;s job is to evaluate existing tools and create custom tools as needed, taking into account the scope and lifetime of the project. There&#039;s a lot of leverage that can be had by creating a language or a framework, and I think history has shown that we shouldn&#039;t leave tool creation solely to the tool companies.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve usually seen that developers are so intent on forcing their problems to fit some existing framework or XML-powered whatsit that they lose sight of what their problem looks like. I&#8217;ve found that developers who take pains to make their own tools and DSLs are usually competent and successful. What&#8217;s really bad is when developers neither use existing tools nor create their own. </p>
<p>I think that a developer&#8217;s job is to evaluate existing tools and create custom tools as needed, taking into account the scope and lifetime of the project. There&#8217;s a lot of leverage that can be had by creating a language or a framework, and I think history has shown that we shouldn&#8217;t leave tool creation solely to the tool companies.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ocean</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1169</link>
		<dc:creator>ocean</dc:creator>
		<pubDate>Wed, 12 Dec 2007 23:22:23 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1169</guid>
		<description>Ok, I have a better idea where you&#039;re coming from. I will say I&#039;m all for developers leveraging good design, well thought out abstractions and automation. What I&#039;m suggesting though is that good engineering isn&#039;t about inventing new tools to solve new problems it&#039;s about reducing new problems such that they can be solved using existing tools. Insisting that the emphasis of software engineering ought not to be on the creation of new tools isn&#039;t quite the same as saying developers should never invent new tools. I&#039;d suggest that focusing on creating new tools and languages will lead to YAGNI because more than likely you&#039;re trying to solve a problem that has either already been solved well enough or is purely secondary to the domain. I think it&#039;s actually because developers are so intent on creating their own tools and languages that so little real progress is made in development.</description>
		<content:encoded><![CDATA[<p>Ok, I have a better idea where you&#8217;re coming from. I will say I&#8217;m all for developers leveraging good design, well thought out abstractions and automation. What I&#8217;m suggesting though is that good engineering isn&#8217;t about inventing new tools to solve new problems it&#8217;s about reducing new problems such that they can be solved using existing tools. Insisting that the emphasis of software engineering ought not to be on the creation of new tools isn&#8217;t quite the same as saying developers should never invent new tools. I&#8217;d suggest that focusing on creating new tools and languages will lead to YAGNI because more than likely you&#8217;re trying to solve a problem that has either already been solved well enough or is purely secondary to the domain. I think it&#8217;s actually because developers are so intent on creating their own tools and languages that so little real progress is made in development.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lispy</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1167</link>
		<dc:creator>lispy</dc:creator>
		<pubDate>Wed, 12 Dec 2007 22:03:01 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1167</guid>
		<description>ocean,

I&#039;m sorry if I took your comments out of context, but I&#039;m not so sure that I did.  

You&#039;re repeating the idea that making tools is about &quot;solving problems that will change tommorow doesn’t make much sense.&quot;  If people find themselves doing the same task a hundres times a day, they will come to us developers for help. If &lt;i&gt;we&lt;/i&gt; do the same task fifty times in a row, we start working on tools to help take the work out of doing that type of task.  That&#039;s far from &quot;willy-nilly&quot; and not a case of YAGNI-- especially not when your trying to sell a hundred more such solutions to people with similar problems.

Yes, it took a huge amount of effort to come up with Java and VB.  Java was made to &quot;solve&quot; certain problems with C++.  VB was made to make it easy to write Windows applications without having to use massive numbers of obscure API calls.  Huge undertakings.  But that doesn&#039;t mean that writing an spreadsheet style expression language for customizing one of your apps is going to be so tough.  It doesn&#039;t mean that your only choice for configuring your application is to have a crapload of tables in the database.  And it doesn&#039;t mean that there aren&#039;t programming languages, tools, and environments that make constructing new language elements easier.

If we aren&#039;t investing in creating new tools and languages, we&#039;re painting ourselves into a corner and creating a maintenance nightmare in the process.  We need every abstraction technique we can get our hands on to stay on top of this.</description>
		<content:encoded><![CDATA[<p>ocean,</p>
<p>I&#8217;m sorry if I took your comments out of context, but I&#8217;m not so sure that I did.  </p>
<p>You&#8217;re repeating the idea that making tools is about &#8220;solving problems that will change tommorow doesn’t make much sense.&#8221;  If people find themselves doing the same task a hundres times a day, they will come to us developers for help. If <i>we</i> do the same task fifty times in a row, we start working on tools to help take the work out of doing that type of task.  That&#8217;s far from &#8220;willy-nilly&#8221; and not a case of YAGNI&#8211; especially not when your trying to sell a hundred more such solutions to people with similar problems.</p>
<p>Yes, it took a huge amount of effort to come up with Java and VB.  Java was made to &#8220;solve&#8221; certain problems with C++.  VB was made to make it easy to write Windows applications without having to use massive numbers of obscure API calls.  Huge undertakings.  But that doesn&#8217;t mean that writing an spreadsheet style expression language for customizing one of your apps is going to be so tough.  It doesn&#8217;t mean that your only choice for configuring your application is to have a crapload of tables in the database.  And it doesn&#8217;t mean that there aren&#8217;t programming languages, tools, and environments that make constructing new language elements easier.</p>
<p>If we aren&#8217;t investing in creating new tools and languages, we&#8217;re painting ourselves into a corner and creating a maintenance nightmare in the process.  We need every abstraction technique we can get our hands on to stay on top of this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ocean</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1162</link>
		<dc:creator>ocean</dc:creator>
		<pubDate>Wed, 12 Dec 2007 17:02:52 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1162</guid>
		<description>Your argument doesn&#039;t make much sense. My proposal to avoid creating your own tools is an argument **for** reuse. A developer who recognizes that his product will be very different 6 months down the road would realize that it makes much more sense to adopt other&#039;s tools and libraries rather than write his own. That&#039;s the reason developers are constantly evaluating tools: they are constantly solving problems and don&#039;t have the time or resources to write their own tools. Try to imagine the extraordinary amount of work that goes into creating languages like Java or VB and then consider the resources available to your average developer.

The question here is not about the stupid strawman of whether developers should *ever* create their own tools and languages. I even point out the conditions under which it makes sense to write your own DSL. The question is about whether creating new tools and language is the sole purpose or &quot;highest dream&quot; of software development as Warfield suggests. And, as I suggest, the reason we don&#039;t go about creating tools willy nilly is because (1) common sense. Spending a lot of time solving problems that will change tommorow doesn&#039;t make much sense. (2) As engineers our principle tactic is to take new problems and reduce them to previously solved problems. This is what engineers actually do and in practice it has very little to do with inventing new paradigms and exercising our creative juices.</description>
		<content:encoded><![CDATA[<p>Your argument doesn&#8217;t make much sense. My proposal to avoid creating your own tools is an argument **for** reuse. A developer who recognizes that his product will be very different 6 months down the road would realize that it makes much more sense to adopt other&#8217;s tools and libraries rather than write his own. That&#8217;s the reason developers are constantly evaluating tools: they are constantly solving problems and don&#8217;t have the time or resources to write their own tools. Try to imagine the extraordinary amount of work that goes into creating languages like Java or VB and then consider the resources available to your average developer.</p>
<p>The question here is not about the stupid strawman of whether developers should *ever* create their own tools and languages. I even point out the conditions under which it makes sense to write your own DSL. The question is about whether creating new tools and language is the sole purpose or &#8220;highest dream&#8221; of software development as Warfield suggests. And, as I suggest, the reason we don&#8217;t go about creating tools willy nilly is because (1) common sense. Spending a lot of time solving problems that will change tommorow doesn&#8217;t make much sense. (2) As engineers our principle tactic is to take new problems and reduce them to previously solved problems. This is what engineers actually do and in practice it has very little to do with inventing new paradigms and exercising our creative juices.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: chuck</title>
		<link>http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1161</link>
		<dc:creator>chuck</dc:creator>
		<pubDate>Wed, 12 Dec 2007 16:05:09 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/12/12/meet-the-new-problem-same-as-the-old-problem/#comment-1161</guid>
		<description>Good points.  Though I feel like pointing out that developing your own simple language to solve a specific kind of problem you work with often leads to releasing that language/tool to others who decide they need it to do a ton of general-purpose-programming kind of things you never intended, and it builds up an ugly pile of hacks, and eventually you have PHP.</description>
		<content:encoded><![CDATA[<p>Good points.  Though I feel like pointing out that developing your own simple language to solve a specific kind of problem you work with often leads to releasing that language/tool to others who decide they need it to do a ton of general-purpose-programming kind of things you never intended, and it builds up an ugly pile of hacks, and eventually you have PHP.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
