You’re an SEO. I get it. You know title tags and links. You can speak content, query freshness and trends.
You know your stuff.
But you can’t really delve into SEO“”not like the big kids do””if you can’t program.
HTML doesn’t count
First off, I have to point out: HTML does not count as a programming language. For our purposes, a “˜programming language’ is one that lets us:
- Control flow with loops and logic.
- Store information in files or databases (OK, HTML5 lets you do that, but bear with me).
- Do complex parsing of strings. “˜Parsing’ means “˜split them up into smaller strings, and split those smaller strings into itty-bitty strings and so on’.
- Perform other magic, like chart generation, complex math and such.
Don’t panic
If you’ve read this far, then your palms are sweating. Or you’re getting pissed at me, thinking “˜That Ian. What an asshat. He’s just telling us we have to learn to program because he did.’
Don’t panic, and no, I’m honestly telling you this for your own good.
You don’t have to know any programming languages inside/out. And just about any web scripting language “” even javascript, possibly “” will do. Options include:
- PHP, which is as ubiquitous as opinions at a political rally;
- Python, which will give you lots of nerd appeal;
- Ruby, which makes you cool, at least as far as programmers go;
- ColdFusion, which I love, even if half the world thinks it’s dead;
- .NET, if you must;
- Java, if you like to suffer;
- C or C++, if you’re a purist;
- PERL, if you want to grow a long, scraggly white beard.
There are other, less well-known languages, too.
But I’m not suggesting you become a professional developer. You just need to know how to build a tool, script or web app that won’t make a developer’s hair curl. Here’s why:
You’ll learn to reduce abstract concepts to executable chunks
There’s a thought process behind programming that can help you in SEO, too. I can’t totally describe it, but smart programming requires that you’re able to take an abstract concept, like “˜generate a report showing keyword rankings’, and reduce it to discrete, executable chunks.
Note that I said “˜smart’ programming. You can also learn to code using drag-and-drop tools like Visual Studio. In most cases, that will cause you to reduce abstract concepts to rubbish. Please learn to code by hand first.
Programming teaches iteration
Writing code means a constant cycle of scripting and testing: Write something, then test it, then tweak, then test again.
Huh. That sounds a lot like SEO, doesn’t it?
Truth is, the iterative style that drives good development practices helps in any environment. In SEO, where things change constantly and no one knows precisely what works and what doesn’t, this style is a must.
Search engines are built by programmers
Oh, wow. Never thought of that, did ya? Google was originally built, at least in part, on Python. Bing is built, I’d assume, on .NET or C++.
And there are a host of great open-source search engines and search crawlers you can run yourself: Nutch, Pavuk and Lucene, to name a few. You can learn a great deal about how these engines work, and how to make your site a better search engine target. But you need to know, at a high level at least, how these tools were built, first.
APIs are fun
Application Programming Interfaces (APIs) let you grab lots of useful data and reuse it. Most SEO tools “” SEOmoz Linkscape, SEMRush, WordTracker and KeywordDiscovery, for example “” offer APIs. You can combine the data from two or more tools and create some pretty nifty reporting tools for yourself.
But you can’t do any of that without knowing how to hack together a bit of code.
Learning is good
Learning to program is hard work. It’s good exercise for parts of the brain that we SEOs use a lot: Structured thinking. Analytical thinking. Planning. Workflow.
I learned the same process in law school when we studied the Rule Against Perpetuities. Learning to program is a lot more fun. Plus, you won’t have to picture the implications of the Fertile Octogenarian. Shudder.
You’ll be more efficient
Once you know how to program, you can take all sorts of repetitive tasks and automate them.
A great example: Every day, I need to look at search traffic from all of my clients, as well as their keyword diversity, potential crawl issues and social media metrics like Klout. That used to mean a lot of clicks and logins. Now, I have a single page where I can see it all. It ain’t pretty. But it works.
In the long run, you’ll become far more efficient.
Get started
The best way to start is to just start. Pick a language. Do the “˜Hello World‘ tutorial. Then pick a problem you have to solve, every day, and try to solve it with a tool that eliminates repetition. Start with something really, really simple:
- Three metrics you have to combine into a spreadsheet (generate the spreadsheet).
- A list you have to scrub and sort (have a script do it for you).
- A complex calculation you do every day (create a simple tool that takes your data and does it for you).
- A bunch of metrics you have to grab from different services (use their APIs).
Find examples if you can, and start from those.
Don’t be afraid of breaking something. Start coding. Get a hacker mentality: Dive in, code, break stuff, then fix it. Take an example or open source application and modify it.
You’ll thank me later. I promise.




OK Ian… I am gonna lead this one off. Let me just say; I can’t program butkis.
Does that mean I am lacking? One of the things I think could have been added is that one can always hire programmers. I have a few on staff, thus haven’t felt the need to learn it. I am busy enough trying to figure out how the engines work. So I delegate.
So, while I agree that being able to create your own tools/data sets, it isn’t mandatory IMHO to actually spend time learning how to do it.
😉
Damn, I only know HTML… does that mean I have to return my SEO badge?
Oh, wait:
[i]”8. PERL, if you want to grow a long, scraggly white beard.”[/i]
I know PERL! I used to have to do some incidental PERL scripting back in the days… and yes I do intend to grow a long scraggly white beard at some stage. 😀
But yes I agree with your basic premise: an analytical, technically adept mind is an advantage in SEO.
I understand the point coming across in the post. But i do think it’s not necessarily “knowing” a programming language, but more being able to logically solve issues and work through things. That is essentially what part of programming is correct?
I have no programming skills to speak of, and definitely the last person to give any programming advice. But i can logically and systemically work through situations and problems to find a solution.
Programmers program.
Guess I’m ahead of the game since I’m a webdeveloper turned SEO.
I don’t know if I fully agree, but I have dealt with situations where the SEO didn’t even know HTML and didn’t notice all the on-page factors that were just killing the site.
So I agree that SEO’s should definitely know HTML, or have someone on their team that does, but a programming language I’m not too sure of.
Knowing PHP and JavaScript has allowed me to write some useful SEO tools though, but not necessary in the long run.
Would love to do what you have described above. Can you be more explicit in how I should go about it? I am a happy css/htmler, but the idea of making an ugly page the reports I look at every day gets me very excited. But I am not sure how to start! Would you write up a step by step guide?
I have to agree with Ian here. Having experience with 6 of the 8 languages he has listed and seriously knowing 3 of the 8 has been beyond beneficial to building efficiencies in my work flow AND advancing my career as an SEO.
As an SEO consultant I am not only delivering recommendations to the marketing teams at my clients but also to the development team that is physically making the changes to the site. In my opinion, the ability to take a recommendation from just a “it would be nice if we could do something like this” recommendation to an outlined spec that says “make this and here is how it should be coded to maximize SEO” is a valuable skill. It is an asset in your arsenal that can help your career or even your consulting business to bring in larger contracts because of the added expertise.
Obviously you can do SEO without knowing any of these programming languages but this has just been my experience.
One thing I’ve found is that knowing a programming language and having some CompSci background ends up being really helpful in dealing with programmers.
I mean, people who hire me to code regularly, as opposed to doing little stuff on the fly to patch crap temporarily? Probably shouldn’t, because my real talents as an SEO are content/link-baiting and process development. But I can do that duct-tape kind of programming and kick APIs into functionality.
But more often, I’m working with the true programmers, and being female and an SEO who is versed in 3 languages and is a decent Linux admin? It helps me on the respect factor, and they also realize that I won’t ask for the impossible and have a good concept of capabilities and timing. And that’s valuable.
I’m inclined to think that you don’t intend your title to be taken literally, Ian. While I agree that being proficient in programming can be a plus for an SEO, I don’t think it’s really necessary. I do think, however, that any SEO that’s able to read scripts will find it a real advantage. And I think some command of HTML (as you say, not a programming language) is a basic need.
I’m in the same boat as David, in that I can’t program squat. I can read several languages sufficiently to understand what’s intended, though. Unfortunately, I don’t have a staff to call on, so yeah, I do sometimes find that limiting… just not necessary.
I will admit up front that I can’t program myself outside of a paper bag. However, I have learned over the years to be pretty good at manipulating existing code. SEO’s definitely don’t HAVE to be programmers but I think your value increases tremendously if you can actually make SEO suggestions and be able to implement them as well.
Although I don’t agree I can see the advantage learning to program can give SEO’s.
There are problems only a programmer can fix… the SEO should at least be able to identify the problem and describe a fix, often these are not apparent unless you are a programmer. For instance a php session token in a url… to a non programmer they likely count the params and the names… but would not recognize that PHP session token whereas a programmer sees it and sees the footprint.
But do you have to be a programmer no….. it’s just another skill some bring to the table. Would I want someone on the team to know programming… for sure if the site is dynamic.
I have always likened it to knowing a foreign language, being able to read a road sign or interpret the menu in a restaurant is a pretty essential skill if you want to spend any significant time in a foreign country, being able to write the next best selling novel in that language is not.
SEO’s need to learn to understand and interpret, they do not need to have a comprehensive knowledge
I’m a system administrator, turned web developer (asp and then php), turned SEO.
It’s REALLY a strong benefit for your career as SEO specialist if you know a server-side programming language, because you can interact a lot better and faster with crackheads, sorry, Software Engineers.
Also, knowing some programming helps a lot when you have to outsource coding: you know WHAT specifically can you ask, you can evaluate better the amount of time required, the skill required, the RESULTS!
And coding is sexy! I’ve used Django in countless bar to pickup beautiful girls. Also i’m in therapy because of my tendency to tell amazing lies.
[quote name=”Sarah Carling”]I have always likened it to knowing a foreign language, being able to read a road sign or interpret the menu in a restaurant is a pretty essential skill if you want to spend any significant time in a foreign country, being able to write the next best selling novel in that language is not.
[/quote]
I dare to suggest French Fortan 77, it’s a joy for the hearth and the stomach 😀 It’s an excellent match with poultry and game.
Everyone: I’m not saying “nyah nyah you can’t code, you suck phhbbbttttt” 😀
I just think learning a real programming language is one of the best SEO skill-builders you can do.
And Dave, Mr. I-know-natural-language-algorithms, I think you’re pretty well set 🙂
I can at least recognize some of the languages above mentioned (1,4,5)…
But rather than start programming I prefer to learn about “how to optimize using CMS”. People are developing their portals on open sources like: WordPress, Joomla, Expression Engine, Showit, etc.
So, maybe I can´t write some code lines, but can “understand” some non HTML projects 😛
Good post, I agree if you do not have some technical know how then yeah alot of SEO will be a hard slog for you. I have good experience in PHP and know a few other programming languages but I really need to get some more advanced knowledge.
Great post Ian.
I plan to learn a programming language or two as I think it’ll be a big help, as Sarah described.
For me, I want to be able to relate to programmers more easily, as well as make things much more efficient for myself. Plus, having more skills is always good.
SEOs need a wide range of skills. I don’t disagree that it would help if SEOs knew or even understood a programming language but I think it woul deven better if they knew the basics of marketing.
That is why it is better if people work in a team with people having different specialities.
I prefer learning more about design. I think good knowledge of design can be much more useful in SEO than programming skills.
That depends of course on what kind of SEO one is: a specialist of the “advanced” type or more of a generalist. Most site owners don’t need and certainly can’t afford more than good structure and content and some decent linking.
If one wants to be truly specialised, then you are right on most accounts. Programming does help a lot. But you’re not right about programming as a way to develop an analytical mind and the habit of testing. There are better ways and in any case many people who come into SEO from another field already have that. I’m a failed ethnologist for instance and I’ve done quite a bit of research. I’m used to checking and interpreting everything.
Anyway, I’ll probably never be an “advanced SEO” (sic!), I’m not even sure I want to be one, so I’ll say no to programming, HTML is enough for me…
[quote name=”Ioana”]I prefer learning more about design. I think good knowledge of design can be much more useful in SEO than programming skills.
That depends of course on what kind of SEO one is: a specialist of the “advanced” type or more of a generalist. Most site owners don’t need and certainly can’t afford more than good structure and content and some decent linking.
[/quote]
Also true! the beauty of our Job is that there are many specializations and many more will emerge during these year, for example:
– Conversion optimization specialist
– Link building sniper
– Social Media Connector (just invented now)
– Local Search Specialist
– And many more
A strong foundation in design helps a lot for Conversion Optimization, which means more money for your clients! Expecially for small business clients i suppose it’s more important to get leads that convert than getting more generic traffic.
My approach is Zen-like: Everything you learn may help you, so don’t stop learning something new 🙂
Coding is a very valuable skill. I can do PHP, Python, and C, and the mentality of thinking like a compiler or an interpreter goes a LONG way.
It’s called Perl (and no I don’t have a beard) 😉
Okay, I really enjoyed this post!
I can do 5 out of the 8 languages you listed, but I confess to having particular warmness in my heart for Perl.
I take exception to the “scraggly white beard” reference! I have no such thing. 🙂
Right On! Been doing SEO (and Perl for tools) since 1993.
An SEO that nows nothing about programming is called a SALESMAN.
I totally agree on all counts. Sadly, my path into this industry seems very rare and reserved only for the best SEO’s.
I was a C and Assembly coder (I code in six of your listed languages), turned penetration tester/*nix admin and finally SEO. The return on these skills is immense and cannot be underestimated. I don’t know how anybody can say they know SEO until they can create a bubble sort with their eyes closed.
For those of you who think you don’t need to know any code other than HTML (a markup language, not a programming language) – the coders will always be a step ahead of you.
I am in the process of learning PHP as I find it’s the most useful for me to integrate it into my CMS platforms, Joomla and WordPress. Create simple plugins that will automate my everyday use or even modify existing plugins that can be downloaded for free.
Does anybody recommend any good sites where you can learn PHP. I find W3schools pretty good but wouldn’t mind another resource?
Thanks for this Ian, now I know what task will be #1 in my work schedule:) That’s something I really need.
Just what I needed to read, I’m about to start college and I was between bachelor of commerce or systems engineering.
I definitely like the business world but I have always been a firm believer of “do different things in order to get different results”; so, I do think having social, business and technical skills will take you to unthinkable places, you don’t have limits. In my opinion, this is the combination to explode your potential to the maximum, only this way you can know what you are capable to do, and if you ask me, I think we are capable of everything, just act with determination and discipline.
Thanks for your post, was really helpful.
To be a perfect SEO specialist do we need to learn HTML,PHP?