I pride myself on being a polyglot programmer – I develop daily in both PHP and JavaScript, I’ve been known to dabble in Ruby, and recently worked in a Windows shop coding C# and debugging C++ on a daily basis. I value working with multiple languages because it helps me separate the way I think about projects from the way I think about implementation.
Coding, at its root, is telling a story. The language you use to tell that story is syntax. The framework and function set you use is diction. Different storytellers will write in different ways, perhaps using a different structure (language) or just a different word choice (framework).
To unmuddy the analogy – you can often accomplish the same exact task using ASP.Net and C# that you can using PHP and WordPress or JavaScript and Node. One set of tools might be more efficient than the others, but my point remains: even with a different set of tools, you can still accomplish the same end goals.
Frameworks vs Languages
This is why certain statements in the development community frustrate me:
Well, we need a jQuery developer. I don’t care so much if they know JavaScript as long as they write solid jQuery.
To clarify, jQuery is a framework written in the JavaScript language. There are other frameworks that might be used in different scenarios, but often projects I work on make heavy use of jQuery. When I look at skills, I want someone who knows both jQuery and JavaScript.
If someone doesn’t know both, I’d want them to at least know JavaScript – the intricacies of jQuery as a framework can be learned if you already have a solid foundation.
If a developer only knows jQuery and has limited experience with vanilla JavaScript, I would still call them a JavaScript developer. They’re just familiar with the “jQuery way” of doing things. Again, they know a particular syntax – the way JavaScript itself works – but just use a slightly different vocabulary – the jQuery API.
Such a developer might struggle a bit when tasked with a vanilla JavaScript project – or when given a project written against a non-jQuery framework. When facing the project as a need to learn a different vocabulary, though, they’d do just fine. jQuery, Backbone, Node, and the like are all still JavaScript frameworks and just require a little extra time to learn the nuances of each framework.
Community and Value
My thoughts on this dichotomy between tools began thanks to one, innocuous tweet:
Interesting. Add “WordPress” to almost any development job search and watch the salary magically drop 30%. Any thoughts why?
— Ryan Don Sullivan (@ryandonsullivan) July 14, 2014
WordPress’ popularity has been a bit of a two-edged sword. On the one hand, it’s incredibly easy to get started in the WordPress community with little to no experience as a formal developer. On the other hand, the large number of newcomers to the field rapidly drive down expectations of project costs.
When I first started freelancing in the WordPress world, I had no idea what to charge. I priced myself incredibly low – $25/hour – because I felt guilty charging anyone more than that.[ref]When I got out of the freelancing game, I’d finally raised my rates to $250/hour, which was far more commensurate with my experience and skills.[/ref] Unfortunately, there were quite a few developers who underbid even that rate and poached a few contracts.
When the community is large and an easy entry-point for newcomers, the base rate many charge begins to fall. As rates drop, so do client’s and potential employers’ expectations.
The disparity between salaries offered for “WordPress developers” and “PHP developers” is very real. According to indeed.com, a WordPress developer in Salt Lake City can expect to earn an average of $69,000 per year. A PHP developer can expect $78,000. A 16% different is pretty significant.
Framework vs Language – As a Focus
In our brief Twitter discussion last night, the most compelling argument for this disparity is developer versatility.
https://twitter.com/BillyJBryant/status/488534754661511168
https://twitter.com/BillyJBryant/status/488535226009001985
Some arguments ran even deeper, building upon the ubiquitous nature of WordPress and the low barrier to entry for new WordPress developers, alleging that developers in the WordPress space have it easy in comparison to other frameworks:
https://twitter.com/dougvann/status/488528774959341569
Frankly, this is where the debate ran off the rails. I said earlier, developers are telling a story through their code, some do so with PHP, others with Python, others with Swift. The language you write in doesn’t so much matter as much as the fact that you are writing.
Anyone can publish a book these days and be called a writer. Getting your book into bookstores, on the New York Times bestseller list, or optioned for movie rights takes talent. You have to be able to both write a story and write an elegant one at that. You need a deeper sense of sentence structure, narrative tones, and abstract diction.
Remember, coding is just marrying together your creative abilities with the syntax defined by a language and the vocabulary defined by your framework of choice. To be a good developer, you still need to focus on the fundamentals – every developer needs to understand information architecture, version control, UX, and systems management.
Focusing on your skills with a particular framework over the language upon which it’s based may or may not set you up for failure in the future. I’m a JavaScript and PHP dev with skills in Ruby and C#. Building my resume to highlight my skills with jQuery, WordPress, and ASP.Net paints me into a corner.
I don’t work with them every day, but I also write code against Node and Backbone on a regular basis. As much as I despise the framework, I’ve written code against Rails. Listing any one framework, though, limits what outside viewers assume I’m capable of.
I am a WordPress developer. I am also a PHP developer. The two classifications are not mutually exclusive. I would also make the argument that any in the former category could survive (or even thrive) in the latter. WordPress is, primarily, written in PHP and teaches developers how to write PHP.
It just teaches them how to write PHP the “WordPress way.”