Why you don’t need an SEO agency

If you’re just getting started with your business, don’t be fooled into thinking you need to pay for a costly SEO agency before your website starts showing up on Google. When you’re working with a limited (or even non-existent) marketing budget, there’s a lot of stuff you can do with your own two hands to improve your organic traffic.

Here’s what SEO agencies won’t tell you

The easiest way to get to the top of the search results is to publish a lot of great quality content, and most SEO agencies can’t do that. They’ve probably got a bunch of SEO copywriters who can churn out low-quality blog posts stuffed with all the right keywords for your industry, but that’s not going to help you when all your competitors are doing the exact same thing.

I’ll try to make this as simple as possible. For a website to perform well in search engine results, you need two things:

  • Content (blog posts, landing pages, video, images) that’s highly relevant to what your business does, so that when Google looks at your website it can form a clear picture of what your business is all about.
  • Links from other websites pointing to yours, and ideally those websites should also be highly relevant to what your business does, so that Google knows your website contains useful information (every link to your site from a third party is a vote of confidence).

If your site is full of shitty, low-quality content that doesn’t provide people with anything useful, nobody is going to link to it.

On the other hand, if your website is full of really great quality articles and resources that people find helpful, they’re going to share it on social media and link to it from their own websites. And that creates a snowball effect, because the more your content gets shared, the more it gets seen, the more it gets shared.

So this is my mantra; the number one thing you should do to get your online business noticed is to create as much genuinely helpful content as you can, and never stop. Think about what problems your customers have, what questions are they asking, what advice are they looking for, what resources would be helpful to them, and give them answers.

Get that first part right, and the links will soon follow. At the very beginning you’ll need to do some work to get your content seen in the first place, but once your site starts to become established as a source of useful information, people will be able to find it much more easily.

But what about ‘technical SEO’?

When people talk about ‘technical SEO’ they generally mean ensuring that your website is properly structured so that it doesn’t have any technical problems that might stop it from performing well in search engines. These could be things like broken links, missing sitemaps, incorrect use of title tags, missing alt-text on images – and if all this stuff sounds complicated, it’s not, they can usually be fixed very easily.

I don’t want to downplay the importance of getting this right, but as far as I’m concerned technical SEO is a distant second to great quality content in terms of how you should prioritise your time. Good content will outweigh poor optimisation. That’s not to say you shouldn’t worry about it, but focus on the content first and try to fix technical issues whenever you can.

And the good news is that technical SEO doesn’t have to cost you anything – there are free tools that will help you spot any problems and tell you how to fix them. So long as your website is sensibly built and follows widely accepted standards and best practices, there’s not going to be much wrong with it from a technical perspective.

If you’re using WordPress as your blogging platform, just install the Yoast SEO plugin, and it will flag any problems with your blog, along with specific guidance for solving them right there in your WP dashboard. The basic plugin is free, and while premium features are available for more advanced users, the free version will make a big difference.

You should set up Google Search Console for your site, because this gives you clear information right from the horse’s mouth. As well as showing you exactly how your site is performing in Google, the Search Console will identify any major problems which are holding you back. I would trust Google’s advice above an SEO consultant every single time.

Also set up a free Ahrefs account for your site. This is a great SEO tool which also provides information about your site performance as well as highlighting any technical problems. Like Yoast, it’s a freemium product, the basic version provides everything you need to get started and there are more advanced options available when you need them.

The good news about technical SEO is that once you start using these tools and get used to seeing the kind of issues they flag up, you’ll learn very quickly what’s important to get right. Soon you won’t need to think about SEO at all because you’ll just bake it into your regular process when adding new content to your site.

Time is on your side

Earlier I said there are two things a site needs to perform well in search engines, good content and plenty of backlinks, but I missed one other important thing, time. It takes a while to build organic traffic, especially for brand new sites. It can take months for your content to start showing up in search results.

Anybody who tries to tell you they can give you fast SEO results is a liar. If you need quick results, the best thing you can do is invest money in Google Ads – then you’ll start getting traffic to your site almost immediately. But we’re focused on long term organic growth. This doesn’t cost you money, but it does cost you time and effort.

And the beauty of organic is that it keeps providing an ongoing return on investment. All that content you create, all the work you put into technical optimisation, and all the links that you earn with your content, that stuff will keep giving you web traffic for years to come.

What is Digital PR – My No-Bullshit Guide

The Quick Version

Digital PR means persuading online media to publish articles about your business that include links to your website. This has two main benefits:

  1. It raises the public profile of your business, improves your reputation and helps build your brand.
  2. Every time your website gets a ‘good quality’ link from respected media website, that helps improve your site’s performance in search engines, so you get more traffic and sell more stuff.

The Long Version

The term “digital PR” is appearing more frequently these days, but what is digital PR and how is it different from conventional PR? For that matter, WTF even is PR at all?

PR or ‘Public Relations’ is a piece of the marketing mix that focuses on how the public views your business, and protecting its reputation. It’s all part of building a brand.

If your business has a good reputation, people know and trust your brand, then you’re going to sell more, it’s that simple. And the way PR does that is mostly through getting journalists to say nice things about your business in the media – although in practice getting journalists to say anything at all about your business is usually challenging enough.

So, conventional PR is all about getting your business featured in newspapers, magazines, TV, radio, websites, or pretty much any media channel where there’s an audience who might pay attention. It involves building relationships with journalists and coming up with creative ideas to convince them to mention your business.

That could be anything from including a comment from one of your executives in a news report that’s relevant to your industry, to a whole feature reviewing your latest product.

Of course, you can always pay to advertise your business in the media, but that costs a lot of money and people don’t trust adverts. PR is better than advertising because you don’t have to pay for it, and people generally trust independent editorial coverage a lot more than ads; if the editor of Big Fast Cars Monthly magazine tells you that the newest Range Rover is the best car he’s ever driven, that’s a lot more persuasive than a paid advert telling you the same thing.

Remember, the whole point of PR is to increase the visibility of your business in the public eye, and to convince consumers that your brand is trustworthy.

OK, got it, but what is Digital PR?

As the web took off and became the most important channel for many businesses, PR became more valuable in a surprising way.

These days, getting people to visit your website is one of the most important marketing objectives, and the best way to do that is if they can find your site easily when they’re searching on Google for the kind of things you sell. If you sell cat food, and your website is the very first result when somebody searches for “cat food” on Google, you’re going to sell a lot of cat food.

But there are a ton of people who sell cat food, so how does Google decide which website to display at the top of those search results? That’s a big, complicated topic, but all you need to understand right now is that if you have a lot of other websites linking to your site, telling people “hey, these guys make awesome cat food” that’s going to help you a lot.

Even better if those links are coming from highly respected websites, like big media channels with huge audiences. If CNN published an investigation into the best cat foods on the market, and linked to your website, that’s a lot more valuable than a link from your sister-in-law’s cat blog, and not just because more people will read the CNN article (although that’s useful in its own right) but because it’s a trusted, authoritative site, and that link will give Google a clue that your site can also be trusted.

So what is digital PR’s point? The goal is still to secure coverage for your business in the media, but the focus is more specifically on online media, for the purpose of getting them to link to your website to improve your position in the Google search rankings.

If the BBC broadcast a report about how wonderful your business is, that would of course be fantastic, but it doesn’t really help your website perform better in Google searches. It’s much more valuable if the BBC publishes a report on its website, with a link to your website.

Why is Digital PR a big deal?

You’re reading this blog because you’re trying to build a business with zero marketing budget, right? (I hope so, at least, because that’s the whole point of this site.)

Digital PR is one of the most powerful marketing activities you can do with no money.

A good way to think about marketing activity is like a balance sheet; what do you put in, what do you get out? So let’s look at that balance sheet for digital PR:

What you put in: time and creativity, but not money. You need to come up with ideas for how you can convince the media to write about your business (i.e. what’s the story), and then you need to do the leg-work of selling-in that story. That means emailing as many journalists and writers as you can find, or even getting on the phone, tailoring the story for each of them so that it’s specifically relevant to their audience, and doing a good job of explaining why it matters to them.

What you get out: links to your website, better performance in Google, more visitors to your site, more sales. Plus, there’s all the increased visibility of your brand that simply comes from the media talking about it.

Maybe a little bit, but not really. Old school SEO (Search Engine Optimisation) does link-building in a very unsophisticated way, and it’s starting to fail. These guys just try their best to get links to your website wherever and however they can, often by paying people to add links to their sites, going for quantity over quality because for a long time that’s what worked.

With an SEO specialist, you would often find that you get a lot of links to your site from places that make no sense – like a construction company for some reason linking to your cat food site, with no context or explanation.

Google is smarter now, and it can tell when SEO people are trying to fool it into thinking that a website is more popular and trustworthy than it really is. It understands context a lot better. If you’ve got a link pointing to your site from an article that’s talking about stuff that’s relevant to what your business does, that’s more valuable than a random link from a site that has absolutely nothing in common with yours.

With Digital PR, you get that all important context – the link to your site will usually be on a page that contains an article that’s relevant to your business, and often from a reputable, trustworthy website.

Can I do Digital PR myself?

Yes! Big companies with big budgets pay agencies to do this kind of work for them, but if you’re time rich and cash poor there’s no reason you can’t do it yourself. Journalists don’t care if an email comes from a professional PR executive at an expensive consultancy, or just somebody running their own small business – all they care about is a getting a good story that their readers will love.

If you’re a small, brand new business then even one or two pieces of online media coverage linking to your website will make a big difference. But if the stars are aligned, you come up with a great pitch, and everything falls into place, the best case scenario is that a story you sell into the media goes viral, gets picked up by dozens or even hundreds of online media sources, and suddenly you’ve got a huge volume of high quality links pointing to your website.

What you need to get good at is understanding what kind of stories and content media websites want, and figuring out ways to offer them that stuff in a way that includes your brand. I’ve got two pieces of advice to help you with that:

  • Constantly read the media that you want your business to be featured in – this will give you a good feel for the kind of things they publish.
  • Be persistent but polite. Most of the stuff you try to pitch to the media won’t be of interest, that’s just the nature of the game. Be polite, don’t waste their time, and go back a month later with a different pitch. Sooner or later something will hit.

How I got a PR agency to the top of Google’s search results

In January 2014 I started work at the financial and corporate PR agency, Hudson Sandler, as head of digital. One of the projects I worked on there was revamping the agency’s website, which was sorely out of date and failing to generate any inbound sales enquiries because it was not appearing in search engine results for any relevant terms.

I started work on this project in autumn of 2014 and by the time I left the agency in summer 2015, the website was on the front page of Google for many relevant search terms, and right at the top of the results for key terms such as ‘financial PR agency’ and ‘corporate PR agency’. During that period the monthly traffic increased exponentially and the site began generating lucrative sales leads for the agency.

My budget for this project was £0, and there are dozens of much larger UK agencies competing for those search terms.

So how did I do it?

The first step was to move the site from static HTML pages to a content management system that would make it easy for us to add and edit content, so we migrated the old site to WordPress with a modified off-the-peg template to match the agency’s branding. I also installed an SEO plugin which automatically generated sitemaps and allowed me to manually edit page titles and meta-descriptions.

Next I overhauled the site’s static content. PR agencies tend to favour fluffy, strategic sounding language which is absolutely no use for SEO purposes – search engine algorithms aren’t good at deciphering marketing doublespeak. So I rewrote as much of the content as possible with clear, descriptive copy about the agency and the services it offered. I also made sure that the site had plenty of internal links with descriptive anchor text.

In addition to the static content I introduced a blog to the site so we could regularly post updates about the agency and thought leadership pieces, this was central to the whole approach. Over several months we wrote a lot of blog posts that were tightly focused on our key subject areas of financial and corporate PR. This doesn’t mean churning out copy stuffed with keywords, but simply that the articles were all specifically about different aspects of the topic at hand.

This meant that when Google’s algorithm looked at our site, it would find lots of content and language that is highly relevant to that topic. It was also important that the blog posts were genuinely useful and interesting for the target audience for a couple of reasons:

  1. This would increase the chances of them being shared on social media and linked to from other sites, which is good for SEO
  2. If the articles are of poor quality visitors will not spend very long on the page, and this can have a damaging effect on the site’s performance in search engines

I also made a point of writing lengthy blog posts of around 1,000 words or more where possible, because most SEO experts believe that longer articles are better than 400/500 word blogspam. Writing a lot of good quality, on-topic, long-form blog posts is hard work, but there are no shortcuts here, your site’s search engine rankings depend on great content, so you need to put the effort in. The results we achieved prove the value of that.

Having fixed the site’s structure and greatly improved the quality of content, there was one final piece of the puzzle to solve; backlinks. Your site’s SEO is highly dependent on both the number and quality of links pointing to it from third party sites. In short, you need as many links as possible from high authority sites (i.e. websites belonging to established media, big corporations, government, academia and other respected sources) and this is very hard to achieve.

This is where we relied on good old fashioned PR skills to charm and persuade people to link to our site. We asked clients to link to us from their online press centres, we created stories which gave the trade media good reasons to write about us, and we came up with a few other creative ways of getting links from authoritative third party sites. As with the content, there are no shortcuts here any more; if you want good quality links to your site, doing the legwork is the only way to make it happen.

And that’s pretty much the long and short of it. Using Google Search Console we were able to track how our site was appearing in search results and we noticed an almost immediate improvement, but it took a couple of months before we started to see our site at the top of the results for relevant search terms. Over time, as we added more content and secured more links, the results got better and we began to inch out major competitors for our most important search terms.

If you take away anything from this story it should be this – everything I did was relatively simple. Sure, it’s hard work to create a pipeline of good content and to get lots of quality backlinks but there’s no dark art to any of it, you just have to put the hours in.

How I built Conway’s Game of Life in JavaScript

EDIT (APRIL 2020): Saddened to learn today of the death of John Conway, the British mathematician who invented the Game of Life in 1970.

EDIT (MAY 2016): Since writing this post in July 2015 I noticed it’s started to get a bit of traffic from Google. If you’re just interested in the end result, here’s a JSFiddle of my final version of Conway’s Life.  That version has cleaner and more slightly more optimised code than shown here. Original post below:

I’ve recently been focusing on strengthening my JavaScript skills, and the best way to learn a language is to build stuff, so the first challenge I set myself was to build a version of Conway’s Game of Life. It’s a simple concept; the game consists of a grid of cells, each of which can be alive or dead. For every cycle of the game, the cells can be turned on or off based on the following rules:

  • If a dead cell has exactly three live neighbours, it comes to life
  • If a live cell has less than two live neighbours, it dies
  • If a live cell has more than three live neighbours, it dies
  • If a live cell has two or three live neighbours, it continues living

By repeating the cycle over and over, these simple rules create interesting, often unpredictable patterns. I was fascinated by the idea as a kid and wrote a few versions of it in Basic on my ZX Spectrum, so it seemed like a good place to start with JavaScript.

Step 1 – Creating the grid

The grid of cells needs to be stored somewhere, so my first job was to create a two dimensional array. This was an instant stumbling block because I learned JavaSript does not support multi-dimensional arrays. However, I learned I could solve the problem easily because each element of an array can be any type of variable, including an array so, for example, I could create an array of 100 elements, and each of those would contain another 100 element array, which would give us a 100 by 100 cell grid to work with.

function createArray(rows) { //creates a 2 dimensional array of required height
var arr = [];
for (var i = 0; i < rows; i++) {
arr[i] = [];
}
return arr;
}

This function returns an array with n elements and places an empty array in each of them using a FOR loop. We don’t need to worry about specifying the number of elements in those sub-arrays, because JavaScript lets you dynamically add new elements to an array. This means we can simply add as many variables as we need when we populate the grid.

We can now create our grid by calling this function and assigning its output to a variable:

var theGrid = createArray(gridWidth);

gridWidth is a variable defined earlier in the code simply stating how big we want our grid to be – I wanted this to be easy to change because I didn’t know at this stage how quickly the game would run with large grids.

Step 2 – Populating the grid

For the sake of simplicity I wanted the starting game state to be random. So I wrote this function to randomly populate the grid array with ones and zeros, live or dead cells. Since the theGrid is a global variable (more on this decision late), we don’t need to pass anything to this function or return anything from it, we just call it directly after we have created the array.

To make this work, I had to learn how to do random numbers in JavaScript. Math.random() returns a floating point number between 0 and 1, so I poked around on StackExchange to learn how to convert that into the nice clean 1 or 0 that I wanted to fill each cell with.

function fillRandom() { //fill the grid randomly
for (var j = 0; j < gridHeight; j++) { //iterate through rows
for (var k = 0; k < gridWidth; k++) { //iterate through columns
var rawRandom = Math.random(); //get a raw random number
var improvedNum = (rawRandom * 2); //convert it to an int
var randomBinary = Math.floor(improvedNum);
if (randomBinary === 1) {
theGrid[j][k] = 1;
} else {
theGrid[j][k] = 0;
}
}
}
}

Step 3 – Drawing the grid on screen

At this stage I had only really learned core JavaScript and didn’t know anything about Canvas, other than I should probably use it for any kind of graphical output. I needed to write a function to draw each grid cell in the array as a pixel on a Canvas, so I asked the internet how to draw a single pixel on a Canvas, and then cannibalised that code to work with my drawGrid function. I hard-coded the Canvas size to 400 by 400, because I didn’t envisage using a grid larger than that and I could use a smaller grid without changing the Canvas dimensions.

function drawGrid() { //draw the contents of the grid onto a canvas
var c = document.getElementById(“myCanvas”);
var ctx = c.getContext(“2d”);
ctx.clearRect(0, 0, 400, 400); //this should clear the canvas ahead of each redraw
for (var j = 1; j < gridHeight; j++) { //iterate through rows
for (var k = 1; k < gridWidth; k++) { //iterate through columns
if (theGrid[j][k] === 1) {
ctx.fillStyle = “#FF0000”;
ctx.fillRect(j, k, 1, 1);
}
}
}
}

Step 4 – Update the grid

Now I’ve created a grid, randomly populated with living and dead cells, and drawn that grid to the screen. The next thing I need to do is apply the game rules to the current grid state, switching the cells on or off as required to create the subsequent state. This is the main chunk of game-logic.

It was easy enough in theory: we simply look at each element in theGrid array, count up the number of live cells around it (each cell has a total of eight neighbours which could be dead or alive) and then use that total to decide whether the current cell lives or dies.

The problem this creates is that you cannot update theGrid array as you’re doing this, because if you change the state of a cell that means the you’ve changed the state of the grid before you’ve finished updating all of the other cells.

The way I tried to get around this was by reading the current state of the grid from the Canvas, so I could update theGrid array whilst referencing the as-yet unchanged game-grid on the screen. Simple, update the entire array, redraw the Canvas, repeat.

I learned that the Canvas method, getImageData(), would allow me to get the current state of each pixel in the grid, so I used that to calculate the total number of live neighbours for each cell. I thought I was being clever and efficient by using this approach – I was wrong. It turns out that reading from and writing to the Canvas is relatively slow, and even using this approach for a small 100×100 grid was clunky, with maybe one or two updates per second.

So I switched to the obvious alternative – using two arrays: theGrid holds the current state of the game board, and a second array mirrorGrid is used in the update function to store the new state of the board. Once the board has been completely updated, the contents of mirrorGrid are copied to theGrid ahead of the screen being updated. The performance was instantly and significantly improved – even on a much larger grid the update cycle ran at least ten times faster.

Here’s the function which performs this:

function updateGrid() { //perform one iteration of grid update
for (var j = 1; j < gridHeight – 1; j++) { //iterate through rows
for (var k = 1; k < gridWidth – 1; k++) { //iterate through columns
var totalCells = 0;
//add up the total values for the surrounding cells
totalCells += theGrid[j – 1][k – 1]; //top left
totalCells += theGrid[j – 1][k]; //top center
totalCells += theGrid[j – 1][k + 1]; //top right
totalCells += theGrid[j][k – 1]; //middle left
totalCells += theGrid[j][k + 1]; //middle right
totalCells += theGrid[j + 1][k – 1]; //bottom left
totalCells += theGrid[j + 1][k]; //bottom center
totalCells += theGrid[j + 1][k + 1]; //bottom right
//apply the rules to each cell
if (theGrid[j][k] === 0) {
switch (totalCells) {
case 3:
mirrorGrid[j][k] = 1; //if cell is dead and has 3 neighbours, switch it on
break;
default:
mirrorGrid[j][k] = 0; //otherwise leave it dead
}
} else if (theGrid[j][k] === 1) { //apply rules to living cell
switch (totalCells) {
case 0:
case 1:
mirrorGrid[j][k] = 0; //die of lonelines
break;
case 2:
case 3:
mirrorGrid[j][k] = 1; //carry on living
break;
case 4:
case 5:
case 6:
case 7:
case 8:
mirrorGrid[j][k] = 0; //die of overcrowding
break;
default:
mirrorGrid[j][k] = 0; //
}
}
}
}
//copy mirrorGrid to theGrid
for (var j = 0; j < gridHeight; j++) { //iterate through rows
for (var k = 0; k < gridWidth; k++) { //iterate through columns
theGrid[j][k] = mirrorGrid[j][k];
}
}
}


Step 5 – Creating the game loop

Now I’d written all of the main components of the game: create a grid, randomly populate it, draw the current grid state on the screen, update the grid by applying the rules to each cell. What I wanted to do next is run the updateGrid() and drawGrid() functions in some kind of loop so the board would keep updating for as long as I wanted.

At first I tried simply setting up a FOR loop and calling the two functions within it for a hundred or so iterations, but this didn’t work. The code would either hang completely or take a really long time to draw just one frame before hanging. I didn’t understand why the drawGrid() function wasn’t working every time I called it in the loop.

The internet rescued be again and I learned about requestAnimationFrame(), which is ideal for this kind of problem because it makes the browser update the screen whenever it’s called. So, the function to run the game loop infinitely is like so:

function tick() { //main loop
drawGrid();
updateGrid();
requestAnimationFrame(tick);
}

When function tick() is called, it first draws the current state of the grid, then updates the grid, then tells the browser to update the screen and calls itself again to repeat the loop. So the flow of the code goes like this:

  1. Create an array to store the grid
  2. Create a mirror array to use when updating the grid
  3. Fill the grid with random cells
  4. Draw the current grid state to the screen
  5. Apply the rules to each cell and update the grid
  6. Keep repeating the last two steps

You can see the complete code in action here: http://jsfiddle.net/xcs1y127/10/

Obviously there are lots of refinements that could be added, such as allowing the user to pause the game, reset the grid, draw their own patterns on the grid, etc, but at this stage all I really wanted to do is get a functioning version of Life up and running. I’ll add in all the window dressing as my next project.

Performance improvements

The first thing I was keen to do is find out if there were any ways in which I could make the code run faster, so I could use larger grids without sacrificing update speed. Switching to the two-array update approach I mentioned in step 4 really made a huge difference to performance, but I thought I could learn a few things about code optimisation by trying to squeeze any additional performance from my code.

The first thing I learned was that you can use console.time() and console.timeEnd() to find out how much time different parts of your code take to execute, so I tried using it on my functions while I experimented with potential optimisations.

I read that using locally scoped variables in functions is faster than global variables, so I tried making local copies of theGrid array in both the updateGrid() and drawGrid() functions, but this didn’t seem to make any discernible difference to the execution time of either.

I’ve also read an article about pre-rendering to an off-screen Canvas before writing to the on-screen one, as this apparently improves performance, although I haven’t yet tried it as my Canvas knowledge is still shaky.

I was hoping that there would be some easy performance tweaks I could make to the updateGrid() function, as this is clearly where most of the work is taking place, but I’ve not learned anything yet that will help with that.

(EDIT MAY 2016: I tried this off screen rendering method eventually, but it made almost no different to performance. At this stage, the only way I can think of to make a JS version of this game to show significant performance is to use a better algorithm for updating the grid. I recently read about the “List Life” approach, which speeds things up by only updating the parts of the grid which feature live cells, instead of checking every single cell on each iteration. It sounds interesting, but i haven’t had time to give it a try yet. Please let me know if you produce a JS version of this, I’d love to see it. )

The real difference between working in PR and journalism

I’ve been in PR for nearly ten years and was lucky enough to join the industry just as it started to become entangled with digital and social media, which enabled me to carve out a little niche for myself as a digital specialist since I happen to have a bit of experience in the online world.

Before PR I was a tech journalist for 13 years and, to be honest, it still sometimes feels strange not turning up to an editorial office every day.

When people ask me why I made the leap, I usually tell them that it seemed like the most logical progression, but the truth is that PR is a very different world to the kind of tech-magazine journalism I spent much of my life doing. I don’t feel like I made any sort of logical, smooth progression, I feel like I jumped right into the deep end of a completely new career.

The most noticeable change in your day to day life is that people stop treating you like you’re important, but I think all but the most deluded of journos would expect that, so it’s not worth dwelling on. There are other changes that I was less prepared for.

When I was a hack I lived in a little bubble that was protected from any kind of commercial reality, all I had to worry about was producing great articles and meeting deadlines (or at least, not missing them by too much). Most of the tech magazines I worked on had an atmosphere that was somewhere between a playground and a laboratory – lots of smart people in a room together, having fun and challenging each other. The suits always took care of the business side of things for us.

In a PR agency, you’re acutely aware from day one that you need to earn your keep: all that really matters is getting good results for the client and winning new business for the agency. This may seem perfectly obvious, but it can be a serious culture shock for somebody who’s only ever been judged on something as subjective as how well they can write.

When I was a journalist I was largely free to manage my own time as I pleased, so long as I showed up to the office occasionally and the work got done on time. PR agencies require their staff to fill in timesheets to account for every minute of their day because their staff’s time is, essentially, their chief commodity and they need to keep track of it closely. In all honesty, this is the one part of the PR industry I have always struggled to adjust to. I completely understand the need for it, I just hate having to do it.

Journos going into PR at a junior level are probably better equipped for the move, because they are most likely to be focusing on getting coverage and if they’ve got good contacts in their industry they’ll probably do quite well. At the more senior levels, it’s a different game entirely.

Firstly, you have to deal with clients, who can sometimes be difficult and demanding – they’ve invested significant budget in your agency, and they’re depending on you to do a good job, so they’re understandably going to want to make sure you’re doing your best to deliver on your promises, so that they can deliver on the promises they’ve made to their boss.

Secondly, you need to learn a lot more about budgeting and project management. Putting a magazine together has its own challenges, but running PR activities for major corporations requires a completely new skill set.

Finally, you have to learn to pitch and win new business – it’s a steep learning curve, and often requires the same kind of all-hands-to-the-pump attitude that magazines go through on deadline week. It’s good fun though, and the buzz you get from working on a winning pitch is one of my favourite things about the job.

One of the most interesting differences between journalism and PR is the attitude to creativity. All PR agencies strive for creativity, they hold brainstorms and run training sessions and hire consultants to help their teams be more creative, while on all of the magazines I’ve worked for, creativity just happens by itself.

I think the reasons for this are pretty much everything I’ve outlined above – it’s easier to be creative when there’s a distinct lack of pressure in your working environment. Obviously, PR agencies need that pressure, they need to get results for clients, win new business, track their staff’s time and all the rest of it, but ultimately that makes it so much harder for people to be as creative as they could be in a more relaxed atmosphere.

(Image credit: Ritesh Nayak)