An F'n Mess

When drafting blog posts, I try not to single out particular tweets or comments unless they’re helpful or resourceful.

There are times, though, thoughts are shared either via tweets, emails, and/or blog comments that may be intended to be critical, but end up being really useful and end up proving exactly what we’ve been discussing all along.

Case in point, this post received the following comment:

Just spent a day fixing a site that a Developer custom coded and it was a f’n mess!

Started from scratch with 4 plugins and now the client is giving me a box of wine as an added bones of a job well done.

I don’t mind sharing this not because the comment was made in any form of confidence, but because the contact information of the person sharing the information isn’t (and wasn’t made) public.

This way, I know that s/he won’t be bothered with any unnecessary follow-up comments. There’s nothing good that comes from that, anyway.

The WordPress Developer Fails

The thing about Pete’s comment is that I think it bookends these last few posts nicely:

It goes to show exactly what happens when you have people who represent themselves as WordPress developers doing work that they aren’t really qualified to do.

In short, you’re left with a project that’s an “f’n mess” and that ends up becoming the responsibility of someone else who is more qualified to solve the problem.

What does it mean to be more qualified? In this case, and as has been previously stated, it depends on the nature of the project at hand and the capabilities of the person who sets out to solve it.

When An Implementer Succeeds

Honestly, I’ve no idea if Pete is a developer who knows what tools to use instead of writing it from scratch or who is an implementer.

But it doesn’t matter.

In other words, the cool thing about WordPress is that it’s completely possible that a person who ends up solving the problem that a “developer” left behind isn’t even a developer himself or herself.

Perhaps they’re power users or implementers – and that’s fantastic.

But the flip side of solving a problem this way – in this case, with four plugins – or in another similar case with any number of plugins is that work has been done by actual developers who know what they are doing, who are solving problems in functional ways, and who ultimately allow others to take advantage of their work.

Ultimately, this goes to show exactly how WordPress developers can benefit other people’s projects and who can make it easy to turn around a project into something that actually works.

It also makes it possible for those who may not be developers able to put together a solution that works better than what was assembled by someone who had no business building it in the first place.

When We All Win

So props to those who end up having their problem solved, props to the developers who are involved in building themes and/or plugins, and props to those who are able to creatively solve problems by knowing what to install and when.

Enjoy that wine.

Category:
Articles
Tags:

Join the conversation! 10 Comments

  1. There is no way to evaluate vague, unsourced, self-evaluative comments like Pete’s. It isn’t really about anything but self-validation at the expense of an imaginary scapegoat that you can name as you see fit.

    Anyone can find fault with others’ work and call it a mess. Is it really? What is the real problem? What would define an adequate job versus a “mess”?

    You’d have to have several qualified, open-minded people looking at the same “mess” to have something approaching a reasonably “objective” evaluation. And they may well disagree with each other.

  2. Along with Dan’s insightful comment, one wonders how much of the mess actually stemmed from poor communication between the client and developer? Perhaps expectations were not clearly defined and the end-product vision was not clearly articulated? Or did the client change directions mid-stride with little room for the developer to adjust in the time remaining? We just don’t know. But we do know that WordPress as a platform is powerfully flexible and adaptable. So kudos to skilled WP developers, designers, integrators, power users and even to just plain old end users solving problems utilizing this powerful platform.

  3. I am one of those persons who claim to be a developer, only because I have a contract to “fix” someone’s WordPress site.

    I hear so much about “sandboxes” and “workbenches.”

    I have spent over 30 hours trying to build a virtual machine for development. This includes VVV and Digital Ocean remote.

    The VM world is very complicated (to me). I was not able to build the magical place I have been reading about. This is frustrating because after thirty years on computers I have learned a thing or two. Now I still have not got a place to work on my clients site.

    I am now thinking that the best service I could offer my customer is to for the fancy-schmancy workbench and just work on his site directly.

    Any thoughts?

    • I am one of those persons who claim to be a developer, only because I have a contract to “fix” someone’s WordPress site.

      And you may be :). The content in the post I’ve provided isn’t meant to be incredibly rigid, but it’s meant to help to separate implementers from developers and the like.

      Development isn’t just creating something from the ground-up – not at all – it’s also maintaining something long after it’s been released.

      The VM world is very complicated (to me). I was not able to build the magical place I have been reading about. This is frustrating because after thirty years on computers I have learned a thing or two. Now I still have not got a place to work on my clients site.

      There’s a lot of content that’s available right now that talks about virtual machines, HHVM, VVV, remote machines, and things like that. While they are great and serve a purpose, they aren’t right for everyone.

      Truth is, I don’t use them.

      Instead, I have a local environment setup with Apache, MySQL, and PHP and I use some deployment tools to automatically send the project to a staging server which is basically a remote server I have that allows S/FTP connections.

      I am now thinking that the best service I could offer my customer is to for the fancy-schmancy workbench and just work on his site directly.

      Define what you mean by workbench and I’ll be happy to try to respond as clearly as possible.

    • As Tom quite correctly (IMHO) noted there is no fine line between developer, those that implement changes to code and quite frankly at least in the world of PHP Open Source Apps, designers.

      Having written code for 35+ years I have saw programmers deem themselves that and saw far better code from school children. I have saw designers just stun me with creative use of CSS, base javascript and their artistic talents. I have saw people make alterations to code that just make one go, “Wow. Why didnt I think of that!”.

      The key to growing any skill set is learn, try, fail, succeed. Lots of folks think programming is some sorta “Wowie! You must be smart!”. In reality its not that hard. Alot of programming is simply perspective. If one learns PHP then one can pretty much transition to any general purpose programming language with little pains. Pain is learning lets say all the Microsoft .NET libraries. Or how to effectively use the WordPress code safely and effectively.

      Marketing I learned as well. My Ex being a power politician. Marketing is WAY more complex than software development. In programming there are finitie boundaries to tasks: Work in -> Process -> Work Out

      In marketing every single individual is unique, infinite, no boundaries. Programming has rules. Marketing has a far more broadband set of boundaries and sometimes none.

      In as far as setting up a VM, while that all sounds nice and state of the art its not what we do.

      I have several machines. My main PC has Xampp on it, Visual Studio, and JetBrains PHP IDE. I like Codelobster alot as well as Sublime Text 2.

      I have a dual core box that mirrors all my development directories on my PC. My PC also has RAID enabled. Other than that, it serves as a media server while I work. I can also use it to simulate connections (sessions).

      I have a actual Dell Poweredge server older unit, works great. It has Cent OS on it. That works as a database server pretty much though it as well has Apache, PHP etc. on it. If I am interested in something Tomcat->Java, thats where it goes, like Magnolia CMS for example.

      I have an ancient P4 that is used as a print server basically.

      Lastly is a Core i3 Lenovo machine I can dual boot. Linux and Windows IIs basically. It is the box that I can benchmark against.

      I do have a core i7 box as well that was meant for gaming but I dont do much gaming. The price was right.

      Point being this:

      Coding doesnt require anything fancy. You can write PHP code on a Pentium 4 running Windows XP just as readily as a Core i7 running linux or a Mac.

      What IS important is good tools to code with and THAT can get confusing.

      What else is important is “you have to write code to write code”.

      Even the QUALITY of the code is not an imperative. That is to say, one PHP coder might go, “Oh my gosh, why did Rick use arrays .vs. Objects”. Just as I in WordPresses Locate files function went “Why are they looking in CSS directories first for files that exist .vs. the themes directories for include’s such as template parts?” Why are these not all mapped into an array to begin with hence getting rid of the ouchie’s of “if(file_exists(…))… which sit accessing a mechanical device in dreadful slow fashion.

      Tom can look at my code, I can look at Toms, you can look at WordPress core or I can and everyone will see how they’d done things different. That makes hay! LOL.

      Dont fret on environments. Dont fret on code quality. All that stuff comes in time and one mans bread is another birds treat. Learn. Write code.

      Understand the paradigms. Top Down design, Bottom Up design. Simple prototypes can be VERY helpful. Programming is sorta similar to building scale model kits which I always love to do. You have a bunch of parts. How you assemble them comes into a complete model. Like scale models the instructions have you build the model by sub assemblies. Thus the final product is actually alot of these sub assemblies that when put together are the final product.

      In programming you take the model and reverse engineer it from the top down or bottom up.

      Whats the difference?

      Top down is easier. Aka: A simple say links directory plugin. Conceptually top down we see functions needs input’s for site name, description and URL. We know we need CRUD database ability (create, read, update, delete). We know we need a display interface.

      Bottom up we will catch more details. We will know each entry in the database needs unique ID’s, we will realize any user inputs we need sanitize before anything hits the database. In other words… We realize our data store is “the bottom”.

      Both methods have their caveats. Top down tends to be more extensible when designing something. Bottom up tends to be tighter integration. Top down lends itself to, “whoops I forgot about that!” and bottom up tends not.

      I tend to do both. My first conceptual model(s) will be top down. Then I analyze them bottom up to make sure I am not going to go, “Ooops”.

      As I noted in another post here. Tools such as Smart Draw, Mind Map etc. are simply marvelous for this.

  4. There are no rules except one: Be flexible.

  5. I can share another story.

    In past few months I had several similar jobs polishing the premium WP theme from ThemeForest to fit client’s needs and expectations. The problem is the theme was picked just because of one single but noticeable feature which isn’t hard to implement from scratch in any other theme. For example, currently I’m working on a site, based on WP+BP. The premium theme my client bought has a nice grid of recent BP activity – it’s a flexible widget which can be configured to have any number of blocks in rows and columns and you are able to put any html or feed custom data source to it.

    Sounds nice. But the problem is, theme authors build it to be “one size fits all” feature. It’s complex (took me few hours to read the docs and check the code), bloated, and, in fact, not that flexible. In the end we ended up with a task to change this widget behavior in a way the widget logic can’t handle. And this widget was the only reason they’ve purchased the theme. Awesome.

    So what should I do? Create a child theme and build my own solution over their framework? But in a week or two we will not be using anything from this theme. I said – give me one day, I’ll see what we can do. So I coded a theme from scratch, lightweight, with only those features we need, without that dozens of heavy widgets and over complicated widget logic (because we need this widget only on homepage). It works lightning fast. It’s easy to support and extend. Client got a job done right. But should he fire a refund for that premium theme? What about payment? The single task to modify only this widget took more time to implement, it appeared more expensive on the bill. But it automagically made all the upcoming tasks cheaper. It’s a win in a long run.

    Another recent job was to fix a facebook-like timeline on a frontpage. The theme was purchased because of that timeline, as you might guess. And while it had nice GUI in the admin it was pretty limited in features. Extending their class wasn’t and option. So I had to develop it from scratch, which took me only few hours (timeline layout using masonry.js, infinite scroll and some custom javascript to load custom pieces of posts in any place). The rest of the design was minimalistic.

    What do you think we, developers, should do? Offer client a custom, affordable solution, perfectly matching their needs or stick with that premium sh*t they’ve purchased and blow our minds with that bloat whenever you need to make a tiny change?

    • This is a really long and really tough question to answer – I think it’d be best suited for a conversation at a conference or something like that, but I would be happy to respond to this one particular line: 

      What do you think we, developers, should do? Offer client a custom, affordable solution, perfectly matching their needs or stick with that premium sh*t they’ve purchased and blow our minds with that bloat whenever you need to make a tiny change?

      Personally, I’m a fan of offering a custom, affordable solution versus trying to juggle something they’ve previously had; however, I also recognize that not everyone’s budget accommodates that so there are times in which we have to bite the bullet and go for it.

  6. You make some really interesting points which I haven’t read elsewhere. As a WordPress agency, we have previously used the term ‘WordPress developer’ for everyone who builds websites using WordPress. We have recently been realising that this is the wrong term because a developer works with code as well as in the WordPress admin, whereas a lot of WordPress web design projects don’t require any coding at all – for examples projects to design a website using an existing theme. These projects still require professional skills as it’s not easy to create a website that uses a theme to its full potential, but ‘implementer’ is a more appropriate word than ‘developer’. We have been using the term ‘assembler’ but I think ‘implementer’ better captures the skills that are being used here. As you say, it doesn’t matter whether someone is a developer or implementer – the important thing is that they understand WordPress and know the best way to use it to produce a professional website.

    • As a WordPress agency, we have previously used the term ‘WordPress developer’ for everyone who builds websites using WordPress.

      I don’t really think there’s anything wrong with that because it is tree, but if a person has a background in development in some other languages, programming, or building software then ‘developer’ becomes relative.

      That’s really the only difference I see in it.

      As you say, it doesn’t matter whether someone is a developer or implementer – the important thing is that they understand WordPress and know the best way to use it to produce a professional website.

      Exactly! It’s definitely not me trying to me insulting or pedantic. Just trying to nail down terms that adequately qualify what a person is doing :).

Leave a Reply

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