<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Professional PHP &#187; programmer-education</title>
	<atom:link href="http://www.procata.com/blog/archives/tag/programmer-education/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.procata.com/blog</link>
	<description>PHP Programming, Web Development, PHP Advocacy and PHP Best Practices.</description>
	<lastBuildDate>Fri, 10 Dec 2010 17:23:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Software Development Team Diversity</title>
		<link>http://www.procata.com/blog/archives/2007/03/26/software-development-team-diversity/</link>
		<comments>http://www.procata.com/blog/archives/2007/03/26/software-development-team-diversity/#comments</comments>
		<pubDate>Mon, 26 Mar 2007 14:00:24 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Agile Methods]]></category>
		<category><![CDATA[Software Design]]></category>
		<category><![CDATA[agile-php]]></category>
		<category><![CDATA[extreme-programming]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[programmer-education]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2007/03/26/software-development-team-diversity/</guid>
		<description><![CDATA[Matt Mullenweg has a post about Hiring Diversity.    A successful software project must fulfill many competing goals and factors and meet a wide variety of challenges.   Diversity is the combined arms of software development.  In my personal experience, the diverse team performs better.  A diverse team allows the [...]]]></description>
			<content:encoded><![CDATA[<p>Matt Mullenweg has a post about <a href="http://photomatt.net/2007/03/24/kapor-vs-zuckerberg/">Hiring Diversity</a>.    A successful software project must fulfill many competing goals and factors and meet a wide variety of challenges.   Diversity is the combined arms of software development.  In my personal experience, the diverse team performs better.  A diverse team allows the most appropriate team member to step up to a challenge.  The interaction between team members with different points of view helps a project balance competing goals.</p>
<h3>Technical Background</h3>
<p>A team needs members with a technical background.  These guys are the ones that ensure everything works.  They can write the hard bits of code, keep everything performing and make sure the code is maintainable.  Without these guys, you will have problems.  On the other hand, sometimes those with a technical background view problems solving as a puzzle, where the solution is the end in itself.<br />
In my experience, team members with a less technical background are more empathic toward the user community.  They view problem solving as a means to a goal.  A customer focus is what makes a project successful.  Software can be successful despite technical problems, but it cannot be successful if doesn&#8217;t meet the customer&#8217;s needs.  Having some non-technical people helps prevent your resident technocrats from building a system that will service 10,000 concurrent users, but doesn&#8217;t meet the needs of the 329 users you have today.<br />
Perhaps at the extreme end of this spectrum is the extreme programming practice of including a customer on the development team.</p>
<h3>Experience</h3>
<p>In <a href="http://www.procata.com/blog/archives/2005/05/10/expert-programmers/">expert versus novice programmers</a>, I make the distinction between skill level and experience.  Age, skill and experience often correlate, but not always.  Your young apprentice programmers are important to have on a team.  They can react faster.  Sometimes not knowing better is a bonus.  They&#8217;ll do things more senior team members don&#8217;t want to do.  They do things they&#8217;re not supposed to do, sometimes for the benefit of the team.<br />
I think people underestimate how long it takes to actually become an expert, as I mention in my previous post.  But, then they also underestimate how similar all software projects are.  They also overestimate the impact of their toolset.  Generally the technologies in the laundry lists that form most job listings are not the critical success factors for that project.<br />
People want a programmer with who can hit the ground running, who is familiar with all of the teams tools, languages and libraries.  But, this is a monoculture as well.  Sometimes you need people who aren&#8217;t from your toolset culture to point out where you have swallowed the hook too deeply or to introduce new tools and techniques from their alternate background.  Sometimes their learning process can teach you something.<br />
While some experience is valued in programmers, age sometimes isn&#8217;t.  However, you need the older, more stable people as well.  They keep the young ones from repeating the mistakes of the past.  They keep the project on an even keel.  It helps to have an older perspective on the team.  I think they help keep attention focused on what matters.  The tension between the older and younger team members helps keep the team on track.</p>
<h3>Traditional Diversity Factors</h3>
<p>I have no opinion on the impact of race.  I have an opinion about women on software teams.  I wish there were more of them.  I have worked on software development teams with diverse nationalities.  I regard that experience as positive.  Different cultures have different tolerances for risk, different respect for authority or tradition.  I think cultural diversity on a team is a good thing.</p>
<h3>Managing Diversity</h3>
<p>Over the years, there have been many methods proposed of matching people with the jobs they are best at.  The solution that works best is to ask them.  People gravitate toward the tasks that require their special skill sets.  Good team management means hiring diversely and allowing that migration.  On a well managed, diverse team, people will self select the jobs they are best at.  As a result, the diverse team is more resilient and I believe potentially more successful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2007/03/26/software-development-team-diversity/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Expert and Novice Programmers</title>
		<link>http://www.procata.com/blog/archives/2005/05/10/expert-programmers/</link>
		<comments>http://www.procata.com/blog/archives/2005/05/10/expert-programmers/#comments</comments>
		<pubDate>Wed, 11 May 2005 04:22:24 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Agile Methods]]></category>
		<category><![CDATA[Software Design]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[cognitive-science]]></category>
		<category><![CDATA[programmer-education]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2005/05/10/expert-programmers/</guid>
		<description><![CDATA[An article on Java World, Hiring the phantom Java architect, sparked an interesting debate at the server side regarding what it means to be a developer versus an architect.  I very much dislike the term architect and like to think of this instead in terms of programming skill level.
Cognitive science research on problem solving [...]]]></description>
			<content:encoded><![CDATA[<p>An article on Java World, <a href="http://www.javaworld.com/javaworld/jw-05-2005/jw-0509-architect.html">Hiring the phantom Java architect</a>, sparked an interesting <a href="http://www.theserverside.com/news/thread.tss?thread_id=33809">debate at the server side</a> regarding what it means to be a developer versus an architect.  I very much dislike the term architect and like to think of this instead in terms of programming skill level.</p>
<p>Cognitive science research on problem solving tries to examine the difference between experts and novices in a domain.  Rather than distinguish between developers and architects, I think it is better to distinguish between experts and novices at programming.  The Dreyfus model of skill acquisition details five skill levels to help in this task.  Here is a summary from <a href="http://www.codinghorror.com/blog/archives/000203.html">Coding Horror</a>:</p>
<blockquote><p>
Level 1: Beginner</p>
<ul>
<li>Little or no previous experience</li>
<li>Doesn&#8217;t want to learn: wants to accomplish a goal</li>
<li>No discretionary judgement</li>
<li>Rigid adherence to rules</li>
</ul>
<p>Level 2: Advanced Beginner</p>
<ul>
<li>Starts trying tasks on their own</li>
<li>Has difficulty troubleshooting</li>
<li>Wants information fast</li>
<li>Can place some advice in context required</li>
<li>Uses guidelines, but without holisitic understanding</li>
</ul>
<p>Level 3: Competent</p>
<ul>
<li>Develops conceptual models</li>
<li>Troubleshoots on their own</li>
<li>Seeks out expert advice</li>
<li>Sees actions at least partially in terms of long-term plans and goals</li>
</ul>
<p>Level 4: Proficient</p>
<ul>
<li>Guided by maxims applied to the current situation</li>
<li>Sees situations holistically</li>
<li>Will self-correct based on previous performance</li>
<li>Learns from the experience of others</li>
<li>Frustrated by oversimplified information</li>
</ul>
<p>Level 5: Expert</p>
<ul>
<li>No longer relies on rules, guidelines, or maxims</li>
<li>Works primarily from intuition</li>
<li>Analytic approaches only used in novel situations or when problems occur</li>
<li>When forced to follow set rules, performance is degraded</li>
</ul>
</blockquote>
<p>The Java World article laments about companies that advertise for experts, but don&#8217;t interview for it.  I have to say this struck a nerve with me.  <a href="http://shiflett.org/archive/115">Multiple choice</a> tests like the <a href="http://www.zend.com/store/education/certification/zend-php-certification.php">Zend Certification</a> disappoint me.  Tests like this don&#8217;t measure skill on this scale at all, they measure exposure.</p>
<p>In the past, I&#8217;ve used a coding sample as an interview question.  The code, about 250 lines, was distilled from an existing system and is horribly bad in so very many ways, but functional.  By showing the code to an interviewee and asking them what they would do to improve it, I found I could get a good idea of their skill level.  Novices simply had no idea what to do with it and would just move code around.  Sometimes they would insert comments, trying to make the code &#8220;better.&#8221;  Some candidates only found and fixed one problem (there were several major ones.)  No one fixed all the problems.  The one person that I interviewed and didn&#8217;t have look at the code (for time reasons), we had to let go.  He simply fooled us at his interview about his skill level.  The thing is that I am certain he could have passed a Delphi certification test.  (like the one I took at Brain Bench.)</p>
<p>Moving from novice to expert programmer takes a very long time.  From <a href="http://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a>:</p>
<blockquote><p>
Researchers (Hayes, Bloom) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music. In another genre, the Beatles seemed to burst onto the scene with a string of #1 hits and an appearance on the Ed Sullivan show in 1964. But they had been playing small clubs in Liverpool and Hamburg since 1957, and while they had mass appeal early on, their first great critical success, Sgt. Peppers, was released in 1967. Samuel Johnson thought it took longer than ten years: &#8220;Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.&#8221; And Chaucer complained &#8220;the lyf so short, the craft so long to lerne.&#8221;
</p></blockquote>
<p>So you can&#8217;t become an expert without experience.  However, you can have experience without becoming an expert.  Some people just put in their time and never develop themselves.  So these people may have the answers to the certification trivia question for their specific environment and be able to get past the HR resume screeners with their buzzword detectors, but they will not have the impact that a true expert would have in the same situation.  Just like our Delphi Dud.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/05/10/expert-programmers/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
	</channel>
</rss>

