<?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: Be careful with magical code</title>
	<atom:link href="http://codemonkeyism.com/beware-magical-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://codemonkeyism.com/beware-magical-code/</link>
	<description></description>
	<lastBuildDate>Wed, 09 May 2012 22:39:34 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Blog harvest, February 2010 &#171; Schneide Blog</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-2/#comment-274120</link>
		<dc:creator>Blog harvest, February 2010 &#171; Schneide Blog</dc:creator>
		<pubDate>Sat, 27 Feb 2010 22:54:21 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-274120</guid>
		<description>[...] Am I too stupid for @Autowired? &#8211; Peter Veentjer talks about his objections with Spring&#8217;s automagic functionality. I tend to agree that @Autowired et.al. is fairy dust in your code. And magic should be avoided when programming. [...]</description>
		<content:encoded><![CDATA[<p>[...] Am I too stupid for @Autowired? &#8211; Peter Veentjer talks about his objections with Spring&#8217;s automagic functionality. I tend to agree that @Autowired et.al. is fairy dust in your code. And magic should be avoided when programming. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: privateer</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-2/#comment-269215</link>
		<dc:creator>privateer</dc:creator>
		<pubDate>Wed, 03 Feb 2010 14:59:21 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-269215</guid>
		<description>Of course specifications, frameworks, api&#039;s etc. have to become more complex (eg. magical) over the course of time... that&#039;s just a logical consequence of &quot;software-evolution&quot;, isn&#039;t it?

IMHO the problem is that the people using them (developer&#039;s but especially projectmanagers) did NOT change over time!

Let&#039;s assume at 1990 (technologies and user-expectaions) it took one developer to get &quot;enough&quot; experience with every technology/practice/technique/methodology about 2-3 years.


In the year 2010 with probably 10 times more stuff to master and way higher user-expectaions this timeframe is now probably at 6-9 years!



Long story short:
IMHO its not the frameworks that get out of hand but we, the developers, have to find a way to catch up!
Maybe the industry needs to change it&#039;s mindset that 2-3 junior-dev&#039;s, 1 dev, 1 senior-dev and 1 PM could handle any project...

Or we just need more developers without a social-life and learning all the stuff at weekends. :)</description>
		<content:encoded><![CDATA[<p>Of course specifications, frameworks, api&#8217;s etc. have to become more complex (eg. magical) over the course of time&#8230; that&#8217;s just a logical consequence of &#8220;software-evolution&#8221;, isn&#8217;t it?</p>
<p>IMHO the problem is that the people using them (developer&#8217;s but especially projectmanagers) did NOT change over time!</p>
<p>Let&#8217;s assume at 1990 (technologies and user-expectaions) it took one developer to get &#8220;enough&#8221; experience with every technology/practice/technique/methodology about 2-3 years.</p>
<p>In the year 2010 with probably 10 times more stuff to master and way higher user-expectaions this timeframe is now probably at 6-9 years!</p>
<p>Long story short:<br />
IMHO its not the frameworks that get out of hand but we, the developers, have to find a way to catch up!<br />
Maybe the industry needs to change it&#8217;s mindset that 2-3 junior-dev&#8217;s, 1 dev, 1 senior-dev and 1 PM could handle any project&#8230;</p>
<p>Or we just need more developers without a social-life and learning all the stuff at weekends. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Mosmann</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-2/#comment-269213</link>
		<dc:creator>Michael Mosmann</dc:creator>
		<pubDate>Wed, 03 Feb 2010 14:41:19 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-269213</guid>
		<description>Everything is magic. But sometimes you know the spell. If you mix them, strange things can happen.</description>
		<content:encoded><![CDATA[<p>Everything is magic. But sometimes you know the spell. If you mix them, strange things can happen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268974</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Tue, 02 Feb 2010 10:10:29 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268974</guid>
		<description>@Nick: Thx, exactly (Merlin).</description>
		<content:encoded><![CDATA[<p>@Nick: Thx, exactly (Merlin).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick Wiedenbrueck</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268969</link>
		<dc:creator>Nick Wiedenbrueck</dc:creator>
		<pubDate>Tue, 02 Feb 2010 09:43:42 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268969</guid>
		<description>Great post. Totally agree with you. 

It&#039;s kind of a love/hate thing. Hibernate proxies, AOP, Scala implicits, Groovy MOP, ... - it&#039;s all so great when it works, it&#039;s not so bad when it fails and you understand it, but it&#039;s a mess when it fails and you don&#039;t understand it. 

You&#039;ve got to be more like Merlin than Harry Potter to get it right.</description>
		<content:encoded><![CDATA[<p>Great post. Totally agree with you. </p>
<p>It&#8217;s kind of a love/hate thing. Hibernate proxies, AOP, Scala implicits, Groovy MOP, &#8230; &#8211; it&#8217;s all so great when it works, it&#8217;s not so bad when it fails and you understand it, but it&#8217;s a mess when it fails and you don&#8217;t understand it. </p>
<p>You&#8217;ve got to be more like Merlin than Harry Potter to get it right.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mert Nuhoglu</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268952</link>
		<dc:creator>Mert Nuhoglu</dc:creator>
		<pubDate>Tue, 02 Feb 2010 08:26:02 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268952</guid>
		<description>I think magic might be the primary reason for why programming is so difficult. Designing an algorithm is not too difficult. It requires an analitically oriented mind. But facing some magical error is a nightmare. Then the programmer has two options:

1. Diving deep into the underlying framework to understand what happens beneath.
2. Trying lots of different paths to make the code work.

Both options are very unproductive and usually frustrating. Worse, the programmer cannot make a good estimate on how long it will take to overcome the problem. It may take one week or just 5 minutes.</description>
		<content:encoded><![CDATA[<p>I think magic might be the primary reason for why programming is so difficult. Designing an algorithm is not too difficult. It requires an analitically oriented mind. But facing some magical error is a nightmare. Then the programmer has two options:</p>
<p>1. Diving deep into the underlying framework to understand what happens beneath.<br />
2. Trying lots of different paths to make the code work.</p>
<p>Both options are very unproductive and usually frustrating. Worse, the programmer cannot make a good estimate on how long it will take to overcome the problem. It may take one week or just 5 minutes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tyro</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268863</link>
		<dc:creator>Tyro</dc:creator>
		<pubDate>Mon, 01 Feb 2010 21:03:52 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268863</guid>
		<description>When I first read about AspectJ, I was a huge fan but after using it on a project and spending days and weeks fighting obscure bugs I finally gave up, deeply disillusioned.  Same thing with Hibernate which got swapped out for iBATIS until I tried Groovy/Grails and gave Hibernate a second chance only to find a whole new category of problems, some of which are still not resolved.  They&#039;re minor time savers when they work but when they fail, they fail hard.  You could argue that I and my team failed by not understanding all of the intricacies but this is the actual problem, illusory simplicity which hides deep complexity.

On all new code I much prefer iBATIS, JDBCTemplate or even JDBC directly.  The small costs to write the queries more than pays for itself by reduced complexity and easier debugging.</description>
		<content:encoded><![CDATA[<p>When I first read about AspectJ, I was a huge fan but after using it on a project and spending days and weeks fighting obscure bugs I finally gave up, deeply disillusioned.  Same thing with Hibernate which got swapped out for iBATIS until I tried Groovy/Grails and gave Hibernate a second chance only to find a whole new category of problems, some of which are still not resolved.  They&#8217;re minor time savers when they work but when they fail, they fail hard.  You could argue that I and my team failed by not understanding all of the intricacies but this is the actual problem, illusory simplicity which hides deep complexity.</p>
<p>On all new code I much prefer iBATIS, JDBCTemplate or even JDBC directly.  The small costs to write the queries more than pays for itself by reduced complexity and easier debugging.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268825</link>
		<dc:creator>Jonathan</dc:creator>
		<pubDate>Mon, 01 Feb 2010 18:36:00 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268825</guid>
		<description>IMO, things like AOP and Project Lombok were an attempt to make up for missing Java language features (traits/mixins, closures, properties, delegates, tuples), and weren&#039;t necessarily created for the sole purpose of performing magic. Still, as you say, it is important to know what&#039;s going on inside the black box.</description>
		<content:encoded><![CDATA[<p>IMO, things like AOP and Project Lombok were an attempt to make up for missing Java language features (traits/mixins, closures, properties, delegates, tuples), and weren&#8217;t necessarily created for the sole purpose of performing magic. Still, as you say, it is important to know what&#8217;s going on inside the black box.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268795</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 01 Feb 2010 16:47:32 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268795</guid>
		<description>@Michael: I need to reed &quot;Coders at Work&quot; too, it&#039;s on my list for quite some time.

&quot;[..]  inside my favorite ORM to see how i works and learned how i should really use it, i’s been fine since then.&quot;

100% ack. One needs to learn how the ORM works if you want to use it. Many developers don&#039;t do that.</description>
		<content:encoded><![CDATA[<p>@Michael: I need to reed &#8220;Coders at Work&#8221; too, it&#8217;s on my list for quite some time.</p>
<p>&#8220;[..]  inside my favorite ORM to see how i works and learned how i should really use it, i’s been fine since then.&#8221;</p>
<p>100% ack. One needs to learn how the ORM works if you want to use it. Many developers don&#8217;t do that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Paul</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268793</link>
		<dc:creator>Michael Paul</dc:creator>
		<pubDate>Mon, 01 Feb 2010 16:43:58 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268793</guid>
		<description>Sure we must take care with &quot;magic code&quot; and that&#039;s why i dug inside my favorite ORM to see how i works and learned how i should really use it, i&#039;s been fine since then. Don&#039;t remember now but i think Jamie Zawinski or Brad Fitzpatrick said &quot;don&#039;t trust your abstractions&quot; in &quot;Coders at Work&quot;.</description>
		<content:encoded><![CDATA[<p>Sure we must take care with &#8220;magic code&#8221; and that&#8217;s why i dug inside my favorite ORM to see how i works and learned how i should really use it, i&#8217;s been fine since then. Don&#8217;t remember now but i think Jamie Zawinski or Brad Fitzpatrick said &#8220;don&#8217;t trust your abstractions&#8221; in &#8220;Coders at Work&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268772</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 01 Feb 2010 14:28:14 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268772</guid>
		<description>@Stefan: SnipSnap, the wiki I&#039;ve co-authored some years ago, was memory only with write-behind, something which now becomes trendy with #NoSQL. 

Redis is in-memory only. Looking at some memory graphs in operations if fear mem-only apps - seeing the JVM heap grow and grow +g+

But mem-only is the future I assume. I think about a post.</description>
		<content:encoded><![CDATA[<p>@Stefan: SnipSnap, the wiki I&#8217;ve co-authored some years ago, was memory only with write-behind, something which now becomes trendy with #NoSQL. </p>
<p>Redis is in-memory only. Looking at some memory graphs in operations if fear mem-only apps &#8211; seeing the JVM heap grow and grow +g+</p>
<p>But mem-only is the future I assume. I think about a post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gamlor</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268771</link>
		<dc:creator>Gamlor</dc:creator>
		<pubDate>Mon, 01 Feb 2010 13:58:45 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268771</guid>
		<description>I agree with your post.

I try to reduce &#039;magic&#039; in my own projects and only use it when it&#039;s a real benefit.

I used to utilize &#039;magic&#039; just for less important, &#039;nice-to-have&#039; features. But it made it much more difficult to find out the cause when it broke.</description>
		<content:encoded><![CDATA[<p>I agree with your post.</p>
<p>I try to reduce &#8216;magic&#8217; in my own projects and only use it when it&#8217;s a real benefit.</p>
<p>I used to utilize &#8216;magic&#8217; just for less important, &#8216;nice-to-have&#8217; features. But it made it much more difficult to find out the cause when it broke.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stefan Schubert</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268770</link>
		<dc:creator>Stefan Schubert</dc:creator>
		<pubDate>Mon, 01 Feb 2010 13:54:41 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268770</guid>
		<description>Sorry ... a lot spelling mistakes: I am talking about making transparent :-)</description>
		<content:encoded><![CDATA[<p>Sorry &#8230; a lot spelling mistakes: I am talking about making transparent :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stefan Schubert</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268769</link>
		<dc:creator>Stefan Schubert</dc:creator>
		<pubDate>Mon, 01 Feb 2010 13:53:50 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268769</guid>
		<description>Thanks for posting this. As magic is making thinks intransparent the best way to counter that seems to make transparent transparent itself. I will take that with me.

After all I am very curious to someday read something about big in-memory web applications from you. With enough local memory the magic required to do an architecture like that seems much smaller. You should become a fan of that. Though you might not deem it applicable yet for your purpose :-)</description>
		<content:encoded><![CDATA[<p>Thanks for posting this. As magic is making thinks intransparent the best way to counter that seems to make transparent transparent itself. I will take that with me.</p>
<p>After all I am very curious to someday read something about big in-memory web applications from you. With enough local memory the magic required to do an architecture like that seems much smaller. You should become a fan of that. Though you might not deem it applicable yet for your purpose :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268767</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 01 Feb 2010 13:41:23 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268767</guid>
		<description>@TrungH: Sorry to disagree. 

a.) read the definition of magic again 
b.) with non-deterministic input, output is non-deterministic either. Same goes for runtime behaviour 
c.) non-linear behaviour is most often determenistic</description>
		<content:encoded><![CDATA[<p>@TrungH: Sorry to disagree. </p>
<p>a.) read the definition of magic again<br />
b.) with non-deterministic input, output is non-deterministic either. Same goes for runtime behaviour<br />
c.) non-linear behaviour is most often determenistic</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TrungH</title>
		<link>http://codemonkeyism.com/beware-magical-code/comment-page-1/#comment-268766</link>
		<dc:creator>TrungH</dc:creator>
		<pubDate>Mon, 01 Feb 2010 13:37:45 +0000</pubDate>
		<guid isPermaLink="false">http://codemonkeyism.com/?p=1553#comment-268766</guid>
		<description>There never is magic, only complexity. Computers are deterministic.</description>
		<content:encoded><![CDATA[<p>There never is magic, only complexity. Computers are deterministic.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Database Caching 10/30 queries in 0.041 seconds using disk

Served from: codemonkeyism.com @ 2012-05-17 09:17:04 -->
