<?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: Educate Developers Instead Of Protecting Them</title>
	<atom:link href="http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/feed/" rel="self" type="application/rss+xml" />
	<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/</link>
	<description>Trying to walk that thin line between intelligence and ignorance</description>
	<lastBuildDate>Thu, 29 Jul 2010 20:54:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Amy Thorne</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-23086</link>
		<dc:creator>Amy Thorne</dc:creator>
		<pubDate>Fri, 04 Dec 2009 14:31:04 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-23086</guid>
		<description>In my experience, many companies that do this don&#039;t want to invest in educating their developers. Instead, they invest in rules and frameworks and use developers as interchangeable parts.

I&#039;m not saying it&#039;s a good idea. I completely agree with your point. I&#039;m just saying that the people who decide to protect the developers might not care about the downsides you point out, or might have already concluded that it&#039;s cheaper to work around them than to fix them.</description>
		<content:encoded><![CDATA[<p>In my experience, many companies that do this don&#8217;t want to invest in educating their developers. Instead, they invest in rules and frameworks and use developers as interchangeable parts.</p>
<p>I&#8217;m not saying it&#8217;s a good idea. I completely agree with your point. I&#8217;m just saying that the people who decide to protect the developers might not care about the downsides you point out, or might have already concluded that it&#8217;s cheaper to work around them than to fix them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruce</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-22923</link>
		<dc:creator>Bruce</dc:creator>
		<pubDate>Tue, 10 Nov 2009 21:57:14 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-22923</guid>
		<description>I have usually found the abstraction is not because of technical reasons but due to security or other business issues. This does make it difficult for developers to do &quot;interesting&quot; stuff. It is probably not possible to overcome this type of control.

When contracting I have often found that doing advanced techniques gets the criticism from &quot;in house&quot; developers as they do not want to have to code outside there box of knowledge. This is the type of attitude that is worse than guidelines or libraries as it usually provides a negative impact on the dev&#039;s and the end users.</description>
		<content:encoded><![CDATA[<p>I have usually found the abstraction is not because of technical reasons but due to security or other business issues. This does make it difficult for developers to do &#8220;interesting&#8221; stuff. It is probably not possible to overcome this type of control.</p>
<p>When contracting I have often found that doing advanced techniques gets the criticism from &#8220;in house&#8221; developers as they do not want to have to code outside there box of knowledge. This is the type of attitude that is worse than guidelines or libraries as it usually provides a negative impact on the dev&#8217;s and the end users.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-13115</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Thu, 23 Apr 2009 07:07:27 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-13115</guid>
		<description>Well, i have no idea what your interfaces and base classes are like, or what they are trying to accomplish, but i would try to take an objective look at the complexity that the developers are currently experiencing when using those custom classes.  

If they aren&#039;t introducing needless complexity, and the devs really don&#039;t want to learn, i&#039;d suggest writing some docs about it. It might be boring, but that way you&#039;d only have to waste time on explaining it once.  And for those devs that do care, you can still go through it with them

But i&#039;d really try to look at the root cause as to why they don&#039;t want to learn (or appear that they don&#039;t want to learn)... there might be a bigger problem lurking there</description>
		<content:encoded><![CDATA[<p>Well, i have no idea what your interfaces and base classes are like, or what they are trying to accomplish, but i would try to take an objective look at the complexity that the developers are currently experiencing when using those custom classes.  </p>
<p>If they aren&#8217;t introducing needless complexity, and the devs really don&#8217;t want to learn, i&#8217;d suggest writing some docs about it. It might be boring, but that way you&#8217;d only have to waste time on explaining it once.  And for those devs that do care, you can still go through it with them</p>
<p>But i&#8217;d really try to look at the root cause as to why they don&#8217;t want to learn (or appear that they don&#8217;t want to learn)&#8230; there might be a bigger problem lurking there</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashish T</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-13092</link>
		<dc:creator>Ashish T</dc:creator>
		<pubDate>Thu, 23 Apr 2009 00:48:03 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-13092</guid>
		<description>This is a nice post. Thanks for putting it out.

In my group, similar things are happening. But, the difference is, there are some people who do not want to learn the new way of doing things. I am currently working on creating an application framework that works similar to plug-ins. There are many interfaces and base classes to learn and use. I am using dependency injection (using spring.net) and nhibernate for DAL. People in my group, who will be using those, want me to simplify them further because they think they will not be able to grasp and understand how to whole thing fits together. I have been trying to educate them by sitting with each developer and explaining what is what.

Looks like in this case, I will need to hide certain things from them.
Any suggestions on what I should do?</description>
		<content:encoded><![CDATA[<p>This is a nice post. Thanks for putting it out.</p>
<p>In my group, similar things are happening. But, the difference is, there are some people who do not want to learn the new way of doing things. I am currently working on creating an application framework that works similar to plug-ins. There are many interfaces and base classes to learn and use. I am using dependency injection (using spring.net) and nhibernate for DAL. People in my group, who will be using those, want me to simplify them further because they think they will not be able to grasp and understand how to whole thing fits together. I have been trying to educate them by sitting with each developer and explaining what is what.</p>
<p>Looks like in this case, I will need to hide certain things from them.<br />
Any suggestions on what I should do?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12984</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Tue, 21 Apr 2009 06:45:13 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12984</guid>
		<description>@Joe

with protecting, i mean it&#039;s more about hiding power that could potentially be used wrongly. Instead of fearing that developers will make mistakes, and thus hiding power from them, i think it&#039;s better to invest time into educating them so they are less likely to make the mistake in the first place

opinionated api&#039;s aren&#039;t really an example of that, though they certainly can be. Having one and only one way of doing something isn&#039;t wrong, unless that way isn&#039;t sufficient once you get beyond the trivial stuff.</description>
		<content:encoded><![CDATA[<p>@Joe</p>
<p>with protecting, i mean it&#8217;s more about hiding power that could potentially be used wrongly. Instead of fearing that developers will make mistakes, and thus hiding power from them, i think it&#8217;s better to invest time into educating them so they are less likely to make the mistake in the first place</p>
<p>opinionated api&#8217;s aren&#8217;t really an example of that, though they certainly can be. Having one and only one way of doing something isn&#8217;t wrong, unless that way isn&#8217;t sufficient once you get beyond the trivial stuff.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Young</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12933</link>
		<dc:creator>Joe Young</dc:creator>
		<pubDate>Mon, 20 Apr 2009 14:17:28 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12933</guid>
		<description>I am a bit confused about the meaning of protecting? Is it just hiding things from other developers and creating guidelines? How does opinionated code fit in to this, or does it? 

I have been moving to more and more to having a highly opinionated api. This will basically setup a mechanism where there is one and only one way to do something. Am I protecting developers and myself by creating an opinionated api?</description>
		<content:encoded><![CDATA[<p>I am a bit confused about the meaning of protecting? Is it just hiding things from other developers and creating guidelines? How does opinionated code fit in to this, or does it? </p>
<p>I have been moving to more and more to having a highly opinionated api. This will basically setup a mechanism where there is one and only one way to do something. Am I protecting developers and myself by creating an opinionated api?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kyle Baley</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12702</link>
		<dc:creator>Kyle Baley</dc:creator>
		<pubDate>Fri, 17 Apr 2009 19:17:35 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12702</guid>
		<description>There&#039;s more to it than abstracting &quot;complicated&quot; libraries like NHibernate. I&#039;m in a situation where unit tests and mocking are taboo because the maintenance team can&#039;t handle it (all testing is done with integration tests). Even things like var and LINQ have raised hackles. Still new to this project so am trying to find the balance between introducing too much and being productive but it&#039;s a moving target from one client to the next.</description>
		<content:encoded><![CDATA[<p>There&#8217;s more to it than abstracting &#8220;complicated&#8221; libraries like NHibernate. I&#8217;m in a situation where unit tests and mocking are taboo because the maintenance team can&#8217;t handle it (all testing is done with integration tests). Even things like var and LINQ have raised hackles. Still new to this project so am trying to find the balance between introducing too much and being productive but it&#8217;s a moving target from one client to the next.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Degosserie</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12653</link>
		<dc:creator>Steve Degosserie</dc:creator>
		<pubDate>Fri, 17 Apr 2009 08:01:16 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12653</guid>
		<description>To quote A. Einstein, it&#039;s all about making everything as simple as possible, but not simpler. ;o)</description>
		<content:encoded><![CDATA[<p>To quote A. Einstein, it&#8217;s all about making everything as simple as possible, but not simpler. ;o)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Degosserie</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12652</link>
		<dc:creator>Steve Degosserie</dc:creator>
		<pubDate>Fri, 17 Apr 2009 07:54:34 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12652</guid>
		<description>The main problem, IMHO, is that some so-called senior developers and / or architects that have a high position in companies, and that are those who define the guidelines &amp; best practices, usually think they know how to write good framework / library ... but they just don&#039;t.
Writing highly re-usable framework / library shielding less experienced developers from mistakes while at the same time leaving a door open for more advanced ones is just hard. Really hard.
We&#039;ll all seen senior developers that know a lot of technologies, the latest cool stuff but when you look at their code, they don&#039;t even seem to apply the basic rules of encapsulation.
To repeat it again, Framework / Class Library / API Design is a DIFFICULT TASK.

And I think that&#039;s the point Davy wants to emphasize (correct me if I&#039;m wrong) ... teaching less experienced developers is important, but from a business point of view, when you start to have several development teams that needs to coordinate and all apply the same guidelines &amp; best practices, it makes total sense aim for maximum reusability &amp; higher abstraction levels.

Otherwise, we should all quit our fancy UIs and go back to the command line ;o) lol</description>
		<content:encoded><![CDATA[<p>The main problem, IMHO, is that some so-called senior developers and / or architects that have a high position in companies, and that are those who define the guidelines &amp; best practices, usually think they know how to write good framework / library &#8230; but they just don&#8217;t.<br />
Writing highly re-usable framework / library shielding less experienced developers from mistakes while at the same time leaving a door open for more advanced ones is just hard. Really hard.<br />
We&#8217;ll all seen senior developers that know a lot of technologies, the latest cool stuff but when you look at their code, they don&#8217;t even seem to apply the basic rules of encapsulation.<br />
To repeat it again, Framework / Class Library / API Design is a DIFFICULT TASK.</p>
<p>And I think that&#8217;s the point Davy wants to emphasize (correct me if I&#8217;m wrong) &#8230; teaching less experienced developers is important, but from a business point of view, when you start to have several development teams that needs to coordinate and all apply the same guidelines &amp; best practices, it makes total sense aim for maximum reusability &amp; higher abstraction levels.</p>
<p>Otherwise, we should all quit our fancy UIs and go back to the command line ;o) lol</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: efdee</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12601</link>
		<dc:creator>efdee</dc:creator>
		<pubDate>Thu, 16 Apr 2009 16:49:41 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12601</guid>
		<description>I can throw in some experience I had at a previous client - a rather large company with 50-100 .NET developers and a central &#039;competence center&#039;. Developers were forced to use certain frameworks, in order to standardize common aspects of the application such as DAL access. 

Sadly, the framework was given in closed-source form for exactly the kind of protective reasons I think Davy is talking about. Whether I liked it or not, this worked relatively well in the beginning. Problems were quickly dealt with and guidance was always available - until after a few months things got a bit busier. We ran into a problem (actually, more of a missing feature) but were unable to get help because everyone at the competence center was busy helping out on other projects. After losing plenty of time trying to go through the &#039;correct&#039; channels, we used reflector to decompile the framework, learned how it works, made the necessary modifications and went on using that version instead. I left before the project was finished, so I&#039;m not sure if the modifications ever made it back into the official version.

I&#039;m not saying the framework was a bad idea, but if they had chosen to given out the source code to developers instead of &#039;protecting&#039; them from what was going on, not only would we have saved alot of time, but it might have educated those few developers that would have had the interest in looking at the source code while using the framework.</description>
		<content:encoded><![CDATA[<p>I can throw in some experience I had at a previous client &#8211; a rather large company with 50-100 .NET developers and a central &#8216;competence center&#8217;. Developers were forced to use certain frameworks, in order to standardize common aspects of the application such as DAL access. </p>
<p>Sadly, the framework was given in closed-source form for exactly the kind of protective reasons I think Davy is talking about. Whether I liked it or not, this worked relatively well in the beginning. Problems were quickly dealt with and guidance was always available &#8211; until after a few months things got a bit busier. We ran into a problem (actually, more of a missing feature) but were unable to get help because everyone at the competence center was busy helping out on other projects. After losing plenty of time trying to go through the &#8216;correct&#8217; channels, we used reflector to decompile the framework, learned how it works, made the necessary modifications and went on using that version instead. I left before the project was finished, so I&#8217;m not sure if the modifications ever made it back into the official version.</p>
<p>I&#8217;m not saying the framework was a bad idea, but if they had chosen to given out the source code to developers instead of &#8216;protecting&#8217; them from what was going on, not only would we have saved alot of time, but it might have educated those few developers that would have had the interest in looking at the source code while using the framework.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12592</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Thu, 16 Apr 2009 15:03:06 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12592</guid>
		<description>I have no idea where you got that i believe guidelines/principles are bad... _bad_ guidelines/principles are bad, especially when they are put in place to deal with the &#039;lowest common denominator&#039; as RCE states... that&#039;s how it often is in big companies, and as you say, it is retarted.  That&#039;s pretty much what the post is about.</description>
		<content:encoded><![CDATA[<p>I have no idea where you got that i believe guidelines/principles are bad&#8230; _bad_ guidelines/principles are bad, especially when they are put in place to deal with the &#8216;lowest common denominator&#8217; as RCE states&#8230; that&#8217;s how it often is in big companies, and as you say, it is retarted.  That&#8217;s pretty much what the post is about.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pho</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12590</link>
		<dc:creator>pho</dc:creator>
		<pubDate>Thu, 16 Apr 2009 14:55:27 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12590</guid>
		<description>maybe the other option would be hiding and abstracting the difficult things while still making sure every developer working on it understands

i&#039;m sure in all of the examples you mentioned, the originators of the ideas had the best intentions in mind. the fact it got screwed up (e.g. that state machine that was horribly misused) is most probably just the result of bad follow-up. which you will need to do anyway, whether you hide all the difficult stuff or not. just make sure that if you do, everyone GETS why it&#039;s done like that
i don&#039;t think guidelines/principles of any kind are bad for a team working on a project (as long as it makes sense and you&#039;re not overcomplicating...)

@rce: yeah that&#039;s pretty retarded :-)</description>
		<content:encoded><![CDATA[<p>maybe the other option would be hiding and abstracting the difficult things while still making sure every developer working on it understands</p>
<p>i&#8217;m sure in all of the examples you mentioned, the originators of the ideas had the best intentions in mind. the fact it got screwed up (e.g. that state machine that was horribly misused) is most probably just the result of bad follow-up. which you will need to do anyway, whether you hide all the difficult stuff or not. just make sure that if you do, everyone GETS why it&#8217;s done like that<br />
i don&#8217;t think guidelines/principles of any kind are bad for a team working on a project (as long as it makes sense and you&#8217;re not overcomplicating&#8230;)</p>
<p>@rce: yeah that&#8217;s pretty retarded <img src='http://davybrion.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RCE</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12588</link>
		<dc:creator>RCE</dc:creator>
		<pubDate>Thu, 16 Apr 2009 14:40:25 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12588</guid>
		<description>@PHO: it&#039;s all nice &amp; dandy until you hear that you should not apply certain techiques because you should program to the &#039;lowest common denominator&#039; and &#039;some people might not understand what is going on&#039;.</description>
		<content:encoded><![CDATA[<p>@PHO: it&#8217;s all nice &amp; dandy until you hear that you should not apply certain techiques because you should program to the &#8216;lowest common denominator&#8217; and &#8216;some people might not understand what is going on&#8217;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Kaufman</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12583</link>
		<dc:creator>Jonathan Kaufman</dc:creator>
		<pubDate>Thu, 16 Apr 2009 13:22:02 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12583</guid>
		<description>&lt;cite&gt;Microsoft consultants basically wanted to hide exception handling from application developers because “they don’t understand it anyway”. &lt;/cite&gt;

Wow Davy, I am kind of withthe other poster. I have never seen this behavior in people before. I agree with idea of your post but never ran into the situation.</description>
		<content:encoded><![CDATA[<p><cite>Microsoft consultants basically wanted to hide exception handling from application developers because “they don’t understand it anyway”. </cite></p>
<p>Wow Davy, I am kind of withthe other poster. I have never seen this behavior in people before. I agree with idea of your post but never ran into the situation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12563</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Thu, 16 Apr 2009 08:32:56 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12563</guid>
		<description>yeah i do think you missed the point :p

i&#039;m not saying that you shouldn&#039;t offer reusable libraries... i&#039;m saying that you shouldn&#039;t _hide_ things that you deem as too powerful or potentially risky behind these reusable libraries

as for practical examples... one thing that i&#039;ve seen way too often is that people offer datalayers that are easy when you&#039;re doing simple stuff, but don&#039;t really offer a clean way to do more powerful things. I once tried to introduce NHibernate at a client, and their initial response was &quot;NHibernate is powerful and can be misused very easily... we should wrap it and make sure people can&#039;t access it directly&quot;.  It would&#039;ve worked great for simple stuff, and it would&#039;ve gotten very messy once you need something beyond the simple stuff.  Codegen&#039;d DAL&#039;s often show the same problem IMO.

Another example was also at a client where the Microsoft consultants basically wanted to hide exception handling from application developers because &quot;they don&#039;t understand it anyway&quot;.  Which led to a shitload of code where people were constantly checking return values, which was obviously a lot more error prone than typical .NET exception handling code would&#039;ve been.

Another example was a ASP.NET Webforms based state machine which did all of the navigation and state management that you typically have to do on your own.  The developers were writing pages and use cases with it, but they no longer thought about it... which lead to horrible abuse of the state management that was provided because the developers weren&#039;t properly educated on how to deal with state management in a web application.

ViewState in ASP.NET is another nice example... it&#039;s an easy to use abstraction so developers can do some form of state management in an easy manner without using server memory for it. Until people dump everything in it because they don&#039;t know any better. 

There are tons of examples available...</description>
		<content:encoded><![CDATA[<p>yeah i do think you missed the point :p</p>
<p>i&#8217;m not saying that you shouldn&#8217;t offer reusable libraries&#8230; i&#8217;m saying that you shouldn&#8217;t _hide_ things that you deem as too powerful or potentially risky behind these reusable libraries</p>
<p>as for practical examples&#8230; one thing that i&#8217;ve seen way too often is that people offer datalayers that are easy when you&#8217;re doing simple stuff, but don&#8217;t really offer a clean way to do more powerful things. I once tried to introduce NHibernate at a client, and their initial response was &#8220;NHibernate is powerful and can be misused very easily&#8230; we should wrap it and make sure people can&#8217;t access it directly&#8221;.  It would&#8217;ve worked great for simple stuff, and it would&#8217;ve gotten very messy once you need something beyond the simple stuff.  Codegen&#8217;d DAL&#8217;s often show the same problem IMO.</p>
<p>Another example was also at a client where the Microsoft consultants basically wanted to hide exception handling from application developers because &#8220;they don&#8217;t understand it anyway&#8221;.  Which led to a shitload of code where people were constantly checking return values, which was obviously a lot more error prone than typical .NET exception handling code would&#8217;ve been.</p>
<p>Another example was a ASP.NET Webforms based state machine which did all of the navigation and state management that you typically have to do on your own.  The developers were writing pages and use cases with it, but they no longer thought about it&#8230; which lead to horrible abuse of the state management that was provided because the developers weren&#8217;t properly educated on how to deal with state management in a web application.</p>
<p>ViewState in ASP.NET is another nice example&#8230; it&#8217;s an easy to use abstraction so developers can do some form of state management in an easy manner without using server memory for it. Until people dump everything in it because they don&#8217;t know any better. </p>
<p>There are tons of examples available&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pho</title>
		<link>http://davybrion.com/blog/2009/04/educate-developers-instead-of-protecting-them/comment-page-1/#comment-12561</link>
		<dc:creator>pho</dc:creator>
		<pubDate>Thu, 16 Apr 2009 08:20:28 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=1285#comment-12561</guid>
		<description>So do you have a practical example to back up all this? I&#039;d like to see a piece of code what these technical leads deem as &quot;out of the lesser developers&#039; league&quot;

Still,
if you can abstract a certain reusable functionality to a library that can be reused by other people that need it in your company, why shouldn&#039;t you?
As a matter of fact, i think we do it that way... Or am i totally missing the point here?</description>
		<content:encoded><![CDATA[<p>So do you have a practical example to back up all this? I&#8217;d like to see a piece of code what these technical leads deem as &#8220;out of the lesser developers&#8217; league&#8221;</p>
<p>Still,<br />
if you can abstract a certain reusable functionality to a library that can be reused by other people that need it in your company, why shouldn&#8217;t you?<br />
As a matter of fact, i think we do it that way&#8230; Or am i totally missing the point here?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
