<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Code Poet &#187; Articles</title>
	<atom:link href="http://build.codepoet.com/asset/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://build.codepoet.com</link>
	<description>Because you make things with WordPress</description>
	<lastBuildDate>Thu, 23 May 2013 15:04:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='build.codepoet.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Code Poet &#187; Articles</title>
		<link>http://build.codepoet.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://build.codepoet.com/osd.xml" title="Code Poet" />
	<atom:link rel='hub' href='http://build.codepoet.com/?pushpress=hub'/>
		<item>
		<title>Customer Service as Art</title>
		<link>http://build.codepoet.com/2013/04/30/customer-service-as-art/</link>
		<comments>http://build.codepoet.com/2013/04/30/customer-service-as-art/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 13:40:56 +0000</pubDate>
		<dc:creator>Rob La Gatta</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Client Services]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Support]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[customer services]]></category>
		<category><![CDATA[freelance]]></category>
		<category><![CDATA[remote workers]]></category>
		<category><![CDATA[technical support]]></category>
		<category><![CDATA[Tri.be]]></category>

		<guid isPermaLink="false">http://build.codepoet.com/?p=2240</guid>
		<description><![CDATA[Rob La Gatta on why empathy -- not technical chops -- is the most important thing to customer service. <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=2240&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p class="intro">Rob La Gatta, Community Advocate, shares a little bit about how mighty <a href="http://tri.be/">Modern Tribe</a> handles customer support with a dedicated, remote, freelance team where collaboration, shared goals, and most importantly empathy make for a stellar customer service experience.</p>
<p>Customer service is more than just solving problems and making people happy they decided to use your product. Support is a form of art. How you shape customer service is up to you. Like <a href="http://www.thomaskinkade.com/">Thomas Kinkade</a> and <a href="http://www.picasso.fr/us/picasso_page_index.php">Pablo Picasso</a> before him, success in art is defined by crafting an approach that best connects with your patrons. The most beautiful thing about art, though? When you start with a blank slate, you can take it in any direction you want. And the same goes for support. </p>
<p>Some say &quot;good artists are born, not made.&quot; But the masters in the Louvre didn&#039;t emerge from the womb with paintbrush in hand. They developed interests and pursued those, learning from their experiences to better themselves &#8212; and more importantly, their processes &#8212; over time. If support really is an art&#8230;why treat it any differently? Shouldn&#039;t you be able to come to the table with little more than passion for the cause, and carve your own style that spreads throughout the community based on how well it speaks to them?</p>
<h3>Running support with a non-technical background</h3>
<p>Just over two years ago, I joined Modern Tribe to help handle support for <a href="http://tri.be/shop/wordpress-events-calendar-pro/">Events Calendar PRO</a>.</p>
<p>The premium plugin was still relatively new at the time. Shane &#8212; our CEO &#8212; and I did a daily divide-and-conquer on the CodeCanyon forum. The only strategy we had was &quot;make sure to respond before people get pissed off.&quot; </p>
<p>That much I understood. But beyond that, things were hazy. Coming into this role I had no experience doing dedicated customer service, barely knew a thing about Events Calendar PRO, and had only a working knowledge of WordPress itself. I could find a line of code in a PHP file but wouldn&#039;t feel comfortable making changes myself. I could fake my way through a conversation on Javascript or CSS but would freeze up if asked to hack at core files.</p>
<p>And guess what? It didn&#039;t matter&#8230;and still doesn&#039;t. </p>
<p>If anything, a non-technical support lead can approach customer service without the constraints of a developer&#039;s mind. A non-technical support person views things as the customer does, and can convey community wants/needs to the dev team in plain English. They force devs to consider and plan for the fact that not all users are developers. </p>
<p>There is a line that you need to walk: give the devs too much control, and they may build what they want without considering the community. Let the customers drive the carriage, and you&#039;re sure to veer from the project&#039;s core scope. You&#039;re probably going to run over budget, too.</p>
<p>At Modern Tribe, we call the support lead a &quot;community advocate.&quot; Remember that it&#039;s hard to advocate for the community if you can&#039;t put yourself in their shoes. </p>
<p>Since taking that first pass at CodeCanyon, we&#039;ve grown. Support has become a five-person team and is likely to get bigger in 2013. Shane&#039;s removed himself from daily support entirely, and I&#039;ve stepped back to a management role so I&#039;m not as involved in the day-to-day exchanges either.</p>
<p>My technical skill is not much more advanced than it was two years ago. Likewise as I build the team, technical accomplishments are one of my lowest priorities. I want people who care and empathize; if that means they need to bring in dev help for the more complex support tickets, that&#039;s a tradeoff I&#039;m more than willing to make.</p>
<h3>Why all good support teams also do Quality Assurance (QA)</h3>
<p>If a support team isn&#039;t at least partially involved in the QA process, they&#039;re doing it wrong. With proper testing instructions even the least technical support staff can effectively run quality assurance testing to verify that something works. </p>
<p>Consider five premium plugins, each with a dedicated support forum that one team member manages. This person effectively &quot;owns&quot; that forum: they address all threads, report feature requests and log bugs to the core dev team. As those come in, the dev team works off this feedback to produce the next release. When it’s time to verify that the new code accomplishes what the community wants to see, does it really make sense to have an isolated QA team verifying that? Ultimately, who&#039;d be the most sensible person to conduct testing here? Answer: the support team member who initially reported the problem. They know the problem, have a rapport with the user and won&#039;t have to waste time researching how to replicate the issue. What better way to expose your staff to the code they&#039;ll be required to support in the near future? </p>
<p>This is why it&#039;s always surprising to hear from teams who handle QA differently. Normally they fall into one of these categories:</p>
<ul>
<li>QA exists independent from the support team.</li>
<li>The devs who did the work do QA. (You&#039;d better be damn confident in your dev team if this is the route you take!)</li>
<li>There&#039;s no real formal QA process whatsoever.</li>
</ul>
<p>The merits of each could be debated&#8230;except maybe the last. (That&#039;s just foolish.) But all three create silos &#8212; independent, isolated teams working among themselves, which makes for a fragmented experience for the end user. By exposing support to QA, and having support teams increasingly involved in pre-release testing so that everyone knows what’s shipping, we&#039;ve been able to do a much better job of accurately communicating to users&#8230;and setting their expectations on the scope or timetable for a given fix. </p>
<p>As an added bonus, we&#039;ve found as we get the team more actively involved in the entire project cycle, everyone becomes more excited and willing to share their ideas. The situational awareness such testing offers helps the support team to work more effectively with devs just as much as it helps in their customer encounters. This works well with co-located teams. But what happens with remote employees?</p>
<h3>Avoiding the pitfalls of a remote, freeelance support team</h3>
<p>Whether QA is a factor or not, support momentum becomes more complex when everyone works remotely. Consider the fact that the whole team is part time and everyone freelances &#8212; meaning they&#039;ve got other clients, too &#8212; and things can get messy, quickly. We&#039;ve only got so much overlapping time in a given day and so we have a strategy for handling support.</p>
<p>No system &#8212; no matter how awesome &#8212; is going to keep a bad team from failing. If you&#039;ve got support staff who are genuinely disinterested, view this as &quot;just a job&quot; or who don&#039;t share the customer&#039;s sense of urgency, then you&#039;ve got bigger problems. </p>
<p>As a general rule of thumb: if a support member doesn&#039;t approach every new support exchange with, &quot;How would I feel if I were in this person&#039;s situation?&quot; then they probably aren’t well-suited for a remote support position. The amount of uncertainty — the sleepless nights you&#039;ll have wondering how much babysitting this person requires to get the job done — you don&#039;t want that. As with anything freelance, you want self-starters: good people who you can count on to get things done. And you&#039;ll be able to tell pretty quickly which side of that coin they fall on.</p>
<p>You will find good people &#8212; they&#039;re out there. Here are few things I&#039;ve found effective at maintaining momentum with my distributed team:</p>
<ul>
<li>A shared commitment to 24-hour response times. This is pretty standard, and I question the dedication of any team who doesn&#039;t guarantee customers a response of some kind within 24 hours of the original post. We openly publicize this 24-hour window. It forces the team to stay accountable, because they know there is no gray area: if your forum has threads outside that timeframe, you&#039;ve failed and so have our systems. And it&#039;s going to warrant a discussion you&#039;d probably rather not have.</li>
<li>Twice-weekly scrums. We meet for 30 minutes, twice a week, to review the support obstacles we&#039;re facing. Everyone brings up exactly what stands in their way and we figure out how to work through it on the spot. Everyone normally comes away with one to two action items outside of their regular support duties, to report back on at the next scrum.</li>
<li>An active Skype chatroom. We&#039;ve got our broader &quot;Products&quot; chat with the whole crew, but we also started a support-only chat a few months back. What a change this has made! It&#039;s like a never-ending scrum meeting where we can ask each other questions and pass off threads or support emails to someone better qualified. Plus, there&#039;s just enough goofiness and off-kilter banter that it feels as close to a watercooler as you&#039;re going to find in the digital world.</li>
</ul>
<p>Despite the fact that I have never met three of the four support members on my team, we&#039;ve developed working systems that are as effective as any established by comparable groups working in physical offices.</p>
<h3>Turn support into a flexible creature</h3>
<p>Different systems are going to work for different teams, and that&#039;s OK. This piece is meant to be an overview of what worked for Modern Tribe in case it might work for you too&#8230;and you&#039;re welcome to take a page from our book if it does.</p>
<p>But if I could leave support teams out there with one bit of advice, it&#039;s to try new things. Buck conventional wisdom. Go with your gut and accept that your idea might not work.</p>
<p>What I touched on here and &#8212; for that matter &#8212; virtually every aspect of Modern Tribe&#039;s support system does not come from a book or from reading articles like this one. It comes from trial and error: seeing what works, what doesn&#039;t and adjusting to make sure it doesn&#039;t happen again. If you&#039;re willing to do the same, you&#039;ll learn a lot.</p>
<p><small>Image based on <A href="http://www.flickr.com/photos/gpoo/4207206879/">Billetes y sombreros</a> by Germán Póo-Caamaño, <a href="http://creativecommons.org/licenses/by/2.0/deed.en_GB">CC-BY-2.0</a>.</small></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newcodepoet.wordpress.com/2240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newcodepoet.wordpress.com/2240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=2240&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://build.codepoet.com/2013/04/30/customer-service-as-art/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>0.000000 0.000000</georss:point>
		<geo:lat>0.000000</geo:lat>
		<geo:long>0.000000</geo:long>
		<media:thumbnail url="http://newcodepoet.files.wordpress.com/2013/04/customerserviceart.png?w=150" />
		<media:content url="http://newcodepoet.files.wordpress.com/2013/04/customerserviceart.png?w=150" medium="image">
			<media:title type="html">customerserviceart</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/c2717ee8bd708182011d2bc1fd1da67d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Rob La Gatta</media:title>
		</media:content>
	</item>
		<item>
		<title>Approaches To WordPress Theme Development</title>
		<link>http://build.codepoet.com/2013/01/31/theme-approaches/</link>
		<comments>http://build.codepoet.com/2013/01/31/theme-approaches/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 15:00:22 +0000</pubDate>
		<dc:creator>Philip Arthur Moore</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Theme Dev]]></category>
		<category><![CDATA[child themes]]></category>
		<category><![CDATA[parent themes]]></category>
		<category><![CDATA[Philip Arthur Moore]]></category>
		<category><![CDATA[starter themes]]></category>
		<category><![CDATA[theme frameworks]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[Twenty Eleven]]></category>
		<category><![CDATA[Twenty Ten]]></category>
		<category><![CDATA[Twenty Twelve]]></category>
		<category><![CDATA[Underscore_s]]></category>

		<guid isPermaLink="false">http://build.codepoet.com/?p=1831</guid>
		<description><![CDATA[Child themes, theme frameworks, starter themes, or theme-from-scratch? Philip Arthur Moore will help you decide. <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=1831&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p class="intro">What makes a WordPress theme? The simplest answer is PHP, HTML, CSS, JavaScript, and assets like images and other embedded media. But before these elements are forged into something beautiful you must decide on how your theme will be built and its intended use. Philip Arthur Moore expands on a <a href="http://wordpress.tv/2013/01/22/philip-arthur-moore-approaches-to-wordpress-theme-development/" title="Philip Arthur Moore: Approaches to WordPress Theme Development">recent WordCamp talk</a> about four different approaches to theming and offers the benefit of his experience to help you decide on a route that&#8217;s right for you and your projects.</p>
<h3 style="padding:1% 1% .5%;">Parent And Child Themes <em style="font-size:75%;">Bundle Up</em></h3>
<p>The <em>Twenty Somethings</em> — <em>Twenty Ten</em>, <em>Twenty Eleven</em>, and <em>Twenty Twelve</em> — are all perfect examples of themes created to function as standalone default WordPress themes and provide graceful support for child theming.</p>
<p>Out of its box, <em>Twenty Twelve</em> delivers a mobile-first design that accommodates clean typography, styling for multiple post formats, and CMS-ready page templates. At the same time, it&#8217;s completely customizable by way of child theming, or theme inheritance.</p>
<p>Parent themes pass on all their traits to their <a href="http://codex.wordpress.org/Child_Themes">children</a>, and when coded intelligently they allow their children to modify, add, or remove parent functionality entirely. This means taking advantage of core WordPress action and filter hooks to set theme defaults, appropriately outputting scripts and styles to page headers, and softly modifying fallback arguments for template tags.</p>
<p>When custom, non-hooked functions are used in good parent themes they are made <a href="http://codex.wordpress.org/Pluggable_Functions">pluggable</a>; and, in general, parent theme stylesheets do not aggressively rely on ID selectors. In short, ideal parent themes are by themselves just right on the front-end and fully moddable on the back-end.</p>
<p>The maximum benefit of the parent-child approach is that child themes are relatively simple to create: a <code>style.css</code> file housed in its own folder is all that&#8217;s required. This means that WordPress developers who actively offer theme support are able to provide straightforward customization guidance to DIY users. The learning curve for rapidly creating child themes is gentle.</p>
<p>One downside of relying on the parent-child theme model is that any post-launch changes made to a parent will directly affect a child theme &#8212; sometimes with negative results. Because child themes take on all the code of their parents unless specific overrides are in place, even the most seemingly innocuous improvements to a parent theme can have far-reaching effects to its child themes.</p>
<p>If, for example, a parent theme author decides to modify <a href="http://codex.wordpress.org/I18n_for_WordPress_Developers">internationalized</a> strings, change from an ID-based styling system to a class-based styling system, or change a hook on which a custom function fires, she should carefully consider the fact that child themers may need to update their translations, rewrite their child stylesheets, and update their custom, hooked functions.</p>
<h3 style="padding:1% 1% .5%;">Theme Frameworks <em style="font-size:75%;">By Developers, For Developers</em></h3>
<p>In a previous life I developed commercial WordPress themes for an outfit named <a href="http://graphpaperpress.com/">Graph Paper Press</a>. Its mission was &#8212; and still remains &#8212; to create sleek, minimalist themes for photographers and other creative people.</p>
<p>With every new theme we developed, we kept running into the same questions: How do we speed up development time and cut down on code repetition? How do we ensure maximum control when it comes to customizing an out-of-the-box theme without breaking future upgrades? And how do we manage all of the custom functions that we&#8217;re developing and use in every new theme that we ship out? For a time, a theme framework was the answer we came up with.</p>
<p>At their most complex, <a href="http://codex.wordpress.org/Theme_Frameworks">theme frameworks</a> act as code libraries that aid in developing highly functional child themes. Theme frameworks are advanced incarnations of the parent-child theme approach and, when acting alone as parent themes, look like slightly baren fields waiting to for us to sow the seeds of our next best theme. Frameworks and their children feel codependent.</p>
<p>The reason theme frameworks are so fantastic for developers is that they allow an unparalleled level of fine-grained control over all aspects of a theme&#8217;s functionality and design. Frameworks offer custom <a href="http://codex.wordpress.org/Plugin_API">actions and filters</a>, custom callbacks for core-supported hooks, and blurred lines between plugin and theme territory. &#8220;I can make this theme do anything,&#8221; is what developers who make frameworks say.</p>
<p>In the <a href="http://wordpress.org/">WordPress.org</a> self-hosted side of the theme landscape, theme frameworks are a viable approach for commercial theme developers who have little-to-no control over a customer&#8217;s hosting environment.</p>
<p>Where theme frameworks sometimes fail is that they are &#8212; for the average WordPress user &#8212; impossible to either understand or easily modify. Whereas with a bundled theme such as Twenty Twelve the process of overriding a template file or function is fairly straightforward, doing the same with a theme framework can be anything but.</p>
<p>The theme framework learning curve is steep, so much so that the most popular theme frameworks in the commercial market today have customization economies created around them for user support. Understandably, users who are forced to not only purchase a theme but also simple customization services often share their frustration with this development approach.</p>
<p>One more point to consider when developing with theme frameworks is the possibility of code bloat. Because they act as libraries, theme frameworks must include every function that will ever be called in a child theme. Maintenance and upkeep aside, keeping track of all the custom functions and custom hooks created by a theme framework is important. So too is good code organization in a framework. You may decide that this is too much overhead for a small project.</p>
<p>Theme frameworks absolutely have their rightful place in the WordPress ecosystem &#8212; they make life easier for developers but can create problems for the DIY user. Well-supported theme frameworks feel these effects much less than those that are left to rot on the vine.</p>
<h3 style="padding:1% 1% .5%;">Starter Themes <em style="font-size:75%;">A Wrangler&#8217;s Playground</em></h3>
<p>At <a href="http://automattic.com/">Automattic</a> we &#8212; the <a href="http://wordpress.com/">WordPress.com</a> Theme Team &#8212; face the challenge of finding, developing, and launching high-quality WordPress themes for millions of users.</p>
<p>We tackle this primarily by three methods: exploring <a href="http://wordpress.org/extend/">WordPress.org Extend</a> for stunning, fully GPL-compatible themes; partnering with premium WordPress theme shops who code well and provide superior support; and by crafting our own in-house themes.</p>
<p>For Automattic-developed themes we rely on the starter theme <em>_s</em>, also known as <a href="https://github.com/automattic/_s">Underscores</a>. A starter theme is, as indicated by its nomenclature, used as a project head start.</p>
<p>At its essence <em>Underscores</em> is a toolbox &#8212; in fact one of its predecessors is named <em>Toolbox</em> &#8212; that contains just enough PHP, HTML, and JavaScript to rapidly get a new theme off of the ground. It&#8217;s the 80% of a theme that results from 20% of up-front effort.</p>
<p>A close inspection of <em>Underscores</em>&#8216; stylesheet reveals resets and sensible typography, asset alignment rules for WordPress-uploaded media, and proper multi-level primary navigation styling. In addition, rules for screen reader text, post navigation links, and multi-author blogs are also present. &#8220;Just enough but not too much,&#8221; is the mantra of a starter theme&#8217;s stylesheet, where the primary goal of any code added is to avoid repetitive future work.</p>
<p>Lean, well-commented, modern template files are a hallmark of <em>Underscores</em>, as well as example code for oft-used theme features such as custom headers and theme customizer integration. And because the code that&#8217;s used is always the starting point of every new theme on WordPress.com, it&#8217;s well-vetted for security and WordPress best practices.</p>
<p>An important distinction between parent themes and starter themes is in how they are developed. Whereas every change to a parent theme brings with it the potential of adversely affecting all child themes that rely on it, with starter themes there is no concern.</p>
<p>Starter themes are not parent themes, and should never be used as such. They are meant to be constantly iterated upon and in flux. They exist to make launches happen faster and make code quality better with each new theme launch. The <em>Underscores</em> of today is markedly different than the initial version that launched, which means that the practice of always making it better is succeeding.</p>
<p>Without a doubt the largest speed bump to using starter themes is that in this development model there is no bug fix and enhancement inheritance that&#8217;s enjoyed by the parent-child theme workflow. If a critical bug fix occurs on the canonical version of <em>_s</em>, then manual updates to every theme spun off of all prior versions must take place.</p>
<p>With time, however, this negative aspect of starter themes is greatly diminished. Every time <em>Underscores</em> is used to begin a new project, a fresh set of eyes audits its code pre-launch, meaning that gradually the process of large-scale manual bug fixes to old starter theme code fades away.</p>
<h3 style="padding:1% 1% .5%;">Building From Scratch <em style="font-size:75%;">Freelancers And Agencies Unite</em></h3>
<p>The major assumption I&#8217;ve made up until this point is that you&#8217;re developing a WordPress theme to release it publicly. When we drop these approaches in favor of one more tailored for client work, starting from scratch emerges as another clear option.</p>
<p>When I write &#8220;starting from scratch,&#8221; what I really mean is ignoring, for the most part, commonly held WordPress theme guidelines and doing only what is absolutely needed for integrating WordPress into a project.</p>
<p>A theme that contains only a single stylesheet and a few template files would not be accepted on WordPress.org or WordPress.com, but that doesn&#8217;t mean it wouldn&#8217;t be completely appropriate for a one-off gig or WordPress-powered microsite. After all, all that&#8217;s needed for a theme to properly operate is a stylesheet and an index file.</p>
<p>Similarly, large-scale projects that are a mashup of theme, plugin, and web application are not well-accounted for by the approaches I&#8217;ve covered above. For these projects the best way forward will likely be dictated by budget, time, and administrative constraints. For all three limits, using a starter theme will at the very least act as a sanity buffer.</p>
<h3 style="padding:1% 1% .5%;">Go Forth And Theme</h3>
<p>So: parent-child themes, theme frameworks, starter themes, or building your theme from scratch? Now that you know a little bit more about the pros and cons of each, you&#8217;ll be able to make better decisions on personal and client projects alike.</p>
<p>Each approach exists as a scenario-specific response, and I&#8217;m confident that in the future more interesting problems and solutions will emerge as WordPress themes evolve. Good luck with whichever approach you choose, and may your adventures in wrangling always be fantastic.</p>
<p><em><small>Based on &#8220;<a href="http://www.flickr.com/photos/helloturkeytoe/4388098070/">IMG_0270.jpg</a>&#8221; by Hello Turkey Toe, <a href="http://creativecommons.org/licenses/by/2.0/deed.en">CC-BY-2.0</a>.</small></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newcodepoet.wordpress.com/1831/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newcodepoet.wordpress.com/1831/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=1831&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://build.codepoet.com/2013/01/31/theme-approaches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>21.874303 -159.447403</georss:point>
		<geo:lat>21.874303</geo:lat>
		<geo:long>-159.447403</geo:long>
		<media:thumbnail url="http://newcodepoet.files.wordpress.com/2013/01/theme4.jpg?w=150" />
		<media:content url="http://newcodepoet.files.wordpress.com/2013/01/theme4.jpg?w=150" medium="image">
			<media:title type="html">theme4</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/69bc322da418a6d842e89cfdb431c231?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">philiparthurmoore</media:title>
		</media:content>
	</item>
		<item>
		<title>Skydive with a parachute: use contracts with your clients</title>
		<link>http://build.codepoet.com/2012/12/11/contracts-parachutes/</link>
		<comments>http://build.codepoet.com/2012/12/11/contracts-parachutes/#comments</comments>
		<pubDate>Tue, 11 Dec 2012 13:26:45 +0000</pubDate>
		<dc:creator>Paul Sieminski</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[contracts]]></category>
		<category><![CDATA[legal]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://build.codepoet.com/?p=1598</guid>
		<description><![CDATA[Make sure there's soup for you -- get an agreement and get paid. <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=1598&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em>I’m a consultant who does web services &#8212; do I need a contract with my clients?</em></p>
<p>The answer is yes &#8212; only if you want to get paid.</p>
<p><em>Ok. I get it. I should have contracts in place with all my clients&#8230;does that mean I need a lawyer too?</em></p>
<p>Ideally, you should have a lawyer who can draft a formal agreement that fits your needs.  If you don’t have access to a lawyer to help you, it&#8217;s not hard to write up a simple agreement, on your own, that accurately reflects your business arrangement.  Doing this is much better than operating with no agreement in place at all.</p>
<h3>Agreements 101</h3>
<p>Here are a few basic points that a simple contract for web services should cover. Your lawyer (if you have one) will be able to provide a lot more detail on what your agreement should look like, and the terms you should have with your clients (these vary a lot depending on the type of client you have and the work you’re doing). Here are some questions to consider as you draft your agreement:</p>
<ul>
<li>Who are the parties? List each party.</li>
<li>Are the web services being done by you, as an individual, or through your LLC or corporation? Be specific!</li>
<li>Is the client an individual (with assets) or an LLC or corporation? Be specific!</li>
<li>If the client is a corporation or LLC, are you comfortable that they have the assets to pay your fees?</li>
<li>What are the obligations of each party? List each party&#8217;s obligations. Be sure to include the payment schedule.</li>
</ul>
<h3>Clarity above all else &#8212; put it in writing</h3>
<p>You, as a service provider, should be crystal clear about what <strong>you will and will not do</strong> under your agreement. Any vagueness can lead to disagreements about whether you’ve fully completed your obligations (and therefore whether or not you are entitled to be paid.) The client, should, at a minimum, be obligated to pay you on the schedule you agree to. Also, think about what you need from the client to do the work that they’re expecting, and then make sure that your agreement says that the client will provide you with whatever you need to do this work in a timely manner. If it’s access to their servers, or something as simple as a meeting with their CTO for one hour per week to answer questions, it’s a great idea to specify these requirements up front to avoid issues later. Here are some additional considerations as you draft your agreement:</p>
<ul>
<li>What is the timeline?</li>
<li>When do you have to deliver your deliverables?</li>
<li>When are payments due?</li>
<li>Does the client have the right to accept/reject deliverables? How many rounds of revision are included?</li>
</ul>
<p>If the client has the right to accept or reject the deliverables, outline a strict timeline: if the client hasn’t rejected a deliverable (clearly, in writing) after a defined time period, you should be entitled to the applicable payment for that deliverable.</p>
<h3>Payment options</h3>
<p>No matter which payment structure you use, the contract should be clear about when payment is due, when you must invoice the client, and whether expenses are to be pre-approved or reimbursed by the client.</p>
<p>On timing &#8212; it’s a good idea to require some portion of the payment up front. If a client is unwilling to pay something toward the project once you&#8217;ve defined the scope, you may have problems collecting the amount due at the end of your project.</p>
<h3>The time/materials relationship and you</h3>
<p>A common form of consulting relationship is what’s called a “time/materials” relationship: The agreement for this type of arrangement will specify a deliverable and say that you&#8217;ll bill the client at an hourly rate, plus expenses.  Many times under these agreements, though, clients will request a cap on your total fees.  If they do, it&#8217;s important to be clear on the fee cap, given the scope of the work. If you think you can’t deliver the requirements and meet the fee cap, it&#8217;s a good idea to either renegotiate or understand that you are agreeing to eat the overage when you sign an agreement with a fee cap.</p>
<p>Milestone-based payments are also very common. For these type of arrangements, if possible, make sure that the milestones you agree to meet are under YOUR control and not subject to the client’s changing opinions or material delivery.</p>
<p>Many clients like to pay upon acceptance of the work. In other words, if they don’t like the end product, then no soup for you! If you&#8217;re going to allow a client the right to accept or reject the work, it’s a good idea to specify a small portion of the payment subject to acceptance. This way you’ll get something for your efforts, no matter what.</p>
<h3>Scope creep</h3>
<p>The biggest area for potential conflict in a contract is “scope creep.” Your contract should define the scope of what you will do for the initial set of agreed-upon payments. If you want to change any of these expectations, create an amendment to the contract where both parties agree to the new deal by signing off on it.</p>
<p>A very common scenario is a client that changes their mind about “just this one little thing” and then again asks for changes on “just this other little thing.” You, wishing to do a good job, go ahead and make the changes, even though this extra work isn’t in the contract. This isn’t a problem until later, when a disagreement arises about whether you’ve completed the work. Now, the definition of the scope of your “work” is strung out across conversations and emails where “little things” came up and, unfortunately, individuals have very different memories of what changes were agreed on.</p>
<p><strong>The lesson is: if you are going to change project scope, timing, or cost, get it in writing.</strong></p>
<p>Having a written agreement is very important. Get the details in writing and try to be as diligent as you can in updating the written agreement to match up to the work that the client wants done. Your agreement does not need to be a fancy, air-tight legal contract &#8212; anything you put down on paper to set and maintain expectations is better than nothing. Going through the process of writing things down may be a bit more effort on the front end, but making this a practice for your business will save you a lot of time, effort (and probably money too) in the long run.</p>
<p><em>Thanks to <a href="http://techlawgarden.com">Tennille Christensen</a> for help and insight that shaped this piece.</em></p>
<p><small>Image based on &#8220;<a href="http://www.flickr.com/photos/10746069@N08/1314187924/">World war 2 parachute at Old Sarum living history weekend</a>&#8221; by fribbleblib, <a href="http://creativecommons.org/licenses/by/2.0/deed.en">CC-BY-2.0</a></small></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newcodepoet.wordpress.com/1598/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newcodepoet.wordpress.com/1598/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=1598&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://build.codepoet.com/2012/12/11/contracts-parachutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>0.000000 0.000000</georss:point>
		<geo:lat>0.000000</geo:lat>
		<geo:long>0.000000</geo:long>
		<media:thumbnail url="http://newcodepoet.files.wordpress.com/2012/12/parachute.jpg?w=150" />
		<media:content url="http://newcodepoet.files.wordpress.com/2012/12/parachute.jpg?w=150" medium="image">
			<media:title type="html">parachute</media:title>
		</media:content>

		<media:content url="http://1.gravatar.com/avatar/a7b2de74ab390d2f58385d9db8636bbc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pesieminski</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress SEO Checklist</title>
		<link>http://build.codepoet.com/2012/11/13/wordpress-seo-checklist/</link>
		<comments>http://build.codepoet.com/2012/11/13/wordpress-seo-checklist/#comments</comments>
		<pubDate>Tue, 13 Nov 2012 16:30:23 +0000</pubDate>
		<dc:creator>Micah Cooksey</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[All in One SEO]]></category>
		<category><![CDATA[Keywords]]></category>
		<category><![CDATA[Meta Descriptions]]></category>
		<category><![CDATA[Permalinks]]></category>
		<category><![CDATA[Tags]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://build.codepoet.com/?p=1429</guid>
		<description><![CDATA[Micah Cooksey offers a straight forward checklist you can use to make sure your sites are good to go on SEO.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=1429&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p class="intro">Building on all of the great info on WordPress SEO that&#8217;s available, I’ve written a checklist you can use to make sure your WordPress sites are good to go on SEO. This is not meant to be an exhaustive guide, but rather a quick reference that you can quickly scan before you release a new site.</p>
<h3>1. Change your permalink structure</h3>
<p>Search engines can’t display your content on the right Search Engine Results Pages (SERPs) if they can’t determine what your posts and pages are about. One thing that can hinder search engine crawlers from understanding the subject of your content is badly formatted post/page slugs. The default WordPress permalink structure (the format used for post and page URLs), which looks something like <code>yourdomain.com/?p=17</code>, is not always optimal for SEO.</p>
<p>Changing your permalinks to include keywords about your post helps Google, Bing, and Yahoo to better determine what your posts and pages are about, which means that you can compete for rankings for the relevant keywords. The most common permalink structure is /%year%/%month%/%day%/%postname%/. Yoast has a great guide on <a href="http://yoast.com/change-wordpress-permalink-structure/">changing WordPress permalinks</a> that I&#8217;d recommend reading.</p>
<h3>2. Use keyword-rich post slugs</h3>
<p>Semi-related to permalink structure, keyword-rich post slugs (or URLS) are another key to getting ranked. Don’t be afraid to use moderately long post slugs. Using slugs that contain your post’s title include more keywords, thus improving crawlers’ ability to comprehend the subject of your content. That said, don&#8217;t go overboard. Here are three examples of post slugs: one too short, one too long, and one that&#8217;s just right.</p>
<ul>
<li>Too short: birdbaths.com/make-bird-bath.</li>
<li>Too long: birdbaths.com/build-bird-bath-yard-ornament-diy-weekend-warriors.</li>
<li>Just right: birdbaths.com/build-a-heated-bird-bath.</li>
</ul>
<p>Here&#8217;s a good article by Dig WP on <a href="http://digwp.com/2010/07/optimizing-wordpress-permalinks/">Optimizing WordPress Permalinks</a>.</p>
<h3>3. Optimize your title tags</h3>
<p>Everyone hates the guy who forgets to change his page title from “Untitled Document” to something more relevant. With WordPress, you probably won’t end up with something that ghastly &#8211; you’ll likely end up with the defaults for the theme you’re using. While this is not always a bad thing, it’s better to have a little more control over how your titles display.</p>
<p>This is important because title tags, rather than simply filling up space at the top of the browser window, are the first thing that search engine users will see. <a href="https://twitter.com/yoast">Joost de Valk</a>, WordPress SEO expert, says that page titles are “one of the single most important factors for ranking in the search results.” Here&#8217;s the <a href="http://yoast.com/articles/wordpress-seo/#titles">rest of Joost&#8217;s article about SEO titles</a>.</p>
<p>Good title tags spring from good post titles. An example of a good title tag would be: <em>Top 10 Ways to Become Better at Tennis | Tennis for Beginners</em></p>
<h3>4. Configure meta descriptions for posts and pages</h3>
<p>Don’t neglect your meta descriptions. A custom-written description is much more appealing than the first sentence of your post. It doesn’t take that much more time to write a nice description for each post. Sometimes less is more when it comes to descriptions, so you can be concise while including your keywords. Make it interesting. Ask yourself, “would I click on this?”</p>
<p>WordPress doesn&#8217;t allow you to edit meta descriptions out of the box, so you&#8217;ll need an SEO plugin (as discussed below).</p>
<h3>5. Use an XML sitemap plugin</h3>
<p>Submitting an XML sitemap to search engines is a great way to ensure that your entire site gets indexed. Unless you enjoy writing XML from scratch, the easiest way to submit a sitemap is to use an XML sitemap plugin like <a href="http://wordpress.org/extend/plugins/google-sitemap-generator/">Google SEO Sitemap</a>. Very easy to use, this plugin automatically updates the sitemap each time you create a new page or post and re-submits it to the major search engines.</p>
<h3>6. Use an SEO plugin like All in One SEO Pack</h3>
<p><a href="http://wordpress.org/extend/plugins/all-in-one-seo-pack/">All in One SEO</a> is, by far, the most widely used SEO plugin for WordPress. Install it. It will save you tons of time throughout the SEO process. It allows you to set your page title format, adds a meta description to your post editor, and lots of other great features.</p>
<h3>7. Set up Google Authorship so that your G+ profile picture shows next to your posts</h3>
<p>Linking your Google+ account to your blog is a great way to make your articles stand out against other results. There’s no reason not to set this up. Brian Gardner has an article you can use for <a href="http://www.briangardner.com/google-profile-search-results/">setting up Google authorship</a> with WordPress.</p>
<h3>8. Noindex irrelevant archive pages</h3>
<p>There are a number of reasons why you should do this. For one, you can get penalized by Google because their crawlers think you have duplicate content. Second, since the title of date-based article has nothing to do with the posts they’re linking to, it can actually hurt your rankings for keywords. Rae Hoffman-Dolan has an article titled <a href="http://diythemes.com/thesis/optimize-archives-wordpress-seo/">How to Optimize Your WordPress Archves for SEO</a>, which explains in detail why this is a good idea. The article is written for the Thesis theme, but 99% of the info is relevant for all themes. She also suggests choosing either category-based or tag-based archives, and noindexing the one you’re not using.</p>
<p><em>Micah Cooksey is a 19 year-old designer and entrepreneur living and working in greater Portland, Oregon.  He currently works for Treehouse, a startup dedicated to providing quality, affordable tech. education to anyone who wants it.  Micah started using WordPress when he was 14, and still thinks it&#8217;s one of the best ways to power a website.  When he&#8217;s not working, he enjoys running, writing, and woodworking, among other things.</em></p>
<p>Image credit: &#8220;<a href="http://www.flickr.com/photos/melissadelzio/6816483892/">Barcelona, Gaudi, Sagrada Familia, Door, Typography</a>&#8221; by Melissa Delzio, <a>CC-BY-2.0</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newcodepoet.wordpress.com/1429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newcodepoet.wordpress.com/1429/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=1429&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://build.codepoet.com/2012/11/13/wordpress-seo-checklist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://newcodepoet.files.wordpress.com/2012/11/seo.jpg?w=150" />
		<media:content url="http://newcodepoet.files.wordpress.com/2012/11/seo.jpg?w=150" medium="image">
			<media:title type="html">seo</media:title>
		</media:content>

		<media:content url="http://1.gravatar.com/avatar/15462c0959857c5d470b6af04bcdffcd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">micahcooksey</media:title>
		</media:content>
	</item>
		<item>
		<title>Theme Sense: a Common Sense Approach to Theme Development</title>
		<link>http://build.codepoet.com/2012/10/22/theme-sense-a-common-sense-approach-to-theme-development/</link>
		<comments>http://build.codepoet.com/2012/10/22/theme-sense-a-common-sense-approach-to-theme-development/#comments</comments>
		<pubDate>Mon, 22 Oct 2012 12:59:18 +0000</pubDate>
		<dc:creator>Michelle Langston</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Theme Dev]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[theme development]]></category>
		<category><![CDATA[themes]]></category>

		<guid isPermaLink="false">http://build.codepoet.com/?p=1314</guid>
		<description><![CDATA[Theme sense, in part,  is knowing your code is current and secure. Let Michelle Langston lead the way.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=1314&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p class="intro">What is &#8220;Theme Sense&#8221;? Theme Sense is an intuitive understanding of WordPress themes: the relationship between the files that make up a theme, and how those files fit in with WordPress. Theme Sense is what you&#8217;ll have at the end of this article.</p>
<h3>Theme Sense is not about memorizing code</h3>
<p>Let&#8217;s think about mathematics and &#8220;number sense&#8221; for a second. If you teach a kid just to memorize arithmetic facts on flashcards, without explaining why the answers are what they are, that kid may struggle when they encounter a fact they haven’t memorized. For example, demonstrating 5+2 = 7 using blocks helps the kid “see” how numbers work. They can then use this knowledge to help solve any problem they run into in the future, even if they haven&#8217;t memorized the answer.</p>
<p>Theme Sense works the same way. It’s important to focus on the larger picture of what you’re trying to achieve, instead of memorizing specific bits of code.</p>
<h3>How do I develop my Theme Sense?</h3>
<p>Theme Sense is about being aware of what you’re doing, and making conscious, informed decisions along the way. For example, if I asked you to design a car for me, you&#8217;d instantly know which parts to include in your design—engine, frame, tires, windows, exhaust pipe, and so on. You might not know how every single part works, but you&#8217;d be able to explain why you need them in the design, and you&#8217;d be sure to verify the quality of the parts—which is super important for safety.</p>
<p>Use a similar approach when you tackle your next theme project. Ask yourself:</p>
<ul>
<li>Which files do I need to include in my theme?</li>
<li>What role does each of these files play?</li>
<li>Why am I about to paste this bit of code into my theme?</li>
<li>Where did this bit of code come from, and who wrote it?</li>
<li>What purpose does this code bit serve? Is it up to date? Is it safe?</li>
</ul>
<p>You don’t have to understand the mechanics behind every single line of PHP, because it may change two, three, or four release cycles down the road. What’s important is that, like with cars, you’re able to demonstrate a macro understanding of what your theme is doing under the hood.</p>
<p>That said, here are some specific things you can do to develop that macro understanding and to keep your Theme Sense sharp.</p>
<h3>Know &#8220;What&#8217;s New&#8221; with WordPress</h3>
<p>WordPress code is all over the web. It’s even found its way offline, and into books and magazines. When you gaze at stars in the night sky, you&#8217;re seeing them as they existed millions of years ago. Likewise, when you examine a WordPress code sample, that sample is a snapshot of WordPress as it existed at the time of writing, and not necessarily WordPress as it exists now.</p>
<p>Awareness of the latest WordPress versions and major new features will help you evaluate the timeliness of WordPress tutorials, books, and plugins. To keep up with WordPress releases, subscribe to the <a href="http://wordpress.org/news/">WordPress News blog</a>.</p>
<h3><a href="http://newcodepoet.files.wordpress.com/2012/10/themesense-dates.jpg"><img class="alignnone size-full wp-image-1327" title="Expiry date" alt="Photo: expired food" src="http://newcodepoet.files.wordpress.com/2012/10/themesense-dates.jpg?w=640&#038;h=284" height="284" width="640" /></a></h3>
<h3>Get in the habit of checking dates</h3>
<p>The first thing you should check before reading any tutorial or book is the date that it was published. Remember how important it is to know &#8220;what&#8217;s new&#8221; with WordPress? That will help you evaluate which parts of a tutorial are still relevant, and which code is still current enough to use in your theme. As you may already know, it&#8217;s dangerous to use obsolete code in a theme because it may have known vulnerabilities that hackers can exploit. Relevancy is not an all-or-nothing deal, though, and code doesn&#8217;t come with expiration dates. You must determine relevancy on a case-by-case basis. The good news is, there are several resources you can turn to.</p>
<p>If you do use outdated code in a theme, it’s not the end of the world. There are plugins, such as <a href="http://wordpress.org/extend/plugins/developer/">Developer</a> and <a href="http://wordpress.org/extend/plugins/theme-check/">Theme-Check,</a> that will help you optimize your WordPress theme development environment and scan your theme&#8217;s code for currency, respectively.</p>
<p>In addition to the developer plugins, it&#8217;s great to get into the habit of adopting the best security practices <a href="http://codex.wordpress.org/Theme_Review#Theme_Settings_and_Data_Security">listed in the Theme Security and Privacy Guidelines</a> on the WordPress Codex&#8217;s <a href="http://codex.wordpress.org/Theme_Review">Theme Review page</a>. Scan the list and make note of any that refer to features you&#8217;re using in your theme. For example, items that refer to <a href="http://codex.wordpress.org/Data_Validation">data validation and sanitation</a> are necessary to protect your site from <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">Cross-Site-Scripting (XSS) attacks</a>.</p>
<p>The principle behind the second item on the <a href="http://codex.wordpress.org/Theme_Review#Security_and_Privacy">Security and Privacy list</a> is especially pertinent when we&#8217;re talking about code relevance and timeliness:</p>
<p><em>Themes are required to implement Theme Options and Theme Settings pages deliberately, rather than relying on copy-and-paste scripts from website tutorials.</em></p>
<p>Copy-and-paste scripts may become obsolete very quickly. This applies not only to theme options code, but code from <strong>any</strong> tutorial. Be aware of the importance of timeliness and keeping your theme as secure as possible.</p>
<h3>Understand the essential elements of WordPress themes</h3>
<p>Most websites, whether they run WordPress or not, have the same general sections: a header area, a main content area, a sidebar, and a footer. It might be helpful to think of these sections as blocks (or car parts, your choice). You&#8217;ll use some blocks, such as the header, footer, content, and sidebar, in every theme you develop. You just might stick them together differently depending on the purpose your theme is trying to serve. With WordPress themes, template files such as <code>header.php</code>, <code>index.php</code>, <code>sidebar.php</code>, and <code>footer.php</code> are your &#8220;blocks.&#8221; Therefore, the theme is the completed structure that you build with these blocks.</p>
<p>Awareness of these essential elements will go a long way to helping you to develop theme sense. For a quick primer on the parts of a WordPress theme, check out the <a href="http://codex.wordpress.org/Theme_Development#Template_Files">The Theme Development page on the WordPress Codex</a>.</p>
<h3><a href="http://newcodepoet.files.wordpress.com/2012/10/themesense-code.jpg"><img class="alignnone size-full wp-image-1330" title="Code" alt="Illustration: vdu code" src="http://newcodepoet.files.wordpress.com/2012/10/themesense-code.jpg?w=640&#038;h=284" height="284" width="640" /></a></h3>
<h3>Know where to find the latest coding examples and standards</h3>
<p>The <a href="http://codex.wordpress.org/">WordPress.org Codex</a> is a great starting point to research WordPress functions and template tags that you find in tutorials. If a function is deprecated, The Codex page for that function will note it and point you to the most current alternative. You can also find <a href="http://codex.wordpress.org/Category:Deprecated_Functions">a list of all deprecated functions</a> in the Codex. Additionally, check out the <a href="http://wordpress.org/extend/plugins/log-deprecated-notices/">Log Deprecated Notices</a> plugin, which logs deprecated functions, function arguments, and files whenever they occur in themes, plugins, and WordPress Core.</p>
<p>The WordPress Theme Review Team has <a href="http://codex.wordpress.org/Theme_Review">a set of guidelines</a> that all themes must meet to be approved for the official WordPress.org free themes directory. Evaluating your code against these standards can help you to stay abreast of best practices and standards.</p>
<p>Finally, when in doubt about something, there are places you can go to ask questions, such as the <a href="http://wordpress.org/support/forum/themes-and-templates">Themes and Templates</a> section on the WordPress.org Support forums. If you prefer <a href="http://codex.wordpress.org/IRC">live chat</a>, there&#8217;s the general #wordpress support channel on the <code>irc.freenode.net</code> network.</p>
<p>This is not to say that you should never break out of the mold when building themes. Rather, the idea is that it’s smart to be aware of the decisions you’re making for each theme you develop and why you are making these decisions.</p>
<h3>Take-aways</h3>
<p>The points to take away from this article are:</p>
<ul>
<li>Know what major new features were introduced in the latest version of WordPress.</li>
<li>Pay attention to the dates on all WordPress-related tutorials. Use those, combined with your knowledge of the newest WordPress features to evaluate the relevancy of any given tutorial.</li>
<li>Understand that code changes regularly, but the basic building blocks of a theme stays generally the same.</li>
<li>Be aware of current best practices and standards. This can also come in handy when evaluating a tutorial’s relevancy.</li>
<li>Understand why you are making the decisions you’re making for your theme&#8212;for example, what purpose does each template file in your theme serve? If you&#8217;re about to paste a large block of code into your theme that you dug up from Google, what purpose is that code serving? Is the code relevant? Up to date? Secure? You don&#8217;t have to memorize every line of PHP. What&#8217;s important is that you&#8217;re able to comprehend your theme on a macro level.</li>
</ul>
<p><em>Image credits: </em></p>
<ul>
<li><em>&#8220;</em><a href="http://www.flickr.com/photos/sillygwailo/3183183727/">IKEA Espressivo Bulb Replacement Instructions</a>&#8221; by Richard Eriksson, (<a href="http://creativecommons.org/licenses/by/2.0/deed.en">CC-BY 2.0</a>)</li>
<li>&#8220;<a href="http://www.flickr.com/photos/22865921@N07/2739925401/">Please Don&#8217;t Eat Me</a>&#8221; by Nikki.L, (<a href="http://creativecommons.org/licenses/by/2.0/deed.en">CC-BY 2.0</a>)</li>
<li>&#8220;<a href="http://www.flickr.com/photos/zooboing/6896521620/in/photostream/">DOS Angry Birds</a>&#8221; by Patrick Hoesly, (<a href="http://creativecommons.org/licenses/by/2.0/deed.en">CC-BY 2.0</a>)</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newcodepoet.wordpress.com/1314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newcodepoet.wordpress.com/1314/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=build.codepoet.com&#038;blog=36198572&#038;post=1314&#038;subd=newcodepoet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://build.codepoet.com/2012/10/22/theme-sense-a-common-sense-approach-to-theme-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>0.000000 0.000000</georss:point>
		<geo:lat>0.000000</geo:lat>
		<geo:long>0.000000</geo:long>
		<media:thumbnail url="http://newcodepoet.files.wordpress.com/2012/10/themesense.jpg?w=150" />
		<media:content url="http://newcodepoet.files.wordpress.com/2012/10/themesense.jpg?w=150" medium="image">
			<media:title type="html">Theme Sense</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/6f6b2c0b4d24e9ee0c8d5519405d80e7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michelle</media:title>
		</media:content>

		<media:content url="http://newcodepoet.files.wordpress.com/2012/10/themesense-dates.jpg" medium="image">
			<media:title type="html">Expiry date</media:title>
		</media:content>

		<media:content url="http://newcodepoet.files.wordpress.com/2012/10/themesense-code.jpg" medium="image">
			<media:title type="html">Code</media:title>
		</media:content>
	</item>
	</channel>
</rss>