Mario Peshev delivers a toughtful and fact-filled article on the breakdown of WordPress developer salaries, considering all factors.
A known problem in the WordPress industry are the $500 projects and hundreds of thousands of clients looking for free and warez plugins and themes, unwilling to pay a few pennies for a premium solution, and completely baffled by any estimate that is equal to the actual salary of a developer. They often proceed with DIY solutions or site builders, and don’t understand the cost of building a professional solution that is scaled for growth, stability, compatibility, speed and security. And some customers simply don’t need a professional solution – they’re just starting and haven’t faced the challenges of a growing business yet.
I love the overview by Brian at Post Status on the cost of a WordPress website, which seems totally legitimate to me, but completely ignored by the majority of the population.
The cost of a WordPress website – detailed review
We are constantly approached by customers looking for eCommerce solutions, subscription-based websites, scaling large multisite networks. They ask for a custom design, a bunch of hand-crafted plugins, several meetings, revisions, iterations, some maintenance time included and what not. Which is totally fine,
15 Obstacles That Enterprises Report in WordPress and Development Partners - Mario Peshev on WordPress Development
Breaking down the challenges in the WordPress Enterprise space. All are being overcome, but it's mostly a matter of perception.
15 Obstacles That Enterprises Report in WordPress and Development Partners - Mario Peshev on WordPress Development
SME (Small and Medium-sized Enterprises) have been one of the strategic audiences that DevriX regularly partners up with. There are certain peculiar misconceptions (or legitimate concerns) that enterprise representatives always outline during meetings and calls with regards to their hesitation when considering WordPress. Over the last years, we have built WordPress-driven software for automotive manufacturers, airline brokers, banks, large educational institutions, enterprise digital media publishers, certification authorities, among others. Many problems pop up during the initial contact, negotiation calls, and onboarding new partners.
I will go over all the main 15 obstacles that enterprise CEOs and directors have shared during our enterprise sales process and what is the actual state of these in the WordPress ecosystem context.
1. WordPress Isn’t Secure Enough for Enterprises
Security is one of the main issues pointed by enterprises who regularly read online magazines, blogs, social media group reports and posts about hacked WordPress websites. The initial perception is that WordPress is insecure in its roots.
As a Core platform itself, WordPress is incredibly secure. There
These days, very large number of WordPress beginners call themselves "WordPress Developer" when all they do is install WP, change some options in premium theme admin settings and use a lot of plugins to "Build" a site. Most of them have no idea what goes on behind wp-admin.
For some unknown reason, the number of “WordPress Developers” out there is probably nearing the number of Java developers, despite of the fact that all Java developers do program extensively whilst the WordPress developers far too often have no idea what’s going on behind the admin panel. I do conduct interviews on a weekly basis for various reasons, and over the past couple of years I’ve probably shortlisted over 500 applications for WordPress development.
A tiny chunk of them had exposure to code at all. The rest of them usually fall in one of the following categories:
WordPress installers – setting up WP websites and installing themes
WordPress administrators – people who use theme option panels from premium themes and a multitude of plugins to “build” a website
People who have in fact edited some HTML/CSS to align a menu or hide an element
Developers Actually Code
According to Wikipedia, “Software Development” is:
Software development is the process of computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks involved in a software release life cycle and resulting in a software product.
A look at some of the problems with Envato and ThemeForest and why the race to the bottom is dangerous
I have a few friends who are pretty good with WordPress development, have a few decent plugins out there and love the community. They started small and began with playing with some themes and plugins, and then learned development by building their own solutions in the evening and over the weekend. For some of them that adventure happened some 6-7 years ago. They still love WordPress, and they also like the community. They maintain their free plugins and such.
But they have to do other 9-to-5 jobs in order to make a living. They’ve tried to sell their services and products, but within that competitive ecosystem with constant race to the bottom it never worked out. They have explored the local opportunities for work, but the small digital agencies are paying nickles or they live in a country with a less developed business ecosystem than, for example, the US, Canada, Australia or the UK.
At the same time we discuss the talent shortage – does it sound familiar now?
Is Envato All Bad?
For those who don’t know, Envato is the company behind ThemeForest, CodeCanyon and a few other brands related to building websites and selling cheap solutions.
Envato has become notorious in the WordPress ecosystem
I agree with Mario's premise that many things in the WordPress market are undervalued (some with a reason). However there is also a question of growth and adoption and the fact that you can get a rock solid app or game for just $2.
What I call a “Community Virus” is a fraction of a community that sets a bad example. You know, when you’re a part of the society and there’s a small (or larger) number of people doing bad stuff and are loud and annoying at the same time, and you tend to get embarrassed while shopping near them in the supermarket or at the airport. The Manifesto
I was reading an email from Curtis with his manifesto – “NO is NOT a Curse Word” (definitely subscribe here and read it) and he’s explaining his strategy for working with customers and valuing his services. It’s a great read and I would certainly recommend it to every freelancer and agency owner out there. There are numerous tips in this book that would shift your understanding about the business world and the whole business relationship as long as you apply them.
The Bad Example
Whenever a Community Virus infects a given community, it’s important for that society to get rid of it as soon as possible. Otherwise, contagious viruses tend to turn into a plague, and it’s incredibly tough to heal and get back to the normal state in question.
And the Community Plague of WordPress is the pricing and service quality.
The Java Example
Mario Peshev talks about positioning, pricing, costs, business models. - Well worth a read. Check out the comments too!
Given the large number of WordPress-based discussions on pricing, costs, consultant’s fees and product licenses, it’s no wonder why some people get frustrated about the Community and the understanding of Open Source. Other than the mentality and the usual incompetent statements such as: “But WordPress is free!” or “There should be a free plugin to do that!’, there’s another reason why some business owners can’t grasp the cost of building a WordPress solution.
Commodities or Needs?
There are usually two types of things that you need to do, build, use or have on a daily basis:
commodities that just need to do basic work
high-quality goods or services that are simply the best
Take any service or product as an example and try to apply it in two different contexts.
There are cheap and expensive cars, computers, tablets. There’s a low-cost Internet plan and a high-speed one. There are generic chairs and tables and authentic ones, too.
Would you buy a chair for $3000? Probably not since you’re not going to use it that much, or the difference with the $300 chair would not worth the extra $2700. But if you’re equipping an office that is to be rent for $40,000 a month for executives and funded
Mario expanded on a comment I made a while back. Do you agree with Mario (and me)?
While discussing the WordPress industry and the rest of the business world, my friend Ajay reminded me of why “WordPress Expert” is not a real title. His comment made me think about the misconception of “expertism” that seems to be getting popularity around the WordPress experts who offer their services:
The issue with the WordPress industry is that anyone can be an expert because more often than not, they are dealing with those who aren’t experts or regular users wanting a blog.
Let’s take a step back and think about WordPress.
What is WordPress?
WordPress started as a blogging platform more than 10 years ago, and the active community grew it to be a platform that powers about 24% of the World Web. Nowadays WordPress is being used as a CMS, and even as an application platform. In a few months the WordPress Restful API will probably get in the WordPress Core, which would make it incredibly easy to run all sorts of applications – even mobile apps and ones not written in PHP – interacting with WordPress as a separate platform.
There are plenty of use cases for WordPress, which is what makes it one of the most powerful web platforms that has ever been built.
What Can You Do With WordPress?
Mario's thoughts on the WP contributions, hierarchy it creates and finding your own way.
End of 2014 was a turning point in my life, and I have been thinking a lot about my contributing efforts for a while now. About a year ago I was teaching at a university, a school, co-organizing WordCamp Europe 2014 and a meetup, spoke at various conferences and meetings for free as well, contributed patches to plugins (plus free plugins and updating themes), mentoring people, teaching interns, and doing a dozen extra things for free.
Things Changed at Work
Our work back then was pretty well organized – we had a large client with an ongoing retainer for SaaS development, and some smaller ongoing projects. The majority of our team was busy with client work, the income was higher then our expenses, and we had another 20% or so time to work on internal projects, open source plugins and handle the load without stress. I had the process sorted out, and my billable work was about 20h/week, which allowed for another 40h/week on other activities. And it worked out well.
However, things have changed since then. We learned a lot of things and had to change the entire process, reorganize the team and our business strategy. We were 6 full-timers then with 4-5 more part-time folks, and about 12
Open source requires a certain mindset. I couldn't agree more.
The Free Software Foundation has a clear and concise definition of free software – which is tightly connected to what we refer to “open source” with some verbal modifications: “Free software” means software that respects users’ freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software.
Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”. We sometimes call it “libre software” to show we do not mean it is gratis.
My Open Source Experience
A couple of years back I shared my experience after 10 years of being a Linux user. Whilst it was not my initial FOSS expertise per se, it was a turning point in my mindset for several reasons.
First off, I had the full control of everything. Even if I wasn’t aware with what is going on behind the scenes, with the right motivation and tons of time, there was a way out. Even if it takes a countless number of formatting the hard drive and starting all over, or restoring multiple waypoints of a certain version of my stack.
Second, I wasn’t able to afford all of the software
Things are getting hot with modern WordPress dev stuff here at ManageWP.org
I had a trip to Porto for WordCamp Porto earlier this month and I gave a talk on my experience with “ WordPress Setup for Large Projects “. Porto is a great city with an active community from Portugal (Porto, Lisbon and other cities too) and it was a pleasure to hang out there for a few days, drink some sangrias, eat some francesinhas and definitely spend a great hack day with the folks that attended the Sunday fun. Video from my session is now available:
We had some issues with the VGA so I had to present at Daniel’s Mac which was a last minute change and it took me a minute or two to get used to it (and find my remote in one of my numerous pockets, for that matter).
A narrative coming below, since the sound isn’t perfect and I am a fan of the reading part mostly (especially when there is a summary)
It’s a well-known fact that random people outside of the community still find WordPress to be a “simple blogging platform” and many developers are not used to building larger systems (which is a common standard for other platforms and languages, i.e. the Java/.NET communities).
I have outlined the popular LAMP/LEMP stacks for setting a project, and shared my experience with version control.
If more and more people start offering WordPress services without any prior experience, things are not going to get much better. I’m all for allowing people to build their own small websites without having to pay, or just being able to learn how to blog, but not offering services without any experience. That’s simply wrong.
Last week Andy Adams posted a great post – The WordPress Talent Shortage Might Be a Pricing Problem. I hadn’t met Andy before, noticed the post through Brian and Jeffro, but I read it three times and I do agree with a lots of his thoughts and conclusions. I’d like to propose that the shortage of developers might actually be a pricing problem. Specifically, WordPress salaries and rates are not high enough to draw talent.
What is the level of our experts?
WordPress Development Experts
If we ignore the Job Title discussion or the issues with the community experts for a bit, the developer community in WordPress suffers a lot.
General concepts such as unit testing were known for about a decade in other communities, and we started paying any attention over the last year or two in WordPress. WordPress.org is still on SVN (attempts on moving part of the process GitHub are made, and merging pull requests as well) and everything is moving slowly. I still see some UNIX groups and tools using CVS as version control, but that doesn’t make them anything other than dinosaurs.
However, the smaller ones that don’t have resources have the excuse for not moving data, but the platform running 23% of the
Mario continues to impress me as one of the thought leaders on WordPress development
I spent a few days last week working on a new plugin, trying to approach it from different angles and test a few development flows in a way that would possibly change the way I work. One of my experiments was related to building an MVC plugin for WordPress – and I failed to do that in a way that satisfies me. tl;dr – there are ways to build MVC plugins on the top of WordPress, some people do that, it didn’t seem natural to me even if I like MVC a lot.
Even if some developers, architects and consultants claim for MVC to be an overhead or a bad pattern, I like it a lot as a way to structure a given code base. Separation of responsibilities, easy decoupling of data or frontend layers etc.
A fair comment on the article by Eric Mann posted a couple of days ago about 2014 salaries in tech business
Last week Eric Mann posted his 2014 Salary Survey Results covering some rough figures about our industry and the average salaries paid for different levels of experience. I like aggregated data in general, and it would be nice if more people take on that sort of studies in 2015, extending their horizons across the entire world, including web development companies in Asia, Africa, South America as well. Because “distributed” is a popular lifestyle in the WordPress Community, and it’s an important factor that we should never forget about. Before I start, Brian Krogsgard posted about the cost of a WordPress website – which is a post that I truly love, and we’ve tried to cover some very rough numbers just to use as a reference for our prospects – and it’s so unfair as each project is so unique.
So far so good – I like the idea of the posts, I love the numbers, they’re great. But…
Is Salary The Only Factor?
The only paragraph that bugged me in Eric’s post was:
To the senior level developers earning less than their junior level counterparts, I raise an eyebrow and sincerely urge you ask for a raise at your next review. If you’re truly in a senior level position with all of the responsibilities
Contributing back is in the spirit of the holiday season
I remember (back in time) when I was still using Slackware Linux . It is a Linux distribution maintained by Patrick Volkerding – the only person behind a project with thousands or tens of thousands of users (maybe more, who knows?). Occasionally the news section of the distro had a new post published that looked like: “I’m taking two weeks off with my family for the holidays, and I will be unable to reply to support inquiries while I’m away “. It probably looks odd, and the Linux distribution was pretty stable once configured, but compared to the commercial operating systems it is sort of funny to see how the only person behind the project is off for two weeks and the official maintenance drops down to zero replies.
TGM Plugin Activator
TGM Plugin Activator is a great plugin that adds dependencies to your theme or plugin. For instance, if you are building an extension to another plugin, the library provides you with a neat framework for displaying notices and installing the dependables from within the WordPress dashboard, resolving all of your conflicts. Given the best practice approach of dropping custom post types and content-related shortcodes from a theme’s core itself, the plugin
Mario Peshev on fine art of client work pricing. Everybody has a different 'system' but what matters is that you have a 'system'.
Pricing has always been a painful topic for everyone, both clients and contractors/companies. Clients try to keep it as low as possible (normally) and contractors try to earn more (again, normally). There are quite a few videos, books, tutorials and blog posts on the subject, and not as many people talking about that. Chris Lema is one of the most open people when it comes to pricing, and he’s helped me to negotiate on projects and find out the best possible way to discuss projects with serious customers who would like to build a given software and have a clear vision when it comes to their business planning (thanks Chris!).
The last guest post in his blog made me think for my pricing strategies and patterns that I apply, and few major issues I have. Since most of this is quite subjective and depends on different factors, such as:
your client and his/her approach
your selling skills
the type of project
the skills required
your background and references
and others, I’d like to point out a simple use case with three steps that I discuss with some of my clients.
So, overall we know the following: clients pay, therefore they wouldn’t like to pay more than needed to solve their problems.
Great post by Mario Peshev highlighting one of my favorite character traits.
During WordCamp San Francisco last year I had the chance to do pair programming with Rodrigo Primo on #15459. He’s an incredible and passionate WordPress developer and he approached me before the Contributor Day to do some hacking on performance for hierarchical post types after I sent my patch with some ideas related to that change. The Unit Test Challenge
When we reached to the unit tests, none of us knew how to build that specific bit. The function was printing some code without returning an array of data to assert. And we couldn’t find a Core example of unit tests doing that validation. I suggested to parse that and validate the number with a regex, but we were not sure about the way to go, especially invoking methods directly to the WP List Table object being initialized somewhere in the life cycle of WordPress.
And we just started. Rodrigo created a new file. He added a class extending WP_UnitTestCase. Then we wrote two blank functions – one for the setup, and the first test function.
And we kept forward, step by step. We didn’t know the best way to solve it back then, but we knew that we had to create a unit test. Instead of brainstorming everything and getting lost in our ideas,
"But until we start working together and discussing the potential impact of major business changes, we’ll keep losing potential opportunities by large brands, kick existing successful businesses away from WordPress due to regulations or politics, and keep complaining about cheap clients or low plugin and theme prices."
As a WordPress agency owner running my business and being responsible for dozens of people, my main goal is stability. Stability in Business
John Lennon once said:
“Life is what happens while you are busy making other plans”
Since life is fragile itself and things change every single minute, the least we could do is stabilize as many variables as possible and take care of the potential problematic areas. That said, stability in business is determined by various factors, such as:
Having a steady recurring revenue model – memberships, selling WordPress products, or a backlog of clients for services
Working with a reliable team – employees, contractors, trustworthy and capable people available for work
Setting up the right work environment – office, equipment, Internet access and everything required for work on a daily basis
Stability includes trust, reliability, delegation, long-term commitment and being able to believe in a technology, partner or an idea so much that you share your business and sensitive data with them knowing that they are safe, while dealing with the rest of your work.
Stability could be interrupted in a many ways that we cannot predict, or at least expect not to happen.
A great in-depth article looking at all angles of hiring and scaling a remote team. It should really be a paid e-book.
Last month Automattic announced the acquisition of WooThemes – one of the largest WordPress theme companies out there. In addition to adding Woo’s portfolio to Automattic’s arsenal, the company behind WordPress.com added a team of 55 to its manpower which is something incredibly important when you’re growing. I’m not going to cover the story behind the acquisition since the public data has already been covered in various sources and the future roadmap is not transparent (we are yet to see what happens), but one of my email newsletter comments covered the hiring aspect and how do we deal with it. I have also participated in meetups, mastermind groups and podcasts discussing hiring and my perspective on leveraging human resources in a good way, so this is my overview on outsourcing and hiring talent.
This overview is focused on hiring technical people, although it’s applicable in other fields as well – design, QA, project management, even marketing or sales. It’s useful for small and growing businesses dealing with products, memberships or services.
Hiring With Money Is Easy
I started my freelance career right when the recession in 2007-2008 started. It was a bold choice
Mario is on the roll here. Really like his writing recently. Would be nice to see his detailed WordPress development workflow.
In my last post on WordPress services and pricing I’ve mentioned that I prefer to work on different assignments and avoid the “cloning” pattern – such as building standard 5-page business websites all the time, 20 times a month. Working and experimenting with different APIs, trying to bend a platform in a non-standard way, providing features that others were unable to implement before are the challenges that bring joy in my work. However, to be realistic in most projects, I need to rely on code snippets and patterns. I have a private GitHub repository with some of my previous projects, keeping a track of the main challenges I’ve had with each one of them, so that I could save some time figuring out what was my solution last time.
Architecture Doesn’t Fit Everywhere
My latest courses on Design Patterns had two main goals. The first one is to teach some developers a bunch of design patterns. The second goal is to prevent them anyway possible to start implementing design patterns in every single possible scenario.
It’s quite common for people who discover a framework, tool, pattern or anything to get so excited about the knowledge being the “eye-opener” that they try to apply that everywhere.
I had some issues this month setting up locally several multisites on LAMP so I’ve decided to draft my complete flow for further use (and get other opinions on it as well). The sites were different in nature, some were running on Apache, others – on nginx, running on subdomain or subfolder-related structure.
Placing the data and the database
I place the WordPress folder in my server’s DocumentRoot folder, such as /var/www or /opt/lampp/htdocs . I’m also creating a database and importing the dump over there: CREATE DATABASE somedb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Then I configure the wp-config.php (or whatever) config file accordingly with the correct credentials.
Mapping the host
My first step is mapping a dedicated domain such as somesite.dev or the real domain (only when needed to test temporarily) to work. Adding a line in /etc/hosts :
Since the domain is already redirecting to localhost (127.0.0.1), the server needs a virtual host to resolve it properly and load the proper folder from Apache when the domain is hit, so in my httpd-vhosts.conf (or just httpd.conf or similar file, depending on the setup) adding a new virtual host:
The annual State of the Word session by Matt covers the latest updates on the platform – usage, coming updates and new features from the past year and other valuable stats so that WordPress experts could see their place on the map and see if there are any business decisions to be taken for the next few months (or a year).