Now that I have been a full-time Drupal Developer for a couple of years, and a part-time Drupal developer for a year before that, I am beginning to recognize recurring patterns and problems in Drupal projects and people's experiences with Drupal. This is a report on my experiences, and a summary of learned lessons and recommendations for those entertaining the idea of a financially-driven Drupal project.
As more and more people discover and decide to use Drupal, the more and more popular it becomes. Given the way a crowd-attracts-a-crowd, especially with free and open source software, Drupal is quite clearly set to become the dominant open source web CMS in the professional and business-oriented web-development markets – if not the dominant CMS of both open source and proprietary options. It's also likely that Drupal will dominate in the amateur and hobbyiest markets too, when usability bugs get ironed out with a little more time and a couple more Drupal versions.
Many non-Drupal web development shops are recognizing this, and are beginning to realize that it's too expensive to maintain their own proprietary CMS, or – worse – maintain skills in multiple different CMS, when one could rule them all, and even do a better job.
Businesses and individuals seeking websites also recognize this. In fact, many clients looking for a web shop have already decided they want their website to use Drupal. Instead of shopping for a general solution provider, they often look for a Drupal developer or Drupal shop.
I have seen this many times now, always with one of the two following results;
Unfortunately – because of the high demand for experienced Drupalers – most end up in the last category. This is understandable, given that most clients seeking someone to build their website do so because they lack the expertise to do it themselves – they are therefore not likely to understand that – even with software, including Drupal – a tool is only as useful as the skills and experience of it's user.
This always – with no exception – ends up leaving the developers running frustratedly in circles, and the client burned with an under-delivered and over-budget product.
I have seen a number of non-Drupal web development shops talked in to using Drupal for the project because it was what the client wanted. The developers or shop often tell clients that "Drupal is a PHP application, and we're a PHP shop, so we can do Drupal". Even the developers often fail to recognize that Drupal is worthless to them until they have learned "the Drupal way", have experience with Drupal, have become self-dependent Drupal learners and can confidently answer the question What would Drupal do?. For most web development shops this is a significant amount of resources to commit. In fact for most run-of-the-mill shops, which are typically small businesses of 5-15 persons, it's too-large an investment.
And indeed it is a large investment – after working full time with Drupal for a couple of years now, I'm still learning new things about Drupal just about daily. And there is no possible way any person or even small group of people can recall, understand and know how to use even half of the almost-4000 contributed modules.
The solution is to develop mentoring relationships. Every Drupal project needs at least one person who is sufficiently experienced with Drupal such that he or she can guide other developers through the project, showing them what Drupal would do. Finding this mentor or Drupal developer is key to the success of any Drupal project with any non-trivial amount of configuration and code.
It is the responsibility of project stakeholders to find these people. It is also the responsibility of web developers to avail themselves in a mentoring capacity to less-experienced Drupal developers.
Vertical Tabs module by Dmitri Gaskin is a Drupal module-ification of prototype work I did for the usability of Drupal's node forms, and was inspired partly by ideas in the discussion and design process of Views 2 UI – which was all part of my Season of Usability project.
It's not User Testing!
A number of times recently I have heard folk in the Drupal community and elsewhere talk about User Testing. While many people use this term and it is not strictly incorrect it is misleading and also far from correct A better term to use is Usability testing or UI testing. Here's why;
read more
For a long time I have wondered how the teams that design car stereos can fail so miserably at making car stereos easy to use. The function of a car stereo is not complicated, and there are few tasks that need to be considered in the design of a car stereo interface. Approximately in order of importance these tasks are;
I recently needed to purchase two replacement batteries for Apple laptops. One for a MacBook 13-inch white, and one for a MacBook Pro 17-inch. I decided to purchase third-party batteries since the saving was about 30% and they came with a 12-month warranty. While I had the original and third-party replacement batteries in one place, I decided to snap some photos so that others can see the differences between Apple's replacement batteries and third-party ones.
The photos are on flickr;
One of the problems almost every Drupal project or team comes across shortly after adding their Drupal site to a version control system such as Subversion, is whether to version-control the settings.php file or not.
read more
Microsoft announced in January that Internet Explorer 8 (IE8) would be standards-compliant, but only if you included a special meta tag or http header indicating that the page should be rendered in standards compliance mode. The uproar from the standards community led Microsoft to change the default behavior of IE8. Now IE8 will render all pages in standards mode by default, unless you specify otherwise with the X-UA-Compatible meta tag or http header. Interestingly, the Microsoft followers did not seem to feel short-changed as the standards advocates had.
read more
Contrary to common belief, Drupal's Authenticated user role does not inherit permissions given to the Anonymous user role.
read more