Finely Tuned Consultant – Cooper Dukes
Hey Folks, Happy Fourth of July! Today we’re chatting with Cooper Dukes, founder of Inneo.com, and an East Coast native who found his way out to Singapore to build his WordPress biz. Cooper got a great business degree from Georgetown, and then to hear him tell it “I got a business degree from Georgetown that I didn’t really use, and headed out to Singapore a year ago.
Cooper specializes in building bespoke WordPress sites that solve strategic business challenges for his clients. That’s a fancy way of saying he knows how to make WordPress into a beautiful site for your company, but he can also use WordPress to build custom dashboards, client management software, and even bookkeeping programs. Frankly, that’s pushing WordPress capabilities to the limit, and we love seeing developers do that.
In Cooper’s Own Words:
WordPress is the best tool for getting on the web. It’s open source, well documented, well integrated, and has a vibrant, robust community. But when I’m not coding, I’m playing on Steam, drinking coconuts and eating pork buns.
Now onto Cooper’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?
Summer of 2008. Some friends and I had wanted to launch a website for a business idea we had. We off-shored the development to the lowest bidder, and the result was a predictably terrible product built in Joomla. We couldn’t use any of it and had to start from scratch again.
That’s when I really started digging into WordPress. Even pre-3.0, I was impressed by the simple setup, the community resources, and the modularity of it all.
I could get started in five minutes!
There were tons of people out there with the same questions I had – and they were getting answers!
Every piece of my site (core, each plugin, the parent theme) could be maintained by its own expert!
We never ended up starting the company, but I’ve been working with WordPress every day since.
Where do you go first to get your WP news, insights, and updates?
I think I’m a bit old-fashioned. I still use RSS for discovery, more than Twitter. (RIP Google Reader.)
I try to avoid reading everything, since I don’t have 40 hours in a day. That said, here’s what’s often on my reading list: WordPress.org/news, CSS-Tricks, Yoast, WPMail.me, ShopTalk, Sidebar, Smashing Magazine, StudioPress, and WPBeginner.
What WP consultants deserve more love than they get? Who should we be paying attention to?
The folks at Woo and the public contributors who have been working on WooCommerce have turned it into a really polished product over the past year or so. Robust, secure, extensible e-commerce with WordPress has gotten so much easier thanks to their efforts.
What performance tips would you give to other pros (as related to speed, scalability, security, plugins, backup, etc.)?
Performance is highly contextual. In my experience, the best thing we can do on a project to boost performance is early developer involvement.
Often, I get approached for site development later in the process, once the client has already gone through a design phase and has signed off on mostly complete mockups. While I’m happy to do work for these clients, I always have a nagging feeling along the lines of If anyone had asked me a month ago, I could have avoided that HTTP request.
When clients, designers, and developers sit down and talk before the project begins, there’s a lot we can do for performance:
- Budget page size and HTTP requests (possibly the best strategy for making performant sites, but impossible to do effectively if the mockups are already finalized)
- Design for assets that can be implemented with CSS3, icon fonts, SVGs, or sprites (in that order)
- Know what CSS3 doesn’t perform well, and weigh performance cost against user experience. (CSS3 is fast and wonderful, but do we really need 75 rotating JPEG images on our mobile site?)
- Decide on a legacy browser support strategy
- Use a quality host, with integrated caching and CDN (WP Engine!)
- Decide beforehand on the (limited) plugins to be used. Plan out how to mitigate their extra resource requests.
- Leverage the WordPress API whenever possible, since it’s the most secure, most future-proof way to communicate with the database. At the same time, know what functions cache and which ones don’t. Avoid making excessive database queries.
Confess to us your biggest moment of WP fail?
Back when I was getting started with WP consulting, I developed a WP2.x site without paying attention to the release cycle. A couple weeks after we launched, WP3.0 came out, adding features like customizable navigation menus and custom post types. I ended up redoing most of the site to better fit the WP3.0 offerings.
Lesson learned: now I always pay attention to the release schedule!
If you were going to spend this weekend creating a plugin that doesn’t exist, what would it be?
To the best of my knowledge, there isn’t an actively-maintained plugin for displaying static social share buttons.
I want to make a plugin which generates share buttons for the top six or so sites that:
- Uses CSS3 to create consistent styling for all the buttons
- Uses an icon font for the social logos
- Looks great on any screen size/resolution
- Costs one HTTP request (a CSS file), which can be incorporated into a theme’s stylesheet if desired
If we have to use those social share buttons, let’s at least not destroy site performance in the practice.
Do you use Themes & Child Themes, Roll your own, or both?
Child themes all the way. =)
For fully bespoke sites, this means creating a Genesis child theme as a fork of Bones for Genesis 2.0.
For other work, this just means separating out my modifications from whatever parent theme or template the client and I selected. If a theme doesn’t support child themes, then I don’t use it.
What’s your favorite theme or theme framework? Why?
Genesis. Because StudioPress gets it.
- It’s entirely child theme compatible.
- It has filters for every common use case, and hooks for anything else you could need to do.
- It only has a handful of options. Many WP themes try to give you dozens (or hundreds) of options. As a developer, I hate that. Theme options usually involve messy, specificity-breaking CSS injection; they split functionality between files and database; and they limit my ability to leverage SASS.
- Genesis 2.0 supports microformats, doesn’t use IDs for styling, and uses HTML5. That’s basically my entire wishlist for a modern WP framework. =)
Advanced Custom Fields. It makes creating consistent, usable admin interfaces on top of custom fields trivial.
Least favorite plugin?
I don’t want to point any fingers, but in general, I take more of a whitelist approach to plugins than a blacklist one. I have a handful of really excellent plugins I can recommend (WordPress SEO, Gravity Forms, Advanced Custom Fields, and a few others), but I don’t typically use plugins beyond that without a compelling reason.
I know that 100 good plugins can be more efficient than a single bad one, but as a theme developer, I love the opportunity to build really consistent, integrated client interfaces.
One example of what I mean is sliders. Most clients want at least one slider on their site. I can think of about five really good slider plugins, but they each handle slide management differently (page options, custom post type, or widgetized), with different interfaces, feature sets, and support for fluid layouts. The plugins have to add their own JS and CSS. I could copy these into my theme files, but it may break updatability. I could compress, concatenate on the server, and/or cache, but preprocessing before doing any of that is just better.
By including as a submodule a library like ResponsiveSlides.js, I can build slider functionality into a theme-wide JS file, add the styling into my theme SASS, give the client an interface that matches the rest of their backend, and keep the script updatable (by a developer who can test before deploying) – all while using exactly enough code to get the job done!
What’s the coolest thing you’ve ever done with Custom Post Types?
I’ve used CPTs to build bookkeeping software with a ‘Transaction’ CPT and taxonomies for ‘Client’, ‘Vendor’, and ‘Category’. However, this is a personal project, and I wouldn’t force my choppy implementation on my worst enemy!
Out of my production-ready projects, I’d say the use of CPTs that I’m most proud of is a national listings site, where I made a ‘Business’ CPT, then developed logic to sort the business by activities you can do there and location, with each level having its own navigation, blog, and landing page.
What do you think is the biggest challenge that WordPress consultants will face in 2013?
Well we’re halfway through 2013 now, so my comments here won’t sound very prescient. =)
I’d say the issue I’ve bumped into most consistently is developing user interactions on sites. As a user, WordPress is great for reading content. As an administrator/author, WordPress is great for publishing content.
However, allowing users to create content on your WordPress site really stretches the platform. Clients don’t want users to see the WP Dashboard, since it doesn’t look or work like the rest of their custom-designed site, and the dashboard can’t be restyled (and stay future-proof).
Frontend forms are an option, but these quickly increase project size. To simply have users who can own content items, you at least need to reinvent views for: signup, login, password recovery, profile editing, CPT creation, editing, deletion, single view, and multiple view. Not to mention the validation.
This is probably the biggest barrier to making WordPress more ‘appy’.
If you could change one thing today about WordPress, what would it be?
Integrated frontend and backend. See the previous question. =)
>Where do you see WordPress going in the next 2-3 years?
As a developer, I rarely use WordPress as a blog. For most clients, WordPress is at least a content management system for their blog posts, informational pages, sales pages, mailing lists feeding, and forms.
WordPress is essentially a pile of PHP scripts that let you safely read from and write to a database, then display that data into HTML. As developers, we use WP for more than blogging software due to its APIs (posts, users, settings), active development, and community. These fundamentals can be extended into much more robust functionality than just static pages.
More and more, I see WordPress moving into what would traditionally be ‘web app’ territory: novel user interfaces, managing large sets of data, dynamic layouts, etc. Why not use WordPress as a CRM? As accounting software? As a social network? We’re already seeing MVPs being developed in WordPress, as well as sites like Quartz.
Tell us a story where you saved the WP day for yourself or on a client project. What made the difference for you?
Any work that involves legacy code cleanup and/or hack recovery.
What’s the biggest misconception you encounter about WordPress, and how do you clear it up for your clients?
WordPress is free. Many themes and plugins are free. Hosting can cost pennies. But like anything else in life, you get what you pay for.
Sure, a client can get a WordPress site live on a domain, running a theme ,and with some add-on widgets. That doesn’t mean the site will do what you need it to, work well, look good, or be secure. Anyone can learn to build expert-level sites with WordPress, but that doesn’t mean everyone does. You get what you pay for, and investing in a knowledgable developer who can guide you through the WP ecosystem and rock at coding is an investment that will pay off in quality, time, and cost.
I also get a lot of questions about security. WordPress itself is very secure when installed correctly on a good host. Adding bad plugins, themes, and random scripts is what compromises security. Using ‘password123’ for all your accounts doesn’t help either.
If you were interviewing another WordPress developer for a job, what is the first question you would ask and why?
Assuming I’ve already seen code they’ve written, I’d ask “When would you write a plugin versus a parent theme versus a child theme versus modifying core?”
Beyond “I never modify core,” I don’t know if there’s a right answer, but I think one of the key concepts of WordPress is its modularity: the division of functionality between core, externally developed plugins, internally developed ones, libraries, parent themes, framework themes, child themes, etc. I wouldn’t want to work with developers who haven’t at least thought about this.
What did I miss? Here’s your chance to fill in the blanks and add something you want people to know about you!
I’m clocking in at 2,100+ words here. I think I’ve said everything. =)
I’ll only add to the chorus congratulating WordPress on 10 years. Looking forward to the next decade of building awesome stuff using WordPress!
You should definitely read Cooper’s answers to the questions about changing WordPress, and his opinions about plugins. Some of the best answers we’ve gotten. Once you’re done, mosey over to his site, Inneo.com, and hire him!
Start the conversation.