I get about a half-dozen emails a year via my contact form asking me this question or asking related questions, like how to craft a resume, or what it’s like to work at Automattic. I thought I’d jot something down so I can just send a link the next time this happens, as my advice hasn’t changed much over time. :)

I’ve been here for seven years as of this writing, so I thought I’d share what I tell people who ask me this question (in a slightly expanded format). I’m not involved in hiring. This is not “official” advice of any kind. It’s just what I say to people, made public and repeatable.

First things first:

I love working at Automattic. You might not.

I will extol the virtues of my job whenever you ask me about it. It’s the best place I’ve worked, and I have found it to be very rewarding.

Not everyone will feel this way. The amount of freedom we have to get or not get our jobs done is unlike anything else out there. It can be very isolating and lonely to not see your team in person more than two to three times per year. I think even those of us who have embraced what we do struggle with this from time to time, and for some it can be significant.

But if you are willing to engage without having to be asked to do so, love working with people who are intelligent and come from all walks of life, and are down with being challenged often, you’ll probably fit in well.

So, how to get a job here? Let’s talk.

Read through our open positions and see if something is right for you.

You can find Automattic’s open positions here. Take a look and see if you spot something you’d enjoy doing and think you can do well. Read the job description and requirements to make sure you understand them and know how you would theoretically fit in the role.

Now, take a strong, focused look at the part of the job listing that talks about how to apply. This is going to be very important. :)

Follow the instructions regarding how to apply. Read them twice.

There are some things you will see in every job listing regarding how to apply. Take note of them and follow them. They are not there at random. Basically:

  • Make a resume/CV/whatever you want to call it. Prioritize and emphasize experience and skills that would directly impact the job role, but don’t ignore even side things that make you unique.
  • Attach it to an email sent to the address provided in the job description. The email is your cover letter. Introduce yourself. Be concise. This is your first impression, and it’s text-only. (As we are largely a text-communication-driven company, you should get used to this idea.) Make sure you include anything that’s specifically requested in the job description call for applications.
  • Double-check your spelling and grammar. Fix anything you need to fix.
  • Check it again.
  • Once more.
  • Send and wait. :)

You might get a trial; you might not. But putting yourself out there is the first step.

(Oh, and if you don’t know about how our hiring works with the trial process, where you perform contract work to see how that goes, you should probably read about that.)

I’m not lying when I say that’s pretty much it. When you boil down the process of applying for a job here, it’s pretty simple. That said:

Here are some focuses/traits I believe in based on my time at Automattic.

Again, let me stress this is my opinion and not in any way “official.” Nothing I say here is even remotely a guarantee, and I don’t have anything to do with hiring (really, I don’t), but these are things I will usually recommend to someone when they ask me personally what they can focus on.

These are mostly things I really like to see or admire in people I work with. :)

Be open to criticism.

It’s totally possible you’ll be rejected for the job, either before or during the trial process. When this happens, you may receive some reasons why you were turned down. Or you’ll receive some constructive feedback during your trial. Be open to it. Embrace the idea that you don’t know everything, because believe me—as a full-time employee for many years now, I still realize this often.

Be dogged in adapting to and implementing that criticism.

I applied to Automattic three separate times over a year-and-a-half before I received a trial. I had to change focus mid-trial before I was hired based on feedback. Some of the best colleagues I have at Automattic went through a trial, received feedback and a rejection, and then trialed again later with success. If and when you receive feedback, take it to heart and then apply it. Or apply again. Or both. :)

Be willing to say up-front when you don’t know something and be open to learning.

I would rather work a million times over with someone who is willing to admit when they don’t know something or are stuck on something and ask for help than someone who tries to fake it. Admitting you need help is not a weakness. It is literally impossible for everyone to be an expert at everything.

Be willing to help others.

I’m big on leading by example. Everyone has gifts and strengths, and everyone is at a different level. Just as you should be willing to let others help you, be willing to share your knowledge and experience with others. Be kind and instructive. Don’t always offer to just take charge of things—though on occasion, that’s necessary—but aim to level up your (potential) team.

Be yourself.

Automattic contains the most diverse and interesting group of people alongside whom I have ever worked. It is an amazing collection of individuals from whom I have learned much and with whom I have enjoyed spending time during meetups. Embrace this and be willing to commit yourself to it as well. (BTW, if the real you is introverted, that’s totally OK. There are lots of us here. If you have to take a break, we understand.)

Have at least a passing familiarity with the Automattic suite of products.

How much of this depends greatly on the job for which you are applying. Some positions might not require a lot of PHP or familiarity with WordPress. Others will be based almost entirely around this. I think it’s a good rule of thumb to at least know the core business of Automattic and what we do before wanting to work here. :)

Embrace open source.

An open source ethos drives Automattic and is core to our identity. Know what that means. Past and ongoing contributions to open source projects, whether it’s code, testing, design, documentation, or whatever, will give you valuable experience in what it’s like to work with those types of projects and is a bonus.

(Again, this will somewhat depend on your desired job role.)

Get comfortable with text-only communication. And in learning how your writing tone can be interpreted.

To be honest, I still have trouble with this sometimes. Text communication is hard. Without vocal inflections, facial expressions, and other body language, it’s easy to read something and get the wrong impression.

It’s a skill to craft your text communication in a way that others will understand your tone and intention. Dedicate yourself to learning that skill. (Yes; sometimes this means using emoji. They are very, very helpful for establishing tone.)

This space reserved.

I’m sure there are things I’m not thinking of, but I have been writing this blog post for three days and I should probably just publish it. If you are a fellow Automattician and reading this, and I forgot something obvious, ping me and let me know. If you are a reader and you have additional questions, feel free to contact me. I’ll edit some things in to this post later if needed.

I will never stop learning. I won’t just work on things that are assigned to me. I know there’s no such thing as a status quo. I will build our business sustainably through passionate and loyal customers. I will never pass up an opportunity to help out a colleague, and I’ll remember the days before I knew everything. I am more motivated by impact than money, and I know that Open Source is one of the most powerful ideas of our generation. I will communicate as much as possible, because it’s the oxygen of a distributed company. I am in a marathon, not a sprint, and no matter how far away the goal is, the only way to get there is by putting one foot in front of another every day. Given time, there is no problem that’s insurmountable.

J Jennings Moss for the San Francisco Business Times:

Alignable, which is headquartered in Boston and has members across the country, started doing its SMB Trust Index at the beginning of last year but this is the first time the company has released its findings to the public. To do its analysis, Alignable relied on the Net Promoter Score approach companies use to gauge their own customer loyalty.


Most trusted: WordPress— The website creation tool had a NPS of 73 and the report determined that “WordPress proves ‘free’ doesn’t always mean ‘junk.'” Groves said he was surprised by how trusted WordPress was, which he attributed to its passionate following. “I knew it was a great platform, but I didn’t know that their following was that ravenous.”


(h/t Matt)

Matthew Butterick with probably the most astute and complete takedown of Medium as a platform for your writing I have read:

In truth, Medium’s main prod­uct is not a pub­lish­ing plat­form, but the pro­mo­tion of a pub­lish­ing plat­form. This pro­mo­tion brings read­ers and writ­ers onto the site. This, in turn, gen­er­ates the us­age data that’s valu­able to ad­ver­tis­ers. Boiled down, Medium is sim­ply mar­ket­ing in the ser­vice of more mar­ket­ing. It is not a “place for ideas.” It is a place for ad­ver­tis­ers. It is, there­fore, ut­terly superfluous.

“But what about all the writ­ing on Medium?” The mea­sure of su­per­fluity is not the writ­ing on Medium. Rather, it’s what Medium adds to the writ­ing. Re­call the ques­tion from above: how does Medium im­prove the In­ter­net? I haven’t seen a sin­gle story on Medium that couldn’t ex­ist equally well else­where. Nor ev­i­dence that Medium’s edit­ing and pub­lish­ing tools are a man­i­fest im­prove­ment over what you can do with other tools.

If you use it, I would personally urge you to leave Medium and take control of your writing. WordPress is easy-to-use, easy to set up, and you can put together a basic site on a host for around $100 a year or so. (If you want to give this a shot, for most beginners I usually recommend DreamHost.)

Or if you don’t want to worry about hosting and all that stuff, come host your site on WordPress.com. You own your content, you can take it with you if you leave for a self-hosted WordPress installation, and it’s backed by world-class support. (I work there; I know these people and they are the finest.)

(h/t to Matt for the link)

With the recent implosion of the unofficial GitHub mirror of the WordPress plugins directory, one of the plugins I install on pretty much every site I use—Civil Footnotes—ended up without a GitHub-hosted version.

I’m starting to use Git submodules to manage plugin installations and updates, so to make this easier on myself I forked the plugin to a GitHub repo earlier today.

I can’t promise I have the technical skill to update the plugin or approve any pull requests for it, but you’re welcome to it if you would like.

Earlier tonight, I said:

This is because I am looking at writing a new embed handler for WordPress that would allow embedding of a Twitch stream, video, or highlight using just the URL of the video itself. Let’s collaborate on this, because I don’t know what I’m doing.

First, enumerate the options that are available.

Live Broadcasts

The URL to a live broadcast is just the channel URL, like this one:


(Twitch forces “www” but we should probably act like it’s possible it won’t be there when someone adds the URL manually.)

The embed for that URL looks like this:

<object type="application/x-shockwave-flash" height="378" width="620" id="live_embed_player_flash" data="http://www.twitch.tv/widgets/live_embed_player.swf?channel=backlogathon" bgcolor="#000000”>
	<param name="allowFullScreen" value="true" />
	<param name="allowScriptAccess" value="always" />
	<param name="allowNetworking" value="all" />
	<param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf" />
	<param name="flashvars" value="hostname=www.twitch.tv&channel=backlogathon&auto_play=true&start_volume=25" />
<a href="http://www.twitch.tv/backlogathon" style="padding:2px 0px 4px; display:block; width:345px; font-weight:normal; font-size:10px;text-decoration:underline; text-align:center;">Watch live video from backlogathon on www.twitch.tv</a>

The only thing in there that is provided in the URL is the channel ID, so the embed should assume using full $content_width in the embed handler and provide options for the rest in a shortcode.

There’s also a chat embed, but for the purposes of the media embed it’s not needed. Let’s leave that for the shortcode. We can probably omit the link addition to the bottom of the video, assuming that the blog owner will be adding that automatically.

Archived Broadcasts

Twitch archived broadcasts are referred to by channel ID, then a divider, then the ID of the archived broadcast, like this:


The embed for that looks like this:

<object bgcolor='#000000' data='http://www.twitch.tv/widgets/archive_embed_player.swf' height='378' id='clip_embed_player_flash' type='application/x-shockwave-flash' width='620’>
	<param name='movie' value='http://www.twitch.tv/widgets/archive_embed_player.swf'>
	<param name='allowScriptAccess' value='always’>
	<param name='allowNetworking' value='all’>
	<param name='allowFullScreen' value='true’>
	<param name='flashvars' value='title=It%2BCame%2Bfrom%2Bthe%2BBacklog%2521&amp;channel=backlogathon&amp;auto_play=false&amp;start_volume=25&amp;archive_id=512356452’>
<a href="http://www.twitch.tv/backlogathon" class="trk" style="padding:2px 0px 4px; display:block; width: 320px; font-weight:normal; font-size:10px; text-decoration:underline; text-align:center;">Watch live video from backlogathon on TwitchTV</a>

The same bits from above would seem to apply here. We can omit the link at the end, and assume we want the video to span the content width.

Everything else we’ll leave to a shortcode, which will need some regex anyway.

Edited Highlights

Once you have edited a clip using the built-in tools, it’s available at a different URL, but much the same as the archive one:


It generates this embed:

<object bgcolor='#000000' data='http://www.twitch.tv/widgets/archive_embed_player.swf' height='378' id='clip_embed_player_flash' type='application/x-shockwave-flash' width='620’>
	<param name='movie' value='http://www.twitch.tv/widgets/archive_embed_player.swf'>
	<param name='allowScriptAccess' value='always’>
	<param name='allowNetworking' value='all’>
	<param name='allowFullScreen' value='true’>
	<param name='flashvars' value='title=Titanfall%2B-%2BCTF%2Bon%2BCorporate%2B-%2B4.7%2BK%252FD%2BRun&amp;channel=backlogathon&amp;auto_play=false&amp;start_volume=25&amp;chapter_id=3915617’>
<a href="http://www.twitch.tv/backlogathon" class="trk" style="padding:2px 0px 4px; display:block; width: 320px; font-weight:normal; font-size:10px; text-decoration:underline; text-align:center;">Watch live video from backlogathon on TwitchTV</a>

Repeat the above.

I don’t think there are any other URL possibilities with Twitch, or at least I have not seen them yet.

So that’s the list of what needs to be figured; next step (which I’m currently avoiding and/or failing at) is writing the correct regex and the handler for it.

Today, I decided that my project was going to be setting up a multisite installation and moving my hosted WordPress installations into a single home. Hopefully, I’ll be moving my wife’s site soon as well; if you see any weirdness, please let me know.

You might have noticed that I am trying, with some recent success, to write or at least link to things I think are interesting each day. It’s possible you saw me say this recently:

I realized that in my daily work, I’m in with WordPress 100%. I’m looking at the Dashboard, I’m digging in to the guts of it as best I can, and I’m just using it. All. Day. Long.

When that happens, it’s easy for me to forget that I have this platform here that is enabling the people I’m working with to do really amazing things—and it enables me to say stuff, too. I understand why it’s difficult for people who work with WordPress technically to keep up a regular blog; by the end of the day, it’s kind of hard to look at it and be creative with your own thoughts.

I sat down to write something longer for the first time in a long while, and then wrote that tweet not long after. There are things you shouldn’t have to rediscover.

Speaking your mind, sharing your interests, and dogfooding what you work with every day aren’t among them.

I’m a few months in and it’s accurate to say that I’m enjoying my new role at work, doing great things with the VIP team at WordPress.com. I feel like I’m able to contribute to big projects by taking some grunt work and communicating with our clients clearly and often as we partner with them to do Big Things. I feel like I’m doing a pretty good job with my responsibilities, and am happy with the things I’m able to accomplish.

But I get frustrated an a near-daily basis, and that frustration is all with myself.

There are some neat things I can do now that I haven’t been able to do in the past. I’m using my knowledge of WordPress templating now more than I have in a long time. I’m learning more of the ins and outs of WordPress.com, which is really interesting. And I’ve gone from not even knowing what wp-cli is to using it on a daily basis and being comfortable with doing so. I can get things done.

One goal I’ve had with shifting to doing this job has been to try to use the (admittedly quite weak) PHP development skills I have to assist with other tasks. This has been great in theory and in practice I have been able to learn little things here and there.

But it’s the sheer amount of things I don’t know that has me intimidated and quite frankly annoyed with myself. I can’t read Javascript and hardly know what it can do or does in a specific context. I don’t even know what cross-site scripting is, let alone how to prevent it or other security problems. Best practices like sanitization and escaping and where to apply or which methods to apply where elude me.

I don’t even understand how to use git yet. (svn and I are cool.)

Debugging is sometimes a total and complete mystery—just finding a place to get started is on ordeal and I feel like it takes me way too long to catch on to some things.

The problem feels like one of sheer scale. Where do I start? What do I do? Maybe I’m too old to learn new things at this point; I don’t know. I get bored taking classes, because they are too far from actual practice, and I get frustrated with just diving in because I feel there are too many things to learn at once.

I’m not really sure why I’m writing this out. Is this a common thing to feel when approaching this kind of thing? Is there anything out there you’ve used in the past or things you have done that help with overcoming the intimidation factor?

I’m hoping that in a year or ever a few months, I can look back on this and laugh at it.

Hey, WordPress community.

Thanks for following my link. I really appreciate it. If you retweeted or Liked the social link for this, I appreciate you more.

Here’s the tl;dr version:

I’m raising money for St. Louis Children’s Hospital by doing a 25-hour games marathon on December 20th. I’d love for you to donate. If you want to, click this button:


If you would like a more detailed description of what this is or would like to help, please read more about my Extra Life marathon here.

It’s entirely possible that you clicked through to this post because you’re part of the WordPress community, which is like an extended family to me. In which case, you can help out event further! Blog about the marathon! Link to it! Embed the eventual Twitch stream on your blog, or just watch the day of when it’s happening!

You more than most people understand the power of this whole internet thing and how it can be used for good. :)

With your help, we can give St. Louis Children’s a great Christmas present. I’m over 1/4 of the way to my goal for the fundraiser, and we’re at $285, which puts this really close to the top 5% of all Extra Life fundraisers for this year. Help me push it even further. Scroll back up and click that button. :)

Thanks for your time!