Doing Drupal development effectively

tags:

Clients seem to come in sets. A couple months back, I had several clients who had hired cheap off-shore companies 12 time zones away whose developers were curiously unavailable by phone, email or carrier pigeon. You probably already know the rest of the story: client needed to spend more money to have someone else go in and try to make it all work. (BTW, always use the term "refactored" rather than "threw out" when referring to the busted up stuff the client paid for).  

Lately the theme has been clients who hired a 'Drupal developer' to do custom development and ended up with hacked up Drupal core, semi-working custom functionality and lots of odd behavior in different parts of the system. As an intelligent, hip, effective web entrepreneur, you should not strive for this.

Gumby -vs- Pet Rock

Gumby, Damnit!The typical LAMP application is made up of a tightly coupled set of code that all works in unison. While you may be able to configure this type of application, you cannot easily create or remove core functionality yourself. There is absolutely nothing wrong with this approach if you're developing a closed system designed to be maintained by a relatively small group of developers and whose feature set is pretty easy to anticipate and can be built in from the ground up. But this approach is not a good one for something like a CMS.

Why, you ask? Well, this is quite a coincidence as I was just preparing to answer that very question. Unlike more specialized applications (think phpbb, phpmyadmin, photo galleries, etc...), a good CMS is something that you should be able to extend, possibly in ways never imagined by the authors of the software. This type of extensibility separates applications like Google Maps from MapQuest. Like Gumby, Google Maps can be made to do any number of things never thought of by Google (from a developers perspective). And like a pet rock (did I just give away my age?), MapQuest pretty much does what it does, and if you want it to make it do something else, that's too bad, you should be using Google Maps, fool!


API


The number one quality that separates Drupal from other popular CMS is its API (most often referred to as "the Drupal API).  Drupal is designed explicitly to allow for adding, altering or removing core functionality. Thanks to this API, there are hundreds of third party modules available for Drupal. Some of these modules provide very specialized features. Others provide integration with the most popular services on the web (including Google Maps, Flickr, del.icio.us, Digg and more). All take advantage of the Drupal API and none include modification of core (again, the basic code base required to run Drupal).

Hacking

Enhancing software that doesn't provide an API usually involves modifying its core code directly. If software doesn't open up its functionality to developers, then developers are left to go in and manipulate the original source code to achieve their goals. In many cases, this is just how you have to do things. Drupal is not one of those cases.

To be clear, when I refer to 'hacked Drupal core', I'm referring specifically to modifications of the files that come with the standard distribution of Drupal, most importantly, the files that are in the /includes/ and /modules/ directories. All of the same concepts apply as well to third party modules, but that's not what I'll be focusing on here.

Who Cares?

Does it really make a difference whether you do things correctly as long as they work? Absolutely. While it may seem much more effective at first to edit Drupal core to add the features you want, this is a big mistake. Let's talk about some of the problems you will run into.

Updates

The first problem you'll likely run into is applying Drupal updates. The Drupal team is excellent about patching security vulnerabilities. This means that if you are steadfast in keeping your Drupal instance updated, your chances of getting 'hacked' are greatly reduced. However, if your team has modified Drupal core, applying updates becomes a painful process requiring careful scrutiny of each update and possibly an even more painful merge of those changes with your hacked core files. In my experience, rather than go through this unpleasant process, owners of sites with a hacked core tend to postpone applying patches and updates. The more the owner procrastinates, the more likely his site is to suffer an attack using a known exploit. Once your site has been exploited, there's no telling how long your site may be down or how long it will take you to recover.

Functionality

The next problem you may run into is broken functionality. By altering Drupal core files, you may be inadvertently modifying functionality depended upon by other parts of the system. You are messing around inside the "black box" that Drupal as a whole depends on. While you may think it's clever to go in and modify the phptemplate engine directly, what you could be very well doing is creating bugs somewhere else in your site. By the time you come across the problem, it is unlikely that you'll immediately realize that it is caused by the changes you made to phptemplate. And, friend, you are now in for a lot of hurt as you rip apart code trying to fix it.

Maintainability and Longevity

Drupal's API is known by hundreds of developers all around the globe. The hacks introduced by your $20/hr programmer found on craigslist are known only to one developer. Should you ever need to update or extend your site, you better have that $25/hr developer on staff or you better be using the Drupal API. If you play by the rules, you can hire any experienced Drupal developer.

Bottom Line

There are legitimate reasons to modify Drupal core. If you've found an actual bug in Drupal, the best thing you can do as a developer is to fix it and submit a patch. Likewise, if you've come up with an enhancement that you feel should live in core, submit it. Aside from these two reasons, neither you nor anyone in your employ should be touching anything in that drupal .tgz file.

If you want to develop extended functionality for Drupal, use the API. If you're hiring a Drupal consultant, find one who is familiar with the Drupal API. Find a developer who's active in the Drupal community. Hiring a knowledge Drupal developer may cost more initially, but if you plan on maintaining your site for any length of time, this investment is sure to pay off down the road.

 

So true. Just talked to a company who hired a company 12 time zones away and ask them about their experience. They told me - well these guys charged half the rate an hour or less, but ended up to need at least double the time - so they didn´t even save money, but had much more hassle. Furthermore they found out when the process already started that these guys where actually .NET developers and hired themselves a subcontractor to work with Drupal on a LAMP server - in the end they wouldn´t do it again I assume. Problem is of course somehow to the Drupal community it self. Open Source means that a lot of people can simply offer their services and that it is difficult for corporate clients to have the trust and confidence necessary to do large projects. I think that is already changing and more and more companies are tapping into this market, which of course includes service level agreements and so on.

I have been considering outsourcing to other countries as well, I found a blog where you can read that argentina is a really great place to get qualified people...

Have you tried outsourcing in the Philippines? I hired many agents back there and they all work for me efficiently! Now, my affiliate business is getting bigger and bigger because of them! they can work for you almsot endlessly and they are very courteous people and they have extensive knowledge with what they are doing! Very professional, indeed! Right now, they are working on my Checks site with lots of webpages including Schnauzer checks , German Shepherd checks and other dog checks as well as Cat checks and other Animal checks and other kinds of uniquely-designed checks and I love their work!!!!

I'm still in the "stone age" where Drupal is concerned...I'm comfortable (somewhat) with Wordpress now, so I know I'll have to gradually ease in to learning about Drupal.

There are a lot of reasons why companies are investing in the outsourcing business. One reason is because of the status of the global economy which has affected their sales. Outsourcing has helped hundreds of companies save from management and operational costs. True there might be set backs. Thats the reason why the outsourcing industry reminds investors to research on the type of company that will represent their service. Each outsource company has a specialization. It may be that at the the start there may be a hiccup or two but normally given the right number of time, they are able to adapt.

With the speed Joomla is developing, I'd find it difficult to find myself moving back to Drupal.

I am torn between Drupal and Joomla. I have visited a few forums and personal blogs trying to understand which is the better one to use but I am still unsure. Does it simply come down to personal taste, or is one of them actually superior to the the other in any tangible way?

I have to agree with you Harry when you say "Hiring a knowledge Drupal developer may cost more initially, but if you plan on maintaining your site for any length of time, this investment is sure to pay off down the road.". The company that my brother works for thought they could save lots of money by outsourcing their Drupal work to a company 'over there'.

Guess what... the company screwed it up big time. They have finally seen sense and hired a professional, but it has ended up costing them twice as much as if they hired the same guy in the first place.

hair brain Jenni

great post, i`ll subscribe to your blog! i really like your writing style..

kind of off topic, but you can check my page to http://antiblafband.blogspot.com/

I also think Joomla is a better cms than Drupal but it seems there is a lack of employable people (for Joomla)when you put an ad out there! We are sorted now with a guy that knows his stuff but it took a while. We also tried out-sourcing before this but man they can make it so hard work for you, especially with the language barrier. (india) Good posts guys keep it up!

I say HIRE AMERICAN - let the Indians build their own economy.

Nice post. Drupal seriously looks amazing. I'm still mostly using WPress but the more I hear about Drupal it makes me really want to use it. Nice post and clear explanation. Best regards from Japan, Chris

I wish my code would ever come out gumby, unfortunately I usually end up with a pet rock. Is some of this the reason Wordpress sites often looked pieced together compared to many Drupal sites?

Thanks,
Kathy the baby showers gal.

As a web desinger and a web developer, I too had to know more about Drupal, The very first thing before starting develop by DRUPAL is, learning more about it features, You have given nice picture about it, really helpful, Thanks for it,
Hassen, Lasik Eye Surgery

It would be nice to utilize drupal in this free movies site. But to be honest, there is a lot of specialized code that goes into the site as it is now. Maybe once more plugins and mods become available I will give it a shot.

I know a couple of people(Actually they are my clients now) who purchased services in low price and lost their money. I think we need to do everything right. I don't like the stuff to only work but to do the stuff in a legal way. It involves a lot of backdoor knowledge and years of hard working.
Roger

I found Drupal to be quite a big learning curve at first, but rather go with the outsource route I decided to try and figure it out myself. Although I've spent hours trying to work out what I now realize are the simplest things, it's been worth it. I understand the API better, which I wouldn't be able to do by outsourcing. I use Drupal for almost all my sites; my mattress reviews website for example is just a simple site but uses a number of the great modules to make it easy to navigate with a hierarchial structure, SEO'd and so-on. For bigger projects though (like i'm currently working on) I think it could well be worth finding a programmer familiar with Drupal.

I've been amazed with how much people will help you out. In fact a couple of module developers have even accessed a couple of my websites to sort out a few problems I was having with their modules (talk about first class support!). However, a cheap programmer from India might save a bit of money, but cause a number of problems by hacking the core. There are many active developers in the Drupal forums, which is certainly a route I'll be using for finding a good programmer for my next project.

It can take a while to learn the way Drupal works, but from my own experience it's well worth getting to grips with it. Instead of outsourcing I took what seemed to be a very long road to learning Drupal, but having done so can now see the true power of the CMS. It also helps if and when you have large projects (like I do coming up) and need to outsource, because you can begin to see how your ideas can fit together with Drupal. I have a mattress reviews site which is a simple site but makes uses of some excellent modules for hierarchical navigation, seo friendly urls, etc, but there are many more modules that when combined can be really powerful.

When outsourcing I think the best place is to look around the Drupal forum. There are a lot of loyal members who help out for free, and also to hire. Whichever developer you hire, they need to be comfortable developing modules rather than hack the core.

Totally agree with your point about doing things properly. Too many developers take shortcuts and although it seems to "work" at first the problems usually start surfacing down the line.

John
Fixed assets

I am newbie for Drupal technology, You have given great info about it in nullset, That is really appericiated, Karl, MLM Leads

Nice post. Drupal seriously looks amazing.Drupal is best.

Awsome Marketing tips. Thanks. Does anyone use the RainMaker Criagslist Software to market their business?

I have to be honest i'm not a big fan of the CMS systems. I've tried using Drupal and feel a little to constricted by what you can do to your site. I prefer just to create a website using html and css. Although I do recognize the benefits of creating a site for people who do not have the time to learn how to code a website or don't care to.

Currently picking my way through a prime example of the "hacked up Drupal core, semi-working custom functionality and lots of odd behavior in different parts of the system" model. Crap work, but at least I'm paid by the day for it. And what a mess it is. But the other developer in this case was British, like me.

I don't think it's necessarily fair to imply that all cheap out-sourcing ends in crap code, but for sure, out-sourcing to somewhere soooo far away makes for a nasty project management overhead - not only in terms of time zones, but also cultural differences, misunderstandings, etc. A lot of detail goes awry if you're not 100% on the ball.

And most people who only look for super-cheap development also don't have the wherewithal to do any sensible project management of a fairly complex web project. Half the time they haven't even bothered to identify their requirements properly and have the twisted idea they can commission MySpace for $5,000 and it will work.

In fact, the more I think about it the more I pity the poor off-shore developer. They get all the idiots for clients because they are competing 100% on price so they attract the budgetless marketing moron with a "great idea" and some jottings on a napkin.

I am quite excited with all the article content of your site. It would be my pleasure to gather some more strategies from your web-site and come up to offer people what I have benefited from you.

How about Database in Drupal? i mean performance database?
Drupal it's free, right?