Drupal is very much a "Do Everything" CMS. There are modules that allow you to add almost any functionality, which is great. However, it feels like a lot of the features (v5 and v6) seem scattered around and unintuitive for the user. As a developer, I'm left with the feeling of having patched a site together using bubble gum and string.
For example, to add text to the default search box (that disappears when clicked), you have to either add some jQuery code OR override the theme. I've also found the menu system more complicated than it should be.
Am I the only one with this opinion? What things (if any) would you change about Drupal's core?
Drupal is good to get started but you spend more time 'undoing' than actually getting things done. This has been changing especially with the release of Drupal 6 and to be fair it's more apparent in contributed modules.
Managing migrations is also a problem as Sean said. I still don't know of a good method of moving changes from a dev site to a live one.
I am not sure there is anything I would change in the current core and most of the deficiencies are being worked on. Image management needs work, the default admin interface is a little cluttered making more complicated layouts without getting views/panels, etc. involved could use some work.
It's written in PHP4. This will change as of version 7. You can write your own modules in php5 of course. As a seasoned Drupal developer and I find my resume has suffered due to my limited exposure to php5.
It's not the best for running services like SOAP. Calling the whole Drupal stack to provide a web service is too much of a performance penalty. The services modules are still in development.
No database transaction support. This becomes an issue when you scale it up to extreme loads.
It would be good to run tests from the command line. This was possible with simpletest 1.x but the current version doesn't support it very well. Simpletest is not mature enough. A clean Drupal install can fail tests. Some of the default included tests force you to use content types and modules you may not need and you can't disable these without hacking the simpletest module.
Drupal is an impressive system. It's surprisingly small for all it does, and it's module system is extremely powerful. But as Eli said, a lot of your tasks are going to rely on other developers doing something in a particular way.
There's a debate within the Drupal community over it's design. Drupal was around before PHP's OOP features were strong, but now that they are, there's frequent discussion about changing the system to use object-oriented data structures. Depending on your tastes, this could be a downside to you as a developer. I'm of two minds about it myself.
The system can also seem to be very "magical" to newcomers, in that somehow it does all this crazy stuff with little explanation. "I only just defined a function, how the deuce does Drupal know how to call it?!"
However, I must say that in general I'm a big fan of Drupal. It's a good system that gets loads better with each major version. I for one can't wait for 7.
Drupal will get you 80% of the way there out of the box, but that last 20% will take months and months.
Drupal gives powerful tools to Non programmers ,They can easily build up a full featured site with less time. But the problem is that learning curve is too high for Drupal.
If a person is new to drupal and want to make something customized it will take lot of time if he wants to do it in proper way. There are lot of ways to do a single thing in drupal,Finding out which is he best or proper for a new comer is a head ache.
i find it awfully complex. as a php developer im tearing my hair out on a daily basis over issues that have nothing to do with php but with drupal itself. how / why / when does it do X? its a big beast that needs to be tamed. documentation is limited to a few very good guides, a whole lot of shitty ones, and even more useless forums threads that always seem to pop up in google.
usability on the backend is crap. a custom theme will also alter the layout of the "admin" part of the package which can be extremely frustrating and results in less than pretty layouts.
if you're working with html slicers, its impossible to use html that has not been created specifically for drupal. it pretty much forces you to use drupal-html, with lots of divs, 5 verbose classes per div, etc. by nature, html/css guys can not be expected to know drupal at this level.
i dont like the way it relies on filenames (10 words long, with very subtle differences between them) to build a theme.
having said that, some of the stuff it can do is very cool and saves you days and days of custom php development