For anyone who has worked with it or worked on it long enough, you are likely familiar with the criticism, the hate and vitriol of WordPress.

Straight up, people despise WordPress, its codebase, the fact that people not only work on it, but also write about it, build for it, and make any argument for using it outside of its primary use case of being a blog and/or a content management system.

And as a developer – especially one not only new to WordPress, but one who is new to programming in general – this can become really discouraging.

In fact, I’ll go as far as to say that it can make you question not only your ability as a programmer, but your ability to learn the tools, methodologies, and practices of software engineers who work with other languages, tools, frameworks, and so on.

Hate and Vitriol of WordPress

If you’re plugged into the development of WordPress in any capacity – even if you’re a, say, a power user instead of a designer or a programmer – then you’ve no doubt seen some of the articles and their comments that show up every month (or even more frequently) lambasting the software, the idea of using it as a tool for providing solutions for others, and even those who work on it, and build on it.

Personally, when I read articles like that, it doesn’t bother me one way or the other. It used to – definitely – but that goes away.

As far as I’m concerned, same story, different day.

But I remember when I first got started with WordPress, I used to seriously doubt myself especially as someone who was coming from other backgrounds in development using things that were more highly regarded as a tools for “real” programmers.

Behold, I am a real programmer.

Behold, I am a real programmer.

To that end, I can’t help but think of a lot of the new developers who are up and coming, those who are opting to move to WordPress rather than some other choice, and how this may impact them.

I empathize with them – I think many of us do – and I hope that those who are looking to make a professional career out of WordPress by either starting out, or by making a move over to the application aren’t scared off by some of the worst critics.

A Wretched Hive of Scum and Villainy

I’m someone who is 100% for a free and open Internet. I provide this disclaimer because I also believe that the Internet is a wasteland full of every bit of negativity that you can find.

"You'll never find a more wretched hive of scum and villainy."

“You’ll never find a more wretched hive of scum and villainy.”

But the very same medium that brings about that negativity also does  a lot of a good and that’s not to be ignored or forgotten.

Furthermore, I think that developers are some of the most arrogant people in any industry – reading any number of blogs, tweets, articles, and/or comments let alone any face-to-face conversation can confirm this.

We take firm stances on our tools, languages, and all of that fun stuff, and we will defend it to the proverbial death as if it’s some type of a crusade at which our very lives are at stake if any of our beliefs are challenged.

People get religious about this stuff.

The thing is, there’s nothing wrong with being passionate about the things that you’re using, or the things that you’re building, or the means to whatever end you’re work, but as soon as you take it to the point of personally insulting someone’s personality and/or intelligence, a line has been crossed.

Talking Points

The most common criticisms of WordPress that are likely to show up revolve around any of the following points:

  • It’s code base is a mess
  • It’s insecure
  • PHP is a terrible language
  • Building things for WordPress isn’t really writing code
  • …and so on

And you can find arguments for and against every single one of the items above.

Blah Blah Blah

“One Does Not Simply Talk.”

But one of the arguments that I absolutely reject is that people who are true software engineers won’t use WordPress because you can’t apply advanced software engineering techniques when working with it.

Typically, this manifests itself in the form of an argument where a person will drop a couple of software ideas, catchphrases, and/or buzzwords, and then claim that they can’t be done within the context of WordPress.

For example, some will say that you can’t use inversion of control or dependency injection when working with WordPress (and you can). Some say that the event-driven approach is dated (yet many of the most popular design patterns are old and dated – this doesn’t make them any less powerful).

Perhaps you’ll read that applying concepts such as domain-driven design, aspect-oriented programming, or test-driven development cannot be used when working with WordPress.

All of the above are fancy software engineering concepts and strategies, and all of them can be used when working with WordPress.

“Working On” versus “Working With”

There’s a big different in working on WordPress than working with WordPress, but you’re also likely to find people substituting the each phrase for one another when trying to make a point.

It’s a form of equivocation when trying to make an argument.

Anyone who has spent more than, say, a month when working with WordPress in a development capacity knows the different.

Statements that come out about the quality of the WordPress codebase come from working on WordPress. Statements that come about the feasibility of applying software engineering techniques come from working with WordPress.

I’m not defending any of those statements here, nor am I saying that some of them don’t have merit. The point I’m trying to make is that it’s worth knowing the root of the ideas when you stumble across those statements to help understand where the person is coming from.

The Double-Edged Sword

Finally, I guess the point should be made that the quality of the work that comes out of working on or working with WordPress is only going to be as good as we allow it to be.

Double-Edged Sword

What’s a software article without this old cliche?

WordPress core has to maintain a lot of backwards compatibility so there are definitely going to be some nasty parts to the codebase as it has a lot of older code built into the application that can’t simply be taken away lest it break installations for who knows how many installations across the web.

Conversely, as new features are introduced into and/or updated as part of core – which happens almost daily – better techniques are going to be used. Additionally, there are going to be solutions written on top of the platform that are well-organized, coherent, and that use good engineering practices (some of which are subjective, of course).

Perhaps the largest blessing and largest curse that WordPress has going for it is that it’s open source, and widely used.

Make The Best of It

Many of the points that I’ve made above aren’t meant to poor any gasoline or water on the ever-burning-anti-WordPress fire.

Instead, I’m simply trying to share my experience as it relates to working on and working with WordPress as someone who has worked with a variety of different frameworks and languages prior to WordPress in a software engineering capacity.

Prior to working on WordPress, I had the luxury of hiding behind my compiled code, but not anymore. And I take my fair share of flak for it. Yeah – I cringe at a bunch of the stuff that I wrote even six months ago.

But rather than being scared of who’s gonna say what about whatever, I welcome a lot of the critiques that I get from other notable developers in the community because it makes me better, and continues to show that good developers actually choose to work with WordPress (imagine that!), and that they want to see others succeed as well.

Perhaps above all else, remember that work isn’t going away. To that end, I think that it’s our job to locate the intersection of what we’re good at doing, and what we love doing, and try to stay at the center of that as much as possible.

If you stray too far in any direction, it’s much easier to begin hating your work – that makes for some degree of an unfulfilled life.

So if .NET, WordPress, Rails, Node.js, C++, iOS, or whatever else helps you help others, helps you help yourself, then work to stay there, and work to better yourself along the way.

Category:
Articles
Tags:

Join the conversation! 55 Comments

  1. Dude. All too accurate. Often times when I say I develop with WordPress people ask, “Oh, can you help me with my blog?” ( which is slightly frustrating ). There have been plenty in the dev community as well that when I say I develop with WordPress I get a blank look of some sort. But whatevs. I know my value :)

    • “Oh, can you help me with my blog?” ( which is slightly frustrating ).

      This doesn’t really bother me since I know that the majority of the people who are using WordPress are using it for that purpose – and that’s how it started.

      But if you’re looking to break way from that particular breed of WordPress work, I understand.

      But whatevs. I know my value :)

      Props on that – and that’s half of it. Now just convince others ;).

    • Often times when I say I develop with WordPress people ask, “Oh, can you help me with my blog?” ( which is slightly frustrating ).

      My answer to this is always, “Sure.” Then I tell them what my project minimum rate is, what my hourly rate is, and sometimes they even go, “Well, I wanted to expand my blog (into a ‘real’ website), so that’s not bad.”

      I find mentioning my billing rate helps with “Oh, I just have this blog, its on WordPress, you do WordPress, right?”

      • Yes – when people mention WordPress now, they are usually referring to a blog, but it’s becoming more and more known that it can be used for more advanced things, so I think mentioning an hourly rate and/or the type of work you do specifically can go a long way in setting expectations.

  2. I also wrote a response encouraging other developers to become better ones because of WordPress. It’s how I got to where I’m at today, so I must have done something right =p

  3. Great article Tom. Very much agree with everything you wrote.

  4. It would be interesting to hear your take on the “why”. Do they hate because they are promoting competing systems that are not so well supported? It is just envy of a successful product? Or could it be that WordPress has taken their lucrative static website jobs away (where they charged big bucks to make simple changes)?

    Personally my guess is that these people are haters by nature, they hate everything and are generally miserable people.

    • Haters gonna hate. I don’t know why, and we shouldn’t waste time speculating.

    • It would be interesting to hear your take on the “why”.

      I have a lot of thoughts on this, and I’ll be the first to say that some of it isn’t necessarily unwarranted, but I think their criticisms come off significantly more cruel than intended.

      That’s human nature, to some degree.

      I don’t think they feel threatened by WordPress, but sometimes I do think people feel threatened by the idea of something called “WordPress” which sounds like a blogging platform being treated as a framework for development.

      Personally, I don’t believe it’s a framework – it’s a foundation – and I’ve explained that in great length as part of this series.

      The frustrations about code are inherent to developers, I think. There’s are few things more frustrating than working with painful code. WordPress has that. It also has some great, updated code.

      This comes with the territory of massive backwards compatibility.

      I have a theory that a lot of closed-source software would actually be treated the same way were its code base to be open sourced. But, for now, we’ll never know.

      Personally my guess is that these people are haters by nature, they hate everything and are generally miserable people.

      Some people, maybe, but – as a whole – I don’t think so.

      I think some are definitely angry, frustrated, or whatever, but I also think that some have valid points. They’d be considered the signal among all the angry noise, and I imagine they’re in the minority, as well.

  5. For a moment I thought this might be about the hate & vitriol *inside* WP ;)

  6. In my experience a lot of the hate and vitriol comes from people who either a) have never done any serious work with WordPress or b) feel threatened by the fact that “anyone” can pick up WordPress and make it work without needing to hire a $300/hour developer to do so. When people tell me some variety of the criticisms you describe above I always ask them one question:
    “What is it WordPress does?”
    The answer to that question is simple: It provides a gateway between the owner, the database, and the visitor. It’s just an interface. What goes in (content) and what goes out (HTML etc) is up to the site owner, the designer, and the developer. So when people say “X can’t be done” I answer “Can it be done with a database and markup?” If the answer is yes then it can be done with WordPress. WordPress might not be the best tool for the job, but it is possible. And when people cough up that old and tired argument about the platform being insecure or the codebase being outdated I tell them to take a long hard look at their own preferred application and then look at the development cycle for WordPress. One of the awesome things about WordPress is that it evolves at break neck speed so any major issues are dealt with quickly. That is rarely the case with other more “professional” platforms.

    • You’ve really hit on a lot of good points here, Morten,

      Just to echo some of what you’ve mentioned, I think that WordPress supplies what many popular web applications do:

      • A database layer
      • An application layer
      • A presentation layer

      And we have the ability to interface with any and all of those at different touch points throughout the application life cycle.

      Even more so, we can build more complex interfaces (both in templates and in code) through the use of design, object-oriented programming (or procedural programming, if that’s your style), and do so all sitting on top of the foundation of WordPress.

  7. I have to confess I was one of those people who bashed WordPress for it’s awful codebase and whatnot, but working as a support manager now I have come to appreciate the importance of the “backward compatibility” feature (which is the main straint on upgrading the codebase). :D
    Also I came to understand it’s not the codebase that determines how powerful a platform is, it’s the “community” behind it, it’s a very important point and in that sense WP rocks!

  8. For me, it’s pretty simple. I am providing for my family, I’m doing work that is fulfilling to me, and I am helping others solve their problems by providing a service that is in demand.

    Haters can go on hating, I have a quote to write.

  9. “working with WordPress”
    This statement really sums up so many of the issues I see on a regular basis either when editing someone else’s code or even helping in the forums. Many times people just don’t want to learn the tools that WP has. I have seen 30-40 lines of code for situations where WP has one single function to do the same thing.

    I worked in the construction industry for years and it was tradition that when a guy new to carpentry cut a board too short we told him to go get the “board stretcher”. hehe. You really do need to know what tools are available to do your job.

    One of the main reasons I decided to devote all my time to WP is because I felt the back end was easiest for clients to understand. I really did not know anything about WP’s coding structure at that time. All I knew is that I don’t want to spend a week training someone. If all these other languages are so superior, then where is the CMS in that language that is taking over the world? I am not knocking them, but it does make sense to assume that WP has been put together well for the regular Joe to understand how to maintain and flexible enough for developers to work with.

    Nice article Tom.

    • One of the main reasons I decided to devote all my time to WP is because I felt the back end was easiest for clients to understand.

      I agree 100%. I started with Drupal and, though it will always have a special place in my heart as my first CMS love, it was just too complex for end users to wrap their heads around.

      One of the things that I like about WordPress (and CMS’s in general) is that it democratizes the end users site, freeing them from the tyranny of providers who charge premiums for simple content updates. Maybe “tyranny” is a bit of a strong word, but the point is that for better or worse, it empowers people to actually make use of their web properties.

      Essentially, if an end user can wrap their heads around Facebook, they can use WordPress. In my opinion it is this ease of use that makes WordPress the platform of choice for so many end users. It’s why WordPress powers such an enormous portion of the web. People – and when i say people I mean end users – they understand it, they feel like it’s doable.

      All of the best coding theory and practices in the world matter nothing if no-one wants to use the platform. Until another system comes along that can provide that ease of use to end users and the same level of flexibility in design and development, then WordPress will continue to grow, hate or no hate.

      I’m not a hardcore developer, I’m a designer and a WordPress freelancer, but that’s my take on it, and it’s why I’ve chosen to work with WordPress.

      • “All of the best coding theory and practices in the world matter nothing if no-one wants to use the platform.”

        Spot on Jimmy. When media players came out they were all the rage. “You could fit 100’s of songs on your MP3 player”. However, you had to convert the music to a certain file type, do this, do that…eventually I gave up never getting a single song onto my player. I bought an iPod nano, plugged it in and it just worked. No BS. That is what end users want.

  10. This type of irrational hate and vitriol is also frequently directed at Apple. Seems like the big winners in terms of market share are also big targets … this kind of win-lose mentality, filled with disguised envy of other people’s success.

  11. Statements that come about the feasibility of applying software engineering techniques come from working with WordPress.

    To be fair, when I hear this (and it’s frequently), it usually is in the context of the core team working on WordPress, not with it, and the people I hear saying it do know the difference.

    You can certainly pin backwards compatibility as a mostly valid excuse too, but that only goes so far since proper software engineering techniques also typically define clear semantics, release cycles, and rules that actually allow a project to smoothly move forward while dropping deprecated API without hurting anyone.

    One of my own frequent criticisms of WordPress is that it never defined clear global scope rules to keep either internal code, or public API defined in a non-conflicting way that was predictable, and easily identifiable. I am talking about namespacing, but just forget about PHP even adding support for them in 5.3 entirely. Decent software engineers practiced proper namespacing in languages before many of them ever supported them natively. They were doing this in C++ libraries back in 1992 before C++ had namespaces (in ’95 to ’96), and likely earlier than that. WordPress actually did adopt this same practice itself eventually (scoping global functions even before native namespace support). You see it every day by it’s “wp_” prefix. But it happened far too late, and when the core team did decide to start using it, they never bothered to also implement a plan for cleaning up anything that wasn’t properly scoped before that point. So now it’s just a mess with entirely unpredictable scoping even between closely related functions, with no flexibility to ever actually fix it. Say what you want about PHP (and it’s messy global scope itself), but this isn’t anyone’s fault except the core team. They should have been able to make a clear decision early and enforced it for the entire codebase, even if it took 5 years of maintaining deprecated aliases that were eventually dropped. You can’t argue the case that this is something you don’t have to deal with whether you’re working with WordPress, or on it. It affects both without question.

    I could say the same about the questionable mix of both functional and object oriented coding practices used in WordPress core. I’m not referring to the divide between plugin types here. For core, it’s another decision that was never fully embraced or dropped, and it affects developers in both camps. At this point, I honestly don’t care which is used, I just care that it’s consistent, and it’s far from that.

    Software engineering practices that involve public API in any manner (and that is most of WordPress since it has opted to advertise itself as the most “extensible” platform) certainly affects developers working with that API, not just on it. I’m pretty sure this has a large effect on why you might get the feeling like it’s “picked on” more than other platforms. I really feel like the core team should sympathize with every criticism of WordPress more than it’s probably even able to.

    • You can certainly pin backwards compatibility as a mostly valid excuse too, but that only goes so far since proper software engineering techniques also typically define clear semantics, release cycles, and rules that actually allow a project to smoothly move forward while dropping deprecated API without hurting anyone.

      I agree with this, and I certainly don’t mean to imply that this is a valid reason to excuse poor code.

      Personally, I think the old code should eventually be retired over time in favor of better engineered code – and it will be. It’s just going to take that time to bring things up, you know?

      One of my own frequent criticisms of WordPress is that it never defined clear global scope rules to keep either internal code, or public API defined in a non-conflicting way that was predictable, and easily identifiable.

      Agreed.

      And as far as namespacing goes, if the minimum required version of PHP was supported by WordPress, I’d be on it. But until then, I just wait patiently :).

      You can’t argue the case that this is something you don’t have to deal with whether you’re working with WordPress, or on it. It affects both without question.

      No arguments from me here. I do think that it can be more difficult to try to predict the future, so to speak, when you aren’t sure about the core features of your main language coming down the pipeline, but that doesn’t mean that plans can’t be put in place once that roadmap is defined.

      Software engineering practices that involve public API in any manner (and that is most of WordPress since it has opted to advertise itself as the most “extensible” platform) certainly affects developers working with that API, not just on it.

      Indeed it does.

      I’m pretty sure this has a large effect on why you might get the feeling like it’s “picked on” more than other platforms. I really feel like the core team should sympathize with every criticism of WordPress more than it’s probably even able to.

      I don’t mean to imply that it’s picked on more than other platforms, but I do think a lot of the arguments that are thrown at it are becoming trite.

      And you have to remember that the nature of the application itself does lend itself to being improved, so if a person is going to criticize it terribly, then at least offer a solution.

      Saying things such as “this should be done with this pattern,” isn’t necessarily a solution, though. I’d expect code examples, documentation, etc.

      It’s hard to get that in – I know – but it can be done.

      Regardless, you’ve provided a lot of great material in the comment and I really enjoyed reading and responding to it :).

      • My main question ( not that you have to answer ) is why WordPress’s supported version of PHP is 3 minor versions behind stable? I understand that hosting providers have to provide support for 5.3, but in my experience, the vast majority of large hosting providers already do. What else do we have to wait for, you know? And, WordPress being such a driving force on the web, I could very much see if WordPress announced supporting a version number not yet widely adopted, hosts would move a lot faster in order to support that version of PHP.

        • There actually is a very good answer for this question. It’s because literally 50% of WordPress installations are still using PHP 5.2:

          http://wordpress.org/about/stats/

          Until that comes down, WP isn’t going to abandon those users.

          • That’s a compelling number… I wonder how much of that is because the user has to manually turn that on as opposed to the host not supporting it though? I can imagine WP is hesitant to change the version number so it doesn’t affect the 5 minute install as well. If the user has to turn that support on, that will complicate things.

            I still wonder though, how much of that is the hosts playing off WordPress and/or other platforms? If WP announced it’s minimum version support to 5.3, how many hosts would then jump to upgrade? It’s not in their best interest if their customers’ sites stop working all of a sudden and it’s not like upgrading will break things ( at the very least a small percentage of things ).

  12. Towards the end of last year I took a decision just to focus on WordPress. My reasoning is contained in this article http://wpossible.com/2013/11/26/why-wordpress-7-reasons-why-i-choose-wordpress/. From my perspective, coding within the constraints of what WordPress is, and its primary users (mostly non-technical) creates really challenging problems for developers to solve. When these problems are solved for me, I consider that coding excellence.

    • When I first started with self-employment, I divided my time between Rails and WordPress and ended up going with WordPress as the work scaled up. Now, it’s what I do full time.

      Obviously, I’m a big advocate for it, and I’m all for helping it to continue to move forward, succeed, and to push it as a platform for supplying solutions for clients as it relates to content management.

  13. Snort.

    You know what the “Hello World” tutorial is for ? It’s a blog. It takes 20 minutes to build a blog with the framework of your choice. You have the added advantage of having a testable and modular system to expand when you’re done, which will definitely happen when the client comes back next month. No shitty hooks system, no antiquated architecture.
    All you have to do is ignore the existence of this 15-year old antiquated product and you’re golden.

    I would say roughly 100% of competent and professional developers despise working with WordPress, primarily because it’s a total piece of trash. It’s not emotional, it’s not opinion, the system is poorly designed. There’s really no more story to it than that.

    Have a swell day.

    • @nerdinacan
      This post would not be complete without a comment like this from someone who just doesn’t get it. Loads more of these can be found on any HN post that mentions anything related to a ‘WordPress killer’ which is actually a static site generator for geeks.

      Picking the latest and greatest tool is fine and being so ‘above’ picking a single tool because you prefer it and instead going for what you feel is the best fit for the job is noble too. But there’s a reason this ‘antiquated ‘ platform continues to grow faster than other tools that pop left and right and it has nothing to do with how pretty the code base is or isn’t. Which is weird, because your site NerdInACan seems to argue for a no nonsense approach to picking what ‘works’ instead of picking what code tickles your latest subjectively chosen fancy. Snort :)

  14. One side to the this argument is many people say the ‘develop’ on WordPress but just roll a theme out and thats it. Thats what I find frustrating

    • I’m torn on this because I’m personally of the mind the “development” is an overloaded term.

      It means too many things: front end developer, client-side developer, application developer, full stack developer, .NET developer, PHP developer, and so on, you know?

      So when it comes to qualifying oneself as a “developer,” there is some truth to the statement that they develop on WordPress when they build themes, but it does mean something different to, say, those who build applications for iOS or in .NET, so I really do get it. I’ve been on both sides – or all nine sides or however many sides – of this proverbial fence ;).

      That’s why, when people ask what I do, I try to clearly say I build things on WordPress and then say “sometimes it’s apps, a lot of times it’s plugins, a portion of the time it’s themes.”

      But even within each of those, there’s details that may be implied (deep knowledge of JavaScript, PHP, MySQL, HTML(5), and so on).

      Anyway, I’m just rambling at this point. The main issue, IMHO, is just that the term “develop” has become overloaded.

      • I would agree that “developer” is an overloaded term. I know a front-end developer who doesn’t actually know any real programming languages, she knows XHTML 1.0 Strict and how to use Photoshop. However, her job at a well established Midwest regional firm clearly states “Front-End Developer.” Before that, she made WP sites as a side gig, as she worked as a public facing position that interacted with a lot of businesses.

        People who use “developer” as a badge of honor, to the point of why they’re better than you because they use a “real” language like Python or Ruby or “anything but PHP,” are going to be quick to scream “That isn’t a real developer, she doesn’t even know a real language!”

        Even though XHTML is a markup language and not a programming language, we call her a Front End Developer.

  15. Thanks Tom for looking at this from a new developer’s standpoint. (To respond to the question “Why?” – a lack of empathy, that’s why.)

    As an older, self-taught procedural programmer (dBase/FoxPro anyone? hello?) whose only source of knowledge was a Microsoft manual {shudder}, now learning web dev in general and WordPress in particular, it has been really encouraging to find this mix of mutual support / training / here’s-what-I-would-do / looked-what-you-stepped-in approach. It is propelling me up the learning curve and it makes the coding successes even sweeter.

    To those who feel tempted to hate on WordPress – or anything, really – I would caution them to consider how much WordPress has allowed everyday people to build websites and how much we have been able to help those people.

    • As an older, self-taught procedural programmer (dBase/FoxPro anyone? hello?) whose only source of knowledge was a Microsoft manual {shudder}

      That was really before my time :). The earliest programming I ever did was with VB3 and when I worked to learn C on my own as a kid (and then revisited in in college in much more depth).

      …WordPress in particular, it has been really encouraging to find this mix of mutual support / training / here’s-what-I-would-do / looked-what-you-stepped-in approach

      Agreed. There’s a lot of us out there who are just trying to share our own war stories, so to speak, of what we’ve struggled with and how we came out on top. Sometimes are solutions are good, sometimes they are great, and sometimes they suck (and people are always willing to let us know about the latter :).

      But, as far as the hate is concerned, I think it’s a natural byproduct of a massively used open source application. You rarely hear this stuff about closed-source software because, y’know, we can’t gauge the codebase.

  16. I’ve been a programmer for a long time. I started in high school with punch cards, but high-tech floppy drives weren’t too far into the future. It’s mostly been Microsoft based, I started with ASP and some VB, moved to .Net with c#. I did a little COBOL and Java, but only a little. I’ve just started my first WordPress site for a novel I’m working on and it seems to be a pretty awesome platform based on what I’ve learned about it so far.

    I could be wrong, but I don’t think the problem is with WordPress. I’ve always found that programmers believe if they’re not using something, it must be bad. Java programmers think less of .Net guys. The .Net guys think the COBOL guys are weird. COBOL guys don’t like C++ developers.

    We also don’t like things that create less demand for programmers. WordPress, for example.

    Don’t take it personally, it’s just the way the game works. If a tool or language can provide you with the functionality, performance and quality you need, screw em.

    • Generally speaking, I think you’ve really nailed the issue as it relates to other programming languages.

      Don’t take it personally, it’s just the way the game works. If a tool or language can provide you with the functionality, performance and quality you need, screw em.

      I laughed :). I certainly don’t take it personally – at least not anymore – but it’s always a good reminder to hear this.

  17. Agh! You’re missing the point.

    YES. You can do anything in wordpress.
    But you’ll be working in a complete mess where everything works in it’s own way and it’s hard to predict what’s gonna happen.

    • But you’ll be working in a complete mess where everything works in it’s own way and it’s hard to predict what’s gonna happen.

      No.

      There are certainly places in the codebase that are in need of refactoring, but the commitment to legacy users is something that makes these type of changes difficult. This isn’t me saying that things need to stay that way, but that it takes longer to change.

      And it’s not hard to predict what’s going to happen especially given the documentation, open source codebase, and nature of how many of the APIs work.

      • Sorry for a late reply, but my point is – in order to see what a mess wordpress is – you absolutely need to ‘know better’. If wordpress is the only thing you’ve ever worked with – how can you tell if its good or bad?

        My suggestion would be to pick up some framework (I highly recommend Django, but there is a plenty of good php frameworks out there) and make a simple website with it.

        Granted a framework s not a CMS (although Django almost is) – but it would show you some good programming practices and I guarantee you will become a better programmer after that. And it will most likely open your eyes to all the flaws of wordpress people are complaining about.

  18. To be frank i never understood why pple hated WordPress after all it worked for me mind you all i knew was procedural codes and little of Design patterns, so making a blog was no big deal. But then i jumped into languages like Java , C# where you need proper structure and a flexible system and coming back to WordPress was a disaster. WordPress is good for blogging, but fails woefully as a CMS Platform. I worked on a big project on WordPress, along side with Yii Framework and i must say WordPress gave me the most issues. The hooking system once it fails its really hard to debug or even trace the failure. There’s isn’t a system to stop outdated codes from installing just like Moodle. The Use of Global Variables, mixing codes with templates, its actually difficult to develop WordPress themes compared to Processwire. Processwire is more flexible, it exposes the data and you are free to use that data in the template just as the same way, Controller passing data to the view. The Module system works, you can easily retieve a module and use it in your module. I don’t think “Developers” have any personal vendietta with WordPress. I think they hate it because the code is bloated and frankly i agree with them. But ha something gotta pay the bills.

    • To be frank i never understood why pple hated WordPress after all it worked for me mind you all i knew was procedural codes and little of Design patterns, so making a blog was no big deal.

      I’d say that to build a simple, basic blog with WordPress you wouldn’t even really need to know design patterns. Perhaps if the functionality was complex on some level, but understanding the core API and the templating hierarchy is about the basics of what you need.

      But then i jumped into languages like Java , C# where you need proper structure and a flexible system and coming back to WordPress was a disaster.

      This is true if you’re doing a true comparison, but there’s a lot to consider:

      • C# and Java are strongly-typed languages that do not allow you to make certain errors that come with weakly typed languages like PHP and JavaScript
      • When you build software using C# and Java starting from the ground up, structure is much easier to build into a system, but if you’re talking about coming from a fresh slate of a compiled language to a 10 year old application written in a combination of dynamic languages that’s committed to legacy versions of PHP and backwards compatibility is a vastly different situation.

      WordPress is good for blogging, but fails woefully as a CMS Platform.

      • Depending on the requirements of the project, this could absolutely be true, but the opposite may also be true, as well. As developers, we have to make sure that we aren’t shoe horning our solutions into a framework or foundation that’s not a good fit. If .NET or Yii work better, then definitely use it – if WordPress works better for a given problem, then use it. It’s a generalization to say that it fails miserably as a CMS when that’s part and partial what the core application does (and powers a significant percentage of the web in doing it).

      The hooking system once it fails its really hard to debug or even trace the failure.

      This is based on the event-driven design pattern so depending you have the right breakpoints set in the core code and are watching the list of hooks attached to an event, then it’s a lot like debugging JavaScript.

      The Use of Global Variables, mixing codes with templates, its actually difficult to develop WordPress themes compared to Processwire. Processwire is more flexible, it exposes the data and you are free to use that data in the template just as the same way, Controller passing data to the view.

      Globals are a pain, straight up, but we don’t have to use them in the context of WordPress. Yes, the core code uses them and I’m not defending that, but we have the ability to use the API and use more object-oriented or procedural code to handle our work on top of WordPress.

      MVC is also a pattern that, when implemented well, is a luxury to use (much like it is in Rails).

      I don’t think “Developers” have any personal vendietta with WordPress. I think they hate it because the code is bloated and frankly i agree with them.

      And there are good reasons to feel that way, but I think that having a fully rationale, justifiable, and defendable case as to why it’s a poor choice or poor application is important.

      Yeah, there are a lot of new, frameworks and libraries that do tremendous things and that are very, very well built. I think it’s important to be diversified in your skill set and the tools that you use to build your solutions. But there is a difference between having a personal vendetta or straight up hate against something, and having a well-reasoned defense as to why you want to avoid something so strongly :).

  19. There are a lot of things that I both like and dislike about WordPress. I wrote a blog post about it, and you can read it here: http://blog.mathesondigital.com/love-hate-relationship-wordpress/

  20. Conversely, as new features are introduced into and/or updated as part of core – which happens almost daily – better techniques are going to be used. Additionally, there are going to be solutions written on top of the platform that are well-organized, coherent, and that use good engineering practices (some of which are subjective, of course)

    Well, we can all hope. But for now it sucks.

  21. That is totally true. I know that developing WordPress themes and plugins make money. I though that i may develop WordPress for while to get some money, but i couldn’t. It is very stupid to leave all your development skills atrophy while you are trying to figure out how to use such a limited system. In addition, I hate PHP. I hate it. i hate it. MY HEART PUMPS RUBY <3

  22. WordPress just works. It’s not always perfect, but it works. I was approached 10 years ago to help a small department in a university create a site where users can upload art, video and commentary and have the work curated within the site by a few admins, but have the site open to all. Needless to say there was no money and developing something like that from scratch would not have worked, nor could I do that on my own. That’s when I discovered WordPress. It couldn’t do all I wanted, and yes, I had to “hack it” a bit, but with the support of the community, plug-ins, and getting my hands dirty we created a site that launched a few artists onto bigger things and let the curators do what they need to do. The university got two great showcases out of it- the one online and the gallery one that developed form the online version. I absolutely could not have accomplished this without WordPress.

  23. I hate WurdPress too !!!

    But why the HELL is this site in Wurdpress too ?

  24. The question I have for you, looking at what you wrote are:

    If there are more secure, faster, standards compliant frameworks out there, with less of a learning curve, more flexibility (as in you can really build anything successfully on it), have access to tools like Composer and TDD built in, among hundreds of others that are not available on WordPress AND are all 100% Opensource, WHY, oh WHY would you use still use WordPress? I mean what would realistic justifications for using it over other, better, easier to use, frameworks with more technically sound codebases and communities, be? That is the main issue in this debate. There is really no good reason to use WordPress, except that the “developer” may not know how to code. To me, WordPress is Wix for people who like to fiddle a bit more. Is that web development, or just “facilitating”, and is that really what is implied when a client hires a web developer?

    • If there are more secure, faster, standards compliant frameworks out there, with less of a learning curve, more flexibility (as in you can really build anything successfully on it), have access to tools like Composer and TDD built in, among hundreds of others that are not available on WordPress AND are all 100% Opensource, WHY, oh WHY would you use still use WordPress?

      You’d have to show me a framework that meets every single one of these criteria in order for me to provide you with a well-reasoned answer.

      I’ve worked with a number of different tools, libraries, and frameworks that are out there. I’m not claiming WordPress is perfect. I don’t think other frameworks are either.

      But in terms of things like TDD and Composer, I use both of those in things I build. I also use various build tools, continuous integration, and the standard suite of things you’d find people using with any other type of environment.

      I separate template logic from application logic from business logic from database logic and so on.

      You could probably make a case that because of the primary design pattern that WordPress uses, it’s more flexible than some of the others that are available. That flexibility, though, can always be the very thing that ends up causing people to insert poor practices into their development.

      Having more rigid guardrails, more opinionated scaffolding can often prevent that.

      I mean what would realistic justifications for using it over other, better, easier to use, frameworks with more technically sound codebases and communities, be?

      When you find a community that doesn’t have it’s share of trolls, naysayers, negative attitudes, and general jerks, let me know.

      I’ve yet to find one in all of the open source industries that are available.

      I’m not saying that the degrees in which these personalities exist don’t vary, because they do, but I’m saying that there’s no perfect community. And though WordPress has its share of negativity, it also has an incredibly positive, welcoming side to it as well.

      I’m a big fan of that and want to be part of it as much as possible.

      That is the main issue in this debate.

      This can’t really be “the main issue” because this isn’t really a debate. You’ve got your points on why you dislike WordPress – which is fine – and I’m sharing why I do like it.

      I’m not taking this as an argument for why or why not WordPress should be used.

      There is really no good reason to use WordPress, except that the “developer” may not know how to code.

      But if they don’t know how to code, are they really a developer? And if there’s no good reason to use it, then why is it so popular and why is so much effort being spent on things like the CLI, Calypso, and the REST API?

      Those last three things are things that show there’s a serious side to WordPress development that far exceeds whatever a hobbyist may be doing.

      To me, WordPress is Wix for people who like to fiddle a bit more.

      For some, that’s exactly what it can be. For others, it can also be the foundation for writing more advanced web applications.

      It has the functionality and APIs for doing exactly that and it’s only going to get richer as we move forward (especially with 4.4 being released with the first phase of the REST API implementation).

      Is that web development, or just “facilitating”, and is that really what is implied when a client hires a web developer?

      Who knows why any given client hires a web developer. That all depends on the spec of the project.

      Sometimes, throwing together a theme and a few plugins might fit the bill.

      But there are those of us who are not in that particular part of the industry and who aren’t actively pursuing it.

  25. Thanks for the read Tom.

    Id love to share some of my thoughts and ask a couple questions.

    I’m not a fan of WordPress at all I’ve been learning web design/dev for the last year or so and have really enjoyed creating websites for fun.

    I completely understand how valuable WordPress can be, especially when handing it off to a client. My frustration has come from trying to build a website and not being able to fine tune everything the way I want. More specifically I’ve felt that the UI/visual builders have really hindered my ability to try and build websites the way I’ve wanted.

    My question is about how you (and other readers) develop WordPress sites ready to be given over to a client?

    Do you use a theme and just use their UI/Visual builders? or do you code?

    I’ve heard so many times that you can customise everything in WordPress and not even touch the UI builders but I’ve yet to see that happen. I’d love to learn how to build great WordPress sites and pick up some extra freelance work but its been hard!

    Ok this is getting long… Anyway, my conclusion has been that i NEED to learn WordPress, A) because its so popular that it would be silly not to know what clients want and B) so far in my dev journey this has been my main barrier. Theres just something about it that really rubs me the wrong way. BUT I WILL CONQUER YOU WORDPRESS!

    Can anyone give me some tips on how to get started? I’ve just downloaded jointsWP and underscores. I’ve set it all up on my local server with gulp as the task runner. Now to figure out how to make the site look how I want…

    • This is one of those topics that I unfortunately cannot answer in a comment response as it’d take a longer blog post or maybe even a short talk to go through all of the alternatives

      I’ll do what I can to quickly run down your questions, though:

      1. I don’t use UI/Visual Builders and I tend not to be a fan of them (though that doesn’t mean they are bad or don’t have their place). I’ve never used one and likely never will.
      2. When I start working on a site for another client, I start from a clean slate and then use a series of mock ups, my own work flow, etc., in order to begin bringing the site to life. I write code.
      3. Building great WordPress work without a strong foundation in programming can be tough, so there’s a lot to learn to get to that point. That doesn’t mean there isn’t work that can’t be done by those who are better with piecing a site together through plugins a theme, and so on, it’s just that it won’t be as flexible.
      4. To get started, I’d recommend reading a lot of the content on Tuts+, taking a few courses, and following a number of influential people on Twitter and follow their writings. It will take a while. It’s a long wrong. I’m years in and I’m still learning, but I’m further than I was years ago. And that’s the best we can hope for.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.