If you're looking for a snippet development , Drupal is probably not the right choice. If you are looking for a website development kit, Drupal is probably the right tool.
People often say that Drupal is CMF, where F stands for Framework, but in fact Drupal is just a flexible CMS.
At a high level, the structure of web applications is divided into two categories: MVC and CMS. Model View Controller is what most people call a framework. CMS is simply a flexible CMS with application development capabilities.
In practice, what Drupal lacks is:
- Proper architecture. Most of the things in Drupal developed organically; causing inconsistency, unexpected behavior, and unexpected barriers. Not to mention that Drupal is not built properly: just say that it was not designed: in general.
- The principle of least surprise. Many structures allow qualified developers to create sites in a few hours. With Drupal, you need to gain a lot of experience and best practices before you can be sure to expose your websites when planning.
- MVC Drupal has a separate database layer and a theme layer (view), but they are unconventional and often misused. And, of course, not after the block diagram.
- unopinionated behavior: the framework may force certain methodologies, libraries, or even encourage specific behavior, but should not have hard-coded / non-transitional defaults that define your final product. Or, in English: The Drupals Kernel has many default settings that determine how you intend to configure, host and structure your website, regardless of your customers needs (wishes). Modules or add-ons are often behavioral and often look embedded and / or hard-coded.
- DRY, don't repeat yourself: Drupal is very dependent on repeating itself. Its entire thematic system depends on copying code fragments into user files and changing tidbits. Its form-overridden system requires copying large parts of the default form to user modules and changing the parts that need to be changed.
Many of these shortcomings are the main reason for the delay and smoothing of the budget, as can be seen from my experience with Drupal + 10years. Where part of the uncontrolled behavior turned out to be the most unpleasant for most projects in which I participated. Obvious simple functions or ideas prove that they occupy a significant part of the entire budget; Small details eat up development weeks; that the last 20% occupy not only 80% of the effort, but sometimes 300%.
In addition, Drupal does not follow OO patterns, which (by all accounts) are bad. There is no inheritance, not DRY practice, there is no object-oriented cartographer *) and there is no uniting practice. **).
All of this may seem negative, but in fact people manage to create good Drupalsites, despite all these βflawsβ. This is due to the fact that for the most part they adhere to the standard Drupal defaults (if possible, if possible, add-ons that need changes, custom development when there is no other option).
*) In fact, there is; in Drupal 7 PDO was introduced, but has not yet been (yet?) used as ORM / in general.
**) In fact: all the main and many contributions have tests, but these are integration tests and a rare unit test. Integration Tests (DrupalWebTest) install a clean Drupal-codebase + database for each individual test. Your average core-testsuite, which takes more than 8 hours, is no exception. TDD is just not yet possible.
EDIT Reading your examples: Drupal is especially bad in the area of ββ"form wizards", although it has seen an improvement in Drupal 7. Another notable drawback in Drupal is the correct, programmable workflow system. There are several modules that improve or replace the simple workflow system in the kernel, but they are not easy and not effective (from the development point of view) for programs. Looks like the main features you want are among the most underdeveloped areas in Drupal