Live data from Hacker News

Drupal's Golden Handcuffs

mikecr.it

31–40 of 148 posts

Re: Drupal's Golden Handcuffs

#31
post #6

I am puzzled by this: "Good Drupal developers are making a lot of money right now, much more than I'm seeing for Django or Rails or Node devs in general." I am curious where this is? This is not true in New York City, where I am. Developers who are good with a given PHP framework (Drupal, Symfony, etc) will make something like $60 to $70 an hour. The top Rails devs will make at least the same amount, and usually a li…

This doesn't make sense to me either, though I haven't touched Drupal for at least 6 years.

In my experience, Drupal is ideal for cheap clients who want a zillion features but don't have the budget. You can deliver more functionality in Drupal than anything else, that is absolutely true.

For high-end clients who are willing to pay for impeccable UX and solid problem-solving, I can rarely recommend Drupal because it starts with a raft of assumptions that tend to lead to subtle compromises in the UX but would require an inordinate amount of effort to fix.

I ditched Drupal for Rails specifically because I hate being in the position where I have to explain why a seemingly simple change would require far more work than logically makes sense (to be fair, this is an occupational hazard of programming, but with Drupal it happens to an obscene degree). Going to Rails felt like targetting a higher class of client.

Meanwhile Rails developers seem like some of the most sought after programmers today. Where is this elite Drupal employment world that the OA speaks of?

Re: Drupal's Golden Handcuffs

#32
Moving away from Drupal was one of my biggest steps forward as a web developer.

I worked with Drupal full time for a little over two years. I spent much of that time clicking around in config screens, and when I did have to get my hands dirty with some custom code, I usually felt like I was just stumbling around in the shadow of the behemoth that is Drupal's API. I thought, "Surely this isn't what web development's supposed to be."

Turns out I was right. On recommendation from a developer friend, I started experimenting with a bit Rails, tried a couple of "proper" PHP frameworks, and then discovered Python and its excellent web development ecosystem. That's when it really started to click for me—all these pieces that Drupal had so kindly obscured from me started falling in to place. Rather than trying to push around a monolith, I learned how to keep things lightweight and use only the pieces I needed. And importantly, I was actually writing code. Sweet, readable, maintainable, version-controllable code. None of this "serialize a hugely long options page and dump it all in the DB" stuff. (On a side note, learning git was another big catalyst for my move away from Drupal. D6 always felt like a pain to track in a VCS, especially when I was collaborating with another developer—though the situation may be improving.)

I should point out: I think a big part of my frustration was the fact that many of the sites I was building didn't need something as big as Drupal. I've since found WordPress to be a better fit for most of the "easy" stuff, or even static HTML/CSS if it makes sense for the project. When I'm building something more complex, well, there rarely seems to be any reason for me to use Drupal anymore.

Re: Drupal's Golden Handcuffs

#33
post #6

I am puzzled by this: "Good Drupal developers are making a lot of money right now, much more than I'm seeing for Django or Rails or Node devs in general." I am curious where this is? This is not true in New York City, where I am. Developers who are good with a given PHP framework (Drupal, Symfony, etc) will make something like $60 to $70 an hour. The top Rails devs will make at least the same amount, and usually a li…

This doesn't make sense to me either, though I haven't touched Drupal for at least 6 years. In my experience, Drupal is ideal for cheap clients who want a zillion features but don't have the budget. You can deliver more functionality in Drupal than anything else, that is absolutely true. For high-end clients who are willing to pay for impeccable UX and solid problem-solving, I can rarely recommend Drupal because it s…

> In my experience, Drupal is ideal for cheap clients who want a zillion features but don't have the budget.

IE - customers you don't really want to be stuck with in the first place.

Re: Drupal's Golden Handcuffs

#34

If you're using Drupal the way the author describes here - building in the interface rather than writing code - then yes, you're pretty much doomed. You're producing a very fragile thing that is very hard to maintain and adjust later on, and heaven help you if you actually want to do something in a different way than the modules you're working with allow out of the box. Drupal development is very divided between (a)…

This comment confuses me. If you're going to use Drupal as a framework and ignore the rest, then why not just use Django or Rails, both of which are cleaner and more sophisticated frameworks? I don't think it's fair to look down on people who use Drupal as it's meant to be used.

Drupal developer with 4+ years of working with it under my belt.

The nitty gritty is that we use it in an environment where we basically have 2 teams. One that builds custom code/modules that can be installed and enabled in Drupal to add additional functionality and another that actually deploys sites.

The team that deploys sites is savvy, but are not hardcore developers. The thing I've come to over all these years is that Drupal's pluggability still makes it the most powerful tool for what most people use it for -- deploying websites.

I have often surveyed the landscape and thought, "why not just build this in another tool like Rails or Django" and I always come back to it in much the same way the author of this article does -- while those are much more beautiful development frameworks, they just don't have the mojo that Drupal does.

This is likely best illustrated by example. This may or may not be based on a true story ;) Let's say I develop a custom application to interact with my company's backend database products which, let's say, are for events management. Now I pass that custom application off to the site builders who will actually customize that application for each of our hundreds of clients.

(1) The client wants a Google map of all their events

(2) The client wants the Events displayed on a calendar

(3) The client wants Events to filter by Event type

(4) The client wants a tag cloud or something else totally unrelated to the Events system

Built in Rails (Total additional developer time to add these features: 400+ hours)

(1) Damn, back to the drawing board, we need 100 more hours of dev time to develop a custom component to convert the locations into actual location data (lat/long) and display it on a map. We need to interact with the Google Maps API and write the code that will communicate with them via an API key and handle everything.

(2) Damn, back to the drawing board, we need 250 more hours of dev time to build a calendar and ensure we get the layout correct, handle a bunch of special cases (what if there are too many events to display on a single day, some months have 4 rows of weeks, some have 5, etc.)

(3) Developer has to add a form element to take that event type and modify a query to enact that filtering and load the results on a new page. Not a ton of dev time, but dev time nonetheless.

(4) Cross fingers that there is a Ruby Gem for this. Otherwise damn, custom development.

Built in Drupal (Total additional developer time to add these features: 0 hours)

(1) We never heard back from the site builders because they installed the Drupal modules Views, GMap, Location, and were able to create the map themselves from our custom Event data and clicking on the right buttons

(2) Again, the developers never heard back from the site builders because they installed the Drupal modules Views, Calendar and were able to show those events on a calendar.

(3) No developer time because the site builder went into the Views settings and added an Exposed Filter

(4) Site builders install the cloud tag module or the random feature X module, custom developer time rarely needed.

Now let's scale it up, instead of 1 client you have 500 and each want slightly different things. One wants to filter by Event type, one wants to filter reverse chronologically by date. One wants a calendar with a month view, one wants a week view. One has a ton of events and wants a day view. With Drupal, these are all just settings on existing, already built modules. With Rails/Django/Node.js/etc. these all require more dev time. Now of course things could be designed intelligently and parameterized to limit some of the DRY, but there is still dev time required to implement all these different permutations or up front complicated system design to create an architecture that can be configured as richly as a Drupal module developed over years by a community.

I work in Drupal professionally, but play in Rails, Django, Node.js, even Meteor every chance I get because they're so fun and beautiful but at the end of the day I still think Drupal is the right tool for our job in spite of its long list of flaws including its base language, the always horrifying PHP. But it freaking works.

tl;dr This article rang more true than I could have imagined it would. Thanks mcrittenden!

Re: Drupal's Golden Handcuffs

#35
post #6

I am puzzled by this: "Good Drupal developers are making a lot of money right now, much more than I'm seeing for Django or Rails or Node devs in general." I am curious where this is? This is not true in New York City, where I am. Developers who are good with a given PHP framework (Drupal, Symfony, etc) will make something like $60 to $70 an hour. The top Rails devs will make at least the same amount, and usually a li…

Out of idle curiosity (having left development a good while ago), are those rates you're quoting your expectations for freelance contracting or a salaried/full-time position?

The numbers I quoted are what I've worked for recently, as a freelance contractor. In terms of salaried positions, in NYC right now, the almost-top end for developers is around $130,000 a year. Anything above that tends to involve some management responsibilities. I have seen offers of $150,000, but that is for the team lead who is expected to also be a semi-manager.

I say "almost top end" because I am not including places like Google, where the top engineers make a lot more. I think my numbers are accurate for the vast majority of corporate jobs in NYC right now -- I get contacted by a ton of recruiters so I have a decent sense of the current situation. But I realize there is a small elite of tech companies who hire the highest elite of programmers, and the salaries there are probably above what I am seeing.

Re: Drupal's Golden Handcuffs

#36
post #25

I would add this to the complaints: - NOT AMENABLE TO SOURCE CONTROL Half the code lives in the database, configuration is all mixed up with content, and there's no reliable programmatic way to extract it. It makes doing deployment a nightmare. And the worst part? Drupal developers by and large have such a narrow range of experience that they don't even know what they are missing. They have no idea what good coding s…

This is why http://drupal.org/project/features module was born. To allow you to export your functionality to code and have it under version control.

Features and things like http://drupal.org/project/drush_make is what makes a lot of the drupal distributions (http://drupal.org/project/distributions) that keep popping up because sourced controlled, feature driven development is now possible in drupal.

Also the testing part has been improving, and although very few of the contrib modules have tests most of core has automatic testing in place for when you submit a patch as you can see in the issue queues (http://drupal.org/node/466576).

Re: Drupal's Golden Handcuffs

#37

Earlier quoted context omitted.

This comment confuses me. If you're going to use Drupal as a framework and ignore the rest, then why not just use Django or Rails, both of which are cleaner and more sophisticated frameworks? I don't think it's fair to look down on people who use Drupal as it's meant to be used.

Drupal developer with 4+ years of working with it under my belt. The nitty gritty is that we use it in an environment where we basically have 2 teams. One that builds custom code/modules that can be installed and enabled in Drupal to add additional functionality and another that actually deploys sites. The team that deploys sites is savvy, but are not hardcore developers. The thing I've come to over all these years i…

At the risk of giving offense, I have to say some of your comments seem to be written in ignorance of Rails. This whole bit is surprising to me:

"Built in Rails (Total additional developer time to add these features: 400 hours)

(1) Damn, back to the drawing board, we need 100 more hours of dev time to develop a custom component ...

(2) Damn, back to the drawing board, we need 250 more hours of dev time to build a calendar and ensure we get the layout correct...

(3) Developer has to add a form element to take that event type...

Built in Drupal (Total additional developer time to add these features: 0 hours)"

The thing about a programming language that allows for meta-programming is how easy it makes it to stitch together the code you need from components. Ruby is very good in this regard, and also any Lisp would be good in this regard, and my new favorite is Clojure, which is exceedingly excellent in this regard.

I had worked with Rails in 2006, then taken a break from it, then came back to it. I just worked on a very big Rails project in 2011. One thing that surprised me was how little code I had to write. All of the functionality that we needed was in a gem, and we only had to write a few lines of code to customize the operation of each gem. Need to integrate events with a map? There is a gem for that. Need to add slugs to all articles and have them become the id that appears in the URL? There is for a gem for that. I would write maybe 10 or 20 lines of code for each gem, telling it how to interact with our application.

To be productive at Rails, you have to know what gems are out there. You need to keep up with the gems, because they really are central to the productivity boost you can get from Rails. There is a gem for almost any bit of functionality you need, you only have to know which gems are good. If you find yourself writing large amounts of custom code in Rails, then either you are truly tackling a novel problem that no one has ever dealt with before, or you are simply unaware of the gem that you should be using.

Your comments comparing Rails and Drupal surprises me. I feel like you are writing without realizing how Rails development is done.

Re: Drupal's Golden Handcuffs

#39

if you can't code a CMS, don't claim to be a professional at using them.

Can you expand on this? How is this comment relevant to the article?

If that were the case, there would be no market for CMS. Everyone who wanted one would hack one up in Excel.

Or maybe Word with macros.

Re: Drupal's Golden Handcuffs

#40

Interesting article, perhaps if a few of those "I'm bored"s were changed to "I'm helping make Drupal suck less by writing some documentation" or "I'm learning cool new stuff cos Drupal does the generic boring stuff for me" the author would have a more fulfilling life. If everyone blows a little more energy back into the Drupal project, it'll suck a lot less ;)

It depends on your work environment. If your boss asks for 40 billable hours a week and you have a family to keep you busy in off hours then there's not much time for writing docs or contributing modules.

Is the same problem that every person working with free software projects faces. Can I contribute more if I'm not being paid to do it?

In the long run you can expect those extra hours contributing to the project to really pay off, because you gain a deeper understanding of where things go, because you meet people that can help you, because people see your contributions and you make connections and a lot of other goodies.

Post reply on HN