Finely Tuned Consultant – Travis Smith
Today, we’re hanging out with Travis Smith, a WordPress dev who made his way over to WordPress from Blogger long, long ago. Doesn’t it seem like there are so many people who started out on “other” CMS-es, had talent, and once they discovered WordPress, they converted over to the WordPress camp. Travis is one of those guys. Travis has been a Genesis man since his first WordCamp in Raleigh in 2010, and uses the framework for most of his clients.
Travis started out as an instructional designer, which means he has an education in creating training materials. He’s also got a master’s degree in theology, and has worked in churches and corporations alike to manage business ops. He’s also the guy who usually runs the social media for his companies, and apparently knows how to tweet good (or, according to Travis’s 912 twitter followers).
Travis has contributed to the following: WordPress core , Genesis core, Soliloquy (and Addons) contributor (& docs), Easy Digital Downloads, Easy Content Types, Shopp, Custom Metaboxes, Plugin developer, WordPress Theme/Plugin Auditor.
In Travis’s Own Words
By trade, training, and education, I am a learning and development professional, which most people have no idea what that means, so instead I say this: I am a WordPress enthusiast. That is truly how I see myself. I’m super familiar with what not to do with WordPress, and feel lucky that I’ve converted a hobby into a full time venture!
Now, onto Travis’s Answers!
When was the first time that you really got excited about WordPress and at what point did you decide to make it your career?
I remember seeing the difference from Blogger.com and WordPress and was totally stoked about the idea of customization (I love customization). So when I made the switch, I completely confused WordPress.com and WordPress.org. I assumed I would have the ability to customize and make tons of changes within WordPress.com and thought it was the greatest thing since sliced bread! However, I quickly realized the differences between WordPress.com and WordPress.org and jumped ship almost immediately. Having customized my blog site, a few fellow bloggers contacted me to help them on their sites. Finally one person randomly paid me (a very minimal donation, like a pizza). That’s when I realized, “I could make money with my hobby!”
However, I am currently only doing WordPress part-time, though sometimes I have so much work that it’s a full-time second job. My day job is an extremely good job and being a family man, it is difficult to leave to make the entrepreneurial leap. Regardless, I am preparing this year to be 100% ready to make the dive into full-time WordPress consulting and development. I’ve actually spent the entire first quarter doing this taking on only a few clients referring many others.
Where do you go first to get your WP news, insights, and updates?
Twitter. In my opinion, if you develop using WordPress and are not on Twitter, you are completely losing out. I am also subscribed to WP Daily and Wpmail.me. If I want to go get information, I typically turn immediately to the Make WordPress sites.
What WP consultants deserve more love than they get? Who should we be paying attention to?
If I am thinking about consultants who deserve more love than they receive, I immediately think Thomas Griffin and Gary Jones. I am almost always impressed by everything these two guys create and develop. Thomas has created Soliloquy and continues to innovate with new ideas and new product development. Not enough can be said of Gary who has probably the highest coding standard I know. He has served as a great teacher for me enabling me to perform code audits myself. He is a premier developer, and I highly recommend hiring him to do at least one WordPress audit, plugin or theme. However, both of those guys have gained some exposure lately in the WordPress community.
One guy I have had the privilege of working with recently is Robert Neu. Robert has some awesome server skills and work ethic. He’s about as nuts as I am when it comes to problem solving. Just ask him about our recent Apache issue that he helped me solve for a client on a VERY questionable private host.
What performance tips would you give to other pros (as related to speed, scalability, security, plugins, backup, etc.)?
For me, one cannot emphasize security enough. I think what Dre Armeda and Tony Perez have done with Sucuri speaks to the great void in this area. Many, if not all, of us have health insurance. Many have life insurance. The companies we develop for offer both of these to their employees (regardless of the size of their company). Yet, so many sites go without having insurance for their website. Why? It simply does not make sense to be so cheap, leaving your brand to chance, and your financial income to possibly be ruined for a day or worse a week. Buy insurance, it’s cheaper and healthier for you in the long run. Get Sucuri. Or better yet, host with WP Engine (they’ve teamed with Sucuri).
And, learn how to write optimized queries in WordPress. I cannot stand to inherit sites to fix only to see custom SQL calls (not only that, no transients are used). I completely understand that it is important to have custom SQL calls, but know how to do it right (see Scott Taylor’s post: http://scotty-t.com/2012/01/30/understanding-mysql-in-wordpress/). Also, if you are a WordPress professional, call yourself that, and you have not watched Nacin’s “You Don’t Know Query” then you do not understand WordPress. After much proding, I finally convinced wordpress.tv to put it up. It’s that good. And every developer should know how to effectively use ‘fields’, ‘no_found_rows’, ‘cache_results’, ‘update_post_term_cache’, and ‘update_post_meta_cache’ arguments in WP_Query as well as with WordPress transients.
Confess to us your biggest moment of WP fail?
One client hired me to add on a store to their site. So as per my process, I created locally then pushed to stage where I “completed” the development. During this completion phase, I allowed some scope creap and didn’t sync my stage and local copies. When I finished my beta version (which was the equivalent of release candidate) I notified the client. Then something happened! While no one really knows, it is my opinion that the client erased everything with the one click stage button! This immediately gave me the idea that WP Engine should have a setting to setup temporary backups for stage for development (not sure where that is on your radar) as well as the ability to turn off (from the Staging Site) the one-click create stage site button on production (as a check and balance of sorts). This debacle was horrid! I lost about 3 weeks of work with no viable backup because of an assumption! This had an immediate impact on my process! So killing my weekend, I was able to catch up rather quickly in 5 days. (Ed: I’ve gone ahead and let our product team see this feature request. Thanks for suggesting it!)
When I don’t use WP Engine, I setup backups immediately after my security setup; however, I never thought once to backup my staging site for this reason. So always backup! Always.
If you were going to spend this weekend creating a plugin that doesn’t exist, what would it be?
I am writing a few plugins and have a few plugins that I never finished. So I would spend time on one of those first. One of my favorites is my private Github plugin I never finished. It utilize the GitHub API to push and pull changes to code snippets from WordPress. So instead of using Github for gists, I could use my gist custom post type. However, since this plugin had no formal sponsorship, it died. Anyone want to sponsor?
Do you use Themes & Child Themes, Roll your own, or both?
I have used a few different frameworks and themes and must say that I always prefer using a framework. So, I work almost exclusively with the Genesis Framework. Therefore, all the themes I create are custom child themes. Even when I work on a client’s site who started with another theme, the first thing I do is create a child theme. In my process, I have 2 base child themes I use as a starting point for every new site: one for custom themes that I am creating for a theme shop to be sold (places all the primary/relevant functions within functions.php) and one for sites I am developing for clients (where I push everything out of functions.php, which allows me to immediately know whether the client has tampered with the site or whether it’s my code: my code, I fix free; their code, I charge). I have rolled these into the Genesis Sandbox (Github). I am now working on Genesis Sandbox for Designers which will take the plethora of code options and allow the Genesis consultant to use settings to create sites—though my goal is to have as few options as possible/reasonable.
I also use a core functionality plugin for all my sites. In this plugin, I have created three classes that I love: a custom post type class, a taxonomy class, and a debugging class (besides using my version of Custom Metaboxes Class). I haven’t released this, but I am totally stoked about it. Using OOP, the custom post type class registers custom post types, sets text domain, set/change defaults, maintains the custom posts types the class registered (v. registered via plugins, etc.), easy contextual help, easy column management, registers cpt-onomies, reserves slugs, and edits messages—all via OOP and arrays. Likewise, my taxonomy class registers taxonomies, sets text domain, populates taxonomy, sets default terms, easy contextual help, and maintains the taxonomies the class registered (v. registered via plugins, etc). The debugging function is entirely dependent upon WP_DEBUG and SCRIPT_DEBUG being set, and when it does, it gives me query args to use in the URL for quick debugging (since I am too lazy to help build out Debug Bar). I’ve also adopted the use of WP_Logging in it.
What’s your favorite theme or theme framework? Why?
My favorite theme framework is Genesis. At first, I started using Genesis because Nathan convinced me to start. While my goal was to become a major contributor to Genesis, I thought that it would have never happened. I bet even Nathan thought the same when he met me. However, I owe a large portion of who I am in the WordPress community to StudioPress, Brian Gardner, and Nathan Rice. Genesis is, in my opinion, by far the best framework available. While I have been frustrated by its delay to adopt HTML5, I am very excited about Genesis 2.0. Personally, in hindsight, I believe the delay to switching to HTML5 was wise simply because only recently did HTML5’s definition solidify (see Definition Complete, W3C Moves to Interoperability Testing and Performance. To me, it makes development extremely fast and intuitive. At WordCamp Atlanta 2012, I demonstrated how one can use Genesis to create a Child Theme in minutes and a complete site in a few hours. For more reasons, see my post.
Favorite plugin?
Depending on the project, it differs. However, I use Gravity Forms on *every* site on which I work. If I inherit a site from someone else who (for whatever reason!) did not use Gravity Forms, I replace the form management immediately, sometimes for free. I cannot fathom why anyone would use anything different! While from a programmatic perspective it has room for a lot of improvement (especially in the creation of larger/longer forms in the admin and repeatable sections), I love it!
One that I have begun using more and more recently is CPT-onomies, by Rachel Carden. It is a great plugin for sites that need more in their taxonomies, easily. While I love Posts 2 Posts, CPT-onomies provides a simpler solution for smaller sites.
Least favorite plugin?
Any plugin that breaks a site, especially on an upgrade. Any plugin that takes a maverick approach to plugins and creates their own functions for things when WordPress functions exist for it already. Any plugin that removes core JS files (I think Pippin and Carl would readily and whole-heartedly agree with me there). However, any developer that is open to feedback and patches (and applies those patches), a least favorite plugin can readily become a favorite for me. And frankly some of my least favorite plugins are my own!
What’s the coolest thing you’ve ever done with Custom Post Types?
I use custom post types in every site and almost every custom plugin I have developed. I have created curricula-units-lessons publishing, custom directory plugins, custom galleries, custom responsive sliders, inventory, CRMs, portfolios, testimonials, etc. etc. Some of the coolest stuff was done via Posts 2 Posts or CPT-onomies plugin integrations.
What do you think is the biggest challenge that WP consultants will face in 2013?
Personally, I am quite shocked at the amount of “WordPress experts” out there who don’t know very much about WordPress. I am shocked at the lack of code quality and lack of adherence to the WordPress Coding Standards. What is even more amazing is when I send a private note to some of these developers with many of these spelled out for them clearly and how they ignore them. One service I provide is that I offer a subscription WordPress audit service for a base price per month. This means that I can and will run monthly/weekly (even nightly) audits on a single plugin/theme publishing the results to their FTP. This audit will highlight CSS errors/warnings, JS errors/warnings, and PHP errors/warnings as well as highlight PHP code complexity, lines of code, etc. etc. (for more information). This is not to say that there are some WordPress consultants/developers who know they lack ability and are willing and trying to learn as much as possible as fast as possible. I was once there myself and feel like I am still there. This is actually the result of the demand for WordPress utilization and migration.
If you could change one thing today about WP, what would it be?
Only one? For me, there are four major opportunities within WordPress: (1) Post Stati, (2) Taxonomy Meta Data, (3) Metabox API, and (4) Post Type Relationships (Posts 2 Posts & CPT-onomies into core). First, I would change how WordPress handles Post Stati, which was slated to be in 3.6 and got punted. This ticket was my #1 favorite ticket for 3.6 since I saw so many possiblities of utilization with WordPress as an application and a full-blown CMS. With a properly working Post Stati API, the sky is the limit. To me, it’s almost as huge as Custom Post Types was in 3.0.
Where do you see WordPress going in the next 2-3 years?
WordPress as an application or application framework with SOAP/REST APIs. For websites, I see a completely mobile-first HTML5 super-enabled by JavaScript.
Tell us a story where you saved the WP day for yourself or on a client project. What made the difference for you?
I often get random emails, contacts, IRC pings, or chat requests to trouble shoot various issues. Many of these, I turn into blog posts to help others. And while I love helping people out, I love the explanation and teaching of the process, the logic, and the code (even though many of my posts need updating). To me, being relentless both to obtaining help and to solving the issue has been the difference for me. I simply cannot let an issue go until it is solved. Call it constructive dissatisfaction or simply stupidity and insanity but I will work on a single problem for hours until it is solved.
What’s the biggest misconception you encounter about WordPress, and how do you clear it up for your clients?
Any time someone says something like, “WordPress cannot…” I take immediate pause, and it does not take me long to clarify this for people. However, I have discovered that many people simply do not understand the difference between custom post types (versus post types, versus posts, even), custom fields, custom taxonomies and custom metaboxes. Many developers just see/hear the word “custom” and immediately their eyes glaze. For my clients, it is much easier to explain these differences by changing the vocabulary and speaking in the client dialect. As I often say, “Put the cookies on the bottom shelf.”
If you were interviewing another WordPress developer for a job, what is the first question you would ask and why?
Having worked in HR, my first question changes depending on the day and depending on the need at hand. One of my favorite questions to ask is a dual set: “Why shouldn’t I hire you?” followed by “Now, why should I hire you?” It is very telling if a person can discuss, even laugh, at their areas of opportunities yet defend and argue well why they should be hired.
For me, I would want to find someone who is skilled in a different area than me. Since I have a love-hate relationship with jQuery and Javascript, I would hire someone who was stronger there than in PHP. In the code, I would check for documentation and comments. I don’t want to think if I am just scanning the code. Tell me what you are doing. Second, I would look at their code quality and complexity (standards, shortcuts taken, OOP, etc.). So, I would want to see examples of their code via Github or otherwise.
What did I miss? Here’s your chance to fill in the blanks and add something you want people to know about you!
First and foremost, I love the WordPress community. I owe a great deal of thanks to many people. Andrew Nacin, Mark Jaquith, Brad Williams, Samuel Wood (Otto), Gary Jones, Nick Croft, Thomas Griffin, Jonathan Davis, Jared Atchinson, Bill Erickson, Andrew Norcross, Glenn Ansley, Pippin Williamson, Brian Gardner, Nathan Rice, Russell Fair, Mike Schinkel, and others have helped me somewhere along the way in some form or fashion.
Thanks Travis!
If you’re curious how Travis can make WordPress into a solution for your website and CMS needs, check out his portfolio at WPSmith.net. He’s got some amazing work for you to take a look at before you hire him.
+1 for Travis, I’m always using his site as a reference (thanks Travis!)