<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Learning PHP sans bad habits</title>
	<link>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/</link>
	<description>Management, Software, and Technology</description>
	<pubDate>Thu, 28 Aug 2008 00:26:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
		<item>
		<title>By: david &#124; rasch &#8212; Management, Software, and Technology &#187; don&#8217;t eat paste (learning PHP part iii)</title>
		<link>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/#comment-345</link>
		<dc:creator>david &#124; rasch &#8212; Management, Software, and Technology &#187; don&#8217;t eat paste (learning PHP part iii)</dc:creator>
		<pubDate>Tue, 17 Oct 2006 03:26:47 +0000</pubDate>
		<guid>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/#comment-345</guid>
		<description>[...] David Sklar [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] David Sklar [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marcin Brzezinski</title>
		<link>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/#comment-337</link>
		<dc:creator>Marcin Brzezinski</dc:creator>
		<pubDate>Mon, 16 Oct 2006 10:02:58 +0000</pubDate>
		<guid>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/#comment-337</guid>
		<description>I like this approach - only after getting to know MVC / Proper OO Model I found myself comfortable in switching to ASP.Net for a few projects, and to know my way around the Java projects (Spring/Hibernate) I manage.

Knowing this higher level of abstraction - it doesn't really matter if you use PHP/Ruby/Java/C# - it's all the same then :)</description>
		<content:encoded><![CDATA[<p>I like this approach - only after getting to know MVC / Proper OO Model I found myself comfortable in switching to ASP.Net for a few projects, and to know my way around the Java projects (Spring/Hibernate) I manage.</p>
<p>Knowing this higher level of abstraction - it doesn&#8217;t really matter if you use PHP/Ruby/Java/C# - it&#8217;s all the same then :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Sklar</title>
		<link>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/#comment-333</link>
		<dc:creator>David Sklar</dc:creator>
		<pubDate>Sat, 14 Oct 2006 21:20:11 +0000</pubDate>
		<guid>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/#comment-333</guid>
		<description>Hi, David. This is an interesting approach, but I think it's a solution to a slightly different problem than teaching someone PHP. Instead, it's a solution to teaching someone the basics of building a web app and you just happen to use PHP to teach those concepts. A perfectly worthwhile and desirable goal, but different.

One of the most frequent concerns I hear from students and readers when I teach PHP and write about it is that they often feel they're being cheated from the "real" language knowledge when a solution I advocate involves using a PEAR module or add-on library. I think this worry is misguided, but it is nevertheless common. Folks often want to learn "PHP", not a library or framework that sits on top of it.

So, part of the challenge is the meta-education that gets people comfortable with learning a particular toolset *plus* the language, not just the language. Doing this right involves making the concepts clear enough so that the learning is as transferrable as possible from one toolset to another -- learning how and why to filter input and escape output in one framework should make it possible for the student to do the same thing, easily and quickly, with a new framework or toolset. We change jobs, change projects, do lots of things that require us to adapt to new conventions and libraries.

The other potential issue with this approach is that some brittleness is hidden under the bucket of the framework you plan to create and its necessary simplicity. It is tough to strike the right balance between doing everything that one considers the minimum necessary to ensure proper conventions and practices (such as data escaping input and output, proper sql injection protection, and data/presentation separation) while simultaneously keeping the framework bits simple *and* making it extremely clear to students which things they're doing are part of core PHP and which are conventions and add ons that this curriculum happens to use. At a certain point, it may just be more straightforward to pick a popular framework and use that. It's probably not going to be that much more complicated than anything homegrown and offers students the advantage of some knowledge that's directly transferrable to their job or hobby projects.

All of these issues are not PHP-specific, but are, I think, more of an issue in PHP than with other languages since the community often prefers roll-your-own solutions rather than using existing code and that there is no clear winner for popular tasks that aren't part of the core -- tfor example, there's no obvious framework that's in the same position of dominance as Rails is for Ruby. So striking the right balance in teaching between "here's *a* way to do some things that you're definitely going to need but aren't part of PHP out of the box" and "here's *the* way to do those things" is tricky.

Best of Luck!</description>
		<content:encoded><![CDATA[<p>Hi, David. This is an interesting approach, but I think it&#8217;s a solution to a slightly different problem than teaching someone PHP. Instead, it&#8217;s a solution to teaching someone the basics of building a web app and you just happen to use PHP to teach those concepts. A perfectly worthwhile and desirable goal, but different.</p>
<p>One of the most frequent concerns I hear from students and readers when I teach PHP and write about it is that they often feel they&#8217;re being cheated from the &#8220;real&#8221; language knowledge when a solution I advocate involves using a PEAR module or add-on library. I think this worry is misguided, but it is nevertheless common. Folks often want to learn &#8220;PHP&#8221;, not a library or framework that sits on top of it.</p>
<p>So, part of the challenge is the meta-education that gets people comfortable with learning a particular toolset *plus* the language, not just the language. Doing this right involves making the concepts clear enough so that the learning is as transferrable as possible from one toolset to another &#8212; learning how and why to filter input and escape output in one framework should make it possible for the student to do the same thing, easily and quickly, with a new framework or toolset. We change jobs, change projects, do lots of things that require us to adapt to new conventions and libraries.</p>
<p>The other potential issue with this approach is that some brittleness is hidden under the bucket of the framework you plan to create and its necessary simplicity. It is tough to strike the right balance between doing everything that one considers the minimum necessary to ensure proper conventions and practices (such as data escaping input and output, proper sql injection protection, and data/presentation separation) while simultaneously keeping the framework bits simple *and* making it extremely clear to students which things they&#8217;re doing are part of core PHP and which are conventions and add ons that this curriculum happens to use. At a certain point, it may just be more straightforward to pick a popular framework and use that. It&#8217;s probably not going to be that much more complicated than anything homegrown and offers students the advantage of some knowledge that&#8217;s directly transferrable to their job or hobby projects.</p>
<p>All of these issues are not PHP-specific, but are, I think, more of an issue in PHP than with other languages since the community often prefers roll-your-own solutions rather than using existing code and that there is no clear winner for popular tasks that aren&#8217;t part of the core &#8212; tfor example, there&#8217;s no obvious framework that&#8217;s in the same position of dominance as Rails is for Ruby. So striking the right balance in teaching between &#8220;here&#8217;s *a* way to do some things that you&#8217;re definitely going to need but aren&#8217;t part of PHP out of the box&#8221; and &#8220;here&#8217;s *the* way to do those things&#8221; is tricky.</p>
<p>Best of Luck!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Ramsey</title>
		<link>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/#comment-330</link>
		<dc:creator>Ben Ramsey</dc:creator>
		<pubDate>Fri, 13 Oct 2006 13:25:09 +0000</pubDate>
		<guid>http://www.davidrasch.com/2006/10/12/learning-sheltered-php-sans-bad-habits/#comment-330</guid>
		<description>&lt;strong&gt;How To Teach PHP...&lt;/strong&gt;

	While at PHP Appalachia, I had the pleasure of meeting David Rasch, the founder of Triangle PHP, which meets in the Raleigh-Durham-Chapel Hill region of North Carolina. One night, by the campfire, David and I launched into a discussion about how newbi...</description>
		<content:encoded><![CDATA[<p><strong>How To Teach PHP&#8230;</strong></p>
<p>	While at PHP Appalachia, I had the pleasure of meeting David Rasch, the founder of Triangle PHP, which meets in the Raleigh-Durham-Chapel Hill region of North Carolina. One night, by the campfire, David and I launched into a discussion about how newbi&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
