<?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/"
		>
<channel>
	<title>Comments on: The inevitable migration of framework coders</title>
	<atom:link href="http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/feed/" rel="self" type="application/rss+xml" />
	<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 02:41:51 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Bill de hOra</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137973</link>
		<dc:creator>Bill de hOra</dc:creator>
		<pubDate>Fri, 18 May 2007 01:07:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137973</guid>
		<description>Phil Greenspun: &quot;This is kind of thing that we teach our students at MIT: come up with a machine-readable specification language and write a program to generate the programs that run the site. See http://photo.net/teaching/psets/ps4/ps4.adp for an example.&quot;

Its on! Let&#039;s take some chunks out of DSL blub coders too, cos they never think about semantics, uniform notation or intermediate parse trees.</description>
		<content:encoded><![CDATA[<p>Phil Greenspun: &#8220;This is kind of thing that we teach our students at MIT: come up with a machine-readable specification language and write a program to generate the programs that run the site. See <a href="http://photo.net/teaching/psets/ps4/ps4.adp" rel="nofollow">http://photo.net/teaching/psets/ps4/ps4.adp</a> for an example.&#8221;</p>
<p>Its on! Let&#8217;s take some chunks out of DSL blub coders too, cos they never think about semantics, uniform notation or intermediate parse trees.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Giles Bowkett</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137969</link>
		<dc:creator>Giles Bowkett</dc:creator>
		<pubDate>Thu, 17 May 2007 16:32:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137969</guid>
		<description>Heh. Actually I linked to the Ajax scaffold thing the other day. I actually like it. Not so much as a thing to use, but as an example that you can in fact build your own scaffolding on a per-project basis and might be happier with it if you do.

Wasn&#039;t meant to be a barrage of fury but I&#039;m definitely going to be more diplomatic next time.

Anyhoo - on the whole topic of coding within a framework versus understanding it, I think everybody should read &quot;Code Generation In Action.&quot; It&#039;s awesome. The guy&#039;s like, OK, you&#039;ve got to build a J2EE enterprise app with EJB. The DB has 150 tables, so you&#039;re going to need 150 beans, that&#039;s 7 files per bean (that really is how EJB works), so, let&#039;s see, 150 * 7 = 1,050, so that means we&#039;ve got to write 1,050 files, so, if you do it by hand, that&#039;ll take three years. So, let&#039;s write something in Ruby to autogenerate every bean and all the affiliated files for each bean, that&#039;ll take maybe a week, maybe a few days. Boom, problem solved. In fact it even makes using a hefty framework like EJB seem relatively reasonable, as long as you&#039;re writing Ruby to write Java for you, instead of actually writing Java, because, you know, who would write Java by hand when it&#039;s so much quicker to write Ruby which writes Java for you?

He&#039;s basically trapped in a framework Java project, and instead of being like, oh well, better take my lumps and code to the framework like I&#039;m supposed to, he&#039;s like, no no no, that&#039;s too much work, frameworks are easy enough to code to that I can write a program to do it for me. It&#039;s funny too because his attitude is so nonchalant, he&#039;s like, obviously, since we&#039;re using a Java framework, we could write Java, but that would be a waste of time. It&#039;s such a kickass, cowboy attitude, but the book has this incredibly dry, serious delivery, with UML diagrams and everything, like a standard &quot;enterprise Java&quot; book which just happens to casually mention that coding Java is basically a waste of time.

Anyway, reason I bring it up, if you&#039;re not a framework coder, but you&#039;re on a framework project, this is one way to just totally go beyond the limitations of framework coding.</description>
		<content:encoded><![CDATA[<p>Heh. Actually I linked to the Ajax scaffold thing the other day. I actually like it. Not so much as a thing to use, but as an example that you can in fact build your own scaffolding on a per-project basis and might be happier with it if you do.</p>
<p>Wasn&#8217;t meant to be a barrage of fury but I&#8217;m definitely going to be more diplomatic next time.</p>
<p>Anyhoo &#8211; on the whole topic of coding within a framework versus understanding it, I think everybody should read &#8220;Code Generation In Action.&#8221; It&#8217;s awesome. The guy&#8217;s like, OK, you&#8217;ve got to build a J2EE enterprise app with EJB. The DB has 150 tables, so you&#8217;re going to need 150 beans, that&#8217;s 7 files per bean (that really is how EJB works), so, let&#8217;s see, 150 * 7 = 1,050, so that means we&#8217;ve got to write 1,050 files, so, if you do it by hand, that&#8217;ll take three years. So, let&#8217;s write something in Ruby to autogenerate every bean and all the affiliated files for each bean, that&#8217;ll take maybe a week, maybe a few days. Boom, problem solved. In fact it even makes using a hefty framework like EJB seem relatively reasonable, as long as you&#8217;re writing Ruby to write Java for you, instead of actually writing Java, because, you know, who would write Java by hand when it&#8217;s so much quicker to write Ruby which writes Java for you?</p>
<p>He&#8217;s basically trapped in a framework Java project, and instead of being like, oh well, better take my lumps and code to the framework like I&#8217;m supposed to, he&#8217;s like, no no no, that&#8217;s too much work, frameworks are easy enough to code to that I can write a program to do it for me. It&#8217;s funny too because his attitude is so nonchalant, he&#8217;s like, obviously, since we&#8217;re using a Java framework, we could write Java, but that would be a waste of time. It&#8217;s such a kickass, cowboy attitude, but the book has this incredibly dry, serious delivery, with UML diagrams and everything, like a standard &#8220;enterprise Java&#8221; book which just happens to casually mention that coding Java is basically a waste of time.</p>
<p>Anyway, reason I bring it up, if you&#8217;re not a framework coder, but you&#8217;re on a framework project, this is one way to just totally go beyond the limitations of framework coding.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: toretore</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137956</link>
		<dc:creator>toretore</dc:creator>
		<pubDate>Tue, 15 May 2007 08:57:40 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137956</guid>
		<description>This is all true, but you (plural) could have chosen a different example to illustrate your points. I see nothing wrong with Tim&#039;s piece of code, except for the SQL bit, but it wasn&#039;t meant as an example of how to do SQL well but rather how to overwrite (or define for the first time, really) dynamic finders in AR. When someone comes up with yet another Ajax scaffolding plugin with sortable columns, funny widgets and transition effects, by all means unleash your fury on  them ;)</description>
		<content:encoded><![CDATA[<p>This is all true, but you (plural) could have chosen a different example to illustrate your points. I see nothing wrong with Tim&#8217;s piece of code, except for the SQL bit, but it wasn&#8217;t meant as an example of how to do SQL well but rather how to overwrite (or define for the first time, really) dynamic finders in AR. When someone comes up with yet another Ajax scaffolding plugin with sortable columns, funny widgets and transition effects, by all means unleash your fury on  them ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Franck</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137951</link>
		<dc:creator>Franck</dc:creator>
		<pubDate>Mon, 14 May 2007 19:58:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137951</guid>
		<description>I would agree with the first comment that working with &quot;abstract&quot; languages is not a problem... unless you have performance issues. Then it could be better to understand how things are working at low level.</description>
		<content:encoded><![CDATA[<p>I would agree with the first comment that working with &#8220;abstract&#8221; languages is not a problem&#8230; unless you have performance issues. Then it could be better to understand how things are working at low level.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Giles Bowkett</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137950</link>
		<dc:creator>Giles Bowkett</dc:creator>
		<pubDate>Mon, 14 May 2007 18:15:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137950</guid>
		<description>Just for perspective, if I can quote something from the e-mail correspondence, where you said

&lt;i&gt;I&#039;m willing to bet a year&#039;s worth of salary that the Next Big Language will bring with it a lot of bad programmers and those will bring their bad habits with them.&lt;/i&gt;

I wouldn&#039;t want to make that bet against you! I&#039;m not actually in disagreement with that; I just think that I&#039;m still going to call it a Rails issue rather than a larger thing, because the larger thing is really difficult to get a handle on.

Also, Tim&#039;s writeup on my alleged &quot;rant&quot; does nail your :conditions concern, turns out to be a nonissue.

However, I think Tim took the criticism entirely personally, it certainly wasn&#039;t intended as a rant, and the whole thing could be a lame-ass flamewar unless it&#039;s treated with diplomacy. I definitely should have written that post differently.</description>
		<content:encoded><![CDATA[<p>Just for perspective, if I can quote something from the e-mail correspondence, where you said</p>
<p><i>I&#8217;m willing to bet a year&#8217;s worth of salary that the Next Big Language will bring with it a lot of bad programmers and those will bring their bad habits with them.</i></p>
<p>I wouldn&#8217;t want to make that bet against you! I&#8217;m not actually in disagreement with that; I just think that I&#8217;m still going to call it a Rails issue rather than a larger thing, because the larger thing is really difficult to get a handle on.</p>
<p>Also, Tim&#8217;s writeup on my alleged &#8220;rant&#8221; does nail your :conditions concern, turns out to be a nonissue.</p>
<p>However, I think Tim took the criticism entirely personally, it certainly wasn&#8217;t intended as a rant, and the whole thing could be a lame-ass flamewar unless it&#8217;s treated with diplomacy. I definitely should have written that post differently.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: fromvega</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137947</link>
		<dc:creator>fromvega</dc:creator>
		<pubDate>Mon, 14 May 2007 14:04:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137947</guid>
		<description>You have a good point. I always thought that you shouldn&#039;t keep tied to a framework, that you should always develop your skills first then use a framework if you feel that it will indeed help you. Whenever you have a change to learn at base levels (or just take a look) up and down the abstraction layers to the electronic level, as said in the first comment, you will have a wider understanding of the system as a whole and will be able to create a better software. I use mostly PHP for my web projects and I was always reluctant to adopt a framework since you never know when the developers will drop support to it, when they will fix bugs and so on. This sittuation changed with Zend Framework. I decided to give it a try since it&#039;s being supported by the PHP company itself. Another flaw of frameworks in my opinion is that they provide just an alternative way to code the underlying language, like for instance the Active Record pattern. Not that it isn&#039;t good, but for instance, if you need to make a simple select query with &#039;WHERE&#039;, &#039;ORDER BY&#039; and &#039;LIMIT&#039; you still need to write them and pass as the arguments to wherever method you are using. If you want to make a join or use foreing keys you would need to map the database relationships into the framework instead of writing a simple SQL query. Frameworks have they goal but sometimes (or a lot of times) it&#039;s better to stick with the underlying implementations, even more if you care about performance.</description>
		<content:encoded><![CDATA[<p>You have a good point. I always thought that you shouldn&#8217;t keep tied to a framework, that you should always develop your skills first then use a framework if you feel that it will indeed help you. Whenever you have a change to learn at base levels (or just take a look) up and down the abstraction layers to the electronic level, as said in the first comment, you will have a wider understanding of the system as a whole and will be able to create a better software. I use mostly PHP for my web projects and I was always reluctant to adopt a framework since you never know when the developers will drop support to it, when they will fix bugs and so on. This sittuation changed with Zend Framework. I decided to give it a try since it&#8217;s being supported by the PHP company itself. Another flaw of frameworks in my opinion is that they provide just an alternative way to code the underlying language, like for instance the Active Record pattern. Not that it isn&#8217;t good, but for instance, if you need to make a simple select query with &#8216;WHERE&#8217;, &#8216;ORDER BY&#8217; and &#8216;LIMIT&#8217; you still need to write them and pass as the arguments to wherever method you are using. If you want to make a join or use foreing keys you would need to map the database relationships into the framework instead of writing a simple SQL query. Frameworks have they goal but sometimes (or a lot of times) it&#8217;s better to stick with the underlying implementations, even more if you care about performance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Kohari</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137946</link>
		<dc:creator>Nate Kohari</dc:creator>
		<pubDate>Mon, 14 May 2007 13:00:27 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137946</guid>
		<description>If you replace the word &quot;framework coder&quot; with &quot;terrible developer&quot; I would agree with this article.

Although, the inverse argument can be made as well -- developers that insist on &quot;rolling their own&quot; each time they work on a project are just as bad as developers that don&#039;t understand the nitty gritty. Arguably, they&#039;re worse -- because if you stumble across that removal code snippet, you can always refactor it to improve performance. If someone writes their own flavor of strings to squeeze out that last drop of efficiency, your project is married to it forever.

It&#039;s definitely important that developers understand mid-level concepts like SQL, and even low-level concepts like floating point arithmetic, memory management, the stack and the heap, and even the ALU and how it processes instructions. That doesn&#039;t mean that they should be thinking about it every time they write a line of code. That&#039;s why we write in fancy languages like C#, Java, Python, and Ruby -- so we don&#039;t have to worry about things like that all the time. Same thing goes for frameworks.</description>
		<content:encoded><![CDATA[<p>If you replace the word &#8220;framework coder&#8221; with &#8220;terrible developer&#8221; I would agree with this article.</p>
<p>Although, the inverse argument can be made as well &#8212; developers that insist on &#8220;rolling their own&#8221; each time they work on a project are just as bad as developers that don&#8217;t understand the nitty gritty. Arguably, they&#8217;re worse &#8212; because if you stumble across that removal code snippet, you can always refactor it to improve performance. If someone writes their own flavor of strings to squeeze out that last drop of efficiency, your project is married to it forever.</p>
<p>It&#8217;s definitely important that developers understand mid-level concepts like SQL, and even low-level concepts like floating point arithmetic, memory management, the stack and the heap, and even the ALU and how it processes instructions. That doesn&#8217;t mean that they should be thinking about it every time they write a line of code. That&#8217;s why we write in fancy languages like C#, Java, Python, and Ruby &#8212; so we don&#8217;t have to worry about things like that all the time. Same thing goes for frameworks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: toolmantim</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137944</link>
		<dc:creator>toolmantim</dc:creator>
		<pubDate>Mon, 14 May 2007 08:38:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137944</guid>
		<description>I&#039;ve written a &lt;a href=&quot;http://toolmantim.com/article/2007/5/14/breaking_hearts&quot;&gt;wee writeup&lt;/a&gt; about Giles&#039; rant</description>
		<content:encoded><![CDATA[<p>I&#8217;ve written a <a href="http://toolmantim.com/article/2007/5/14/breaking_hearts">wee writeup</a> about Giles&#8217; rant</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Assaf</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137940</link>
		<dc:creator>Assaf</dc:creator>
		<pubDate>Mon, 14 May 2007 01:29:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137940</guid>
		<description>Ewout,

Framework coders don&#039;t go beyond the framework. They&#039;ll never look at SQL produced by the framework and try to figure out if it&#039;s using an index or running a full table scan. As far as they know, code starts and ends at the framework.

Other developers understand that the framework generates SQL, what it looks like, and that sometimes you have to grab these statements from the log and describe them in the SQL console to see how efficient they are.

And the same analogy for view sourcing your HTML, or reading the generated XML, or checking out the cache control HTTP response headers, just to make sure what you&#039;re telling the framework to do is what you want to happen.

Separately, I&#039;ll have to see if there&#039;s an upgade for the OpenID plugin that will fix the delegate issue,</description>
		<content:encoded><![CDATA[<p>Ewout,</p>
<p>Framework coders don&#8217;t go beyond the framework. They&#8217;ll never look at SQL produced by the framework and try to figure out if it&#8217;s using an index or running a full table scan. As far as they know, code starts and ends at the framework.</p>
<p>Other developers understand that the framework generates SQL, what it looks like, and that sometimes you have to grab these statements from the log and describe them in the SQL console to see how efficient they are.</p>
<p>And the same analogy for view sourcing your HTML, or reading the generated XML, or checking out the cache control HTTP response headers, just to make sure what you&#8217;re telling the framework to do is what you want to happen.</p>
<p>Separately, I&#8217;ll have to see if there&#8217;s an upgade for the OpenID plugin that will fix the delegate issue,</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ewout ter Haar</title>
		<link>http://labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/comment-page-1/#comment-137938</link>
		<dc:creator>Ewout ter Haar</dc:creator>
		<pubDate>Mon, 14 May 2007 00:49:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.labnotes.org/2007/05/13/the-inevitable-migration-of-framework-coders/#comment-137938</guid>
		<description>Well yes, but why stop at SQL, HTML and XML? Why not roll your own mark-up language, implement your own query language or write everything in assembly? What I mean is: from your argument it is not clear how frame-work coders differ from users of higher level languages. I assume that you don&#039;t want to imply that ruby coders should understand the solid state physics of transistors (&quot;... the bottom of the stack. Itâ€™s a dark place that framework coders refuse the enter&quot;)


(your openid login did not work for me. I use ewout.org which delegates to myopenid.com)</description>
		<content:encoded><![CDATA[<p>Well yes, but why stop at SQL, HTML and XML? Why not roll your own mark-up language, implement your own query language or write everything in assembly? What I mean is: from your argument it is not clear how frame-work coders differ from users of higher level languages. I assume that you don&#8217;t want to imply that ruby coders should understand the solid state physics of transistors (&#8220;&#8230; the bottom of the stack. Itâ€™s a dark place that framework coders refuse the enter&#8221;)</p>
<p>(your openid login did not work for me. I use ewout.org which delegates to myopenid.com)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

