Doing Drupal development effectively

Clients seem to come in sets. A couple months back, I had several clients who had hired cheap off-shore companies 12 timezones 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 3rd 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 codebase 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 3rd 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 develloper.

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.

A while back we outsourced to an India company who we were not familiar with and ended up in much the same boat as you describe above - lots of wasted time, efforts, and money. I would extend your advice above and add that someone interested in a Drupal developer customizing core Drupal code should back it up with solid reasons why, besides "it's just easier to make it work," ask for references and previous Drupal projects, as well as know the communication layers so that the project(s) don't become delayed.

Kinda off the subject, but I have been considering outsourcing to India as well. From what I've been reading lately, I'm definitely having second thoughts. However, it's tough to go elsewhere because of the pricing. Tough decision....

For the most part I've found that outsourcing to India is ok most of the time. Occasionally you get a few clunkers but mostly you get solid results.

Steve the Help me write a resume guy.

It is certainly not like that.
when you go for freelancer then there is a chance of getting screwed.
always better go with well established company.

http://www.drupal-web-developers.com/

If you run any kind of business, you must outsource, particularly to India or China. Why? Because your competition is already doing that. They can pump out the same or better product and service than you and about 1/10th the price (Indians will work for 10% of what Americans get paid and do just as good a job). How are you suppose to compete with someone like that? If you don't outsource and keep maintaining higher prices, you'll be out of business faster than this current economic recession.

Anna Richard

That is true the majority of big companies outsource to China or India as the save a lot of money this way.

That's an excellent idea. Do your part to transfer wealth from the USA to other countries and become a welfare state. Free movies can save you money so you don't have to outsource.

It depends on the expertise, focus and specialization regardless of where you are located in the world. While I run a Canadian firm, We have our own development team in India that work exclusively on Drupal and Ruby on Rails with 70+ successful implementations.

If someone just does PHP or .NET and then they bid on Drupal projects, they are bound to take more time and may not do it the right way. Once you go with experts, you are likely to get your projects executed and results delivered.

My experience of several attempts of outsourcing to places similar to india have all been non-stop problematic, maybe im just looking in the wrong place but i wont be trying again thats for sure.

SEO Position ==> Your name itself suggests that, you are doing this posting just for some back links.
If outsourcing to other countries are not good, then why outsource has become a success. First of all, you should know what is outsourcing.
Even you can outsource the some work in the same city or some other state or some other country also, everything is called outsourcing.
btw, the author did not mention the country is India. how did you get this name ?
did you contact the other using email ? :-)

Something which will give me a good comparison chart of DNN vs Drupal !

Good Work !

Regards,
-Mac !

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...

I'll have to look into this one, thanks.

Great post, keep it up.

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!!!!

Although it is a quite old post but I am very new to Drupal. I always feel embarrassed when I think that what was I doing with my sites. Wordpress might be very good for marketing purposes but Drupal is something extra ordinary. Am going to implement it on all my sites(Newly purchased sites) now.
Mark

I'm having a difficult time finding a Drupal Developer (I work for a recruiting firm); I have a client that's has a contract position in NY. Anyone know of anyone? email your resume to me if interested at cporter@aptude.com

it is important to understand that the two are diffrent, since wordpress is more for blogging and drupal is more for something else. But you will find easily a programmer to expand your WP for other usages - something that is not done easily with drupal. Many webmasters/affiliates use WP daily, because it's easy, and even BWA affiliate network is using it on their blog.

I think Joomla is a better CMS than Drupal at the moment, but I have also seen that Drupal have developed rapidly lately!
Maybe we'll see further progress this autumn? :-)

Markedsføring

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 ( Business communications )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

It seems that Drupal is a great content management system, but I still can't find the time to learn it. I started my my personal money blog on wordpress just because of many plugins available.

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.