Why all SEOs should learn to program

Ian Lurie

Every SEO should learn at least 2 programming languages.

Here’s why:

Two languages means you can program. One means you can read a manual.

You can easily learn one language and have no grasp of programming. Learn two, though, and you learn some of the stuff that all programming languages have in common. You have to focus on the method as much as the syntax.

My early ColdFusion experience taught me that. The first time I looked at a Python script, I felt like I was reading a transcript of 400 gibbering monkeys. Once I figured it out, though, PHP was pretty easy.

You’ll learn why developers hate you

You’ll understand why, when you tell a development team your recommendations, they look at you like you’re a damp, smelly cigarette butt in their soup. Programming is hard. I don’t care what the elite say. It’s a pain in the arse. You’re asking them to do more of it.

Most scripting languages are documented by small troops of demons-in-training. They earn their first Sadism Merit Badge when they complete a developer wiki that provides 85% of what some hapless schmuck will need to know.

For developers, that means small changes can be a nightmare of scornful Stackoverflow.com replies, hours of tooth-grinding Google searches and several smashed keyboards.

The worst part? You’re probably asking them to do something ridiculous like change every third instance of ‘car’ to ‘automobile’. If they’re going to suffer the Wrath of the DocuTormentor, they’d rather be building the next Twitter.

You’ll understand the mindset

There’s a certain problem-solving method that supports good programming. ‘Good’ problem solving does not mean another nested loop.

A good programmer divides problems into small, digestible chunks and solves them, one at a time. And they’re driven to find elegant solutions.

I’m not a good programmer. I generate code that reads like a James Joyce novel. But at least I understand why that code sucks. It’s a start.

More important, I’ve started applying this kind of thinking to my whole company over the years, and it really works. Some great strategies come from the programmer’s mindset: Scrum, for example.

Learn to code and you’ll understand the coder’s mindset. That’ll help you in lots of pursuits.

APIs will open before you

A lot of your job as an SEO is gathering numbers. Lots of numbers. From all over the place.

If you learn just a wee bit about scripting languages, you can access APIs (Application Programming Interfaces) and collect all of that data in one place. Then, you can build your perfect internet marketing dashboard.

It will upgrade your bullshit detector

As an SEO, you probably work on teams that include developers and designers. You’ve probably also been in conversations like this:

SEO: I’ll need to be able to edit the title tag on each page.
Dev: That’s not possible.

SEO: Huh?
Dev: The frendidges of the bensinator won’t let us froggle the cubist.

SEO: head explodes

Learn programming and you learn a bit of the guts of your web site. You’ll have a clearer idea of what’s possible and what’s not.

You can help, instead of causing trouble

The term ‘SEO’ triggers a number of defensive responses in developers. They either:

  • Say ‘SEO is a bunch of crap’ and walk out;
  • Squeak ‘We don’t have any resources’ and flee;
  • Hit you with a piece of furniture, roll you down the steps and outside, and walk away, whistling.

There’s a good reason: Developers interact with their coworkers in two ways:

  • When the coworker presents a ridiculous problem like ‘I don’t want to hit the SHIFT key any more. Why can’t the computer just know when to capitalize?’;
  • When the coworker rakes the hapless developer over hot coals because they didn’t write the automatic shiftinator in 2 hours.

When you walk in, you become one more troublemaker.

You, though, can do two things to make their day brighter: First, you can very diplomatically suggest a solution to the problem you’ve presented. Second, you can accept their estimated schedule without a single hrmph, guffaw or sniff. You can even (gasp) ally with them. Present a united front. Fight the good fight for speedy sites and good SEO.

Some notes

HTML doesn’t count as a programming language. Javascript might, but not if you’re using it to create popup windows.

If you want to learn Python, try Learn Python the Hard Way. Buy the book and support the guy who wrote it, too.

If you want to learn Ruby on Rails, I have no idea. I start up the RoR server on my laptop, and my brain shuts off. I can’t write a single line of code in it.

Learn SQL! Even if you think I’m full of poo, learn the Structured Query Language. It makes a lot of stuff go, from simple search tools to content management systems. Pointing and yelling incoherently when things break is bad. Knowing what makes stuff go and contributing to the solution when things break is good.

Other stuff

Start call to action

See how Portent can help you own your piece of the web.

End call to action


  1. Ian this was the best post I’ve read so far this year. I’m lucky to have worked with awesome developers my whole career and have always considered them the foundation of our teams. If I stop doing SEO for a month we may lose some traffic (who knows with Google these days; it might help!) and revenue could drop a few percent. If we had no developers for an entire month it could be a nightmare.
    Oh, and I worked with ROR coders on a community site once: Some of the smartest people I’ve ever known.

  2. @Everett I have no doubt about the RoR folks. I wish I could get my head around it.
    I think having great coders AROUND you can be even better than learning it yourself. They’re usually the brilliant generalists.

  3. Thanks for the inspiring post. Learning/knowing additional programming languages will earn SEOs respect of Devs. If nothing else, it will most likely result in things getting done quicker and with less resistance.
    “Scientia potentia est”

  4. I am minded to write the mirrored topic “Why developers should learn at least a little bit of SEO”, but I am up to my neck in learning Git and Python/Django at present. In comparison, PHP and mySQL, along with mod_rewrite and SVN for that matter, were all a walk in the park.
    Like Ian and his RoR experience, at the moment I haven’t got much of a clue as to what I am doing on the Python/Django front.
    As for the proposed “developers should learn SEO post”, the simple topic summary would be: “to stop making the same stupid, basic, mind-numbing mistakes over and over and over again”.
    Err. Which is why I am having to learn Python/Django and all this new-fangled funky stuff in order to go fix their crap.

  5. Wonderful article! As a developer I can’t tell you how often I get conversations and requests like those ones. “Can’t we just change every other URL on the site to this?” and so on.
    It’s like trying to speak a foreign language in a foreign country – the locals have so much more respect for you for trying politely, than if you just loudly speak in English…

  6. That’s not really fair. I honestly don’t understand why people must always make concessions to developers not understanding (or refusing to consider) anything beyond their piece of code. I only know HTML but my bullshit detector is pretty good and I’ve caught some lying about things not being possible because they didn’t want to change their procedures. Shouldn’t this be about the end result, isn’t that what matters? Yes, programming is hard, but that’s not an excuse for being lazy and not caring about the outcome. If it were easy everyone would do it.
    I understand the problems developers have and I often ally with them against ignorant decision makers. We get along just fine, usually. But I did have to work with a few who couldn’t be bothered with things like proper URLs. If someone doesn’t care at all about my work, I see no reason why I should care about what’s convenient for them.
    I don’t think it’s necessary to learn how to program to know what makes stuff go, though of course it does help. There’s a valid reason I see in your list, the API aspect. And SQL is something to consider…

  7. Absolutely GREAT post, Ian! As coders go, I’m a pretty sorry excuse, but I can certainly see how my ignorance could create extra work for the devs.
    You’re the second person that I’ve recently heard say that html isn’t a programming language. Where the hell were YOU, when I was furiously studying to learn it? Could have saved me from thinking I was learning “programming”. 😉

  8. @Doc But HTML is IMPORTANT. It’s just not a programming language. As someone just pointed out to me on Twitter, programmers need to learn HTML, too.

  9. I have to disagree, I don’t think knowing programming languages will make a damn bit of difference to the really good SEO’s in the world, or the really bad ones. By this logic I should also learn law (to make sure my lawyer is giving me the best advice) accounting (to make sure my accountant gets me the best deal on my taxes) medicine (just in case the Dr gets the diagnosis wrong) etc etc etc
    What most SEO’s actually need to learn is communication and compromise. With every dev team I have worked with, the key to getting the right solution on time has been telling them what I need to achieve rather than what I need them to do, sitting down with them to explore and understand the solutions they’ve offered and even (horror of horrors) accepting that some things simply can’t be done, or the SEO impact isn’t going to be worth the developers time, and I have to think of something else.
    Most of the issues you’ve described as being solved by learning programming are much more easily solved with a little mutual respect and understanding.

  10. @Sarah I disagree on two points: I think it’s easier to compromise once you’ve walked a mile in the other person’s shoes; and I feel strongly that there are a lot of fantastic tools (APIs especially) that are accessible only if you understand basic programming.
    That said, obviously there are lots of great SEOs out there who can’t program. I just think they could be even greater if they learned.

  11. If you didn’t write this post, I would have! 🙂
    Awesome post. In fact, this rings true even this morning. I was on a call with an IT group who pulled some BS.
    I recommended they remove the crazy IP redirection script that was causing 500 errors for search engines, and instead replace it with a basic overlay letting visitors select their region of choice.
    They responded that the overlay is going to take 4 days to implement. 4 DAYS!!! Are you kidding me?! You include a call to Jquery Tools, copy and paste a div layer into the example on their site and you’re done. 4 days?
    So I flipped out a bit. Telling them that 4 days was unacceptable. It should take no more than a few hours, and if it’s not done in a few hours they call me and explain why.
    So tired of IT crying that everything takes so long. That line might work with brand mangers, but it’s not going to fly with me.

  12. Ian you are my hero. When I started out in this industry I made it a point to understand code before I could make recommendations to change it (to make it more SEO friendly).
    Laughed so hard at this:
    SEO: Huh?
    Dev: The frendidges of the bensinator won’t let us froggle the cubist.
    The funny this is that I’ve had the above conversation with Dev’s so many times that it often hurts my brain.
    One extension of this post is that newbie SEO’s should learn the ropes the hard way rather than jumping into tools that do the heavy lifting for them. Much better to know advanced search operators by heart than using a fancy tool to spit out links. It helps one learn both the ‘why’ and the ‘how’ that way.

  13. @Sarah
    You’re premise that learning a programming language is the same as needing to learn law is what we call a slipper slope.
    The argument that programming is a necessary skill for SEOs is valid, and Ian makes many solid points as to why.
    If you want to argue that learning programming does not make a bit of difference, then you have 2 options.
    1) You can learning programming yourself and tell us from your experience whether it helps or not.
    2) You can ask someone who knows both SEO and Programming, and cite them as an expert.
    If you’ve done neither of the above, you’re really not in a position to make the call.
    It’s like a parent saying that having their kid learn an instrument isn’t a valuable life skill, yet they never learned an instrument themselves. How then would they know if an instrument is a valuable life skill or not?

  14. @Sarah – When you get into more large scale applications of SEO such as a widget promotion strategy for example, you’ll need at least a basic understanding of programming to derive marketing applications. For example, look at Zillow’s median home value widget at http://www.zillow.com/webtools/widgets/MedianPriceWidget.htm. If you were going after a widget promotion strategy that would generate deep links to the relevant city-search pages on a large site like that, you’d need a basic understanding of APIs and the variables that would feed into retrieving the data and presenting the right embed code.

  15. Great post Ian!!! I love the insights you are sharing… Thank you for sharing these post! This is the best post I have read so far… Thanks for sharing… Can’t wait to hear from you more…

  16. Man this article put my work relationships into perspective as an SEO. I owe a couple programmers lunch. Right after they finish with my shift-a-lator.

  17. Every PERSON should learn at least 2 languages.
    Here’s why:
    Two languages means you can think. One means you can read.
    You can easily learn one language and have no grasp of thinking. Learn two, though, and you learn some of the stuff that all languages have in common. You have to focus on the grammar as much as the vocabulary.

  18. If you are a program it’s your job to program. Plain and simple. Next you’ll complain there are no programming jobs because SEO’s are learning SEO. Stop complaining.

  19. I have to agree with the sentiment in the article.
    Be warned though, if you have never used a development language before then prepare to suffer during the learning process.
    But once you have learnt one – as Ian notes in his article – it is far easier to learn another because they all have coming features.

  20. I set upon teaching myself how to program and do front end work like three years ago. This was after 7 years of strictly being ‘the marketing guy’. There were days that ran into weeks that ran into months with little sleep, but in the end I could go from “idea” to “implementation and optimization” without dealing with ‘the developers’ at all.
    I also am able to call out the weak competition that charge big bucks for stupid Photoshop mockups and calling it ‘web design’ or the ‘programmers’ who know how to install WordPress. Hey, I don’t begrudge anyone making a living and taking easy money. But if you’re competing in my areas, and your game isn’t cutting-edge, business focused and professional – you’re going to get smashed. We define almost everything we do by the actual net return on investment for the client/company. It’s not enough to rank higher for keywords, or getting a bunch of Twitter/Facebooks followers without concrete business P/L goals. Plus, knowing how to program allows you to automate so much that it cuts the cost of providing any service way down — making you far more competitive as an individual or a group.
    Now I know enough programming / front end stuff to intelligently choose what to outsource to developers/designers and what I can just do myself. In the end, every member of your organization SHOULD understand what they others are doing in relation to your business goals. Specialization is ok as long as you know enough of the overall picture to see how your piece fits into the company balance sheet. The era of the ’employee’ widget maker who can just clock out at 5:00 has savagely been squashed by ‘globalization’ and game-changing innovations from silicon valley. Ask Electronic Arts if Facebook is important to understand as a marketing platform. Zynga has a higher valuation than EA – in just three years and with those ridiculous games. The same thing is happening across all industries.
    You should learn as much as you possibly can, but not just technical skills. You should know how to build and how to sell and how to read a balance sheet. You should be held accountable by the actual measurable return on what you’re providing and understand how to pitch the business case of what you do. The ‘web’ and the Internet in general is deeply integrated with just about every aspect of people’s lives now. You should understand the bigger picture, but be able to get your hands dirty if you need to.

  21. A lot of SEO’s & entrepreneurs fear programmers since they can steal ideas and run with them.
    It’s important for high level SEO’ers to know some level of programming especially PHP, you can’t rely on programmers to make changes at a drop of hat.
    Thus being said, open a book SEO’ers and learn some simple PHP so you can make changes yourself.

  22. Great article. I think you can learn quite a few things in PHP (for example) without devoting years to it, and you would have a huge edge up on a lot of marketing people. I see this quite often at my job. Some of the client service folks get it and some don’t. Projects run so much smoother with the ones that do.

  23. Learn Python the Hard Way is an awesome book, but I’d recommend Invent Your Own Computer Games with Python also. It’s targeted towards kids, but that just makes following along simpler for people who have a mental block about programming.

  24. Ian. Spot on stuff. I definitely agree, being a pseudo dev helps you to play nice with real devs. Also, I definitely disagree. You should give rails another shot. Yes it has 10,001 layers of abstraction, and yes, it can take 55 hours just to get a damn print “hello world” going if you don’t have the right gems. But once it is running, you can write two elegant lines of code and it will wash your dishes, do the laundry, and put the kids to bed. Try http://railsforzombies.org/ and let me know what you think.

  25. I think learning a program (PHP, Java, C++…) is very essential to a Seoer. SEO is not a big deal, everyone can learn it for a day with basic tips, and can master in SEO for a couple of month. Learning a program is different, it takes at least 2-4 years, learning all stuffs day in and day out. Recently, most of the coders can do SEO by themselves. THe Most important is they have no time for seeking and building links.

  26. I’m a software engineer turned website developer turned SEO.
    I work a lot with website developers and often have to teach them how to do what I’ve asked them to do.
    It’s a fine line I have to tread so I don’t trigger their ego and end up getting nothing done. Some developers are great and embrace SEO while others find it a threat if it highlighted their ignorance.
    I’d have to defend developers (and I often do) on the time things take. Quite often the client with the “it’s only” thought does not understand what is exactly involved. Just recently I had to hand edit 100 files to change the text for a button. It was only one simple change, but took hours because of the way it was structured.
    Often developers don’t see new requests as a revenue stream but a suck on their profits. They’ve already got paid and any extra work is a drain on their time. I’m trying to re-train the ones that work for my clients so they understand that what I am offering to them is new work and they will get paid for it (I’m also training my clients to pay for work). The good ones also realise that I am teaching them how to make their next website better (SEO wise anyhow).

  27. First off – GREAT and much needed post!
    @Tim “SEO is not a big deal, everyone can learn it for a day with basic tips, and can master in SEO for a couple of month.”
    I’m pretty sure any SEO professional worth their salt would agree with me in saying “Complete and utter BS.” It’s this type of mindset that creates the linkspam all over LinkedIn (and the Internet at large) and other unethical and annoying phenomenon.
    I began back before the dot-com boom, learning basic HTML and creating websites, and then implementing & experimenting with SEO. Once I wanted to do more with my sites and got into CSS. Then I wanted to get into DHTML, which meant I had to learn JavaScript. It was nonsense to me. So I did a weird thing.
    I went back and began to study what I like to call “Grand-daddy” C. After having a pretty decent grasp of at least the intermediate levels of the basic C language, everything else began to make ALOT of sense. Most languages will follow extremely similar constructs. But then you hit what’s called OOP or Object-Oriented Programming. And that’s where you lose me. There are a lot of OOP-based full-blown programming languages & scripting languages out there where this type of knowledge could be extremely useful.
    I completely agree about knowing SQL. Do WordPress? Do MyphpAdmin? Control any dynamic website? Know SQL; at least the basics. You don’t have to be a DBA or anything or get deep into inner and outer joins, etc. but at least the basic SELECT constructs, DROP, ADD, UPDATE etc.
    Even if you’re an SEO consultant but want to provide more interactive marketing services as a value-add, some programming knowledge will be very helpful. Think customizing WordPress = php + mysql + html + css + (maybe) JavaScript + AJAX (really just a combo of other langs above) + ?
    I’ve done some ColdFusion way back in the day, some ASP, etc. But nothing major. I am currently mainly a front-end guy (html, css, javascript etc.) and (regardless of what clueless recruiters say, server-side scripting languages are NOT front-end – that’s why their called server-side ya see) with some PHP and MySQL (and SQL of course). I hope to up my game though.
    In short, I agree with the article for sure and many of the comments so far. I disagree with Sarah and Tim.
    I hope to see more commentors post in here after me, especially with tips on what languages would be easier to learn, suggested learning methods, what languages are best for what, and something I’d REALLY like to see is something like this:
    Not sure if RoR is for you? Look at this http://www.example.com/coolscript it was created with RoR. Only Python could do the same. It takes more code in Python and is confusing. Yadda-yadda. Something like that with real world examples in layman’s terms for “the rest of us” :).

  28. Hi Ian,
    Just browsing through your older blog posts – most of the stuff you write gets me sucked in completely, love it!
    On a side note, the learnpythonthehardway link is broken.
    Thanks for a great blog, that is all.

  29. To know how to read the programming code does not mean that you know how to write the program itself. For SEO professional it might be useful somehow, but when it comes to make changes, it becomes a real nightmare for any good software developer.
    No offence.

Comments are closed.

Close search overlay