How Parade.com Uses the WordPress Theme Customizer API – Now With Full Transcript

Taylor Buley of Parade.com presented at the Big Media WordPress Meetup in New York City on how his team uses the theme customizer to make editorial changes on the fly. We’ve shared previously, and we’re publishing it again now with full transcript below.

Parade.com/customizer, It’s a Google app, nothing special. What I’m going to try to do is, I’ve done a webinar on this before, so I can talk your ear off on a customize API.

So what I’m going to do is try to be demo focused so I’m going to tell you what I’m going to talk about and show you what exactly is Parade and get into the developer side of it.

By the end, I hope that I’ve convinced the developers to be on the side of the editorial people and that side is the same one we heard earlier, which is I think the quote was “what I would really like from WordPress is an interface for editing the page while I’m looking at it”. And so that’s what I’m going to talk about today, there is such an interface, it was released in WordPress 3.4 and it’s really awesome.

What I’m going to do is first talk about what the WordPress customizer is, that’s the API I’m talking about and then we’ll show you how it works. It does exactly what we described earlier, which is you look at the page and you actually edit.

So who are we at Parade, we are a website, I like to think first, but we are a print publication, we’ve been doing the model that Newscred has been doing since 1941. We have a network of 700 newspaper partners, they carry this thing, it falls out of the newspaper for some people. Some people look through all the advertisements specifically to find it.

We have two such magazines, one was called Dash and the other was Parade. We’ve been around forever but this year we did a redesign and a rebranding and we went from all caps to uppercased. We also redid the entire website and CMS architecture along with it so if you don’t want to read this, I’m sure you don’t, just go ahead and pass it around. I just want some people to be familiar if you haven’t ever seen the print publication. I did not grow up with it, my Grandma did. I did not.

This is us, this is our website. It’s designed by Athletics, an amazing design firm. James Ellis is here today from Athletics, if you’re looking for an amazing designer, pitch his work all day. We have this thing it’s called Promo block, we have this thing called a grid screen, we are a lot like every other media website on the planet, right?

We have an article template, we have channels, we have a homepage, we have special types of articles that people who write these special types of articles would love to think that they’re different than everything else, but in WordPress this is all just a post.

So we are very uninteresting in how Parade.com uses WordPress in general. I’ll tell you, we use all of it. Except for search, we use Google custom search, we never queried MySQL live, ever, it’s a terrible idea, if anyone has thought about it.

Besides from that, we use everything, so what we’re looking for is when we have such a system that had a windows-like interface, an old CMS called open-CMS and it was a great idea to bring on, it’s open-source, well supported and all that.

Except, the developers who previous to our team let it rot and when you let a CMS rot, you get a piece of shit, right? And so what we had to come into is, this year we came into January and we had to start over. We didn’t figured out how to nicely wrap WordPress as a content engine underneath the MySQL and Mongo database that pushes stuff out via Real Time’s indication API.

Instead, we just threw everything away and the way we threw everything away was first we developed a mobile website, a proof of concept, make sure it works, advertisers liked it, we developed the rest of the website around it, had the mobile website up in January, my first month at the company, and had the rest of the website up in April.

The reason why we were able to do this was discussed by the NY Times developer, WordPress is nimble, WordPress does all of this stuff and if you’re trying to figure out a way to reinvent a UI that looks at the page while you’re editing it you just look deeper into core, it’s there and so I would encourage you all to.

It’s great it’s fun as a developer to develop elegant systems that run on multiple different types of instances and communicate across rest API’s and XML RTC and this and that, that’s all great, but WordPress is great too. What I’m going to show you today is something I think is really really cool inside of WordPress that people haven’t talked about and it’s the Customizer API.

So this is TwentyThirteen, you’ve seen it before. Has anyone not seen this interface specifically? So what I’m talking about it is not the theme, you’ve seen the theme before, it’s TwentyThirteen, this, has anyone not seen this before, has anyone not explored the theme, so you guys have seen this?

You know what it is – interface, website, this is basically an iFrame the way that this works is this is WordPress admin, basically we’ve got wp-admin, Customize.php up here.

What it does is takes the get parameter url = and then injects that guy into the iFrame and you’ve got post message communication across these guys and what you’re able to do is get live previewing and that’s what I’m going to demo today is a way to live preview so a little bit more on what it is in general.

So this is WordPress.com, you may have seen this too, it’s also the customizer API, it’s fancier, it looks better than what I’m going to show you today and all they did was just style this in CSS. You can take the core principles that I’m presenting here today, the very cool things that I hope you like that we’re doing and you can make it look as fancy as you want.

It seems like a very simple statement, matter-of-fact, everyone will agree here. Things on the web are best produced while you’re looking at them, right?

You can make it flat and take away the shadings and all that, but it’s still WordPress. So that’s kind of the message I’m trying to say today is “why is this so good?”

So this is our interface and what we’ve got is anything you can see on our website is editable. Why is that? That’s because I’m a journalist, I worked at Forbes as a reporter, I’ve worked at the Wall Street Journal, worked at various places then I got into development and worked out of the Silicon Valley bureau we had POS CMS at Forbes.

Through mutiny internally, WordPress became the CMS, it was awesome. But then we became the team in charge of the WordPress CMS site, eventually we got some of our pages stripped away from us. We went from having article pages, general pages, all that to just providing the editorial engine to someone like […] and now they’re selling this thing on the marketplace and you can actually license it which is awesome for them.

But we come from this legacy of being journalists, we’re editorial people, my boss Steve McNally is an editorial person, he’s a private person. What he doesn’t want is somebody in the backend, editing the front end of the page.

It seems like a very simple statement, matter-of-fact, everyone will agree here. Things on the web are best produced while you’re looking at them, right?

That seems very matter-of-fact, I don’t think anyone would disagree with this and yet every CMS we see on the planet is designed to run a back-end and a front-end and there’s a back-end and there may be a preview button but that takes you to the front-end. Or you could try to do a preview in an iFrame and that’s special because that one’s on the back-end. But it’s still just the front-end loading the back-end.

All of these are just fancy ways of doing the same thing Customizer API does it elegant and simply back-end wrapped in an iFrame with a front-end in it and what we get with this is you are looking at the actual page.

So you can do the fancy responsive thing where you show your boss like “oh cool I can scale by 30% which means when I go in and go out and it shrinks and all that, you can see exactly what you’re getting and it works on mobile and on everything else – why?

Because it’s WordPress, I didn’t invent anything here. I didn’t do anything here, this is me implementing a vanilla javascript API, or a vanilla PHP javascript API.

These are all the different things that the Customizer tool offers so it’s got check boxes, it’s got input fields, it’s got an HTML 5 drag and drop image picker tool, it’s got color pickers, it’s got radio buttons and you know drop downs.

It’s essentially any form you’ve ever created is already supported, any field you would like to invent, is extendible via the API, we’ve done it once but not very frequently because we don’t need to – the input button, the radio button, it does everything we need.

I’ll show you what that looks like – I’m going to pull up our development environment. I’m going to hope it works, it’s a private development environment. Make sure your wifi’s sniffing, I’m sure this is a public access point, it’s not protected, so go ahead, I’ll reset my password by the end of this.

We’ve got a stamp protector plugin so when it detects a bad id it tries to slow down the spammer, so it looks like it’s flagged me also.

I don’t know what I just clicked into, but it looks like it’s going to be a channel, so what you’re looking at is the exact same tools we ask our editors to use. What we do is we say “editors, you have this thing called a promo block, this thing called a page view, a tag bar”.We’ve got share buttons just like everyone else.

You know there’s really nothing too special here about the design itself. What is special is that it works across tablet, phone, wide desktop and desktop. So if you look at this on your mobile device, and I encourage you right now to do that so we can get some extra visits to the website.

You’ll see that it’s a lot of the same design interfaces it’s just what we did is tablet is a two grid across, a phone is a one grid across. It very much makes sense, I appreciate the design thought put into this, but when I was given it, it was static flat files in CSS so I did not have to do front end development of CSS, I did not have to do front end development of the mark-up. But we were tasked to take this site and bring it to life.

So what you might do is create a theme options plugin or something like that you know we have some of those or you could do what we did and take our thing. Okay, so what did I just do there? Nothing special. This is just a type, this is post meta, this is going to be stories posted. We’ll be looking at different options, so site options, we’ll be looking at posts and sorting posts meta. Your member tools, it’s going to be sorted as user meta.

There is zero custom tables in our WordPress install. That is on purpose, zero custom tables alright, so all of this is default WordPress and there’s nothing special going on here. So what we’re doing is live previewing – if I had a sponsor label, that would override this.

So all this is is the same stuff you’ve done on the server side, the templating, your wp theme thing, we’re now doing on the client side as well. Where we’ve gotten away with this a little bit better is we’re using front-end. We’re using handlebars for our templating system so we’re able to use php, the same templating system that we use on the front-end, which is a little bit of a cheat.

Another big benefit of this is we can prepare advertising campaigns for free, live them up, screenshot them they’re done without ever actually pushing any code, making any changes.

The one of the big challenges with this is that you have to account for all the different states, so if I remove the sponsor text. Either it’s going to show a bug or goes to live preview cause you have to think about all the different possible UI states you’re in and implementing them in multiple places.

This doesn’t come for free, but you’re able to do some other cool things, so I guess I’ll show a couple more. Davis did you save some images to this machine for me?

  • Yeah, on the desktop.

Excellent – I’m going to use this very cool image picker tool, alright and now what I’m going to do is update the promo block. What I’m going to do is just I picked a file, using the file picker, it’s chugging along and probably uploading it right now, and I’m able to see what it looks like now, right?

So this is called a promo block image and what that means is it comes with aspect ratio. So this is inspiration from the “Don’t kill the kitten” if you’re a developer you’ll get that joke.

I’m able to see what the image looks like so we’ve got a photo editor who tries stuff out. She figures we’ve got these boxes that are blocking some of the action so we don’t want to get heads cropped off or things done and they’re able to just go in and test it.

Another big benefit of this is we can prepare advertising campaigns for free, live them up, screenshot them they’re done without ever actually pushing any code, making any changes.

A couple of really cool things going on: we do, this is more than what you’ll find in TwentyTwelve, right? So what you’ll find in TwentyTwelve is a wallpaper tool, and that’s how we found this, we were like “okay, this is really cool”, advertising wanted a wallpaper.

I was like “dude, WordPress has got this covered no problem” pulled out all the customize tools, we had one tool in here it was the wallpaper. Designers come back and say it has to be responsive. That means we can’t use one image we have to use three. So we had to look into how do we customize this thing.

Turned out it was a breeze, we were able to do this in a weekend. It’s just that the site becomes a lot more alive and as you’re promoting, as you’re curating, as you’re calling stuff out, you’re able to actually see what it is.

So now I have the journalists and the editorial people paying attention because they don’t use tools like these at most places, right?

You end up in preview hell where you’ve got the preview button to go back tweak, the headline didn’t fit, didn’t break right, go back, tweak the headline, didn’t fit, you publish it, you find out you go in the most popular box, it doesn’t fit in the most popular box, you have to edit your headline again to make sure that it fits in individual places.

It’s just that the site becomes a lot more alive and as you’re promoting, as you’re curating, as you’re calling stuff out, you’re able to actually see what it is.

What we use is these tools to allow us to customize the headline for any given spot, so when I save this promo block headline, it becomes post meta, and only on that promo block.

I can do it down to the channel, we can have these support in post meta food promo block title, entertainment promo block title, anything you can think of can be customized on this thing and it’s mostly happening through these tools.

Pull open another tool really, I’m trying to get through this as soon as possible. I know that I’m the one in front of you guys to drink and that’s not cool, trying to get through.

Allowing these are article tools and so this is going to be the heart of what this article level data is the […] to journalists and allowing…oh awesome, allowing, thank you, what did I put there?

If you’re going to create tools start, oh great, so we have a sheet right here.

It’s an ad, it’s taking over the iFrame, it’s trying to inject it into the parent, terrible coder has ruined this for us. Not going to be able, whatever, I can go through this, it’s making me do it, and again did I say, visit parade.com?

Anyway, so I’m just going to show you the tools since we, and our advertisers […]If you can see this, what we’ve got, It’s just so much cooler to see live previewing but what we’ve got is this thing over here communicating the iFrame post mentions over here and then it’s just terrible.

Everytime you talk of one of these options something happens on this side so…trust me, it works. We have things like drop caps, which is like cool for designers but make no sense if you write a lead with just one sentence in it, it makes no sense.

So the designer, no offense, wanted us to put these things on everything and i’m like no, because it just doesn’t work so we always create an escape and our tools are our escape.

There’s nothing that doesn’t flow through WordPress in our system. But you want to be able to give humans the ability to interweave human touch inside of that algorithm content.

So we apply our default behaviour to everything and that allows the tools to override. So featured image is always shown by default but you can disable it because it doesn’t make sense sometimes to have an image followed by and image followed by an image drop cap. Mark, it’s this little print thingy at the back of the article and sidebar will make it look all fancy on the side.

You can pick which channels this indicates to. I don’t like to have content management in the tools themselves but we do this because our editors are pressing us to have one spot where they can edit everything.

What you can do is set the primary channel and that carries that colour that you saw around the thing, you can choose which promo blocks to send it out to.So I’m at the article level, I want this to appear in the home page on the first slide. I go ahead and save and publish it, it will appear there. Go through the rest of the tools – pins and spikes that’s a really cool concept

I’d love you guys to adopt pins and spikes are just “I would love this to be at the top of the stream”. What we want to do as developers is provide algorithm content. Every piece of our streams flows through wp […].

There’s nothing that doesn’t flow through WordPress in our system. But you want to be able to give humans the ability to interweave human touch inside of that algorithm content.

The way we do that, the way that we chose to do that is something called pins and spikes, where pins will force something to the top of the stream, spikes will prevent it from displaying the stream.

Add units, we have apps and they need to manage things I don’t want to give them editor rights because then they can delete content so what we do is give them edit ability to look at the page.

Edit the add units on the page and make those changes in here and then we don’t have to give them full on wp admin access, we just do a little bit of fancy stuff capability and we give it to certain users.

There’s that drop cap I was so angry about which you can imagine (it looks lovely) it looks lovely says the designer of the drop cap. You know, it’s a website, there’s nothing special…

Parade is very special, we are an amazing company, we are a unique butterfly, but we are just like every other, we’ve got categories and tags there’s really nothing too special.

And you guys, I would encourage you to slay the beast, you know. I don’t mean to pick on the Washington Post who by the way is one of our best partners and carries our stuff on Sunday thank you very much. Like just kill the old CMS, it hurts, it hurts really bad, but it hurts a lot less than having to maintain two systems, having to get these guys to talk together.

And if you need something like tools, don’t let WordPress get in the way. WordPress has a tool available for you, so I’m just going to call it there. Basically there’s a whole bunch of port function that you guys can hook into your devs.

If you try to invent a new interface that will supersede it, surpass it, be better, you’re wrong, you’re wrong.

Like I have this example code, this GitHub repo you can clone like copy these ideas, that little disk is that demo so if you guys want I could experiment with some of these content, the only key is that there’s this parameter called URL loophole and you have to figure out how to translate your URL back into your WordPress post.

So if you guys were here for the last WordPress meetup, I would espouse the Quartz model of URL. I don’t know if you guys remember that talk, but they had the unique identifier in the URL, it’s awesome, we also have the author slug, the user name in the URL itself. ‘Cause then you can do translation back to the author itself with that data, it’s good for analytics, it’s good for all this.

The only trick is that you have this get parameter and you have to decide what tools you want to display based on the get parameter. So if you have really crazy URLs you’re not going to be able to easily translate that back into “oh these are tags, this is a tag page, you need to show me a my tag page, this is a member page so I need to show my member page tool”, you’ll see in the code that’s there’s like full on examples for everything.

You basically register sections, sections are like these drop down things, you register settings and like attach a control to it and then WordPress takes care of the rest and then you just have to field the data as it’s coming in and figure out where to store it. Not complex stuff, we were able to get the core promotional tools running in a weekend, no joke using this code base and I would encourage you it thoroughly.

So if there are any questions, i’d be happy to take it. I have these fancy USB sticks for people who ask questions because I’m sure you guys are burgeoning with them.

There’s a PDF with a link to our website. I’m not sure who created that marketing campaign, you should go ahead and go to our website directly.

Questions, can I answer any questions.

Q: Are you previewing those things, or were they live?

A: Ah, live previewing, that’s crazy right? So what you’re doing is manipulating the dom, and you’re going to have to manipulate the dom in the same way that you’ve been manipulating the dom in Javascript.

You do it in Javascript, what you do is you get a promise from the WordPress customizer API and anytime that value changes, at some point in the future, you get a call back that happens and then you decide what to do with it from there.

You get the key and the value, so what we did is we ended up doing a lot of like hacky-ish stuff, one of our really cool tools just like no demo of whatsoever, so you can drag and drop stuff and update stuff, that’s really cool.

The way that we’re able to do that is we smuggle data into the keys. It’s really bad practice in general, but it’s awesome with this I’ll tell you. So you can make those keys as long as you want, you know, we put the pin order, where it came from, all that data is in the key. I just read the key and it tells me what to do, I have a function that basically parses the key and figures out what to do from there. Very very simple stuff.

But it’s live previewing, so only when you hit this save and publish button do the changes that are here which are being updated in this form field but they are being reflected over here, this is the actual website.

I’ve done nothing to edit any code here until I can update and then I’m just updating post meta values, site options and user meta that ends up being displayed on the site. The huge caveat there, the huge caveat there is that as soon as your editors get on the crack that is editorial tools, we call these surf and edit tools because you surf and you edit. At the same time, they will want everything to update immediately which as a large website, is like no way, we have 12 caches, and no.

So what you end up having to do is create some sort of API that listens to update meta events and figures out where to cache, where to purge the caches. We’ve got literally thousands of places to be cached, for data to be cached. We have one call to action called purge post, give it a post id and it purges all of the locations for that.

So as a developer it’s not for free, especially if you’re on a large-traffic website, but we’re able to, I mean we run all of Parade on WordPress, it does all of our templating, it does everything.

We use maybe three web apps, we’ve got a master/slave database and then cache insets and that’s it. Very vanilla install, we’re talking like $800 a month to run as far as infrastructure costs go. Not human costs, we have our op, we have our dev, we have me and a couple of contractors and all that. But it is, like you’ll save tons and tons of dough if you’re to be doing this because you’ll live and preview it at the same time.

Q: So you can have another radio button that says disable?

A: You know that actually, I have one probably, yeah that’s exactly what we do. If it’s a real preview we actually disable ads. Customize previews are these weird beasts where they’re like supposed to be friendly you know stuff but you get this action where it’s like a customized preview so you get some Javascript in there to be able to handle all the post events. But yeah, exactly, we have all our eds tools are basically turning them off.

Questions, can’t throw it to you, fancy USB key, I know you want it, right anyone else? Questions?

Q: What about the front end for the actual composition, where they have to do some fancy […]?

A: So this is huge and important and I want to impress this upon all of you. All of what you see here is promotional stuff so I talked about how I’m uncomfortable with the fact that there are category check boxes in there. I’m uncomfortable because WordPress admin is the single best CMS admin tool on the planet.

If you try to invent a new interface that will supersede it, surpass it, be better, you’re wrong, you’re wrong.
What we do is we don’t touch wp-admin, we provide all of these tools also on the wp-admin site because there are power users who love to be in HTML mode, in wp-admin, have their custom fields shown.

Some people will manipulate some of this data, it’s all in custom fields mostly at the post level, they’ll do it by hand but we don’t want that to be the training on day 1.

We want to be like “here’s you article, if you want to change the headline, do this” but that’s all that the headline is, it appears on the food channel, or the promo block channel or whatever.

If they’re actually editing the headline itself, they’re doing it in the WordPress backend, because I very firmly believe that the WordPress backend is the single best place to edit.

Q: Do you end up duplicating the […]?

A: yeah so that’s other huge issue and that’s why we moved to client side templating. Because what you’re going to end up doing is it’s not just duplicating code, it’s like duplicating code and doing backflips while doing it.

Because when you try to handle this scenario, where you got stuff on our member tools, like you can edit your social stuff like website title and all this, like okay, if you have a website title but you don’t have a website URL, you can display it.

So it’s not like you can just take the code that you have that already constructed this thing together and just display it again, this is one of the other problems that’s really slow.

What it’s doing is WordPress loads, it loads the page inside of it, this is a page it’s our deepest and slowest page that’s why I chose to load it. It’s got 100 items on it, even if one of these items passes through our promotions API…that was like 5 seconds.

No it’s longer than that, rendering time each one of these goes through and goes “I’m on a member page do I have any special headlines here ” and all this. So there’s also that overhead of tons more queries.

You’re talking about a lot of very small queries, unless you’re loading all the data up front and passing it around all your objects.

I wanted to show some of the crazy stuff, which is like I have a website title and that makes no sense if I don’t have a URL but now it shows up and then it’s got the website title but then I remove the website title and it figured out to use […].

So like you have to handle all these cases, it’s not as simple as being a client site template gallery where it’s just slap the data object into the template, it’s got the handlebar things it looks good you have to think about all the corner cases and like before this demo I was like if you looked at our GitHub if you guys want to laugh.

All the bugs I had to like I wanted this demo to go better than it did with the ad there and I was making sure that all the corner cases worked that if you like have show email disable, okay here’s a great one…

So you have show email disabled, but then you click show email, well your templated code doesn’t have an email, cause when the page loads, it was told not to show the page, so nowhere we have this best practice where we wouldn’t move a dom element if it isn’t needed.

We don’t leave it empty because it can have averse design effects so we don’t remove it entirely, which means if I want to show email first I have to provide this preview with the email beforehand or that featured image that I told you about that was like right here.

If that’s disabled on page load, well in this customized view, I actually have to load it anyway and then I hide it, and then when they want it, I show it.

So we’re talking about not just duplicating code, we’re talking about backflips while doing it so it is not for the, you’ve got to really know what you want when you do this thing, and what I would suggest is you come up with exactly the form fields and mock it out in photoshop, figure how you want it and figure out the behaviours associated with those and then code.

‘Cause otherwise you’re going to find yourself in all these weird corner cases that you won’t know how to deal with.

For Big Media & Enterprise WordPress Meetup groups in other cities, see the full list on VIP Events and join your local group. 

Want more information about WordPress services for media or enterprise sites? Get in touch.

WordPress and NESN.com – Big Media & Enterprise Meetup Boston

Michael Hall from the New England Sports Network (NESN.com) presented “How WordPress.com VIP helps NESN be a part of the ‘Digital Day’ for fans of New England sports” at the recent Big Media & Enterprise Meetup in Boston.

View the presentation slides below:

The Boston Big Media & Enterprise Meetup was held on June 11, 2014. Check out the other presentations from the event.

Want more information about WordPress services for media or enterprise sites? Get in touch.

Documattic: WordPress.com VIP Presentations & Resources on GitHub!

We’re excited to release what we feel could be a valuable resource to the WordPress community at large, “Documattic,” which is a GitHub home for WordPress.com VIP presentations and other resources.

Screen Shot 2014-06-04 at 12.10.44 PM

On the WordPress.com VIP team, we spend a lot of time talking to big brands and enterprises about their WordPress needs, which things are working for them, and which situations, features, or functionality need additional information or assistance from the VIP team moving forward. We spend a lot of time explaining the great features of WordPress to client IT, security, and editorial teams, and work with partners and agencies to provide up-to-date information about WordPress software and its vast community of developers, designers, content creators, and site owners.

We’d like to provide even more of that information online, in the hope that it can be useful for the next enterprise looking for information about WordPress, for the agency that needs some reliable answers about how WordPress works in order to explain it to their clients, and for community members who continually have to answer the question, “Can WordPress do that?” We have that information, and we’re excited to start sharing, curating, and building it up in a collaborative way.

There are three resources in the repository to start: the Security FAQ, the WordPress in Government FAQ, and my recent presentation about Trends in Enterprise WordPress Content. We’re hoping to add more in the future and we’d love to hear which documents, presentations, and resources might be useful to you.

If you’re an agency that works with WordPress, think about adding your own resources to the repository, so the WordPress community-at-large can benefit as well!

Check out the Documattic repo on GitHub.

The documents on the repository are released under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. Any documents or resources you’d like to see added to the repository? Make a pull request, or comment below, and we’ll see what we can do!

WordPress Agencies: Facing Challenges for the Next 10 Years

Last week I gave a presentation at WordCamp Paris, focused on what WordPress agencies need to do to be enterprise-ready which I think is the biggest challenge the WordPress community is facing in the next ten years.

At WordPress.com VIP, we’re at the forefront of evaluating, analyzing, and enabling enterprise and large-organization WordPress projects with WordPress developers and agencies all over the world.  As the software matures and becomes more well-known, the demand for bigger and more innovative projects is increasing, too, and the many WordPress consultancies around the world need to be ready to answer that call.

Below are the slides from my presentation and then some additional insights and advice from WordPress.com VIP Featured Service Partners to WordPress agencies and consultancies all over the world.

Q: When did you know it was time to grow your team & how did you do it? What has contributed the most to your growth?

Austin Smith from Alley Interactive: Our project management team keeps a close eye on resource allocation and lets us know when it’s time to hire. We don’t allow ourselves to grow rapidly in response to any one big site build project—the baseline revenue has to grow in order for us to take on a new FTE. This also means that we can’t say yes to every large project. We’re lucky to have watched a similar agency expansion in the Drupal world from the sidelines, and we’ve witnessed that the agencies that grew rapidly in response to a few big contracts had a very hard time surviving after those projects were delivered and the big checks stopped coming. Don’t accept a project that you can’t deliver with the team you have at the moment you sign the agreement.

Tom Willmot from Human MadeWe’ve grown organically as the amount of work coming in has grown, we’ve generally been pretty cautious when adding to the team which I think has served us well. In the beginning that growth is slow as adding a single new person could be the equivalence of growing the team size by 33% but as you grow it becomes easier to grow more quickly.

Simon Dickson from Code for the People: I think of the early days of WordPress as a ‘serious’ platform – by which I’m talking 2006-8 – as its ‘punk rock’ years. I had seen corporate web development become slow, costly and too clever by half: think Pink Floyd, Frank Zappa, Emerson Lake and Palmer. For me and many others, involvement in WordPress was a reaction against all that, powered by enthusiasm rather than education. We could produce great work in small teams with minimal knowledge and minimal overheads. And although we could see amazing potential in WordPress, we tended to keep our ambitions in check – no concept albums or twenty-minute solos.

But as WordPress developed, and as we kept proving ourselves on the small stuff, clients began bringing bigger and bigger projects to us. Instead of modest microsites, we were being asked to develop the main website, or a corporate publishing platform. And with greater budgets come greater responsibility. We needed to expand the team, to provide cover for the skills we already had, and to add extra skills we didn’t already have.

The bar to becoming a great web developer is higher now than it ever has been. It’s unrealistic for someone to be an end-to-end expert in everything from responsive visuals to server efficiency, not to mention sales and business management. There’s still a huge market for ‘jacks of all trades’ – building smaller sites or working with smaller clients. But to build the kind of sites we wanted, for the kind of clients we wanted, we needed to put together a team of specialists.

Q: How has your coding workflow & style changed as you’ve grown? What prompted the changes?

Tom: We’ve evolved our workflow a lot, from what was a mish-mash of personal coding styles / workflows to what we have now which is pretty clearly defined. This was important to us for a number of reasons:

  1. We enforce internal code review, all code is reviewed by a coding buddy and vice-versa. This increases overall code quality, reduces bugs, promotes consistency and is a great way to learn from each other. We rotate those buddy pairs quarterly and purposefully pair across skill levels.
  2. Having a clearly defined workflow helps us work more effectively with freelancers and clients as they can easily get up to speed on how we like to work.
  3. Our local development environment is based on Vagrant which is huge in terms of ensuring everyone is working from a consistent base.

Simon: Over the past year, as we’ve added extra employees and expanded our freelancer pool, git has become absolutely pivotal to our work process.

We are a distributed team, scattered across the UK; yet we can all collaborate safely and effectively. Features can be developed in parallel, and merged together when ready – all the more important as we each specialise in different facets of site development. And with a visual tool such as SourceTree, we always have an overview of who’s working on what, and which version of the code is on which server. I can’t imagine how we ever coped without it.

Austin: The most significant change we made was to implement code review for everything we deliver. Every line of code we ship has at least one extra set of eyes on it. It’s not supervisory, it’s peer review, which fosters collaboration. This had a very positive side effect in terms of natural exchange of ideas, and has also ensured that our Github repositories now all use feature branches, which is definitely a best practice.

We formalized this practice when we grew our management team beyond the co-founders—it’s a way for us to ensure high quality code delivery whether the founders are involved in a project or not.

Q: What was the biggest challenge your team faced in serving larger clients? 

Simon: In our experience, even with the largest clients, the day-to-day responsibility for a project usually rests with one individual. And whenever possible, we like that individual to feel like part of our extended team. We often give them a login to our company-only chatroom and our code repository, so they can see the commit messages and join the ongoing dialogue. Transparency builds trust, with benefits for both sides.

Our biggest challenge has been learning to be patient. I spent most of my career working for large organisations, from national governments to tech multinationals, so I know all about dealing with slow decision-making processes, and challenging long-established policy or practice. In those first few months working for myself, I couldn’t quite believe how productive I could be. It’s all too easy to forget that others are still suffering.If you want to deal with large clients, you just have to accept the slowness. ‘No brainer’ decisions can take months, and there’s almost nothing you can do about it – apart from being ready to respond, as best you can, when the answer finally arrives.

Austin: We started our firm to work on big projects with big clients, so the size of work has only gotten incrementally bigger. We’ve always enforced internal consistency per project, but allow for overall standards to improve from project to project.

Tom: Assuming clients want the cheapest not the best – when you come from the mindset of serving small-business you tend to be hyper focused on delivering solutions as cheaply as possible. Often when estimating a project, say to add a simple e-commerce section you’ll think “we could knock something simple together in 2 days, but to really build something great we’ll need 2 weeks”. We want to seek out clients that want us to go for the latter option.

Q: What’s one thing you wish you had done from the very beginning?

Tom: I wish we had participated more in the WordPress community, in the early days I was more of a lurker than an interacter and definitely lost out because of it, more WordPress agencies need to wake up to the power of being part of the WP community.

Austin: I’d say code review, but it I’m not sure it would’ve been a reasonable thing to ask of our smaller team a couple years ago.

Simon: Simon & I had both been through the ‘starting a company’ thing previously; and we had been working as an unofficial partnership for a couple of years. So we knew the pitfalls which lay in wait during that first year.My advice to others would be to look for opportunities to use third-party services wherever possible. Time is the one thing you can’t stockpile: so it’s almost always worth spending a few pounds/euros/dollars on a good hosted service which will ‘just work’, even if there’s a free self-hosted equivalent.

Thanks to our WordPress.com VIP Featured Service Partners for their insights! We’ll be adding more to this as the answers come in. 

WordPress.com VIP Training Days in New York, February 2014

The next WordPress.com VIP Training Days, our one-day intensive courses held in-person, will be in New York City in February 2014.

The courses will focus on small groups of students with hands-on material led by several Automattic and WordPress.com VIP instructors. The course will be very interactive and full of practical information & exercises, and students will have the opportunity to ask questions during the course as well.

5432_WordPressTues_0314f

VIP Training Days – New York, February 2014

Special Note: These courses are suitable for both self-hosted and WordPress.com VIP sites/superusers/developers – the large majority of the material will focus on core WordPress functionality/features.

  • Superuser Training – February 3rd – $600 course fee.
  • Developer Fundamentals I Training – February 4th, $850 course fee.

Note: All transportation, transfer, and lodging costs will be the responsibility of each student, as well as any other expenses not explicitly stated. Lunch will be provided. Payment is required to confirm registration. 

Register for the Developer Fundamentals I training, or the Superuser training in New York in February, or read on for more information about each course’s curriculum and prerequisites.

If you’re interested in VIP training and can’t make it to the New York dates, you can register your interest and let us know your location preferences (no commitment required). It’s possible we’ll add more dates or locations in the future.

Register now!

Developer Fundamentals I Training

Description

WordPress Fundamentals I is a day-long, intensive course meant to introduce PHP developers to programming for WordPress. Attendees should be familiar with WordPress as a tool, and have a working understanding of its general terminology. Proficiency with PHP is also a must, but no knowledge of the WordPress code itself is expected.

Prerequisites

  • Proficiency with basic PHP development.
  • Awareness of WordPress as a platform, including common terminology such as a post, a page, widgets, and sidebars.
  • A local development environment running WordPress Trunk. We will provide a virtual machine ahead of time for participants who don’t have their own development environments, but they will be responsible for setting it up ahead of time.

Course Materials & Requirements

Each student will provide their own computer (laptop) for the course, with working wifi functionality. A lunch break and light lunch will be provided by WordPress.com VIP. Students should have a local working copy of WordPress trunk installed and tested prior to the training. To download trunk: http://wordpress.org/download/svn/

Curriculum Overview

  • Intro to WordPress core, SVN, and Trac, history and culture
  • Developer environment and debugging tools
  • WordPress Development Best Practices
  • Introduction to Plugins
  • Actions and filters
  • Introduction to Themes
  • The Loop & WP_Query
  • More on themes
  • …and more!

Superuser Training

Description

In this course, you’ll learn how to manage and use the WordPress interface from a site owner’s point of view; as someone who will be managing multiple users, their permissions, and ultimately sharing knowledge with them about how to use WordPress to publish a great site with an active community and/or audience. We like to think of this course as our teachers teaching your teachers – those who will serve as the WordPress expert in an organization.

We’ll also do a deep dive into the publishing process so our superusers can teach their editors, authors, and contributors how to best use the WordPress interface. From creating and publishing posts to managing tags and categories, from mastering multimedia and images in articles, and bulk management of posts and pages, we’ll cover the entire publishing process from draft to done.

Prerequisites

Users should have a working (beyond basic) knowledge of the WordPress administration panel / backend. They should be managers, administrators, or editors of an existing or future WordPress site with multiple users.

Course Materials & Requirements

Each student will provide their own laptop computer (no tablets) for the course, with working wifi functionality. A lunch break and light lunch will be provided by WordPress.com VIP to all students. For the purposes of the course, students will be given access to a WordPress.com site. Users will be requested to create a WordPress.com username if they don’t have one, and this username will be submitted to the course instructor. To create a WordPress.com username: http://en.wordpress.com/signup/

Curriculum Overview

  • User Management: roles, permissions, and invitations
  • User Profiles: settings, preferences, and Gravatars
  • Comments: moderation, spam, and notifications
  • Creating & Publishing posts
  • Managing tags and categories
  • Mastering Media: images, galleries, and slideshows
  • Bulk management of Posts and Pages
  • …and more!

Register for the Developer Fundamentals I training, or the Superuser training in New York in February!

Refunds

We’ll provide a full refund if the cancellation is requested within 30 days from the event date, and 50% thereafter. No refunds will be provided for cancellations 5 days before the event.

Register now!

WordPress isn’t Suited for Major Publishers?

austin@alleyinteractive.comIn this post, WordPress VIP Featured Service Partner Alley Interactive‘s managing partner Austin Smith shares his thoughts regarding a recent article which dismisses the potential and power of WordPress as an enterprise solution. We naturally disagree with the article and turn this post over to Austin. 

Felix Salmon sounded off earlier this week, at some length, about one of my favorite topics—choice of CMS for news organizations. One of his central points is that Vox Media has a distinct advantage because of its über-CMS. I admit, what I’ve read about Chorus makes it sound pretty awesome. But there’s a broader question here about CMS models in general—do you want your CMS to run everything, or do you want it to be a component in a broader digital ecosystem?

First, I can answer this question for myself and most of our clients—I think the CMS should be a component in a broader digital ecosystem. From the look of the screenshots on TechCrunch, Chorus includes an ad management platform and a full-scale user management system. I’m not jealous of these features, nor are we often asked for them. The heft of maintaining such a platform would be unbearable for most publications, and to this extent I take Salmon’s point that an organization that can own the full scope of its digital experience may ultimately come out ahead. But we generally handle these features via third-party integration and our publisher sites still succeed.

Second, we build publisher sites on both Drupal (The New Republic, National Review Online) and WordPress (The New York Post, Digiday, Flavorwire, The New York Observer), so I’m in a unique position to take offense at Salmon’s casual offing of both:

Off-the-rack CMSs like WordPress and Drupal are OK for small-to-medium sites, but aren’t particularly well suited to be the framework for a major publishing operation.

Ouch! On whose authority? You could build a platform like Chorus on either WordPress or Drupal, and probably come out ahead. Drupal has long called itself a “Content Management Framework,” and would be naturally suited to this challenge. Similarly, anything you can do in PHP, you can package as a WordPress plugin. Plus with WordPress, you get the added benefit of editorial commonality—chances are pretty good that your reporters will have seen a WordPress admin screen before.

Also, people who live in glass houses shouldn’t throw stones. These über-CMS projects have a tendency to fail pretty spectacularly, and humble as they apparently are, WordPress and Drupal are antidotes to this syndrome. The TechCrunch article about Chorus mentions WordPress.com VIP specifically as an alternative to this model. By virtue of its bulletproof reliability, careful curation, constant monitoring, and strong system of developer support, WordPress.com VIP takes a ton of this risk off the table. And in collecting a large number of high-traffic media sites, they’ve built a common set of shared plugins which handle many common publisher-site tasks. When WordPress gets better for one, it gets better for the others, too. Similarly, our biggest Drupal projects have launched successfully on Pantheon, and many other Drupal publishers run on Acquia.

Perhaps the “rising tide lifts all boats” mentality does not translate to digital media, as an open-source developer like me would prefer. But even if you buy into an eat-or-be-eaten mentality, it’s hard to believe that your CMS will win or lose the war.

Invective aside, one point I can take is that owning the full stack is a luxury that requires an immense scale. But is it a necessary condition for success? I don’t know, and I’m not sure Salmon does either:

I’m fascinated by the Medium experiment: I think it has a lot of potential, especially if it starts to support custom domains, like Tumblr did early on.

Great, but which is it? Medium or Chorus? I think we can agree that it’s too early to say, and that there could be plenty of room for both. But WordPress and Drupal do great things for big publishers too, and they aren’t going away.

Thanks to Austin for his commentary.

Interested in more information about WordPress solutions for publishing and media? Get in touch. 

Introducing: VIP Quickstart

Update:
VIP Quickstart is deprecated as of March 13, 2017. Support for Quickstart will continue through April 21, 2017. For new environments, we recommend using Chassis or VVV as detailed in the Local Environment documentation.

Previous Information:

One of the pain points we often see in the development process is getting a development environment set up. Today we’re introducing VIP Quickstart to fix that. The goal of VIP Quickstart is to provide an environment similar to what you would be deploying to on WordPress.com that’s also quick and easy to setup.

VIP Quickstart is a mix of Vagrant, Puppet, Bash scripts, and some PHP code that will help you quickstart your WordPress.com VIP development. The setup installs a base Ubuntu 12.04 box running PHP, Nginx, and MySQL. The WordPress installation will be WordPress multisite from the latest trunk build. It also includes the WordPress Developer plugin along with all the recommended VIP plugins and the VIP Shared Plugins repository. Finally, there are some WordPress.com customizations and WP-CLI.

Updates will be pushed out on Github. You can always make sure you’ve got the latest version of Quickstart by running the VIP init script that’s included. If you’re already familiar with Vagrant, all the built in Vagrant commands will still work as well.

What’s Next

Currently we’re working on a Windows installer that should be available shortly. After that the plan is to add support for PHPMyAdmin along with some other tools. We want to include any tools that make sense for WordPress development in general and VIP specifically, so if you’ve got ideas we’d love to hear them.

In the future, issues involving local development environments will be unsupported unless you’re using Quickstart.

Follow Along

You can follow development on Github. If you come across problems, we’d ask that you first check the issues on Github and if the problem hasn’t already been reported, go ahead and create a new one. As always, pull requests are welcome.

Why The Washington Post Uses WordPress

Yuri Victor from The Washington Post gave this flash talk about “Why The Washington Post Uses WordPress” at the VIP Workshop in May 2013.

The main reasons he cites are :

  • Tests well with bloggers
  • Tests well with audience
  • Allows fast development
  • Allows us to ABC (Always Be Changing)

They started with just one blog and moved on to other Washington Post properties:

We did a test with Ezra Klein’s blog by converting it to WordPress. He loved it and the blog has seen such a massive increase in pageviews we’re now moving all our blogs to WordPress and we’re launching new blogs every week.

and are big proponents of iteration and prototyping, which they did with their mobile site:

When we wanted to redesign our mobile site we started doing rapid prototypes with foundation and WordPress. Rather than building a Washington Post mobile site with articles, we wanted to build a mobile site with a great reading experience that happened to be by The Washington Post. This was obviously going to be a radical departure from most mobile news sites so to get buy in we had to have real prototypes management could use and approve.

Click through his slides (below) to see the full presentation deck, and delve into their meaning further in this post on Yuri’s blog.

Want more information about WordPress for media or enterprise sites? Contact WordPress.com VIP Services.

Yuri also presented a version of this talk at the annual WordPress conference, WordCamp San Francisco:

How Maker Faire is using WordPress

Jake Spurlock from Maker Media gave the flash talk “How Maker Faire is using WordPress” to attendees at the VIP Workshop in May 2013.

Over the last few months, they built a fairly robust tool for generating applications, scheduling events, and managing all of the data for the Maker Faire app, all using WordPress.

Want more information about WordPress for community or enterprise sites? Contact WordPress.com VIP Services.

WordPress Powers the News – Publishing Inside The Washington Post

Melissa Bell, Director of Blog Engagement at The Washington Post presented “WordPress Powers the News – Publishing Inside The Washington Post” at the recent WordPress in Government Workshop.

Melissa walks through how The Washington Post uses WordPress to power their numerous news sites, break news to and interact with their users, and their transition from print to digital.

Want more information about WordPress for government or enterprise sites? Contact WordPress.com VIP Services.