Several years back I thought that the Darwinian theory was probably the best explanation for the emergence of biotic structures. That was before the stunning details of molecular machines were discovered. As the details of these remarkable machines rolled in, I became more and more skeptical that the random step-by-step process of mutations propounded by Darwinian theory could, in fact, account for what we see. It wasn't common descent (which I accept) or the increase of complexity over time that bothered me. It was the idea that the complex machines we see could come about with no planning or some sort of cognitive factor. Having been a machine designer for many years and designed many complex machines and systems, the probability that such remarkable machines could come about unplanned just seemed beyond rationality.
This is not to say that people haven't tried to construct gradualistic scenarios to account for these machines. The problem is that they seem to be totally oblivious to the combinatorial dependencies that are present in any complex machine. One predominant idea in these scenarios is exaptation. This idea suggests that something that offers some function can be utilized with other components to create a new function. So far so good. This happens all the time in design engineering. You take a gear box that is used for rotary motion, add a worm screw at its output and you've got a linear motion. What is ignored in these "just so" scenarios is that you can't just grab any ole gear box and any ole worm screw and get anything that works. The gear box has to be the right size, power factor, rpm, output size, materials, etc. The worm screw also has to have the right coupling design, pitch, power capacity, length, diameter, etc. And that's only one part of the design. The motor has to be the right type, size, torque, power, rpm, etc. Then there is whatever function is at the end of the worm screw. All these components are interdependent. In every complex function there are combinatorial dependencies.
An illustration of one such "just so" scenario can be found here. It's an animation to illustrate Nick Matzke's proposed Darwinian process to create bacterial flagellum. To the uninitiated this all looks pretty reasonable. From a combinatorial-dependency perspective it looks incredibly improbable.
Let's take a look at this in a little detail. First we have a passive pore that starts things off. Since this is the base of the eventual flagellum one has to ask is the pore the right size that the whip of the flagellum can provide the locomotion we see? If it is too small the resulting whip will not be able to handle the stresses from torsion and coupling. If it is too big the whip will be too bulky to be driven in any effective way by the motor. Then we add the secretion system. Is the pore the right size and of the right protein type for the existing secretion system? If not there will be no coupling of the two and no progress.
Ok now we have a selective pore and an secretion system but does it secrete proteins that will be right for the whip? The whip has to have the right protein shape. In engineering the components of a flexible whip have to be designed to mesh correctly such that there is just the right combination of coupling, flexibility, and rigidity. They also have to be the right material. If they are too soft there will be galling. If they are too hard fatigue cracks will set in and destroy the whip. The same goes for clearances between parts. This is a goldie-locks situation. Things have to be just right or it won't work.
Next we have to add the motor. Let's assume we're very lucky that a motor will fit and couple with what we have so far. However, the motor has to have the rpm and torque to drive the whip just right. If it doesn't have enough torque we won't get what we see. If the rpm is too fast the whip will destroy itself because of the hydrodynamic forces applied to it by the fluid. Then it and all the other components have to be sized just right to reverse or the torsional forces on the wip will rip it apart. Remember the diameter, materials, meshing of parts, etc. in this Darwinian scenario have no idea what will be required later.
I could go on and on but I hope you get the idea of combinatorial dependencies. And things are really worse when you consider the problem of "you just can't get there from here". If one component violates the needed dependencies that must be satisfied, you can't just mutate that one component because every component depends on the others. As any design engineer will attest from their mistakes, you just have to start over. In real design a computer program would probably be written to play what-if scenarios to match the torque required, the materials and configuration of whip components, the bearing size and thickness based on cell wall strength, hydrodynamic factors, torsional and coupling stresses, etc and etc. Also this doesn't even take into account the assembly processes that are required. They also have their own dependencies.
The point is that simplistic just-so stories based on random mutations just aren't adequate from an engineering perspective. There's entirely too much luck involved to be taken seriously. Darwinian proponents will have to do much better than this to convince anyone acquainted with real machines.